Comment recoder une variable catégorielle en variable numérique lors de l'utilisation de SVM ou de Neural Network

19

Pour utiliser SVM ou Neural Network, il doit transformer (encoder) des variables catégorielles en variables numériques, la méthode normale dans ce cas est d'utiliser des valeurs binaires 0-1 avec la k-ème valeur catégorielle transformée en (0,0, .. ., 1,0, ... 0) (1 est en position k-ème). Existe-t-il d'autres méthodes pour ce faire, en particulier lorsqu'il existe un grand nombre de valeurs catégorielles (par exemple 10000) telles que la représentation 0-1 introduira un grand nombre de dimensions supplémentaires (unités d'entrée) dans Neural Network qui ne semblent pas tout à fait souhaitées ou attendues ?

Je pose des questions sur les stratégies générales.

user68589
la source
Vous posez des questions sur les stratégies générales ou sur un problème spécifique?
Denis Tarasov

Réponses:

11

Dans la PNL, où les mots sont généralement codés en 1 sur k, l'utilisation des incorporations de mots est apparue récemment. La page wikipedia avec ses références est un bon début.

XjeRnjen

Vous pouvez peut-être transférer cette idée dans votre environnement.

bayerj
la source
10

Les méthodes «standard» sont: l'encodage à chaud (que vous avez mentionné dans la question). S'il y a trop de catégories possibles, mais que vous avez besoin d'un encodage 0-1, vous pouvez utiliser une astuce de hachage .

L'autre méthode fréquemment utilisée consiste à établir la moyenne des réponses par catégorie: voir l'image du commentaire sur kaggle .

Alleo
la source
1

Vous pouvez utiliser dummyVarsdans R, à partir du caretpackage. Il créera automatiquement différentes colonnes en fonction du nombre de niveaux. Ensuite, vous pouvez les utiliser cbindet les joindre à vos données originales. Les autres options incluent model.matrixet sparse.model.matrix.

Karan Gulati
la source
0

Vous pouvez essayer l'encodage binaire qui est plus compact et parfois plus performant qu'un seul. Vous pouvez par exemple implémenter l'incorporation catégorique dans Keras.

eafpres
la source
0

k-1

"Incorporation d'entités de variables catégorielles" par Cheng Guo, Felix Berkhahn

Nous cartographions les variables catégorielles dans un problème d'approximation de fonction dans des espaces euclidiens, qui sont les plongements d'entité des variables catégorielles. La cartographie est apprise par un réseau de neurones au cours du processus d'entraînement supervisé standard. L'intégration d'entité réduit non seulement l'utilisation de la mémoire et accélère les réseaux de neurones par rapport au codage à chaud, mais plus important encore, en mappant des valeurs similaires les unes dans les autres dans l'espace d'intégration, elle révèle les propriétés intrinsèques des variables catégorielles. Nous l'avons appliqué avec succès lors d'un récent concours Kaggle et avons pu atteindre la troisième position avec des fonctionnalités relativement simples. Nous démontrons en outre dans cet article que l'intégration d'entités aide le réseau neuronal à mieux se généraliser lorsque les données sont rares et les statistiques inconnues. Ainsi, il est particulièrement utile pour les jeux de données avec beaucoup de caractéristiques de cardinalité élevée, où d'autres méthodes ont tendance à sur-ajuster. Nous démontrons également que les plongées obtenues à partir du réseau de neurones formé augmentent considérablement les performances de toutes les méthodes d'apprentissage automatique testées lorsqu'elles sont utilisées comme fonctionnalités d'entrée. Étant donné que l'incorporation d'entité définit une mesure de distance pour les variables catégorielles, elle peut être utilisée pour visualiser les données catégorielles et pour le regroupement des données.

Sycorax dit de réintégrer Monica
la source