La mejor manera de clasificar conjuntos de datos con tipos mixtos de atributos

13

Me gustaría saber cuál es la mejor manera de clasificar un conjunto de datos compuesto por tipos mixtos de atributos, por ejemplo, textuales y numéricos. Sé que puedo convertir textual a booleano, pero el vocabulario es diverso y los datos se vuelven demasiado escasos. También intenté clasificar los tipos de atributos por separado y combinar los resultados a través de técnicas de meta-aprendizaje, pero no funcionó bien.

usuario900
fuente

Respuestas:

11

Las respuestas de Christopher parecen muy razonables. En particular, los métodos basados ​​en árboles funcionan bien con este tipo de datos porque se ramifican en características discriminatorias. Es un poco difícil de decir sin conocer su aplicación específica, pero en general, si cree que algunas de sus características podrían ser significativamente más discriminatorias que otras, podría probar algunas técnicas de reducción de dimensionalidad para limpiar esto un poco.

Además, si utiliza una técnica de reducción de dimensionalidad, termina obteniendo un formato ligeramente más robusto para su vector de características (generalmente terminan siendo vectores numéricos rectos en lugar de tipos de datos mixtos), lo que podría permitirle aprovechar diferentes métodos. También puede analizar las características de ingeniería manual. Con las características de ingeniería manual adecuadas, Random Forestestará muy cerca del estado del arte en la mayoría de las tareas.

indico
fuente
2
Otro voto para la reducción de la dimensionalidad. Solo algunas adiciones: Principal Component Analysiso Non-Negative Matrix Factorizationreducirá el número de variables, enriquecerá datos escasos y transformará todas las variables en cuantitativas. Además, al evaluar la calidad del modelo de reducción de dimensionalidad, el autor de la pregunta puede estimar la utilidad de las variables textuales.
sobach
@indico gran respuesta. ¿Podría darnos una referencia en un libro o un documento, que los algoritmos basados ​​en árboles funcionan mejor con datos de tipo mixto (datos categóricos y cuantitativos)?
ZelelB
6

Es difícil responder a esta pregunta sin saber más sobre los datos. Dicho esto, ofrecería el siguiente consejo:

La mayoría de las técnicas de aprendizaje automático pueden manejar datos de tipo mixto. Los métodos basados ​​en árboles (como AdaBoost y Random Forests) funcionan bien con este tipo de datos. El tema más importante es en realidad la dimensionalidad, de la que tiene razón al preocuparse.

Sugeriría que haga algo para reducir esa dimensionalidad. Por ejemplo, busque las palabras o frases que separan mejor los datos y descarte las otras palabras (nota: los métodos basados ​​en árboles lo hacen automáticamente).

Christopher Louden
fuente
2

Con la poca información que ha proporcionado sobre la naturaleza de sus datos, le aconsejaría que siga el siguiente enfoque:

  1. Convierta datos de texto en categorías. Puede probar diferentes alternativas para la cantidad de información que deben contener las categorías, pero deben existir categorías específicas para cada variable. Como ejemplo, asumiré una variable que proviene de un campo de texto de un cuestionario de encuesta sobre la forma preferible de las personas de llegar al trabajo.

    Al principio, debemos asegurarnos de que las respuestas con un significado similar estén escritas de la misma manera y pertenezcan a la misma categoría (por ejemplo, "en bicicleta", "ciclismo", "en bicicleta", todas tienen el mismo significado). Luego, puede intentar fusionarse en categorías menos detalladas (por ejemplo, combinar "tranvía", "metro" y "autobús" en "Medios de transporte público") o incluso más (por ejemplo, "Caminar", "Trotar", "Ciclismo" en " Actividad física ") según lo que intente averiguar.

    Incluso puede poner algunas combinaciones diferentes en su conjunto de datos y luego los siguientes pasos determinarán cuáles se utilizarán para el análisis. En los casos en que los datos de texto se puedan "traducir" en variables ordenadas, asegúrese de hacer esto (por ejemplo, si tiene "pequeño, mediano, alto", transfórmelo a "1,2,3").

  2. Convierta sus variables categóricas (no las ordinales) en variables ficticias (binarias). La mayoría de los algoritmos de clasificación / selección de funciones lo hacen automáticamente, pero asegúrese de que este sea el caso con los que seleccione. Me doy cuenta de que la dimensionalidad de los datos será bastante grande en este punto, pero esto se manejará en el siguiente paso.

  3. Aplique una técnica de selección de características / reducción de dimensionalidad en sus datos. Puede encontrar una revisión útil de tales técnicas aquí . Si está utilizando Python, las herramientas de sklearn le brindan muchas opciones (vea más detalles aquí ). Asegúrese de utilizar una técnica que también considere la multicolinealidad. Probaría el Análisis de componentes principales o un algoritmo basado en árboles.

  4. Para clasificar los datos, iría con Decision Tree Classifier (también disponible a través de sklearn ). También realiza la selección de características ponderando pesos de importancia para las características. Puede establecer el nivel de detalle en el árbol generado según sus opciones (por ejemplo, max_depth, min_samples_split) Asegúrese de ajustar el nivel de detalle en función de la validación cruzada para evitar el sobreajuste.

missrg
fuente