Я хотел бы запустить линейную регрессию на vowpal wabbit, используя нулевую модель (только перехват - для сравнения). Какой оптимизатор я должен использовать для этого? Также является ли лучший постоянный убыток, о котором сообщается, простым средним значением?
Нулевая модель линейной регрессии в vowpal wabbit
Ответы (1)
A1: Для линейной регрессии, если вам важны средние значения, вы должны использовать --loss_function squared
(по умолчанию). Если вас больше интересует медиана, а не среднее значение (например, если у вас есть некоторые выбросы, которые могут сильно исказить среднее значение), используйте --loss_function quantile
. Кстати: это не оптимизаторы, а просто функции потерь. Я бы оставил оптимизатор (расширенный SGD) как есть (по умолчанию), так как он работает очень хорошо.
A2: best constant
— это постоянное предсказание, которое даст наименьшую ошибку, а best constant loss
— это средняя ошибка для постоянного предсказания этого best constant
числа. Это средневзвешенное значение всех ваших целевых переменных. Это не то же самое, что точка пересечения b
в формуле линейной регрессии y = Ai*xi + B
. B
— свободный член, не зависящий от входных данных. B
не обязательно является средним из y
s.
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
— значение перехвата (при условии отсутствия коллизий хэшей и линейной комбинации входных данных).