[ на главную ]

Модели математической регрессии

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

Вторник, 28 Май 2013 г.


1 Введение

В этой статье мы поговорим о методах математической регрессии. Регрессия это восстановление зависимости между переменными по набору данных или условное математическое ожидание при заданном параметре[1,2].

Методы регрессии можно использовать для предсказания значения переменной. Например, пусть у нас есть простая статистика продаж домов из двух параметров – площадь и цена. На основании этих данных необходимо оценить дом с известной площадью. Эту задачу можно решить построив регрессию на данном наборе данных [3]. Не формально говоря, нам надо нарисовать линию (определить функцию), проходящую через облако точек. После этого вычислить значение этой функции в искомой точке.

2 Линейная регрессия

Первый метод, который мы рассмотрим, это линейная регрессия. Линейная потому, что искомая функция в данном случае линейна.

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

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

Наша функция (или гипотеза) задаётся следующим образом

h𝜃(x ) = 𝜃0 + 𝜃1x1 + ...+ 𝜃nxn

где 𝜃 0 ,𝜃 1 , ,𝜃 n – параметры

или в векторном виде

 ⌊ 1 ⌋ ⌊𝜃 ⌋ | | | 0| x = | x1| ; 𝜃 = |𝜃1 | |⌈ ...|⌉ |⌈ ... |⌉ x 𝜃 n n

 T h𝜃(x) = 𝜃 x

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

2.1 Аналитический метод

Для некоторых наборов данных эти коэффициенты можно вычислить аналитически следующим образом.

 T − 1 T 𝜃 = (X X ) X y

где

 ⌊ ⌋ ⌊ (1) (1)⌋ ⌊ ⌋ 𝜃0 1 x1 ... xn y(1) || 𝜃1|| || 1 x(12) ... x(n2)|| || y(2)|| 𝜃 = | .. | ; X = | . | ; y = | .. | ⌈ . ⌉ ⌈ .. ⌉ ⌈ . ⌉ 𝜃n 1 x(1m) ... x (mn ) y (m )


Этот метод можно применять для относительно небольших наборов данных. Возможны варианты когда X T X необратимая (вырожденная) матрица, это может получиться если свойства x j ( i ) линейно зависимы или/и мало данных и много свойств x j ( i ) , т.е. n > m .

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


2.2 Метод градиентного спуска

Для наборов данных, на которых по какой-то причине не работает аналитический метод, для построения линейной регрессии можно применить метод итеративный. Для этого нам нужно определить функцию стоимости (оценки, cost function), в качестве неё будем использовать квадратичную ошибку (squared error):

 1 ∑m ( (i) (i))2 J(𝜃) = ---- h𝜃(x ) − y 2m i=1

Нам необходимо подобрать набор коэффициентов 𝜃 , который бы минимизировал функцию стоимости

Для решения этой задачи можно использовать метод градиентного спуска (gradient descent). Алгоритм выглядит следующим образом.

  1. инициализировать 𝜃 = (0 , 1 , 1)
  2. вычислить значение h 𝜃 ( x ) для всех входов
  3. вычислить значение функции стоимости J ( 𝜃 )
  4. если значение функции стоимости J ( 𝜃 ) меньше порога
    то обучение завершено, перейти на п. 7
    иначе перейти на следующий пункт
  5. изменить значения 𝜃

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

  6. перейти на п. 2
  7. конец работы


Рис. 1: линейная регрессия: аналитический метод
Рис. 2: линейная регрессия: градиентный спуск


2.3 Нелинейная регрессия

Для улучшения результата, в качестве гипотезы h 𝜃 ( x ) можно использовать нелинейные функции. Например кубический полином:

h𝜃(x) = 𝜃0 + 𝜃1x + 𝜃2x2 + 𝜃3x3

Алгоритм обучения здесь почти такой же как и для линейной регрессии только изменение коэффициентов 𝜃 для процедуры градиентного спуска будет выглядеть следующим образом.

 m -∂-- 1-∑ ( (i) (i)) (i)j 𝜃j := 𝜃j − α ∂𝜃jJ (𝜃 ) = 𝜃j − α m h𝜃(x ) − y (x j ) i=1


Приведём примеры результатов работы алгоритма нелинейной регрессии для полиномов разных степеней.
Рис. 3: нелинейная регрессия: полином 2 степени
Рис. 4: нелинейная регрессия: полином 5 степени
Рис. 5: нелинейная регрессия: полином 12 степени
Рис. 6: нелинейная регрессия: полином 72 степени


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


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

[1] Linear regression: Википедия – http://en.wikipedia.org/wiki/Linear_regression_model

[2] Nonlinear regression: Википедия – http://en.wikipedia.org/wiki/Nonlinear_regression

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

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

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