Reducción del número de niveles de variable predictiva categórica desordenada

11

Quiero entrenar un clasificador, digamos SVM, o bosque aleatorio, o cualquier otro clasificador. Una de las características del conjunto de datos es una variable categórica con 1000 niveles. ¿Cuál es la mejor manera de reducir el número de niveles en esta variable? En R hay una función llamada combine.levels()en el paquete Hmisc , que combina niveles poco frecuentes, pero estaba buscando otras sugerencias.

sabunime
fuente
¿La variable categórica no está ordenada? Aproximadamente, ¿cuántos casos tienes? ¿Cuál es la distribución de frecuencia en la variable categórica?
Jeromy Anglim
Los niveles no están ordenados. Tengo alrededor de 10,000 observaciones. La distribución de frecuencias es la siguiente: el nivel A aparece en alrededor del 11% de las observaciones. El nivel B aparece en 8%. El nivel c aparece en 5%. Alrededor de 15 de estos niveles cubren el 50% de las observaciones en el conjunto de datos.
sabunime

Respuestas:

9

La mejor manera de hacerlo variará enormemente dependiendo de la tarea que esté realizando, por lo que es imposible decir qué será lo mejor de una manera independiente de la tarea.

Hay dos cosas fáciles de probar si sus niveles son ordinales:

  1. Bin ellos. Por ejemplo, 0 = (0 250), 1 = (251 500), etc. Es posible que desee seleccionar los límites para que cada contenedor tenga el mismo número de elementos.
  2. También puede tomar una transformación de registro de los niveles. Esto aplastará el rango hacia abajo.

Si los niveles no son ordinales, puede agrupar los niveles en función de otras características / variables en su conjunto de datos y sustituir los identificadores de clúster por los niveles anteriores. Hay tantas maneras de hacer esto como algoritmos de agrupamiento, por lo que el campo está abierto de par en par. Mientras lo leo, esto es lo que combine.levels()está haciendo. Podrías hacer lo mismo usando kmeans()o prcomp(). (Posteriormente, podría / debería capacitar a un clasificador para predecir los grupos de nuevos puntos de datos).

Joey
fuente
3
No conozco una forma realmente buena de manejar esto aparte de tratar la variable categórica como un efecto aleatorio. Puede emular eso usando un proceso de penalización cuadrático (cresta) en la variable. Mi libro de Estrategias de modelado de regresión y las notas del curso entran en esto.
Frank Harrell
1
@FrankHarrell Me vienen a la mente dos enfoques: el análisis de clase latente de la variable politómica sería uno (cran.r-project.org/web/packages/poLCA/poLCA.pdf), el análisis de correspondencia otro (por ejemplo, statmethods.net/advstats/ca. html)
Mike Hunter