Estoy lidiando con el siguiente problema:
Tengo una variable multiclase, y, con digamos 7 clases. Las 7 clases no están distribuidas uniformemente, algunas son mucho más propensas a ocurrir que otras. Digamos que la clase A ocurre en el 40% de los casos, y las otras clases ocurren todas en el 10% de los casos.
Estoy tratando de predecir estas clases con las variables en la matriz X. Dado que es bastante difícil predecir y con las variables dadas en X (con una precisión de aproximadamente el 50%), algunas distribuciones fuera de muestra tienden a estar bastante cerca de la distribución previa (40%, 10%, etc.). Por lo tanto, la clase A tiene una distribución más grande por defecto.
Cuando paso a las predicciones basadas en la probabilidad más grande, la clase A es elegida más a menudo de lo esperado (+/- 70%) y las otras clases a veces apenas ocurren, porque por defecto las probabilidades son más pequeñas.
¿Qué puedo hacer para mejorar mi modelo? Estaba pensando en:
- Ponderar las probabilidades, basadas en la frecuencia de las clases
- Elegir mis predicciones de una manera diferente
- Entrenar mi modelo en un conjunto diferente, de manera que todas las clases ocurran con la misma frecuencia.
Ejemplo: si para la observación k la probabilidad de la clase B es 39%, y la de la clase A 40%, preferiría asignar esta observación a la clase B, aunque la probabilidad para la clase A sea algo mayor.
¡Cualquier consejo, inspiración o "mejor práctica" es más que bienvenida!
Estoy utilizando modelos como xgBoost/random forest, con probabilidades multiclase. La salida se ve así:
A, B, C, D, E, F, G
0.4, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1