Meilleure façon de classer les ensembles de données avec des types d'attributs mixtes

13

Je voudrais savoir quelle est la meilleure façon de classer un ensemble de données composé de types mixtes d'attributs, par exemple textuels et numériques. Je sais que je peux convertir du textuel en booléen, mais le vocabulaire est divers et les données deviennent trop rares. J'ai également essayé de classer les types d'attributs séparément et de combiner les résultats grâce à des techniques de méta-apprentissage, mais cela n'a pas bien fonctionné.

user900
la source

Réponses:

11

Les réponses de Christopher semblent très raisonnables. En particulier, les méthodes basées sur les arbres fonctionnent bien avec ce type de données car elles se ramifient sur des caractéristiques discriminantes. C'est un peu difficile à dire sans connaître votre application spécifique, mais en général, si vous pensez que certaines de vos fonctionnalités peuvent être nettement plus discriminantes que d'autres, vous pouvez essayer certaines techniques de réduction de dimensionnalité pour nettoyer un peu cela.

De plus, si vous utilisez une technique de réduction de la dimensionnalité, vous obtenez un format légèrement plus robuste pour votre vecteur d'entité (ils finissent généralement par être des vecteurs numériques droits au lieu de types de données mixtes), ce qui peut vous permettre de tirer parti de différentes méthodes. Vous pouvez également examiner les fonctionnalités d'ingénierie manuelle. Avec des fonctionnalités bien conçues à la main, Random Forestvous serez très proche de l'état de l'art sur la plupart des tâches.

indico
la source
2
Un autre vote pour la réduction de la dimensionnalité. Juste quelques ajouts: Principal Component Analysisou Non-Negative Matrix Factorizationréduira le nombre de variables, enrichira les données éparses et transformera toutes les variables en données quantitatives. De plus, en évaluant la qualité du modèle de réduction de la dimensionnalité, l'auteur de la question peut estimer l'utilité des variables textuelles.
sobach
@indico excellente réponse. Pourriez-vous nous donner une référence dans un livre ou un article, que les algorithmes basés sur des arbres fonctionnent mieux avec des données de type mixte (données catégoriques et quantitatives)?
ZelelB
6

Il est difficile de répondre à cette question sans en savoir plus sur les données. Cela dit, j'offrirais les conseils suivants:

La plupart des techniques d'apprentissage automatique peuvent gérer des données de type mixte. Les méthodes basées sur les arbres (comme AdaBoost et Random Forests) fonctionnent bien avec ce type de données. La question la plus importante est en fait la dimensionnalité, dont vous avez raison de vous préoccuper.

Je vous suggère de faire quelque chose pour réduire cette dimensionnalité. Par exemple, recherchez les mots ou les phrases qui séparent le mieux les données et jetez les autres mots (remarque: les méthodes basées sur des arbres le font automatiquement).

Christopher Louden
la source
2

Avec le peu d'informations que vous nous avez fournies sur la nature de vos données, je vous conseille de suivre l'approche suivante:

  1. Convertissez les données de texte en catégories. Vous pouvez essayer différentes alternatives pour la quantité d'informations que les catégories doivent contenir, mais des catégories spécifiques doivent exister pour chaque variable. À titre d'exemple, je vais supposer une variable provenant d'un champ de texte d'un questionnaire d'enquête concernant la manière préférée de se rendre au travail.

    Dans un premier temps, nous devons nous assurer que les réponses ayant une signification similaire sont écrites de la même manière et appartiennent à la même catégorie (par exemple "à vélo", "à vélo", "à vélo" ont toutes la même signification). Ensuite, vous pouvez essayer de fusionner davantage dans des catégories moins détaillées (par exemple fusionner "tram", "métro" et "bus" dans "Moyens de transport public") ou même plus (par exemple "Marcher", "Jogging", "Vélo" dans " Activité physique ") selon ce que vous essayez de découvrir.

    Vous pouvez même mettre des combinaisons différentes dans votre jeu de données, puis les étapes suivantes détermineront celles qui seront utilisées pour l'analyse. Dans le cas où les données textuelles peuvent être "traduites" en variables ordonnées, assurez-vous de le faire (par exemple, si vous avez "petit, moyen, élevé", transformez-les en "1,2,3").

  2. Transformez vos variables catégorielles (pas celles ordinales) en variables factices (binaires). La plupart des algorithmes de classification / sélection de fonctionnalités le font automatiquement, mais assurez-vous que c'est le cas avec ceux que vous sélectionnez. Je me rends compte que la dimensionnalité des données deviendra assez importante à ce stade, mais cela sera traité à l'étape suivante.

  3. Appliquez une technique de sélection de fonctionnalité / réduction de dimensionnalité à vos données. Vous pouvez trouver un examen utile de ces techniques ici . Si vous utilisez Python, les outils sklearn vous offrent de nombreuses options (voir plus de détails ici ). Assurez-vous d'utiliser une technique qui prend également en compte la multicolinéarité. J'essaierais l'analyse des composants principaux ou un algorithme basé sur un arbre.

  4. Pour classer les données, j'irais avec Decision Tree Classifier (également disponible via sklearn ). Il effectue également la sélection des fonctionnalités en définissant des pondérations d'importance pour les fonctionnalités. Vous pouvez définir le niveau de détail de l'arborescence générée en fonction de vos options (par exemple, max_depth, min_samples_split) Assurez-vous d'ajuster le niveau de détail en fonction de la validation croisée pour éviter le sur-ajustement.

missrg
la source