на главную ] 

Классификатор на основе логистической регрессии.

Евгений Борисов

Понедельник, 27 Май 2013 г.

 
 

В этой статье мы поговорим об математическом методе логистической регрессии (logistic regression) и классификаторе (ЛРК) на основе этого метода [1,2]. ЛРК используется для бинарной классификации, т.е. выдаёт вероятность P принадлежности входа к данному классу, для работы с несколькими классами используются несколько ЛРК в результате выбирается ЛРК показавший max P значение для данного входа, а учебный набор из N классов для каждого ЛРК преобразуется к бинарному - "мой класс и все остальные".

Рассмотрим набор данных из m элементов размера n + 2

⌊1   x(1)   x(1)  ...  x(n1)  y(1)⌋
|     1(2)    2(2)        (2)   (2)|
|1   x1    x2   ...  xn    y   |
|⌈1    ...     ...          ...    ...  |⌉
      (m )   (m )       (m)   (m)
 1  x 1   x 2   ...  xn    y

где xj(i) , y(i) ∈{0, 1}

Классификатор в данном случае это функция (гипотеза), которая выглядит следующим образом.

         --1-----
h𝜃(z) =  1 + e− z

где z = z(x) это определённая функция, о которой мы поговорим ниже.

1 Линейный классификатор

Задав z(x) следующим образом

z(x) = 𝜃Tx = 𝜃  + 𝜃 x  + ...𝜃 x
              0    1 1       n n

мы получим линейный классификатор.

Легко видеть, что в этом случае h𝜃(𝜃T x) является искусственной нейронной сетью из одного нейрона с сигмоидной функцией активации, который имеет n входов.

Для обучения классификатора будем применять метод градиентного спуска. Функция оценки (cost function) будет выглядеть следующим образом.

             m
          1-∑   [ (i)          (i)          (i)             (i)  ]
J (𝜃) = − m      y   ⋅ log (h 𝜃(x )) + (1 − y )log(1 − h𝜃(x  ))
             i=1

Коэффициенты 𝜃 будут изменяться согласно следующему соотношению.

            ∑m  (    (i)     (i)) (i)
𝜃j := 𝜃j − α     h𝜃(x  ) − y   xj
            i=1
где 0 < α < 1 – параметр (скорость обучения)

Линейный классификатор имеет известные ограничения, он строит только линейные разделяющие повехности. Например, он в принципе не способен выделить в двумерном пространстве признаков область в форме круга.

2 Нелинейный классификатор

Для выделения в пространстве признаков областей сложной формы можно воспользоваться нелинейным классификатором.

Для этого можно определить z(x) как полином второй, третей или более степеней. Например, для двумерного пространства признаков и степени полинома n = 4

z(x) = 𝜃0 + 𝜃1x1 + 𝜃2x2 + 𝜃3x1x2 ...+ 𝜃24x41x42

В процессе градиентного спуска коэффициенты 𝜃 будут изменяться согласно следующему соотношению.

            ∑m  (             )
𝜃j := 𝜃j − α     h𝜃(x (i)) − y(i)  pj
             i=1
где 0 < α < 1 – параметр (скорость обучения), pj – произведение значений x при коэффициенте 𝜃j полинома z(x)

3 Регуляризация

При работе с классификаторами может возникать проблема т.н. переобучения (underfitting), когда ошибка обучения падает почти до нуля, но при этом растёт ошибка обобщения, т.е. классификатор хорошо понимает только учебный набор.

Этот эффект может возникать из-за излишне сложной модели т.е. избыточно сложная z(x) и/или слишком много признаков x.

Для подавления эффекта переобучения можно применять разные методы, один из них это регуляризация – уменьшение значений коэффициентов 𝜃 .

Достигаеться этот результат путём добавления нового слагаемого к функции оценки

             m                                                       n
          1-∑   [ (i)          (i)          (i)             (i) ]   -λ--∑    2
J (𝜃) = − m      y  ⋅ log(h 𝜃(x  )) + (1 − y  )log (1 − h 𝜃(x )) + 2m      𝜃j
            i=1                                                     j=1

и соотношению изменения коэффициентов процессе градиентного спуска

(               ∑m  (             )
||| 𝜃0 :=𝜃0 − α 1-     h𝜃(x(i)) − y(i)
|{             m  i=1
              [    m                          ]
|||              -1 ∑   (    (i)     (i))     λ-
|( 𝜃j :=𝜃j − α  m       h𝜃(x  ) − y   pj + m 𝜃j
                  i=1

где 0 < α < 1 – параметр (скорость обучения), pj – произведение значений x при коэффициенте 𝜃 j ( j = 1,,n) полинома z(x)

Эта модификация подавляет (penalize) рост значений 𝜃 в процессе обучения. Необходимо выбрать удачный параметр λ (regularization parameter), если он будет слишком мал то эффекта не будет, если он будет слишком велик то обратит в ноль все 𝜃 и z(x) выродится в прямую z(x) 𝜃0

 
 

Далее приведен наглядный пример, нелинейный ЛРК с регуляризацией выделяет в двумерном пространстве признаков область в форме круга.

 
 

Рис. 1: первый учебный набор
Рис. 2: второй учебный набор

 
 

Рис. 3: тестовый набор
Рис. 4: результат работы классификатора

 
 

Реализация в системе Octaveздесь ].

 
 

Список литературы

[1]     Andrew Ng    Machine Learning – http://www.coursera.org/course/ml

[2]     Логистическая регрессия: Википедия – http://en.wikipedia.org/wiki/Logistic_regression

[3]     GNU Octave – http://www.gnu.org/software/octave/

При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.