Линейная регрессия с градиентным спуском

Давайте сначала начнем с самых основ машинного обучения. Сначала я определю, что такое регрессия, а затем мы перейдем к линейной регрессии.

Таким образом, машинное обучение можно разделить на три подтипа:

  1. Контролируемое машинное обучение
  2. Неконтролируемое машинное обучение
  3. Обучение с подкреплением

Давайте сначала разберемся, что это за типы —

Контролируемое обучение

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

Обучение под наблюдением можно в целом разделить на 2 дополнительных подтипа на основе набора данных:

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

Пример — наиболее распространенным примером является расчет цены дома. В этом случае нам даются определенные характеристики, такие как расположение дома, количество комнат, размер дома в квадратных футах и ​​т. д., и нам нужно предсказать цену дома. дом основан на этих характеристиках. Таким образом, совершенно ясно, что цена дома будет непрерывной, т.е. мы не можем сказать, что цена будет 1000 и 1500 долларов, только это может быть любая реальная стоимость, например 1200, 1215 долларов, проще говоря. нельзя классифицировать.

Самый важный метод регрессии -

Вы правильно угадали! это линейная регрессия

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

Пример. Хорошим примером здесь может быть предсказание пола человека на основе роста, веса, длины волос и т. д. Различные методы, которые можно использовать для классификации:

k-NN, логистическая регрессия и т. д.

Логистическая регрессия — это метод классификации, так что не запутайтесь.

Обучение без учителя

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

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

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

3. Обучение с подкреплением —

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

Компоненты обучения с подкреплением-

  1. Агент — это лицо, принимающее решения в системе.
  2. Среда — Агент взаимодействует с окружающей средой, чтобы выполнить требуемое действие.
  3. Действие — определяет, что может делать агент. Выражение определенной кнопки в игре и тому подобное.

Таким образом, в основном агент выбирает действие, которое максимизирует его вознаграждение.

Все крутые применения ИИ, о которых вы слышали в последнее время, относились к этой категории. Будь то AlphaGo от DeepMind или вы такой же фанат MUSK, как и я, его боты OpenAI также победили группу профессиональных игроков в Dota, используя силу обучения с подкреплением.

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

Если вы когда-либо читали какую-либо статью или смотрели какой-либо учебник по линейной регрессии, вы, должно быть, видели изображение выше. Теперь попробуем расшифровать, что на самом деле происходит на этом изображении. В основном у нас есть набор точек или координат x и y, которые мы нанесли на этот график, и у нас есть линия, проходящая через него.

Основная цель линейной регрессии — просто определить эту линию, которая лучше всего соответствует нашей модели

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

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

По сути, это и есть наилучшее соответствие: это просто линия, расстояние от всех точек до которой минимально.

Существуют различные способы расчета ошибки. Некоторые из них -

  1. Средняя абсолютная ошибка —

Мы в основном вычитаем наше предсказанное значение с правильным значением и берем его среднее значение.

2. Среднеквадратическая ошибка —

Мы вычитаем наше предсказанное значение с правильным значением, возводим эти значения в квадрат и затем берем среднее значение.

3. Среднеквадратическая ошибка —

Это просто квадратный корень из MSE.

Мы можем выбрать любую метрику для расчета нашей ошибки.

Процесс линейной регрессии —

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

Уравнение линии, как мы все знаем, Y= mx+b.

m = наклон линии, или мы также называем его весом, а также обозначается буквой «w» на жаргоне ML.

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

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

Пример. Если нам дан набор данных, и нам нужно предсказать цену дома на основе количества комнат, то у нас будет что-то вроде этого:

(5,$1000), (3,$500)

Здесь 5 — это наш х (количество комнат), а 1000 долларов — это наш у (цена дома).

Так что в основном все, что нам нужно, чтобы найти нашу волшебную линию, это «m» и «b», звучит довольно просто. Давайте сразу перейдем к вычислению наших m и b.

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

m = 0 ; b = 0

Мы определим нашу линию, используя эти значения m и b, и мы получим некоторую ошибку, которую мы можем вычислить, используя метрики, определенные выше.

Итак, теперь у нас есть — «м», «б» и «ошибка».

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

Градиентный спуск — это просто трехмерный график наклона (m), точки пересечения с осью y (b) и ошибки.

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

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

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

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

Итак, давайте ответим на этот вопрос. По сути, мы делаем то, что на каждой итерации мы будем обновлять значения m и b, используя градиент. Мы вычисляем градиент следующим образом:

Здесь yi — правильный результат, а mxi+b — наш прогнозируемый результат.

На изображении выше мы просто вычисляем градиент, который в конечном итоге будет использоваться для обновления значений b и m.

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

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

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

Просто посмотрите на изображение выше с красными и синими плитками. Предположим, что расстояние между красной плиткой, на которой вы сейчас находитесь, и синей плиткой, которой вы хотите достичь, составляет 12 единиц, и вы попытались переместиться туда как можно быстрее и решили, что будете двигаться шагами по 5, чтобы достичь наименьшего значения. точка, теперь после 1-й итерации ваше расстояние будет 5 единиц, после 2-й - 10, а после 3-й - 15 единиц. Итак, в основном проблема здесь в том, что, двигаясь слишком быстро, мы рискуем продвинуться вперед наших локальных минимумов. или синяя плитка. И если мы пойдем слишком медленно, то потребуется много времени, чтобы сойтись на наших локальных минимумах.

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

Итак, теперь у нас есть скорость обучения. Мы можем сосредоточиться на наших значениях b и m.

Итак, подытоживая весь процесс -

Шаг 1 — Инициализируйте m и b как 0.

Шаг 2 — Определите линию, используя «m» и «b», и рассчитайте ошибку.

Шаг 3 — Используйте эти 3 точки для расчета градиента.

Шаг 4 — Обновите значения m и b и повторите процесс снова, начиная с шага 2.

Шаги со 2 по 4 повторяются n раз, где n — количество итераций, которое мы определяем. «n» может быть 1000, 2000 или 10000 в зависимости от набора данных.

После завершения всех этих итераций мы сойдемся к нашим локальным минимумам и, следовательно, найдем оптимальное значение наших b и m.

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

Для дальнейшего обучения -

https://www.youtube.com/watch?v=XdM6ER7zTLk&frags=pl%2Cwn

И с этим мы подошли к концу этой статьи. Большое спасибо за то, что прочитали это.

Вы можете хлопать, если хотите. ЭТО БЕСПЛАТНО.

Мой Твиттер и LinkedIn.