Евгений Борисов
Вторник, 28 Май 2013 г.
В этой статье мы поговорим о методах математической регрессии. Регрессия это восстановление зависимости между переменными по набору данных или условное математическое ожидание при заданном параметре[1,2].
Методы регрессии можно использовать для предсказания значения переменной. Например, пусть у нас есть простая статистика продаж домов из двух параметров – площадь и цена. На основании этих данных необходимо оценить дом с известной площадью. Эту задачу можно решить построив регрессию на данном наборе данных [3]. Не формально говоря, нам надо нарисовать линию (определить функцию), проходящую через облако точек. После этого вычислить значение этой функции в искомой точке.
Первый метод, который мы рассмотрим, это линейная регрессия. Линейная потому, что искомая функция в данном случае линейна.
Рассмотрим набор данных из m элементов размера n + 1
Наша функция (или гипотеза) задаётся следующим образом
где 𝜃 0 ,𝜃 1 , … ,𝜃 n – параметры
или в векторном виде
Задача построения регрессии сводиться к определению коэффициентов 𝜃 . Неформально, нам необходимо нарисовать линию проходящую через центр облака точек, и по возможности минимально удалённую от каждой из этих точек.
Для некоторых наборов данных эти коэффициенты можно вычислить аналитически следующим образом.
где
Этот метод можно применять для относительно небольших наборов данных. Возможны варианты когда
X
T
X
необратимая (вырожденная) матрица, это может получиться если свойства
x
j
(
i
)
линейно зависимы или/и мало данных и много свойств
x
j
(
i
)
, т.е.
n
>
m
.
Реализация в системе Octave [ здесь ].
Для наборов данных, на которых по какой-то причине не работает аналитический метод, для построения линейной регрессии можно применить метод итеративный. Для этого нам нужно определить функцию стоимости (оценки, cost function), в качестве неё будем использовать квадратичную ошибку (squared error):
Нам необходимо подобрать набор коэффициентов 𝜃 , который бы минимизировал функцию стоимости
Для решения этой задачи можно использовать метод градиентного спуска (gradient descent). Алгоритм выглядит следующим образом.
|
|
Для улучшения результата, в качестве гипотезы h 𝜃 ( x ) можно использовать нелинейные функции. Например кубический полином:
Алгоритм обучения здесь почти такой же как и для линейной регрессии только изменение коэффициентов 𝜃 для процедуры градиентного спуска будет выглядеть следующим образом.
Приведём примеры результатов работы алгоритма нелинейной регрессии для полиномов разных степеней.
|
|
||
|
|
Реализация в системе 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