Нулевая модель линейной регрессии в vowpal wabbit

Я хотел бы запустить линейную регрессию на vowpal wabbit, используя нулевую модель (только перехват - для сравнения). Какой оптимизатор я должен использовать для этого? Также является ли лучший постоянный убыток, о котором сообщается, простым средним значением?


person user90772    schedule 19.04.2017    source источник


Ответы (1)


A1: Для линейной регрессии, если вам важны средние значения, вы должны использовать --loss_function squared (по умолчанию). Если вас больше интересует медиана, а не среднее значение (например, если у вас есть некоторые выбросы, которые могут сильно исказить среднее значение), используйте --loss_function quantile. Кстати: это не оптимизаторы, а просто функции потерь. Я бы оставил оптимизатор (расширенный SGD) как есть (по умолчанию), так как он работает очень хорошо.

A2: best constant — это постоянное предсказание, которое даст наименьшую ошибку, а best constant loss — это средняя ошибка для постоянного предсказания этого best constant числа. Это средневзвешенное значение всех ваших целевых переменных. Это не то же самое, что точка пересечения b в формуле линейной регрессии y = Ai*xi + B. B — свободный член, не зависящий от входных данных. B не обязательно является средним из ys.

A3: Если вы хотите найти точку пересечения вашей модели, найдите вес с именем Constant в вашей модели. Для этого потребуется два коротких шага:

# 1) Train your model from the dataset
#    and save the model in human-readable (aka "inverted hash") format
vw --invert_hash model.ih your_dataset

# 2) Search for the free/intercept term in the readable model 
grep '^Constant:' model.ih

Результат шага grep должен быть примерно таким:

Constant:116060:-1.085126

Где 116060 — это хэш-слот (местоположение в модели), а -1.085126 — значение перехвата (при условии отсутствия коллизий хэшей и линейной комбинации входных данных).

person arielf - Reinstate Monica    schedule 21.04.2017
comment
Спасибо, так как мне перевести модель, которая работает хуже с точки зрения потерь по сравнению с лучшей константой? Какова ценность информации о потере лучшей константы? - person user90772; 24.04.2017
comment
Извините, неясно, о чем вы спрашиваете: что вы подразумеваете под «переводом» модели? На каких данных работает хуже? Наиболее распространенными причинами плохих результатов являются неверные данные или переобучение, но вы не рассказали подробностей о том, как вы тренируетесь? На каком типе и размере данных (количество примеров, количество функций, вывод прогресса)? какие варианты вы использовали в обучении? Как вы оцениваете после тренировки?... Так что здесь действительно трудно помочь. Лучший постоянный убыток полезен, чтобы получить представление о (взвешенном) среднем значении ваших лейблов. - person arielf - Reinstate Monica; 25.04.2017
comment
Я должен был быть более конкретным. Таким образом, в моем случае потери модели намного хуже, чем наилучшая константа, даже если RMSE лучше, чем простое среднее значение. Я работаю с многомерными категориальными функциями и числовым выводом. Размер данных небольшой (порядка 500–1000), а количество признаков велико (порядка 10 000 после OHE). Каково средневзвешенное значение меток? В моем случае у меня есть простая проблема регрессии (без весов), означает ли это, что лучшая постоянная потеря - это средняя потеря? - person user90772; 27.04.2017