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

Но как бы вы предсказали цену строящегося нового дома с 4 спальнями и площадью 2300 квадратных футов? Конечно, вы не сможете просматривать данные вручную. Вместо этого линейная регрессия позволяет вам устанавливать переменные в члене, а алгоритм просто изменяет коэффициенты каждого члена, пока он не будет точно соответствовать модели. Традиционно корректируемые коэффициенты обозначаются тета (θ).

Примечание от автора

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

Оглавление

Опрос

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

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

Прежде чем вы начнете

При использовании любого алгоритма машинного обучения важно помнить о предвзятости и дисперсии.

Смещение в этом контексте можно рассматривать как «недостаточное соответствие» данным. Например, вы можете использовать линейную функцию для моделирования интенсивности солнечного света с 7:00 до 17:00, однако для этого приложения куда лучшей моделью будет что-то вроде квадратичной или синусоидальной функции.

Однако модель с высокой дисперсией тоже не годится. Это происходит, когда вы «подгоняете» данные. По сути, модель настолько старается соответствовать каждой точке данных, что теряет способность предсказывать новые точки данных с точностью и, следовательно, плохо обобщает. Пример показан ниже, чтобы продемонстрировать эту концепцию:

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

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

Некоторые из вас, вероятно, уже задаются вопросом: «Зачем мне все эти проверки, если я могу просто отобразить данные, как это сделали вы?» Ну, иногда вы не можете графически представить данные или визуализировать их в любом удобном виде. На самом деле, если у вас в наборе данных более двух параметров, вы уже не сможете визуализировать его простым и интуитивно понятным способом! По этой причине вам нужны другие способы измерения того, насколько хорошо модель соответствует данным. Хотя поначалу это может показаться немного абстрактным и неудобным, вы к этому привыкнете.

Предвзятый термин

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

Член смещения — это одинокий коэффициент θ, который не умножается ни на какие другие переменные. Нет никакого смысла в том, чтобы их было несколько, так как вы можете сложить их и получить эквивалентное уравнение. Тем не менее, он служит очень важной цели. Вы можете думать об этом как о термине «b», обычно встречающемся в уравнении линии (y = mx + b). Это помогает сместить уравнение по вертикали. Для сравнения, если вы пытаетесь спрогнозировать цены на жилье, и все они находятся в районе 100 000, то вы хотите начать где-то там и скорректировать свой прогноз на основе других факторов.

Основные определения и условные обозначения

Математические определения

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

Математическая запись

x представляет все входные данные, которые у нас есть в нашей таблице данных

xᵢ представляет значение i-й строки в таблице данных, которую мы вставляем в функцию прогнозирования f(θ, xᵢ)

xᵢ, ⱼ представляет значение j-го параметра в i-й строке таблицы данных

θ представляет все параметры коэффициентов, которые мы подключаем к функции прогнозирования f (θ, xᵢ). Они обновляются на каждом шаге градиентного спуска.

θᵢ представляет значение i-го параметра коэффициента, который мы вставляем в функцию f(θ, xᵢ). Это обновляется на каждом шаге градиентного спуска.

f (θ, xᵢ) - это функция прогнозирования, которая принимает параметры коэффициента θ и входные параметры xᵢ

y представляет истинное значение вывода для всех входов в таблице данных

yᵢ представляет собой истинное значение вывода в i-й строке таблицы данных.

Терминология

Функция потерь — как измеряется «качество соответствия» для одной точки данных, часто используется метод наименьших квадратов (OLS) или метод наименьшего абсолютного отклонения (LAD).

Функция стоимости - среднее значение функции потерь по всем точкам данных в таблице данных, обычно представленное J (θ)

n — количество точек данных в таблице данных, подумайте «количество строк в таблице данных»

Обычный метод наименьших квадратов (OLS) — метод использования квадрата разницы между фактическим выходом yᵢ и прогнозируемым выходом f(θ, xᵢ) в качестве функции потерь. Измеренное значение функции потерь называется ошибкой R2, а измеренное значение ее аналога функции стоимости называется среднеквадратичной ошибкой, или сокращенно MSE.

Наименьшее абсолютное отклонение (LAD) — метод использования абсолютного значения разницы между фактическим выходом yᵢ и прогнозируемым выходом f(θ, xᵢ) в качестве функции потерь.

Открывание капота — как это работает

Что свести к минимуму

В градиентном спуске нам нужна функция для «спуска», поскольку цель состоит в том, чтобы достичь минимума. Итак, естественно, чтобы выполнить линейную регрессию, нам сначала нужно определить нечто, называемое функцией стоимости. Прежде чем определить функцию стоимости, мы на самом деле должны сначала определить кое-что еще — функцию потерь.

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

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

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

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

Это связано с тем, что OLS «наказывает» модель больше, чем LAD, за то, что точки данных находятся дальше от прогнозируемого значения, чтобы достичь своего рода равновесия между тем, чтобы все точки данных были умеренно удалены от линии соответствия. Напротив, LAD не добавляет дополнительного «веса» к функции потерь, если она находится дальше. Обратите внимание, что этот «вес» приходит в форме возведения члена в квадрат. Как размытая концепция, LAD подобен значениям функции потерь 1 и 8, где модель должна уделять немного больше внимания 8, чтобы понизить его, тогда как OLS подобен значениям функции потерь 1²=1 и 8²= 64, где модели приходится уделять значительно больше внимания 64, чтобы его понизить.

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

Но какой из них вы выбираете? Это зависит от того, что вы пытаетесь сделать. Если вам небезразличны выбросы или у вас довольно большой набор данных, вам, вероятно, следует использовать OLS. Если вы знаете, что данные содержат резкие выбросы, вам, вероятно, следует LAD. Хотя OLS более распространен и достаточно хорош почти для всех приложений, в конце концов, это действительно зависит от вас.

Еще один момент — если вы действительно хотите использовать преимущества обоих, то вы можете заглянуть в Huber Loss, который применяет плавный переход между ними, используя концепцию производных — OLS, когда на близлежащей территории, и LAD, когда дальше. вне. Но будьте осторожны — вас вот-вот обрушат на кучу вычислений, и это не будет объяснено, потому что это предполагает, по крайней мере, студенческую аудиторию.

Как минимизировать

Эта часть быстрая и простая, по крайней мере, в объяснении. Во-первых, вы выбираете некоторые начальные значения для ваших коэффициентов. Обычно они оставляются равными 0 для линейной регрессии, но теоретически это может быть все, что вы выберете. После этого вы просто используете градиентный спуск, чтобы выполнить шаг, основанный на градиентах функции стоимости, J (θ), и повторяете, пока не сойдетесь к минимуму J (θ).

Практическая лаборатория

Пришло время вашей первой лаборатории! Здесь вы будете реализовывать модель линейной регрессии с нуля, используя базовую структуру. Просто создайте копию Colab, и все готово!

Как и было обещано, частные производные даны вам в раскрывающемся списке. Однако, если вы знакомы хотя бы с основами исчисления, рекомендуется вывести их самостоятельно. Не волнуйтесь, частные производные не так сложны, как кажутся — просто относитесь ко всем переменным как к константам, кроме переменной, для которой вы берете частную производную.



Прощальные заметки

Поздравляем с завершением... самой базовой формы машинного обучения. Мы еще даже не до ИИ! Я знаю, я знаю, нужно многому научиться, и здесь задействовано множество фоновых вещей. Хотя поначалу это может показаться немного медленным, необходима прочная основа для того, над чем мы будем работать в будущем.

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

Если серьезно, не стесняйтесь использовать библиотеки, чтобы сделать все это за вас после того, как вы закончите этот курс, но важно знать, что происходит внутри, если вы собираетесь строить поверх него. Кроме того, вы здесь, чтобы узнать, как это работает (без умопомрачительной математики), а не просто как его использовать — и это именно то, что вы получите :P.

Прочитали? Готовы узнать больше? Ознакомьтесь с другими моими статьями из этой серии!
Обучение быстрее и лучше
Логистическая регрессия
Нейронные сети

Или не стесняйтесь обращаться к любым предыдущим статьям этой серии:
Градиентный спуск

Используемые внешние ресурсы:
https://math.stackexchange.com/questions/3580109
https://machinelearningmastery.com/linear-regression-for-machine-learning/
> https://www.geeksforgeeks.org/ml-linear-regression/
https://demonstrations.wolfram.com/ComparingLeastSquaresFitAndLeastAbsoluteDeviationsFit/