My goal is a binary classification of a sports match between two players, particularly I am concerned with the probabilities of each player winning. My current dataframe has feature values of [attributes from player A, attributes from player B]. However, issues arise when I apply scaling on this feature row - in which case when I swap the order of the feature values [attributes from player B, attributes from player A], the scaling is not symmetric.
As an example:
- feature_set_1: [height of Person A, country of Person A, weight of Person A, height of Person B, country of Person B, weight of Person B, result of match]
- feature_set_2: [height of Person B, country of Person B, weight of Person B, height of Person A, country of Person A, weight of Person A, result of match]
Due to the importance of order when scaling, the scaled results of Person A's height in feature_set_1 would not be equal to the scaled results in feature_set_2. This leads to issues when projecting probabilities as I get results such as probability(A beating B) + probability (B beating A) > 1, by quite a large margin. In addition, relative to this case, the order in which we provide our attributes (player A first than player B, or player B first than A) should have no real impact. In practice how is this situation often addressed?
One solution I brainstormed was to enact feature engineering in which I would have feature values as [attributes from player A - attributes from player B] instead. However, this would result in negatives when reversing the order of A and B. I am unsure how this will affect probability predictions, and more importantly if it will maintain mutual exclusivity between player A and player B winning(probabilities summing to 1). Note that the classifiers I am using requires scaling (MLP)