Оптимизация весов в логистической регрессии (логарифмическая вероятность)

В логистической регрессии:

функция гипотезы,

                   h(x) = ( 1 + exp{-wx} )^-1

где, w - веса/параметры, которые должны быть подобраны или оптимизированы


Функция стоимости (-ve логарифмическая функция правдоподобия) задается как:

Для одного обучения, например.. (x, y):

         l(w) = y * log ( h(x) ) + (1 - y) * log ( 1 - h(x) )

Цель состоит в том, чтобы максимизировать l(w) по всем обучающим примерам и тем самым оценить w.


Вопрос :

Рассмотрим ситуацию, когда положительных (y=1) обучающих примеров намного больше, чем отрицательных (y=0) обучающих примеров.

Для простоты:

если рассматривать только положительные (y=1) примеры: Алгоритм работает:

           maximize ( l(w) )

          =>  maximize ( y * log ( h(x) ) )

          =>  maximize ( log( h(x) ) )

          =>  maximize ( h(x) ); since log(z) increases with z

          =>  maximize ( ( 1 + exp{-wx} )^-1 )

          =>  maximize ( wx );   
   since a larger wx will increase h(x) and move it closer to 1

Другими словами, алгоритм оптимизации попытается увеличить (wx), чтобы лучше соответствовать данным и увеличить вероятность.


Однако представляется возможным, что алгоритм может непреднамеренно увеличивать (wx), но не улучшать решение (граница решения):

             by scaling w: w' = k*w  ( where k is positive constant )

Мы можем увеличить (k*wx), никоим образом не меняя наше решение.

1) Почему это не проблема? Или это проблема?

2) Можно утверждать, что в наборе данных с гораздо большим количеством положительных примеров, чем отрицательных, алгоритм будет пытаться продолжать увеличивать ||w||.


person Ravindhran Sankar    schedule 22.11.2017    source источник


Ответы (1)


  1. Иногда это проблема, но она решается регуляризацией
  2. Только если классы идеально разделены

Если есть только y=1, алгоритм действительно попытается сделать wx как можно большим и никогда не сойдется. Но если у вас есть только один класс, вам вообще не нужна логистическая регрессия.

Если набор данных несбалансирован (значительно больше y=1, чем y=0), в целом, логистическая регрессия не будет проблем с конвергенцией .

Давайте посмотрим, почему. Предположим, у вас есть только 1 отрицательный пример x_0 и N одинаковых положительных примеров x_1. Тогда логарифмическое правдоподобие будет выглядеть как

l(w) = N * log(h(x_1)) + log(1-h(x_0))

h(x) ограничено между 0 и 1, поэтому оба компонента ограничены сверху 0, но не ограничены снизу.

Теперь, если w достаточно велико и вы продолжаете его увеличивать, первый член увеличится лишь незначительно (поскольку он уже близок к 0), но второй член может очень быстро уменьшиться (поскольку log(x) очень быстро стремится к минус бесконечности, когда x приближается к 0). Если вы неограниченно увеличиваете w, l(w) уменьшится до минус бесконечности. Таким образом, существует конечное w, которое максимизирует вероятность.

Но есть одно важное исключение. Это происходит, когда классы идеально разделены некоторой гиперплоскостью (это не имеет мало общего с размерами классов). В этом случае и первый, и второй члены будут стремиться к 0, а ||w|| — к бесконечности.

Но если классы идеально разделены, вам, вероятно, вообще не нужна логистическая регрессия! Его сила заключается в вероятностном предсказании, но в случае идеального разделения предсказание может быть детерминистическим! Таким образом, вы можете применить к своим данным, скажем, SVM.

Или вы можете решить регуляризованную задачу, максимизируя l(w)-lambda*||w||. Например, в scikit-learn логистическая регрессия делает именно это. В этом случае, если l(w) достаточно близко к 0, ||w|| будет преобладать, и целевая функция в конечном итоге уменьшится в w.

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

person David Dale    schedule 22.11.2017