5

Czy ktoś zdołał uruchomić regresję najmniejszych kwadratów w Vowpal Wabbit? Próbuję potwierdzić, że zwróci ona tę samą odpowiedź co dokładne rozwiązanie, tj. Przy wyborze, aby zminimalizować ||y - X a||_2 + ||Ra||_2 (gdzie R jest regularyzacją) chcę uzyskać odpowiedź analityczną a = (X^T X + R^T R)^(-1) X^T y. Wykonanie tego typu regresji zajmuje około 5 wierszy w numpy python.Regresja zwykłych najmniejszych kwadratów w Vowpal Wabbit

Dokumentacja VW sugeruje, że może to zrobić (przypuszczalnie funkcja straty "kwadrat"), ale jak dotąd nie udało mi się uzyskać tego, by zbliżyć się do wyników Pythona. Becuase kwadratu jest domyślna funkcja straty, ja po prostu dzwoniąc:

$ vw-varinfo input.txt 

gdzie input.txt posiada linie takie jak

1.4 | 0:3.4 1:-1.2 2:4.0 .... etc 

Czy muszę mieć jakieś inne parametry w VW zadzwonić? Nie jestem w stanie pogrzebać (raczej minimalnej) dokumentacji.

+0

Nie jest jasne, o co tu chodzi. Czy możesz podać więcej informacji wyjaśniających, czego oczekujesz od tego, co dostajesz? – Spaceghost

+1

Pamiętaj, że vw to algorytm online, który aktualizuje wagę modelu (współczynniki OLS) tylko nieznacznie dla każdego przykładu i nigdy nie wraca ani nie działa. Jeśli chcesz uzyskać wydajność podobną do algorytmu wsadowego, szczególnie gdy liczba przykładów nie jest dużo większa niż liczba funkcji, prawdopodobnie będziesz musiał wykonać wiele przejść na wejściu do momentu uzyskania zbieżności (np. '-c --passes 100 '). – arielf

+0

"--loss_function classic" da wanilii najmniejszych kwadratów. "-loss_function squared" często przewyższa go, ponieważ ma "Online Weightance Weight Aware Updates" (zobacz: http://arxiv.org/abs/1011.1576) –

Odpowiedz

3

myślę, że należy użyć tej składni (vowpal Wabbit wersja 7.3.1):

vw -d input.txt -f linear_model -c --passes 50 --holdout_off --loss_function squared --invert_hash model_readable.txt 

Ta składnia poinstruuje VW czytać plik input.txt, zapisz na dysku rekord modelu i pamięci podręcznej (konieczne dla zbieżności wielu pasm) i dopasować regresję za pomocą funkcji kwadratowej straty. Co więcej, w końcu zapisuje współczynniki modelu w czytelny sposób do pliku o nazwie model_readable.txt.

Opcja --holdout_off jest ostatnią dodatkową opcją w celu powstrzymania automatycznego obliczania strat poza próbą (jeśli używasz wcześniejszej wersji, musisz ją usunąć).

Zasadniczo analiza regresji oparta na gradiencie gradientu stochastycznego dostarczy wektor współczynników podobnych do dokładnego rozwiązania tylko wtedy, gdy nie zostanie zastosowana regularyzacja i gdy liczba przejść jest wysoka (sugerowałbym 50 lub nawet więcej, również losowe tasowanie wierszy pliku wejściowego pomogłoby algorytmowi lepiej zejść).