Wybór parametrów SVM

9

Czy istnieją lepsze alternatywne metody wyboru C i Gamma, które zapewniają lepszą wydajność treningu?

Jan
źródło

Odpowiedzi:

5

Wyszukiwanie w sieci jest powolne, ponieważ spędza dużo czasu na badaniu ustawień hiperparametrów, które nie są w żadnym razie optymalne. Lepszym rozwiązaniem jest algorytm simpleksowy Neldera-Meada , który nie wymaga obliczania informacji o gradiencie i jest prosty do wdrożenia (powinno być wystarczająco dużo informacji na stronie Wikipedii). W przyborniku Weka może być także trochę kodu java , jednak pracuję w MATLAB-ie i nie przyjrzałem się Weka zbyt szczegółowo.

SMO to algorytm znajdowania parametrów modelu, a nie hiperparametrów.

Dikran Torbacz
źródło
Czy możesz podać swoją implementację Matlaba?
Zach.
1
Jest tu jeden theoval.cmp.uea.ac.uk/matlab/#optim, ale jeśli masz już zestaw narzędzi do optymalizacji, to fminsearch jest także implementacją metody Neldera-Meada IIRC.
Dikran Torbacz
5

Metoda simpleksowa Neldera-Meada może obejmować tyle ocen funkcji, co zwykłe wyszukiwanie siatki. Zwykle powierzchnia błędu jest wystarczająco gładka w pobliżu optymalnych wartości parametrów, aby wystarczyło zgrubne wyszukiwanie siatki, a następnie dokładniejsze wyszukiwanie w mniejszym obszarze.

Jeśli interesuje Cię optymalizacja C i gamma na podstawie gradientu, istnieją metody takie jak optymalizacja granic promienia-marginesu lub optymalizacja wskaźnika błędów w zestawie sprawdzania poprawności. Obliczanie gradientu funkcji celu wymaga czegoś takiego jak jeden ciąg SVM, ale proste obniżanie gradientu może obejmować tylko kilkadziesiąt iteracji. (Spójrz na http://olivier.chapelle.cc/ams/ artykuł i implementację Matlab.)

Innuo
źródło
Z mojego doświadczenia wynika, że ​​miód nelderowy jest zwykle szybszy niż wyszukiwanie siatki, a opadanie gradientu jest tylko nieco szybsze, ponieważ wymaga mniej iteracji, a koszt obliczania gradientu jest wysoki. Więc jeśli masz implementację zapewniającą opadanie gradientu, skorzystaj z niej, ale Nelder-Mead prawdopodobnie nie pozostanie daleko w tyle. Oczywiście, gdy tylko masz więcej niż dwa hiperparametry, aby dostroić wyszukiwanie siatki, natychmiast staje się znacznie najwolniejszą metodą. Interesujące byłoby zbadanie porównawczej wydajności każdej metody.
Dikran Torbacz
Masz rację, że jeśli liczba parametrów jest większa niż para, wyszukiwanie w siatce nie jest wykonalne. Ale to samo dotyczy Neldera-Meada, ponieważ rozmiar simpleksu zależy od wymiarów.
Innuo,
tylko w takim samym stopniu jak w przypadku spadku gradientu, dodanie dodatkowego wymiaru do problemu dodaje tylko jeden dodatkowy punkt do simpleksu, więc podobnie jak spadek gradientu skaluje się mniej więcej liniowo w liczbie hiperparametrów. Używałem go z problemami z ponad 40 hiperparametrami i jest tylko nieznacznie wolniejszy niż spadek gradientu (masz tendencję do nadmiernego dopasowania w wyborze modelu, choć przy tak wielu hiperparametrach).
Dikran Torbacz
0

Oto wpis na blogu Alexa Smoli dotyczący twojego pytania

Oto cytat:

[...] wybierz, powiedzmy 1000 par (x, x ') losowo z twojego zestawu danych, oblicz odległość wszystkich takich par i weź medianę, kwantyl 0,1 i 0,9. Teraz wybierz λ, aby być odwrotną dowolną z tych trzech liczb. Przy odrobinie weryfikacji krzyżowej dowiesz się, która z trzech jest najlepsza. W większości przypadków nie trzeba już szukać.

carlosdc
źródło