Próbuję klasyfikować wiadomości do różnych kategorii za pomocą SVM. Przygotowałem listę pożądanych słów / symboli z zestawu szkoleniowego.
Dla każdego wektora, który reprezentuje komunikat, ustawiam odpowiedni wiersz, 1
jeśli słowo jest obecne:
„ciało” to: [mary, mała, jagnięca, gwiazda, migotanie]
pierwsza wiadomość: „Mary miała małą owieczkę” -> [1 1 1 0 0]
druga wiadomość: „twinkle little star” -> [0 1 0 1 1]
Myślę, że jest to dość powszechna konfiguracja w SVM, ale moje pytanie brzmi: z tysiącami słów w zestawie, a co, jeśli tylko 1-2 słowa na wiadomość faktycznie się pojawią? Czy liniowa zależność mojego zbioru wektorów szkoleniowych wpłynie niekorzystnie na zdolność konwergencji algorytmu?
classification
svm
sparse
jonsca
źródło
źródło
flexmix
- choć już od kilku lat mam w kalendarzu „Learn R”!Odpowiedzi:
Sparość i zależność liniowa to dwie różne rzeczy. Zależność liniowa implikuje, że niektóre wektory cech są prostymi wielokrotnościami innych wektorów cech (lub to samo stosuje się do przykładów). W konfiguracji, którą opisałeś, myślę, że liniowa zależność jest mało prawdopodobna (oznacza to, że dwa terminy mają tę samą częstotliwość (lub ich wielokrotność) we wszystkich dokumentach). Samo posiadanie rzadkich funkcji nie stanowi żadnego problemu dla SVM. Jednym ze sposobów na to jest to, że można wykonać losowy obrót osi współrzędnych, co pozostawiłoby problem bez zmian i dałoby to samo rozwiązanie, ale uczyniłoby dane całkowicie nierzadkimi (jest to po części działanie losowych rzutów ).
Wygląda też na to, że mówisz o SVM w pierwotnej postaci . Zauważ, że jeśli używasz SVM jądra, to, że masz rzadki zestaw danych, nie oznacza, że macierz jądra będzie rzadka. Może to być jednak niska ranga. W takim przypadku możesz faktycznie skorzystać z tego faktu, aby uzyskać bardziej efektywne szkolenie (patrz na przykład Wydajne szkolenie svm przy użyciu reprezentacji jądra niskiej rangi ).
źródło