Это старая версия (1.882) МетодНаименьшихКвадратов.

Содержание

Метод наименьших квадратов


  • ToDo:
    1. картинки,
    2. свободный член при множественном случае,
    3. вывод формул

В данной статье все вектора по умолчанию являются векторами-столбцами. Внимательно следите за размерностями матриц и векторов по ходу объяснения.

Простейший случай

Общая постановка задачи

Допустим, в рамках некого эксперимента было проведено n измерений. Каждое измерение представляет собой пару (x sub i , y sub i ), где x sub i — вход, y sub i — выход (такую пару будем называть «точкой»).

Результаты эксперимента могут быть записаны в таблице, в первом столбце которой будут находиться все значения выходов, а во втором — все значения выходов: left \[
lpile {x sub 1 above x sub 2 above vdots above x sub i above vdots above x sub n}
right \]
~
left \[
lpile {y sub 1 above y sub 2 above vdots above y sub i above vdots above y sub n}
right \]

Мы хотим описать экспериментальные данные линейной функцией («подогнать» их к прямой). Почти никогда не встречается ситуаций, при которых все точки будут лежать на одной прямой. Поэтому наша цель — найти такую линейную функцию (прямую), которая в некотором смысле наилучшим образом описывала бы полученные результаты. Значения этой функции будем называть оценками и обозначим y hat sub i . Сама функция будет иметь вид: y hat sub i = k x sub i + b.


  • Картинка с хорошей линией и с плохой.

Каждому измерению входа x sub i будет соответствовать реальное значение y sub i и оценка y hat sub i . Разницу между реальным значением и оценкой будем называть отклонением и обозначим d sub i = y sub i - y hat sub i  = y sub i - k x sub i - b.


  • Картинка с иллюстрацией отклонения для одной точки.

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

Выбор способа «подгонки»

Существует большое количество способов измерить общее отклонение реальных экспериментальных значений от их оценок. Приведём самые очевидные из них:

  1. сумма значений отклонений sum from i=1 to n d sub i
  2. сумма абсолютных значений отклонений sum from i=1 to n | d sub i |
  3. сумма квадратов отклонений sum from i=1 to n d sub i sup 2

Каждый из этих способов имеет как свои плюсы, так и свои минусы. В каком-то смысле, все они «плохие», поэтому наша задача выбрать наименее «плохой» из них: тот, чьи плюсы перевесят минусы. Для выбора рассмотрим их по отдельности.

Несомненным достоинством первого способа является его чрезвычайная простота. Однако такой способ небезопасен с точки зрения статистических выбросов. Если в наших данных есть два выброса, лежащие по разные стороны от прямой на примерно одном и том же расстоянии, то они погасят друг друга. Если таких выбросов будет много (при малых выборках бывает достаточно и двух), то это может дать нам прямую с неверным углом наклона k.


  • Картинка с иллюстрацией взаимного погашения.

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

Забегая несколько вперед, скажем, что для получения коэффициентов наилучшей линейной функции мы воспользуемся математическим аппаратом дифференциального исчисления. Модуль же не является всюду дифференцируемой функций. И если это кажется не такой большой проблемой в нашем примере, то когда мы расширим МНК на случай многих независимых переменных, это может сделать вычислительную задачу чрезвычайно трудноразрешимой (а в момент, когда этот метод был открыт и просто практически неразрешимой). Кроме того, неприемлимость данного способа (бо́льшую приемлимость другого) доказал в своё время великий русский математик Андрей Андреевич Марков, чьи работы позволили использовать МНК в статистическом оценивании.


  • Ссылка на Маркова через boref.

Третий способ, давший имя методу наименьших квадратов, позволяет избежать проблем, связанных с робастностью. Более сильные отклонения вносят бо́льшие вклады, а слабые отклонения нивелируются — взаимного погашения при этом возникнуть не может, т. к. квадрат числа неотрицателен. Вместе с этим, уходит и проблема, связанная с дифференцированием: квадратическая функция является всюду дифференцируемой. Этим, а также и другими причинами (в том числе и причинами, выявленными А. А. Марковым в связи с использованием МНК в статистическом оценивании), был обусловлен выбор способа.

Таким образом мы можем формализовать описанную нами задачу: необходимо наити такие значения коэффициентов k и b, при которых функция sum from i=1 to n d sub i sup 2 примет наименьшее значение.

Математическая формализация

min from k,b left ( sum from i=1 to n d sub i sup 2 right ) = 
min from k,b left ( sum from i=1 to n (y sub i - k x sub i - b) sup 2 right )

Множественный случай

Общая постановка задачи

Допустим теперь мы расширили наш эксперимент. По-прежнему было проведено n измерений, но замерялся не один вход, а m различных входов (выход по-прежнему один).

Результаты эксперимента могут быть записаны в таблице: left \[
matrix {
ccol {x sub 11 above x sub 21 above vdots above x sub i1 above vdots above x sub n1}
ccol {x sub 12 above x sub 22 above vdots above x sub i2 above vdots above x sub n2}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1j above x sub 2j above vdots above x sub ij above vdots above x sub nj}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1m above x sub 2m above vdots above x sub im above vdots above x sub nm}
}
right \]
~
left \[
lpile {
y sub 1 above y sub 2 above vdots above y sub i above vdots above y sub n
}
right \]

По строкам расположены результаты измерений, по столбцам — значения входов.

Например, x sub 34 — значение 4-го входа в 3-ем измерении.

С помощью матриц мы можем записать таблицу с экспериментальными данными компактнее. Входы будут находиться в матрице X sub {(n times m)}, а выходы — в векторе-столбце bold y sub {(n times size -2 1)}.

Мы по-прежнему хотим «подогнать» наши экспериментальные данные к линейной функции, но, в отличие от предыдущего случая это будет не прямая, а m-мерная плоскость (для m = 2 это будет обычная плоскость, для m > 2 — гиперплоскость). Вектор значений линейной функции назовём вектором оценкок и обозначим bold y hat. Сама вектор будет иметь вид: bold y hat = X bold k

Или в более подробной форме: left \[
lpile {
y hat sub 1 above y hat sub 2 above vdots above y hat sub i above vdots above y hat sub n
}
right \] =
left \[
matrix {
ccol {x sub 11 above x sub 21 above vdots above x sub i1 above vdots above x sub n1}
ccol {x sub 12 above x sub 22 above vdots above x sub i2 above vdots above x sub n2}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1j above x sub 2j above vdots above x sub ij above vdots above x sub nj}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1m above x sub 2m above vdots above x sub im above vdots above x sub nm}
}
right \]
~
left \[
matrix {
ccol {k sub 1 above k sub 2 above vdots above k sub j above vdots above k sub m}
}
right \] =
left \[
matrix {
ccol {
k sub 1 x sub 11 + k sub 2 x sub 12 + ldots + k sub j x sub 1j + ldots + k sub m x sub 1m above
k sub 1 x sub 21 + k sub 2 x sub 22 + ldots + k sub j x sub 2j + ldots + k sub m x sub 2m above
vdots above
k sub 1 x sub i1 + k sub 2 x sub i2 + ldots + k sub j x sub ij + ldots + k sub m x sub im above
vdots above
k sub 1 x sub n1 + k sub 2 x sub n2 + ldots + k sub j x sub nj + ldots + k sub m x sub nm
}
}
right \]

, где

bold k sub {(m times size -2 1)} — вектор-столбец коэффициентов линейной функции.


  • Добавить про свободный член: все значения входа будут равны едиинце.

Разницу между реальным значением и оценкой будем по-прежнему называть отклонением и обозначим bold d = bold y - bold y hat = bold y - X bold k. Распишем это уравнение подробнее: left \[
matrix {
ccol {d sub 1 above d sub 2 above vdots above d sub i above vdots above d sub n}
}
right \] =
left \[
matrix {
ccol {y sub 1 above y sub 2 above vdots above y sub i above vdots above y sub n}
}
right \]
~ - ~
left \[
matrix {
ccol {y hat sub 1 above y hat sub 2 above vdots above y hat sub i above vdots above y hat sub n}
}
right \] = 
left \[
matrix {
ccol {
y sub 1 - k sub 1 x sub 11 - k sub 2 x sub 12 - ldots - k sub j x sub 1j - ldots  k sub m x sub 1m above
y sub 2 - k sub 1 x sub 21 - k sub 2 x sub 22 - ldots - k sub j x sub 2j - ldots - k sub m x sub 2m above
vdots
above
y sub i - k sub 1 x sub i1 - k sub 2 x sub i2 - ldots - k sub j x sub ij - ldots - k sub m x sub im
above
vdots
above 
y sub n - k sub 1 x sub n1 - k sub 2 x sub n2 - ldots - k sub j x sub nj - ldots - k sub m x sub nm
}
}
right \]

Сумма квадратов отклонений может быть получена как bold d sup roman T bold d. Нам необходимо, найти такой вектор bold k, чтобы сумма квадратов отклонений была минимальна:

Математическая формализация

min from bold k left ( bold d sup roman T bold d right ) = 
min from bold k left ( ( bold y - bold y hat ) sup roman T  ( bold y - bold y hat ) right ) =
min from bold k left ( left ( bold y - X bold k right ) sup roman T left ( bold y - X bold k right ) right )
  • Данного раздела не существует. Не смотрите ниже.

Вывод формул для парного случая

min from k,b left ( sum from i=1 to n d sub i sup 2 right ) = 
min from k,b left ( sum from i=1 to n (y sub i - k x sub i - b) sup 2 right )

Необходимое условие минимума: left {
lpile {
{partial sum from i=1 to n (y sub i - k x sub i - b) sup 2} over {partial k} = 0 ~ , above
{partial sum from i=1 to n (y sub i - k x sub i - b) sup 2} over {partial b} = 0
}
right nothing
~ \\(ti ~
left {
lpile {
{-2} sum from i=1 to n x sub i (y sub i - k x sub i - b) = 0 ~ , above
{-2} sum from i=1 to n (y sub i - k x sub i - b) = 0
}
right nothing
~ \\(ti ~
left {
lpile {
sum from i=1 to n x sub i y sub i - 
k sum from i=1 to n x sub i sup 2 - 
b sum from i=1 to n x sub i = 0 ~ , above 
sum from i=1 to n y sub i - 
k sum from i=1 to n x sub i -
sum from i=1 to n b = 0
}
right nothing

Рассмотрим отдельно второе уравнение: lpile {
sum from i=1 to n y sub i - k sum from i=1 to n x sub i - sum from i=1 to n b = 0 above
sum from i=1 to n y sub i = k sum from i=1 to n x sub i + n b ~ size +5 | ~ times 1 over n above
{sum from i=1 to n y sub i} over n = k {sum from i=1 to n x sub i} over n + b
}

В последнем уравнении нетрудно увидеть средние значения выходов y bar = {sum from i=1 to n y sub i} over n и входов x bar =  {sum from i=1 to n x sub i} over n, финально y bar = k x bar + b


КатегорияПрикладнаяМатематика