Найти в Дзене

Машинное обучение 2. Аппроксимируем линию.

Регрессия это когда мы говорим программе что для вот таких то конкретных входных данных результаты будут вот такие, а потом мы даем ей входные данные, результат которых программа не знает, и она должна сама догадаться, какой должен быть результат. Допустим мы измеряем температуру в течении года и рисуем ее на графике. Измерение проводится первого числа каждого месяца. Получится несколько точек на графике. Но что если имея эти точки нам надо определить, например какая была температура в середине каждого месяца? Ведь точек на графике в этих местах нет. Если бы у нас температура отображалась красной линией как на этой картинке, то можно было бы легко узнать температуру в любой момент. Есть решение этой проблемы. Мы должны сами построить эту красную линию. Должны выбрать такую функцию чтоб ее график проходил примерно возле точек. И тогда зная эту функцию мы сможем находить новые точки. Весь этот процесс называется аппроксимация. В реальном мире входные данные часто совсем не идеальны, но п

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

Допустим мы измеряем температуру в течении года и рисуем ее на графике. Измерение проводится первого числа каждого месяца. Получится несколько точек на графике. Но что если имея эти точки нам надо определить, например какая была температура в середине каждого месяца? Ведь точек на графике в этих местах нет. Если бы у нас температура отображалась красной линией как на этой картинке, то можно было бы легко узнать температуру в любой момент.

-2

Есть решение этой проблемы. Мы должны сами построить эту красную линию. Должны выбрать такую функцию чтоб ее график проходил примерно возле точек. И тогда зная эту функцию мы сможем находить новые точки. Весь этот процесс называется аппроксимация.

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

Чтоб аппроксимировать линию под эти точки мы будем использовать так называемую "полиноминальную функцию", или просто "полином". Выглядит она вот так:

y = a_0 + a_1*x + a_2*x^2 + a_3*x^3 + a_4*x^4 ...

Полином может продолжаться сколько угодно и каждый раз будет прибавляться новый коэффициент умноженный на x во все большей и большей степени. Самая большая степень у "x" в правом конце полинома называется "порядок полинома" или "степень полинома".

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

Кроме полинома нам еще понадобится функция которая будет проверять, насколько точно полином подходит под все точки, сильно ли он отклоняется от них.

-3

Возьмем любую из наших точек на графике и проведем вертикальный отрезок (зеленого цвета) пока он не коснется красного графика нашего полинома. Чем короче этот отрезок, тем точнее построен наш полином. Наша функция для проверки ошибок найдет сумму всех зеленых отрезков на всех точках и это будет значить насколько большая ошибка набирается в сумме по всему графику.

Чтоб найти длину зеленого отрезка мы от нашего полинома в конкретной точки отнимем координату "y" точки. Длина отрезка при этом может получится отрицательной, поэтому перед тем как складывать длины всех отрезков, мы каждую отдельную длину возведем в квадрат чтоб избавиться от минусов, если они будут.

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

-4

И тут появляется одна проблема. Если порядок полинома будет равен количеству точек, через которые должен пройти график, то полином точно пройдет через все точки, но выглядеть он будет как красная линия на этой картинке. Это называется "переобучение". Непосредственно на точках линия будет проходить как надо, но стоит отойти немного в сторону и линия резко пойдет вверх или вниз. Если порядок будет слишком маленький, то получится вообще прямая синяя линия. А нам нужно что то вроде зеленой. Поэтому нам нужно будет правильно подобрать порядок полинома.

Есть один способ. Если мы посмотрим на коэффициенты полинома, то окажется что чем больше порядок полинома, и чем точнее он проходит через точки, тем больше будут коэффициенты. А значит мы можем не уменьшая порядок, уменьшить коэффициенты, и тогда линия не будет резко дергаться вверх/вниз, а будет идти более плавно. Для этого мы к суммарной ошибке на всех точках еще добавим сумму квадратов всех коэффициентов (опять же чтоб избавиться от минусов), и тогда если коэффициенты слишком большие, это будет считаться ошибкой. Такое добавление суммы коэффициентов называется "регуляризация".

Сумму всех коэффициентов, так же можно умножить на число, которое называется "регуляризатор". Чем он больше, тем сильнее график будет дергаться вверх/вниз. А значит меняя регуляризатор, мы можем контролировать, насколько плавным будет график.

Наука
7 млн интересуются