2012-09-19 9 views
13

Używam libsvm w trybie C-SVC z wielomianem jądra stopnia 2 i jestem zobowiązany do trenowania wielu maszyn SVM. Podczas treningu, jestem coraz jeden lub nawet oba te ostrzeżenia dla niektórych SVMs że trenuję:libsvm Kurczenie się heurystyki

WARNING: using -h 0 may be faster 
* 
WARNING: reaching max number of iterations 
optimization finished, #iter = 10000000 

Znalazłem opis parametru h:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1) 

i I "Próbowałem przeczytać wyjaśnienie z dokumentacji libsvm, ale jest to dla mnie zbyt wysoki poziom. Czy ktoś może podać wyjaśnienie laika i, być może, niektóre sugestie, takie jak ustawienie byłoby korzystne, ponieważ ...? Warto również wiedzieć, czy ustawienie tego parametru dla wszystkich maszyn SVM, które trenuję, może spowodować negatywny wpływ na dokładność tych maszyn SVM, które nie przekazują tego ostrzeżenia jawnie.

Nie jestem pewien, co należy zrobić z drugim ostrzeżeniem.

Wystarczy podać więcej szczegółów: moje zestawy treningowe mają 10 atrybutów (cech) i składają się z 5000 wektorów.


Aktualizacja:

W przypadku gdy ktoś inny jest uzyskanie „osiągając maksymalną liczbę iteracji”, wydaje się być spowodowane przez numerycznych problemów ze stabilnością. Ponadto spowoduje to bardzo powolny czas treningu. Jądra jądra wielopierwiastkowego korzystają z technik sprawdzania poprawności krzyżowej w celu określenia najlepszej wartości dla regulacji (parametr C), a w przypadku jąder wielomianowych pomogły mi utrzymać ją na mniej niż 8. Ponadto, jeśli jądro jest niejednorodne \ sum (\ gamma x_i s_i + coef0)^d (przepraszam, LaTeX nie jest obsługiwany w SO), gdzie coef0! = 0, wtedy walidacja krzyżowa może zostać zaimplementowana za pomocą techniki wyszukiwania siatki zarówno dla gamma, jak i C, ponieważ w tym przypadku case, domyślna wartość dla gamma (1/number_of_features) może nie być najlepszym wyborem. Mimo to, z moich eksperymentów prawdopodobnie nie chcesz, aby gamma była zbyt duża, ponieważ spowoduje to problemy numeryczne (próbuję za to maksymalnie 8).

Dla dalszej inspiracji na temat możliwych wartości gamma i C należy spróbować szturchać w grid.py.

Odpowiedz

8

Obkurczające heurystyki służą do przyspieszenia optymalizacji. Jak mówi się w FAQ, czasami pomagają, a czasem nie. Uważam, że jest to kwestia czasu wykonywania, a nie konwergencji.

Fakt, że optymalizacja osiąga maksymalną liczbę iteracji, jest jednak interesujący. Możesz grać z tolerancją (parametr kosztu) lub spojrzeć na indywidualne problemy, które to powodują. Czy zbiory danych są duże?

+0

Dzięki za odpowiedź! Myślę, że masz rację co do kurczących się heurystyk. Po prostu pomagają w szybszym szkoleniu modeli. –

+0

Odnośnie maksymalnych iteracji, moje zbiory danych zawierają po 5000 pozycji. Trening trwa mniej niż minutę. Jaki jest parametr kosztu? Czy to regularyzacja? Teraz ustawiam go na 1, domyślną wartość w libsvm ... –

+0

Och, powinienem to wyjaśnić: moje zestawy treningowe mają 10 atrybutów/funkcji i składają się z 5000 wektorów. –

Powiązane problemy