Проблема регрессии
В изучении любых реальных процессов, будь то варка макарон или анализ инвестиций, есть один общий принцип - они все зависят от каких-либо параметров. Вкус макарон зависит от температуры плиты, количества воды, соли, качества макарон и так далее, математически это обозначается так:
Вкус = f(температура, объём воды, соль, ...)
Итак, разберёмся с варкой порции макарон, у Вас набор случайных величин: температура плиты, объём воды, количество соли. Зададимся целью узнать, как количество воды влияет на вкус макарон.
Постановка задачи
Как определить влияние объёма воды на вкус макарон? Необходимо провести ряд экспериментов, в которых каждая варка макарон будет проводиться с разным объёмом воды, но остальные условия (температура и количество соли) будут фиксированы. Зададимся значениями температуры и количеством соли:
| Температура | t=500°C |
|---|---|
| Количество соли | 15 г |
| Таблица 1. Фиксированные значения для эксперимента | |
Начнём наши эксперименты для различных объёмов воды, возьмём от 500 мл до 2200 мл, и каждый раз будем пробовать макароны на вкус и запишем все наши результаты:
| # | Объём воды | Оценка |
|---|---|---|
| 1 | 500 мл | 3 |
| 2 | 600 мл | 3 |
| 3 | 700 мл | 4 |
| 4 | 800 мл | 5 |
| 5 | 900 мл | 6 |
| 6 | 1000 мл | 8 |
| 7 | 1100 мл | 9 |
| 8 | 1200 мл | 12 |
| 9 | 1300 мл | 13 |
| 10 | 1400 мл | 17 |
| 11 | 1500 мл | 24 |
| 12 | 1600 мл | 24 |
| 13 | 1700 мл | 32 |
| 14 | 1800 мл | 35 |
| 15 | 1900 мл | 48 |
| 16 | 2000 мл | 52 |
| 17 | 2100 мл | 62 |
| 18 | 2200 мл | 79 |
| Таблица 2. Оценка вкуса макарон в зависимости от объёма воды | ||
Выявление зависимости
Итак, мы оцениваем вкус макарон в зависимости от объёма воды, математически мы изучаем функцию: Вкус = f(Объём). Весь регрессионный анализ заключается в процессе выявления функции f в данной зависимости.
В регрессионном анализе, функции (модели) делятся на два типа: линейные и нелинейные.
Линейная модель
y = a + bx
Нелинейная модель
y = abx + c
Для того, что бы построить простую регрессионную модель (функцию), необходимо набраться мужества и выдвинуть предположение, например:
— Эта функция похожа на линейную!
Когда Вы выбрали регрессионную модель, Вы начинаете подбирать коэффициенты, например, в линейной модели y=a+bx, необходимо подобрать коэффициенты a и b. Задача относительно не сложная, "a" - это первое значение, а "b" можно найти разницой последнего и первого значений. Провернув такую операцию с нашим примером, получим:
a = -19.5
b = 0.045
Вкус = -19.5 + 0.045x
Затабулируем значения нашей модели:
| 500 мл | 600 мл | 700 мл | 800 мл | 900 мл | 1000 мл | 1100 мл | 1200 мл | 1300 мл |
|---|---|---|---|---|---|---|---|---|
| 3 | 7.5 | 12 | 16.5 | 21 | 25.5 | 30 | 34.5 | 39 |
| 1400 мл | 1500 мл | 1600 мл | 1700 мл | 1800 мл | 1900 мл | 2000 мл | 2100 мл | 2200 мл |
| 43.5 | 48 | 52.5 | 57 | 61.5 | 66 | 70.5 | 75 | 79.5 |
| Таблица 3. Затабулированные значения регрессионной модели | ||||||||
Вот, как это выглядит на графике:
Получение результата
С натяжечкой, конечно, похоже, но для математического вывода необходимо найти разброс значений модели и реальных значений. Эти значения - сумма квадратов отклонений и среднеквадратическая ошибка:
RSS (сумма квадратов отклонений) = (3 - 3)2 + (7.5 - 3)2 + ... + (79.5 - 79)2 = 6624.25
MSE (среднее квадратическое отклонение) = √RSS = 81.39
S (дисперсия) = 19.18
Что делать с этой регрессионной моделью? Регрессионная модель позволяет предсказать, а что будет, например, если мы возьмём 2300 мл, 2400 мл и т.д. не проводя при этом сам эксперимент:
Вкус2300 мл = -19.5 + 0.045· 2300 = 84
Вкус2400 мл = -19.5 + 0.045· 2400 = 88.5
И, разумеется, мы можем узнать сколько нужно воды для идеальных макарон:
Водаидеальные макароны = (100-19.5) / 0.045 = 2656 мл
Минимизируем ошибку
Итак, с нами наша модель y = a + bx и реальные значения функции, разница между функцией и моделью - это и есть ошибка, которую мы допускаем в каждом эксперименте. Значит, мы можем построить функцию ошибки, а если у нас есть функция, то мы всегда можем найти её минимум. Этим мы и займёмся, нахождением минимума функции ошибки.
Ошибка - это разница между реальным значением и смоделированным, поскольку эта разница может быть как положительной, так и отрицательной, необходимо использовать модуль разницы, что проще всего сделать возведя ошибку в квадрат, а затем извлечь корень. Значит, наша ошибка на каждом известном результате:
Yo - значение из наблюдений (observation), Ym - значение из модели (model)
e = (Yo - Ym)2 = (Yo - a - bx)2
Суммарная ошибка
S = Σe = Σ(Yo - a - bx)2
Функция S - это функция ошибки, которую необходимо минимизировать, она зависит от параметров a и b. Для нахождения минимума функции воспользуемся простым методом - найдём производные по параметрам a и b (здесь мы опустим сложные методы поиска минимума функции):
Производные функции ошибки по параметрам a и b:
dS/da = Σ2(a+bx-y)
dS/db = Σ2(a+bx-y)x
Условие минимума функции:
Σ2(a+bx-y) = 0
Σ2(a+bx-y)x = 0
Упростим, сократим на 2 и разложим скобки (n-количество наблюдений):
na + bΣx = Σy
aΣx + bΣx2 = Σxy
Найдём решение:
Σx = 24 300
Σx2 = 37 650 000
Σy = 436
Σxy = 779 500
18·a + 24300·b = 436
24300·a + 37650000·b = 779500
-3589·a = 103969 ∴ a = -29
b = 0.039
Попробуем нашу новую модель в действии:
RSS (сумма квадратов отклонений) = (-9.5 - 3)2 + (-5.6 - 3)2 + ... + (56.8 - 79)2 = 1260.05
MSE (среднее квадратическое отклонение) = √RSS = 35.5
S (дисперсия) = 8.37
Вкус2300 мл = -29 + 0.039· 2300 = 60.7
Вкус2400 мл = -29 + 0.039· 2400 = 64.6
Как Вы, наверное, заметили, предсказания по нашей первой модели ближе к правде, нежели модели отрегулированной. Почему? Потому что модель была выбрана неверно, график функции больше похож на экспоненту и даже исходя из знания процесса ясно, что линейной зависимости здесь не место. Но это был всего лишь пример линейной регрессионной модели, о более сложных моделях и о способе выбора модели читайте в следующих статьях.
