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

При написании этой статьи я опирался на курс Initiez-vous au Machine Learning с сайта openclassroom.com.

Прежде чем ты начнешь

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

Как работает машинное обучение?

Кратко,

  1. Подбираем подходящие данные
  2. Обучаем нашу модель на выбранных данных
  3. Измеряем погрешность аппроксимации модели

Когда наша ошибка кажется достаточно малой, мы можем считать, что наша модель обучена.

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

Что такое модель?

Модель можно рассматривать как математическое соотношение, позволяющее имитировать реальность.

Например, простой моделью линейной регрессии может быть линия с уравнением y = 0,9045*x + 1,5526. Это линия, которую можно увидеть на изображении.

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

Зачем использовать машинное обучение?

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

Данные для алгоритмов

Итак, для обучения нашей модели нам нужны данные.

Процесс выбора и сбора данных может быть очень долгим. В «реальном мире» можно потратить много времени на изучение и обработку наборов данных.

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

Что такое алгоритм регрессии в машинном обучении?

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

Итак, (x, y) = (площадь, стоимость аренды).

Данные хранятся в файле .csv.

Классификация алгоритмов

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

В нашем случае мы хотим найти связь между x и стоимостью аренды y. Значения стоимости аренды — это наши ярлыки.

Как следует из названия, этот алгоритм используется для выполнения регрессии. Это означает, что мы ожидаем, что программа вернет значение. В нашем случае число – это стоимость аренды квартиры. Мы рассматриваем это значение как непрерывное.

Существуют также алгоритмы классификации, которые возвращают категории, рассматриваемые как "дискретные" значения.

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

x — это независимая переменная, а yзависимая переменная. Действительно, стоимость аренды квартиры зависит от ее площади.

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

Это означает, что мы сможем зайти на территорию и взамен получить соответствующую стоимость аренды.

Итак, у нас есть математическое выражение нашей модели:

y = a*x + b

и мы хотим определить a и b, чтобы наконец получить функцию:

f(x) = y

Где x вводится пользователем, а y задается алгоритмом линейной регрессии.

Общая модель линейной регрессии

Давайте рассмотрим еще несколько теоретических концепций линейной регрессии.

В нашем примере мы берем в качестве входных данных только одну функцию: поверхность x. На самом деле он может иметь несколько функций в качестве входных данных.

Общую модель написать немного сложнее:

  • Мы поставили символ «^» на y, чтобы отличить его от реальных измерений, на которых обучается модель. Y со знаком «^» — это оценка или прогноз, данный моделью.
  • N соответствует количеству квартир.

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

  • Мы добавляем к каждому наблюдению константу 1 для представления точки Oкоординаты (0;0)и иметь более компактное векторное написание.
  • D соответствует количеству переменных, характеризующих квартиру.

В нашем случае у нас есть одно наблюдение v с i = 1.Итак, D = 1иx = v.

Итак, у нас есть новое выражение:

Как видите, у нас снова есть выражение вида y = a*x + b.

Реализация алгоритма

Чтобы написать этот алгоритм, я буду использовать Python и scikit-learn.

Визуализируйте наши данные

Во-первых, давайте загрузим наши данные.

Некоторые из них кажутся отклонениями. Возьмем только арендную плату ниже 10 000 €.

Как и ожидалось, размер арендной платы линейно зависит от площади квартиры. Линейная регрессия хорошо применима к нашим данным.

Теперь нам нужно оценить погрешность нашей модели.

Функция потерь

Функция потерь позволяет определить погрешность модели.

Ошибка между значением нашей модели y (y с символом "^") и значением наблюдения (y) определяется евклидовым расстоянием.

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

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

В нашем случае нам повезло иметь точное решение напрямую.

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

Я не буду вдаваться в подробности демонстрации здесь. Для этого есть интернет-ресурсы, типа этого.

Давайте найдем наш θв коде

Приблизительно имеем: y = 30,61 * x + 269,04

Теперь у нас есть решение! Теперь мы можем использовать это соотношение для расчета арендной платы.

Использование sklearn

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

В Интернете есть несколько хороших руководств, чтобы узнать, как использовать sklearn. "Как этот."