Объяснение линейной регрессии
Линейная регрессия - это первый алгоритм, который всплывает, когда вы начинаете изучать машинное обучение. Это один из простейших алгоритмов обучения, и его очень легко понять. Отметьте это здесь, чтобы узнать, как запускать программы машинного обучения прямо в браузере. Мы подумаем о том, что он работает под капотом, а затем реализуем его на Python. Я попытался объяснить с помощью большого количества изображений и графических изображений, чтобы помочь вам понять концепцию. Посмотрим, как это работает!
Что такое регресс?
Регрессия - это метод оценки взаимосвязи между переменными, имеющими непрерывный диапазон значений. Напротив, классификация разделяет переменные на дискретные классы или группы. Скажем, нам нужно смоделировать взаимосвязь между ростом и весом людей. Итак, учитывая вес человека, мы должны спрогнозировать рост. Здесь рост и вес имеют непрерывный диапазон значений. Но в задаче классификации выходные данные могут принадлежать только набору классов или групп. Одним из таких примеров является предсказание того, является ли изображение «кошкой» или «собакой».
Ключевой вывод: когда целевая переменная является непрерывной, это задача регрессии.
В приведенном выше наборе данных мы можем использовать любую из двух переменных для прогнозирования другой. Я использую вес, чтобы предсказать рост. Для простоты мы проигнорируем столбец «Пол» в таблице. Вы видите, что и «рост», и «вес» имеют непрерывный диапазон значений?
Введение в линейную регрессию
Линейная регрессия - это использование моделей линейных предикторов для прогнозирования целевой переменной. Давайте воспользуемся задачей "прогнозирование роста по весу", чтобы разобраться в ней подробнее. Здесь вес принимается как входная или независимая переменная. А рост - это зависимая переменная, которая прогнозируется с использованием входного веса. Отношение веса к росту устанавливается прямой линией.
Математически мы представляем линию как Y = m * X + C, где X - входной объект, Y - целевая переменная. В приведенном выше уравнении «m» и «C» - это параметры, которые определяют наклон и точку пересечения линии.
Не можете понять, что такое «наклон» и «пересечение»? Нет проблем, я тебя прикрыл.
Наклон и пересечение. Кто они такие?
Наклон «m» любой прямой определяет, насколько линия наклонена к горизонтальной оси X. На рисунке выше линия имеет наклон 45 градусов. Следовательно, наклон линии является касательной (45) или тангенсом (45), который равен 1. А точка пересечения находится там, где линия пересекает соответствующую ось. В нашем случае «C» - точка пересечения по оси Y, и ее значение равно нулю. Следовательно, линейное уравнение Y = 1 * X + 0, то есть Y = X.
Подгонка линии к набору данных
Теперь давайте вернемся к нашему набору данных «вес-рост» и посмотрим, как выглядят наши данные.
На этом графике разброса из 20 выборок точки данных разбросаны под наклоном. Если мы хотим подогнать под эти данные линию, она тоже будет наклонной. Но какой наклон нам нужно сделать и где мы разместим линию? Помните наклон и точку пересечения? Настроив их значения, мы сможем расположить линию в соответствии с данными. Но как узнать, какими должны быть значения наклона и точки пересечения нашей модели линейной регрессии? А вот и тренировочная часть.
Во время обучения мы позволяем нашей модели видеть входные и выходные данные (вес и рост) и настраивать их параметры, чтобы линия идеально подходила. Но прежде чем мы начнем обучение, мы начнем со случайных значений «m» и «C». Благодаря этому модель предсказывает случайные выходные значения для заданного набора входных данных. Затем модель видит, насколько плохо она предсказывала, сравнивая свои выходные данные с истинными выходными данными с функцией потерь.
Функция потерь модели линейной регрессии
Чтобы увидеть, насколько плохо прогнозирует наша модель, мы используем показатель, называемый среднеквадратичной ошибкой (MSE). Потому что, только когда мы увидим, насколько велика ошибка, мы сможем исправить ее, минимизировав ошибку. MSE берет среднее значение суммы квадрата разницы между фактическим значением высоты и прогнозируемым значением высоты всего набора обучающих данных.
В приведенном выше уравнении «прогноз» - это то, что предсказывает модель, а «истина» - это метка истинности. Но почему MSE? Потому что из-за квадратичного члена большие ошибки становятся большими, а очень маленькие - меньшими. Суммирование выполняется по всему набору данных для вычисления ошибки.
Минимизация затрат
Стоимость, которую мы видели выше, должна быть минимизирована для оптимального соответствия нашей модели. Это делается с помощью того, что они называют «градиентным спуском». По сути, градиентный спуск настраивает значения «m» и «c» так, чтобы общие потери были минимальными. Он делает это, беря частную производную функции стоимости (с использованием цепного правила) по «m» и «C» и обновляя их значения.
Градиентный спуск
Функция стоимости при частичном дифференцировании по «m» и «C» по отдельности дает обновленное значение для каждого параметра модели (m и C) соответственно.
Затем, используя цепное правило исчисления, мы дифференцируем элементы функции затрат.
По скалярным множественным правилам постоянные множители могут быть вынесены за пределы производной.
Теперь константу «2» также можно убрать, оставив внутри член «(mX + C-ytrue)».
Частная производная от «m * X + C-ytrue» по отношению к «m» равна X, поскольку все другие члены рассматриваются как константы при частном дифференцировании. Следовательно, член «X» умножается на оставшуюся часть выражения.
Процедура такая же для производной по «C». Полученное уравнение будет выглядеть так.
Эти производные используются для обновления существующих значений «m» и «C» с использованием формулы обновления градиентного спуска. Мы используем параметр «альфа», чтобы определить, сколько параметров следует обновить. Чем выше альфа, тем больше будет обновление. Но значение альфа должно быть оптимально установлено, чтобы не выходить за пределы оптимального значения параметров. Уравнение обновления выглядит так.
«T + 1» - это обновленное значение, а «t» - это текущее значение.
Как это выглядит?
По мере обновления параметров линия более точно соответствует набору данных, а окончательная линия линейной регрессии лучше всего подходит.
Линейная регрессия завершена!
Я надеюсь, что эта статья даст вам четкое представление о том, как работает линейная регрессия. В следующем посте мы вернемся к программированию модели линейной регрессии с нуля, используя только Python.
А пока счастливого взлома!
Первоначально опубликовано на https://hackerstreak.com