Насколько было бы здорово, если бы вы могли предсказать количество автомобилей, которые ваша компания может продать в следующем году? Насколько прибыльным вы могли бы быть, если бы смогли заранее спрогнозировать курс акций бренда, чтобы можно было инвестировать без каких-либо рисков? Как было бы здорово, если бы вы могли спрогнозировать свою зарплату на следующие 5 лет? Как было бы здорово, если бы вы могли предсказать счет в любимой игре?

Да! Все это возможно с помощью всего одного простого алгоритма, называемого линейной регрессией.

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

Мы будем использовать набор данных Продажи домов в округе Кинг, США. Набор данных содержит информацию о количестве спален, площади в метражах, классе, цене продажи и сопутствующую информацию для 21 613 домов.

Во-первых, давайте разберемся, что такое линейная регрессия?

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

Линейная регрессия - это тип регрессионного анализа, в котором независимые переменные (X) имеют линейную связь с зависимой переменной (y). В нашем случае цена дома является зависимой переменной, а все остальные переменные (количество спален, год постройки и т. Д.) Являются независимыми переменными. В задачах регрессии мы будем прогнозировать непрерывное значение.

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

Наша цель - найти оптимальные значения для θ 0 и θ 1, чтобы мы могли предоставить наилучшие возможные прогнозы для значений X.

Функция стоимости

Функция стоимости помогает нам определить значения θ и тем самым подобрать наиболее подходящую линию для наших данных.

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

Теперь, когда мы знаем основы алгоритма линейной регрессии, пришло время создать модель, которая может прогнозировать цены на жилье в округе Кинг, США.

Часть 1: линейная регрессия с одной переменной

Если мы используем только одну независимую переменную (X) для прогнозирования значения y, то это называется одномерной линейной регрессией. Мы будем использовать Pandas для операций с наборами данных и Sklearn для создания реальной модели.

Давайте начнем с понимания данных. Этот процесс известен как исследовательский анализ данных или сокращенно EDA.

Мы можем понять распределение данных и то, как независимые переменные соотносятся с зависимой переменной через EDA. Здесь мы используем Seaborn для визуализации данных. Вы также можете использовать Matplotlib или другие библиотеки для той же цели.

Примечание. Типы наборов данных
- обучающий набор (используется для обучения модели на основе переменных X и y)
- проверочный набор (используется для проверки эффективности модели на новых data)
- Test Set (Реальные данные, которые необходимо предсказать)

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

Мы используем модель линейного регрессора Sklearn и рассчитываем балл R2 и балл MSE для модели на основе прогнозов. Оценка R2, близкая к 1,0, означает, что модель лучше. Точно так же оценка MSE ближе к 0 означает, что модель хороша.

Запустите код.

Ура! Мы создали нашу первую модель линейной регрессии с помощью Sklearn.

Наша оценка
Оценка R2: 0,49926132278376645
Оценка MSE: 262809,0392940991

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

Часть 2: Линейная регрессия с несколькими переменными

Если мы используем более одной независимой переменной (X) для прогнозирования значения y, то это называется многомерной линейной регрессией.

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

#Adding columns other than id, date, price, sqft_living15, sqft_lot15
X = df.drop(columns=[‘id’, ‘date’, ‘price’, ‘sqft_living15’, ‘sqft_lot15’])

Бум! Теперь вы должны увидеть оценку R2 0,7094261923703133. Это неплохой результат по сравнению с предыдущим. Мы все еще можем улучшить эту модель с помощью различных методов, которые я напишу отдельно и свяжу, когда это будет сделано.

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

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

Спасибо,
Венкатеш.