Chciałbym użyć danych nieatomowych jako funkcji prognozy. Załóżmy, że mam tabelę z tymi funkcjami:
- 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 ]
Chciałbym przewidzieć / sklasyfikować, na przykład, kolumnę 2.
Robię coś, aby automatycznie odpowiadać na pytania, wszelkiego rodzaju pytania, na przykład „Where Foo Born?” ...
Najpierw wykonuję zapytanie do wyszukiwarki, potem otrzymuję dane tekstowe, a następnie wykonuję wszystkie analizy (dodawanie tagów, udostępnianie, analizowanie, dzielenie ...)
Moje pierwsze podejście polegało na stworzeniu tabeli, w każdym wierszu z wierszem tekstu i wieloma funkcjami, takimi jak „Pierwsze słowo”, „Tag pierwszego słowa”, „Kawałki” itp.
Ale przy takim podejściu brakuje mi związków między zdaniami.
Chciałbym wiedzieć, czy istnieje algorytm, który przegląda struktury drzewiaste (lub wektory) i tworzy relacje oraz wyodrębnia wszystko, co jest istotne dla przewidywania / klasyfikacji. Wolałbym wiedzieć o bibliotece, która to robi, niż o algorytmie, który muszę zaimplementować.
źródło
Odpowiedzi:
Jeśli chodzi o radzenie sobie z wieloma odmiennymi rodzajami danych, szczególnie gdy relacje między nimi są niejasne, zdecydowanie zaleciłbym technikę opartą na drzewach decyzyjnych , najpopularniejsze dziś, według mojej najlepszej wiedzy, to losowy las i wyjątkowo losowy drzewa .
Oba mają implementacje w sklearn i są dość proste w użyciu. Na bardzo wysokim poziomie powodem, dla którego
decision tree
podejście oparte na wielu danych jest korzystne dla wielu różnych rodzajów danych, jest to, że drzewa decyzyjne są w dużej mierze niezależne od konkretnych danych, z którymi mają do czynienia, pod warunkiem, że są w stanie zrozumieć twoją reprezentację.Nadal będziesz musiał dopasować swoje dane do jakiegoś wektora funkcji, ale na podstawie twojego przykładu, który wydaje się dość prostym zadaniem, a jeśli chcesz pójść nieco głębiej w swojej implementacji, z pewnością możesz wymyślić niestandardowa reguła podziału drzewa bez konieczności zmiany czegokolwiek w podstawowym algorytmie. Oryginalny papier jest całkiem przyzwoite miejsce, aby rozpocząć, jeśli chcesz dać, że strzał.
Jeśli jednak chcesz danych pseudo-strukturalnych z danych tekstowych, proponuję zajrzeć do
doc2vec
ostatnio opracowanego przez Google. Nie sądzę, że są już jakieś dobre implementacje typu open source, ale jest to całkiem prosta poprawaword2vec
algorytmu, który ma implementacje co najmniejC
ipython
.Mam nadzieję, że to pomaga! Daj mi znać, jeśli masz więcej pytań.
źródło