Интерпретация основного вывода Vowpal Wabbit

У меня было пару вопросов по поводу выхода из простого пробега VW. Я читал в Интернете и на вики-сайтах, но все еще не уверен в паре основных вещей.

Я выполнил следующее на данных о жилье в Бостоне:

vw -d housing.vm --progress 1

где файл Housing.vm настроен как (частично):

введите здесь описание изображения

и вывод (частично):

введите здесь описание изображения

Вопрос 1:

1) Правильно ли думать о столбце средних потерь как о следующих шагах:

а) предсказать ноль, поэтому первая средняя потеря - это квадрат ошибки первого примера (с прогнозом равным нулю)

б) построить модель на примере 1 и предсказать пример 2. Усреднить теперь 2 квадрата потерь

c) построить модель на примере 1-2 и предсказать пример 3. Усреднить теперь 3 квадрата потерь

d) ...

Делайте это, пока не дойдете до конца данных (при условии одного прохода)

2) Каковы текущие функции столбцов? Похоже, это количество ненулевых признаков + перехват. То, что показано в примере, говорит о том, что признак не засчитывается, если он равен нулю — так ли это? Например, вторая запись имеет нулевое значение для «ZN». Действительно ли VW считает, что эта числовая функция отсутствует??


person B_Miner    schedule 14.09.2014    source источник


Ответы (1)


Ваши утверждения в основном верны. По умолчанию VW проводит онлайн-обучение, поэтому на шаге c он берет текущую модель (веса) и обновляет ее текущим примером (вместо того, чтобы снова учиться на всех предыдущих примерах).

Как вы и предполагали, текущий столбец features — это количество (ненулевое) признаков для текущего примера. Функция перехвата включается автоматически, если вы не укажете --noconstant.

Нет никакой разницы между отсутствующей функцией и функцией с нулевым значением. Оба означают, что вы не будете обновлять соответствующий вес.

person Martin Popel    schedule 15.09.2014
comment
Я рад слышать, что понимаю, спасибо! Однако мне любопытно, что я описал для средней потери так же, как доктор Лэнгфорд назвал «прогрессивной валидацией»? Идея выбора тестового набора размера s и того, что он описывает, не казалась такой простой, как то, что я изложил выше. - person B_Miner; 15.09.2014
comment
Тот факт, что отсутствующая функция совпадает с нулевым значением, имеет смысл, как только я вспомнил правило обновления sgd. - person B_Miner; 15.09.2014
comment
Если вы делаете один проход (или с --holdout_off), VW использует (и сообщает) прогрессивную проверку. Это означает: 1. вы видите новый пример и его правильную метку, 2. вы вычисляете потери для этого примера на основе уже изученной модели (и с помощью --progress 1 вы немедленно сообщаете об этом как «с прошлого»), 3. вы изучаете из примера, т.е. вы обновляете модель на основе текущего примера. - person Martin Popel; 16.09.2014