2015-05-24 5 views
1

Я тренирую простой логистический регрессионный классификатор с использованием LIBLINEAR. Есть только 3 функции, а label - двоичный 0-1.liblinear L1 против L2 разница в логической регрессии

Пример входного файла:

1 1:355.55660999775586 2:-3.401379785  3:5 
1 1:252.43759050148728 2:-3.96044759307 3:9 
1 1:294.15085871437088 2:-13.1649273486 3:14 
1 1:432.10492221032933 2:-2.72636786196 3:9 
0 1:753.80863694081768 2:-12.4841741178 3:14 
1 1:376.54927850355756 2:-6.9494008935  3:7 

Теперь, если я использую "-s 6", который "L1-регуляризованная логистической регрессии", то 10-кратный точность кросс проверки составляет около 70% , и каждый инер заканчивается в течение нескольких секунд. Но если я использую «-s 7», то есть «L2-регуляризованная логистическая регрессия (двойная)», то итерация обучения превышает 1000, а 10-кратная точность составляет всего 60%.

Неужели кто-нибудь видел такое странное поведение? По моему мнению, единственная разница между L1 и L2 заключается в том, использует ли термин регуляризации абс (x) или pow (x, 2).

ответ

0

Благодарим вас за это сообщение! Я работаю с liblinear довольно часто и вообще всегда использую L2-потерю без размышлений. В этой статье довольно хорошая работа, объясняющая разницу: http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/

Исходя из этого, я предполагаю, что у вас мало возможностей, но, может быть, и небольшой набор данных? Вы пытались увеличить количество входных точек?

+0

Спасибо за ответ! У меня около 300000 учебных примеров, среди которых 64% - положительные примеры обучения. Как вы думаете, этого достаточно? – menphix

+0

BTW, очень полезный товар! – menphix

+0

Счастливая статья помогла! О да, это должно быть более чем достаточно, и перекос не должен быть достаточно большим, чтобы сделать большую часть разницы. Вы пробовали стандартные вещи, такие как, возможно, упорядочение входных данных? Можете ли вы построить ошибку как функцию обучения итерациям? Может быть, это не сходится? – ABC

0

Не думаю, что это странное поведение в моем плохом мнении. Вы должны сделать пробную версию, чтобы подтвердить, какой из них лучше всего подходит для вашего дела, прежде чем вы не почувствуете этого. Теоретически L1-регулярный ограничен, как и выбор функции, тогда как l2-regular более плавный.

0

Я только что понял, есть два логистическая регрессия классификатор обеспечивается LIBLINEAR:

0 -- L2-regularized logistic regression (primal) 
7 -- L2-regularized logistic regression (dual) 

Я использую 7, которая не сходится даже после 1000 итераций. После того, как я переключился на 0, он сходился очень быстро и смог получить точность ~ 70%.

Я считаю, что двойное и первичное - это в основном разница в методах оптимизации, поэтому я думаю, что это, вероятно, проблема с численным вычислением.

Для получения дополнительной информации о двойственной форме против первобытной формы: https://stats.stackexchange.com/questions/29059/logistic-regression-how-to-get-dual-function