Как вернуть прогнозы в интервале [0, 1] для SVM в vowpal wabbit

Извините, если это уже было задано. Вместо необработанных прогнозов (-r) я хотел бы вернуть прогнозы в интервале [0, 1] для SVM, обученного vowpal wabbit, установив -loss_function hinge. В настоящее время я пытаюсь это сделать, но это не дает мне того, что я хочу. есть идеи?

vw -d vw_train_rand.vw -c -f svm_rand.vw --passes 10 --loss_function hinge -q cn;

vw -d vw_test_rand.vw -t -i svm_rand.vw -p preds_rand_svm.txt

Ваше здоровье

Аарон

РЕДАКТИРОВАТЬ:

1) Пример данных:

-1 |c Loan.TypeConventional:1 Loan.TypeFHA:0 Loan.TypeUnknown:0 Loan.TypeVA:0 |n Loan.Size:124500 LenderRank0612.0614:1939 ZipSquareMiles:53.1 MailDateMonth:5 ZipPerForeignBorn:11.4 ZipPerHighSchoolPlusDegree:57.2 ZipPerCollegePlusDegree:15.2 ZipPerVeterans:13.4 ZipPopPerSquareMile:798.1 ZipPerUnemployement:8.5 ZipSexRatio:96.7 ZipHousingUnitsPerSquareMile:315.1 ZipMedianHouseholdIncome:36238 ZipPerCapitaIncome:19085 MonthsDeedDatetoMailDate:2
-1 |c Loan.TypeConventional:1 Loan.TypeFHA:0 Loan.TypeUnknown:0 Loan.TypeVA:0 |n Loan.Size:232000 LenderRank0612.0614:391 ZipSquareMiles:99.1 MailDateMonth:5 ZipPerForeignBorn:11.8 ZipPerHighSchoolPlusDegree:73.3 ZipPerCollegePlusDegree:39.3 ZipPerVeterans:9.1 ZipPopPerSquareMile:485.5 ZipPerUnemployement:5.9 ZipSexRatio:98.5 ZipHousingUnitsPerSquareMile:169.6 ZipMedianHouseholdIncome:78465 ZipPerCapitaIncome:31908 MonthsDeedDatetoMailDate:3
-1 |c Loan.TypeConventional:1 Loan.TypeFHA:0 Loan.TypeUnknown:0 Loan.TypeVA:0 |n Loan.Size:90000 LenderRank0612.0614:130 ZipSquareMiles:32.6 MailDateMonth:5 ZipPerForeignBorn:51.5 ZipPerHighSchoolPlusDegree:60.7 ZipPerCollegePlusDegree:17.3 ZipPerVeterans:9.3 ZipPopPerSquareMile:783.2 ZipPerUnemployement:4.8 ZipSexRatio:97.2 ZipHousingUnitsPerSquareMile:274.2 ZipMedianHouseholdIncome:64668 ZipPerCapitaIncome:25632 MonthsDeedDatetoMailDate:3
-1 |c Loan.TypeConventional:0 Loan.TypeFHA:0 Loan.TypeUnknown:0 Loan.TypeVA:1 |n Loan.Size:121301 LenderRank0612.0614:23 ZipSquareMiles:6.8 MailDateMonth:5 ZipPerForeignBorn:14.9 ZipPerHighSchoolPlusDegree:63.9 ZipPerCollegePlusDegree:24.2 ZipPerVeterans:10 ZipPopPerSquareMile:5245.1 ZipPerUnemployement:7.1 ZipSexRatio:93.3 ZipHousingUnitsPerSquareMile:2001.6 ZipMedianHouseholdIncome:56398 ZipPerCapitaIncome:25815 MonthsDeedDatetoMailDate:2

2) Что я получаю на данный момент:

-1.001968
-1.000737
-1.000441
-1.001823

3) Что я хотел бы видеть: прогнозы в непрерывном интервале [0, 1], чтобы каждую запись можно было интерпретировать как прогнозируемую вероятность, связанную с событием, например:

0.012
0.009
0.010
0.0085

person aaron    schedule 12.06.2015    source источник
comment
Аарон, не могли бы вы добавить к вопросу следующее: 1) несколько строк набора данных, как для обучения, так и для тестирования 2) что вы ожидаете? против 3) что вы получаете?   -  person arielf - Reinstate Monica    schedule 12.06.2015
comment
Привет @arielf, см. правки выше.   -  person aaron    schedule 14.06.2015
comment
Чтобы преобразовать необработанные прогнозы в логистические вероятности, вы всегда можете передавать результаты через внешнюю утилиту utl/logistic. Результаты будут подписаны (направление + вероятность внутри направления). Параметр vw --link logistic также может работать для некоторых комбинаций параметров. Также см. ответ Мартина.   -  person arielf - Reinstate Monica    schedule 15.06.2015


Ответы (1)


Если вы хотите предсказать вероятности, вы должны тренироваться с --loss_function=logistic и тестировать с --link=logistic. Потеря шарнира (используемая в SVM) приводит к классификатору максимальной маржи, который не подходит для прогнозирования вероятностей.

Обратите внимание, что просто использование --loss_function=hinge не делает SVM из VW (нет ядра). Если вы хотите, чтобы машина опорных векторов с радиальным ядром обучалась онлайн, используйте --kvsm --kernel=rbf (дополнительные параметры см. в vw --ksvm -h | grep -A9 KSVM).

person Martin Popel    schedule 14.06.2015
comment
очень полезно, спасибо. Есть ли где-нибудь исчерпывающий список, изложенный в относительно ясной форме, который документирует все фреймворки ML, реализованные в vowpal wabbit? в документации GitHub, например, не было ничего, что я видел о нейронных сетях или ядрах радиального базиса. Это отличный инструмент. Спасибо за поддержку! - person aaron; 16.06.2015
comment
Исчерпывающей документации нет. Некоторые параметры VW описаны на вики, но VW быстро развивается , поэтому вики устаревает. Вклад приветствуется (любой может редактировать вики). Некоторая документация также связана с учебником. Например, документация ksvm говорит, что --reprocess – важный параметр. - person Martin Popel; 16.06.2015
comment
примеры в тестах также могут быть очень полезны при попытке узнайте, как использовать новое (недокументированное) сокращение. vw -h должен вывести список всех сокращений. Если вы хотите узнать все параметры данной редукции (например, --ksvm или --nn), вы должны добавить в команду параметр редукции (например, vw -h --ksvm или vw -h --nn 1). - person Martin Popel; 16.06.2015
comment
Спасибо, что поделились vw --ksvm -h | grep -A9 KSVM. Это полезный трюк! - person Zach; 13.10.2015
comment
Привет, как мне адаптировать для этого классификатор, чувствительный к стоимости? Рекомендуется не изменять loss_function для многоклассовой классификации. github.com/JohnLangford/vowpal_wabbit/issues/1082 для контекста. - person Dhruv Ghulati; 19.08.2016
comment
Для --oaa и --csoaa_ldf=mc есть вариант --probabilities (поэтому --link=logisitic не нужен, но все равно надо использовать --loss_function=logistic). - person Martin Popel; 19.08.2016