Problem, który rozwiązuję, polega na podzieleniu krótkich tekstów na wiele klas. Moje obecne podejście polega na wykorzystaniu częstotliwości ważonych tf-idf i nauce prostego klasyfikatora liniowego (regresja logistyczna). Działa to całkiem dobrze (około 90% makra F-1 na zestawie testowym, prawie 100% na zestawie treningowym). Dużym problemem są niewidoczne słowa / n-gram.
Próbuję ulepszyć klasyfikator, dodając inne funkcje, np. Wektor o stałej wielkości obliczany za pomocą podobieństw dystrybucyjnych (obliczanych przez word2vec) lub inne cechy kategorialne przykładów. Moim pomysłem było po prostu dodanie funkcji do rzadkich funkcji wprowadzania z zestawu słów. Skutkuje to jednak gorszą wydajnością zestawu testowego i szkoleniowego. Same dodatkowe funkcje dają około 80% F-1 na zestawie testowym, więc nie są śmieciami. Skalowanie funkcji również nie pomogło. Moje obecne myślenie jest takie, że tego rodzaju funkcje nie pasują dobrze do (rzadkiego) zestawu słów.
Pytanie zatem brzmi: zakładając, że dodatkowe funkcje dostarczają dodatkowych informacji, jaki jest najlepszy sposób na ich włączenie? Czy szkolenie oddzielnych klasyfikatorów i łączenie ich w jakąś pracę zespołową (prawdopodobnie miałoby to tę wadę, że nie można uchwycić interakcji między cechami różnych klasyfikatorów)? Czy są inne bardziej złożone modele, które powinienem rozważyć?
źródło
Odpowiedzi:
Jeśli dobrze rozumiem, zasadniczo masz dwie formy funkcji dla swoich modeli. (1) Dane tekstowe, które przedstawiłeś jako rzadką paczkę słów i (2) bardziej tradycyjne, gęste elementy. W takim przypadku istnieją 3 wspólne podejścia:
TruncatedSVD
) na swoich rzadkich danych, aby były gęste, i połącz cechy w jedną gęstą macierz, aby wyszkolić swój model (modele).hstack
w jednej rzadkiej macierzy, aby wytrenować swój model (y).Pipeline
jeśli chcesz).Wszystkie trzy podejścia są ważne i mają swoje zalety i wady. Osobiście uważam, że (1) jest zwykle najgorszy, ponieważ jest stosunkowo powolny. Uważam też, że (3) jest zwykle najlepszy, ponieważ jest wystarczająco szybki i daje bardzo dobre prognozy. Możesz oczywiście wykonać ich kombinację, jeśli chcesz wykonać bardziej rozbudowane połączenie.
Jeśli chodzi o używane algorytmy, mogą one zasadniczo pasować do tych ram. Regresja logistyczna działa zaskakująco dobrze przez większość czasu, ale inni mogą radzić sobie lepiej w zależności od problemu i tego, jak dobrze go dostroisz. Sam jestem częściowo zwolennikiem GBM, ale najważniejsze jest to, że możesz wypróbować tyle algorytmów, ile chcesz, a nawet wykonanie prostych ważonych zestawów ich prognoz prawie zawsze prowadzi do lepszego ogólnego rozwiązania.
źródło
Modele liniowe po prostu dodają swoje cechy pomnożone przez odpowiednie wagi. Jeśli na przykład masz 1000 rzadkich funkcji, z których tylko 3 lub 4 są aktywne w każdej instancji (a pozostałe są zerami) i 20 gęstych obiektów, które nie są zerami, to jest całkiem prawdopodobne, że gęste funkcje wykorzystają większość wpływ, podczas gdy rzadkie funkcje dodadzą tylko niewielką wartość. Możesz to sprawdzić, przyglądając się wagom obiektów w kilku przypadkach i ich wpływowi na wynikową sumę.
Jednym ze sposobów rozwiązania tego problemu jest odejście od modelu addytywnego. Oto kilka modeli kandydujących.
SVM opiera się na oddzielaniu hiperpłaszczyzn. Chociaż hiperpłaszczyzna jest samym modelem liniowym, SVM nie podsumowuje swoich parametrów, ale zamiast tego próbuje optymalnie podzielić przestrzeń cech. Biorąc pod uwagę liczbę funkcji, powiedziałbym, że liniowy SVM powinien działać dobrze, podczas gdy bardziej skomplikowane jądra mogą mieć tendencję do przeładowywania danych.
Pomimo swojej nazwy, Naive Bayes jest dość potężnym modelem statystycznym, który wykazał dobre wyniki w klasyfikacji tekstu. Jest również wystarczająco elastyczny, aby wychwycić nierównowagę częstotliwości rzadkich i gęstych funkcji, więc zdecydowanie powinieneś spróbować.
Wreszcie losowe lasy mogą w tym przypadku działać jako dobra metoda zespolona. Randomizacja zapewni, że różne rodzaje cech (rzadkie / gęste) będą wykorzystywane jako główne węzły decyzyjne w różnych drzewach. Drzewa RF / decyzyjne są również dobre do samodzielnego sprawdzania cech, więc i tak warto zwrócić uwagę na ich strukturę.
Zauważ, że wszystkie te metody mają swoje wady, które mogą w twoim przypadku zmienić je w śmieci. Łączenie rzadkich i gęstych funkcji nie jest tak naprawdę dobrze zbadanym zadaniem, więc daj nam znać, które z tych podejść działa najlepiej w twoim przypadku.
źródło