5

Неужели кому-нибудь удалось запустить обычный регрессию наименьших квадратов в Vowpal Wabbit? Я пытаюсь подтвердить, что он вернет тот же ответ, что и точное решение, т. Е. При выборе a для минимизации ||y - X a||_2 + ||Ra||_2 (где R является регуляризацией). Я хочу получить аналитический ответ a = (X^T X + R^T R)^(-1) X^T y. Выполнение этого типа регрессии занимает около 5 строк в numpy python.Обычная регрессия наименьших квадратов в Vowpal Wabbit

Документация VW предполагает, что она может это сделать (предположительно, функция «квадрата» потерь), но до сих пор мне не удалось заставить ее приблизиться к сопоставлению результатов python. Becuase квадрат является функция потерь по умолчанию, я просто позвонив:

$ vw-varinfo input.txt 

где input.txt есть такие строки

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

мне нужны некоторые другие параметры в VW называют ли? Я не могу получить (относительно минимальную) документацию.

+0

Непонятный, что вопрос здесь. Можете ли вы предоставить дополнительную информацию, объясняющую, что вы ожидаете от того, что вы получаете? – Spaceghost

+1

Помните, что vw - это онлайн-алгоритм, который обновляет вес модели (коэффициенты OLS) лишь незначительно для каждого примера и никогда не возвращается или не работает. Если вы хотите получить производительность, похожую на пакетный алгоритм, особенно когда количество примеров не намного больше числа функций, вам, вероятно, потребуется выполнить несколько проходов на входе до сближения (например, '-c -passes 100 '). – arielf

+0

«--loss_function classic» даст наименее квадраты ванили. «--loss_function squared» часто превзойдет его, потому что он имеет «Обновления по весу онлайн-значения» (см .: http://arxiv.org/abs/1011.1576) –

ответ

3

Я думаю, вы должны использовать этот синтаксис (vowpal Wabbit версию 7.3.1):

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

Этого синтаксис будет инструктировать VW прочитать файл input.txt, запись на диске модельных записей и кэш (необходимые для многопроходной конвергенции) и соответствуют регрессии с использованием функции квадратов потерь. Более того, он, наконец, будет писать коэффициенты модели читаемым способом в файл с именем model_readable.txt.

Опция --holdout_off является недавней дополнительной для того, чтобы подавить автоматическое вычисление потерь вне образца (если вы используете более раннюю версию, которую вы должны удалить).

В основном регрессионный анализ, основанный на стохастическом градиентном спуске, предоставит вам вектор коэффициентов, аналогичный точному решению, только если не будет применена регуляризация и когда количество проходов будет высоким (я бы предложил 50 или даже больше, также случайное перетасовка строк входного файла поможет алгоритму лучше сходиться).

Смежные вопросы