Prédiction avec des caractéristiques non atomiques

10

Je voudrais utiliser des données non atomiques, comme fonctionnalité pour une prédiction. Supposons que j'ai une table avec ces fonctionnalités:

- Column 1: Categorical - House
- Column 2: Numerical - 23.22
- Column 3: A Vector - [ 12, 22, 32 ]
- Column 4: A Tree - [ [ 2323, 2323 ],[2323, 2323] , [ Boolean, Categorical ] ]
- Column 5: A List [ 122, Boolean ]

Je voudrais prédire / classer, par exemple, la colonne 2.

Je crée quelque chose pour répondre automatiquement aux questions, à tout type de question, comme "Où est né Foo?" ...

Je fais d'abord une requête à un moteur de recherche, puis j'obtiens des données textuelles en conséquence, puis je fais tout le truc d'analyse (balisage, stemming, analyse, division ...)

Ma première approche a été de faire un tableau, chaque ligne avec une ligne de texte et beaucoup de fonctionnalités, comme "First Word", "Tag of First Word", "Chunks", etc ...

Mais avec cette approche, je manque les relations entre les phrases.

Je voudrais savoir s'il existe un algorithme qui regarde à l'intérieur des structures arborescentes (ou vecteurs) et établit les relations et extrait tout ce qui est pertinent pour la prédiction / classification. Je préférerais connaître une bibliothèque qui fait cela plutôt qu'un algorithme que je dois implémenter.

user3798928
la source
Veuillez clarifier: vous dites que vous souhaitez utiliser la colonne 2 en tant que fonctionnalité, mais vous dites ensuite que vous souhaitez prédire / classer la colonne 2. De plus, vous appelez cette fonctionnalité «non atomique» ... voulez-vous dire qu'elle n'est pas catégorique?
logc

Réponses:

7

Lorsqu'il s'agit de traiter de nombreux types de données disparates, en particulier lorsque les relations entre elles ne sont pas claires, je recommanderais fortement une technique basée sur des arbres de décision , les plus populaires aujourd'hui, au meilleur de ma connaissance, sont des forêts aléatoires et extrêmement aléatoires. des arbres .

Les deux ont des implémentations dans sklearn , et ils sont assez simples à utiliser. À un niveau très élevé, la raison pour laquelle une decision treeapproche fondée sur les avantages est avantageuse pour plusieurs types de données disparates est que les arbres de décision sont largement indépendants des données spécifiques qu'ils traitent, tant qu'ils sont capables de comprendre votre représentation.

Vous devrez toujours adapter vos données à un vecteur de fonctionnalité quelconque, mais en fonction de votre exemple, cela semble être une tâche assez simple, et si vous êtes prêt à approfondir votre mise en œuvre, vous pourriez certainement trouver une règle de division d'arbre personnalisée sans avoir à modifier quoi que ce soit dans l'algorithme sous-jacent. Le papier d'origine est un bon point de départ pour commencer.

Si vous voulez des données pseudo-structurelles à partir de vos données texte, je pourrais suggérer de les examiner doc2vec, récemment développées par Google. Je ne pense pas qu'il existe de bonnes implémentations open-source maintenant, mais c'est une amélioration assez simple de l' word2vecalgorithme, qui a des implémentations dans au moins Cet python.

J'espère que ça t'as aidé! Faites-moi savoir si vous avez d'autres questions.

indico
la source