2016-05-24 6 views
1

Можно ли обучить многоклассовую (многочленную) линейную классификационную модель с библиотекой Vowpal Wabbit?Vowpal Wabbit Multiclass Linear Classification

Я попытался использовать -oaa с квадратом -loss_function, но кажется, что функция потери по умолчанию для -oaa является логистической.

Я использую rcv1.multiclass как ввод.

одно решение:

Я могу создать несколько версию данных следующим образом:

Version я: сделайте все метки нулю, за исключением класса I

Тогда я могу обучить несколько бинарных классификаций для каждого версия данных. Наконец, я могу передать тестовые данные ко всему классификатору и применить argmax. Есть ли лучшее (автоматизированное) решение?

ответ

2

При использовании vw --oaa N вы фактически получите линейный классификатор класса. Чтобы получить нелинейный классификатор, который Вы должны были бы добавить квадратичные/полиномиальные функции (-q, --cubic, --interactions) или ядро ​​(--ksvm) или скрытый слой (--nn) или любое другое нелинейное восстановление (--lrq, --stage_poly, --autolink).

Выбор функции потерь не влияет на то, является ли классификатор линейным или нет. Значение по умолчанию: --loss_function=squared. Для классификации я бы предложил использовать --loss_function=logistic (возможно, с --probabilities, если вы хотите прогнозировать вероятность каждого класса) или --loss_function=hinge (если вам нужен только верхний класс).

Затем я могу обучать несколько двоичных классификаций для каждой версии данных. Наконец, я могу передать тестовые данные ко всему классификатору и применить argmax. Есть ли лучшее (автоматизированное) решение?

Да, это именно то, что делает --oaa (но более эффективно).

Смежные вопросы