Я начал использовать Vowpal Wabbit для логистической регрессии, однако я не могу воспроизвести результаты, которые он дает. Возможно, существует некоторая недокументированная "магия", но кто-нибудь смог воспроизвести/проверить/проверить вычисления для логистической регрессии?
Например, с помощью простых данных, приведенных ниже, мы стремимся моделировать способ age
предсказывает label
. Очевидно, что существует сильная связь, так как возраст увеличивает вероятность наблюдения 1 возрастания.
Как простой unit test, я использовал 12 строк данных ниже:
age label
20 0
25 0
30 0
35 0
40 0
50 0
60 1
65 0
70 1
75 1
77 1
80 1
Теперь, выполняя логическую регрессию в этом наборе данных, используя R, SPSS или даже вручную, создается модель, которая выглядит как L = 0.2294*age - 14.08
. Поэтому, если я подменяю возраст и использую преобразование logit prob = 1/(1 + EXP (-L)), я могу получить предсказанные вероятности, которые варьируются от 0.0001
для первой строки, до 0.9864
для последней строки, как и ожидалось.
Если я подключу те же данные в Vowpal Wabbit,
-1 'P1 |f age:20
-1 'P2 |f age:25
-1 'P3 |f age:30
-1 'P4 |f age:35
-1 'P5 |f age:40
-1 'P6 |f age:50
1 'P7 |f age:60
-1 'P8 |f age:65
1 'P9 |f age:70
1 'P10 |f age:75
1 'P11 |f age:77
1 'P12 |f age:80
И затем выполните логистическую регрессию, используя
vw -d data.txt -f demo_model.vw --loss_function logistic --invert_hash aaa
(командная строка, соответствующая Как выполнить логистическую регрессию с использованием vowpal wabbit по очень несбалансированному набору данных), я получаю модель L= -0.00094*age - 0.03857
, которая очень разные.
Прогнозируемые значения, полученные с использованием -r
или -p
, подтверждают это. Полученные вероятности оказываются почти одинаковыми, например 0.4857
для возраста = 20, а 0.4716
для возраста = 80, что очень сильно.
Я заметил эту несогласованность и с большими наборами данных. В каком смысле Vowpal Wabbit выполняет логистическую регрессию по-разному и как интерпретировать результаты?