Прежде чем начать нашу тему, давайте вернемся к тем дням, когда вы были действительно взволнованы 5 убийствами, которые вы совершили в Counter Strike (или, может быть, PUBG ?!), и хвастались этим перед друзьями, когда ваш старый учитель математики входит в класс, рисует линию на доске и говорит y=mx+c. Подождите, почему мы говорим об этом прямо сейчас? Потому что линейная регрессия — это всего лишь одна формула, на которую вы не обратили внимания (или, возможно, обратили внимание). Позже поблагодарите своего учителя математики. Теперь вернемся к нашей основной теме — Линейная регрессия!

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

Что такое линейная регрессия?

Линейная регрессия — это метод поиска целевой переменной путем нахождения линейной зависимости между зависимыми и независимыми переменными.

Зависимые и независимые переменные

Итак, что такое зависимые и независимые переменные? Просто все дело в названии. Независимая переменная, на изменение которой не влияет никакая другая переменная в эксперименте, называется независимой переменной. Зависимая переменная – это переменная, которая измеряется и проверяется в эксперименте. . Зависимая переменная «зависит» от независимой переменной. Например, давайте рассмотрим простой эксперимент с плиткой шоколада. Раздаем брусок 10 детям и хотим посмотреть на их реакцию. Здесь плитка шоколада является независимой переменной. Из 10 детей 6 могут быть счастливы, но 4 грустны, так как им больше нравится мороженое с ириской, чем плитка шоколада. Таким образом, наш результат счастья составляет 6 из 10, что является зависимой переменной (зависит от предмета, который мы раздали). В нашем классическом уравнении y = mx + c, y — зависимая переменная, а x — независимая переменная, поскольку y зависит от x.

Понимание линейной регрессии

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

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

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

Подробнее о потерях

Проигрыш — это наказание за плохой прогноз. Чем больше потеря, тем больше ошибка в нашем прогнозе. Если потери для модели равны нулю, то наш прогноз идеален. Но помните, ни одна модель не может дать идеального прогноза (да, ни одна модель не является Доктором Стрэнджем, братан).

На следующем рисунке изображение слева представляет собой модель с высокими потерями, а изображение справа — модель с низкими потерями (обратите внимание, что оранжевые линии на левом изображении намного длиннее, чем на правом). Итак, теперь наша цель — создать функцию потерь, которая минимизирует потери в нашей модели. Доступно много функций потерь, но та, которую мы рассмотрим, известна как функция Square Loss. (Внимание: впереди еще немного математики!)

Квадратная потеря

Квадрат потери функции — это квадрат разницы между наблюдением и прогнозом.

Среднеквадратическая ошибка (MSE) – это среднеквадратичное значение потерь для каждого примера по всем данным. Чтобы рассчитать MSE, просуммируйте все отдельные квадраты потерь в данных, а затем разделите на количество примеров:

Но MSE не всегда является практичной или лучшей функцией потерь. Но поскольку это простой подход и удобный для начинающих, мы предпочли его. Ознакомьтесь с разделом Стохастический градиентный спуск или погуглите Уменьшение потерь в линейной регрессии, чтобы узнать больше.

Множественная линейная регрессия

В простом эксперименте с плиткой шоколада мы увидели, что 6 детей довольны плиткой шоколада, а четверо детей хотят мороженого с ирисками. Но что, если один из этих детей скажет, что для счастья ему нужны и шоколад, и мороженое? Это случай множественной линейной регрессии! Множественная линейная регрессия используется для объяснения линейной зависимости между одной непрерывной зависимой переменной и двумя или более независимыми переменными. Теперь давайте вернемся к нашему стандартному уравнению.

Здесь,

y - шкала счастья (значение, которое нужно предсказать).

м - уклон линии.

x - шоколад или мороженое (наш элемент ввода).

c - y-перехват.

По соглашению в машинном обучении вы напишете приведенное выше уравнение немного по-другому.

где:

y’ — это предполагаемая метка.

b — это смещение(иногда также обозначаемое как w0).

w1 — это вес определенного объекта или склона.

x1 — это функция(наш вход).

(Попробуйте угадать, каковы ваши функции и ярлыки для эксперимента «Доход против опыта»!).

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

Вот и все, мы закончили с нашим линейным регрессом… Подождите! что, если один из ваших друзей попросит вас что-то предсказать, и все, что вы сделаете, это откроете книгу и напишете формулу (уровень Ботаник-100 активирован)! Итак, прежде чем закончить на этом, давайте перейдем к веселой части нашего обсуждения. (кстати, хорошие вещи приходят к тем, кто ждет ;) ).

Кодовая дорога!

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

  1. ПИТОН
  2. PANDAS (библиотека на питоне для управления данными с помощью таблиц)
  3. NUMPY (библиотека на Python для научных вычислений)
  4. Matplotlib (библиотека на питоне для визуализации)

Теперь, наконец, подошли к предсказанию.

Вот ссылка на код и набор данных.



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

Теперь возникает вопрос, как уменьшить это? Опять же, как уже упоминалось, есть много способов сделать это. Огромные данные означают большую точность. Иногда мы не можем работать с необработанными данными. Нам нужно предварительно обработать наши данные. К ним относятся такие методы, как Кодирование меток, Горячее кодирование, Удаление нулевых значений, Масштабирование функцийи т. д. Градиентный спуск также является одним из важных понятий линейной регрессии.

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

Удачи! Да прибудет с вами Кодекс!