Простая и множественная линейная регрессия для прогнозирования цены автомобиля

Автор: Ганс и Райнер

Данные - это просто резюме тысяч историй - расскажите несколько из этих историй, чтобы сделать данные значимыми. Чип и Дэн Хит, авторы книги Made to Stick, Switch

Введение

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

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

Данные о ценах на автомобили можно использовать для прогнозов. Мы можем использовать регрессионный анализ, чтобы делать точные прогнозы цен на автомобили.

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

  • Связь между переменными линейна.
  • Обе переменные должны иметь как минимум интервальную шкалу.
  • Для определения уравнения используется критерий наименьших квадратов.

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

Содержание

  1. Простая линейная регрессия против множественной линейной регрессии
  2. Набор данных
  3. Прочитать набор данных
  4. Независимые и зависимые переменные
  5. Разделение данных
  6. Применение модели
  7. Сделайте прогноз
  8. Оценка модели

Простая линейная регрессия против множественной линейной регрессии

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

Простая линейная регрессия

Простая линейная регрессия - это модель линейной регрессии, которая измеряет корреляцию между одной независимой переменной и одной зависимой переменной. Предположим, у нас есть сценарий, согласно которому кто-то хочет купить автомобиль, и цена автомобиля зависит от объема двигателя. Таким образом, мы можем определить, что объем двигателя является независимой переменной, а цена - зависимой переменной. Уравнение простой линейной регрессии можно представить следующим образом:

Уравнение имеет вид Ŷ = a + bX, где:
- Ŷ - зависимая переменная (это переменная, которая идет по оси Y)
- X - независимая переменная (т.е. ось X)
- b - наклон линии
- a - точка пересечения с y

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

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

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

  • X1… Xk - независимые переменные.
  • a - точка пересечения по оси Y (или постоянное значение)
  • b1 - чистое изменение Y для каждого единичного изменения X1 при постоянном X2… Xk. Он называется коэффициентом частичной регрессии или просто коэффициентом регрессии.
  • Для построения этого уравнения используется критерий наименьших квадратов.
  • Определение b1, b2 и т. Д. Очень утомительно, рекомендуется использовать программный пакет, такой как Python, R, SPSS или Excel.

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

Набор данных

Набор данных, который используется в этой статье, представляет собой набор данных с прогнозами цен на автомобили на основе компонентов, имеющихся в автомобиле. Источник набора данных взят из https://www.kaggle.com/hellbuoy/car-price-prediction.

Прочитать набор данных

Библиотека импорта

Загрузить набор данных

В этой статье я загружаю набор данных из car_price.csv, который уже сохранен на моем диске Google. Вы можете использовать приведенный ниже код для загрузки набора данных.

from google.colab import drive
drive.mount('/content/drive/')
url = "<Your file location in drive>"
dataset = pd.read_csv(url)

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

"wheelbase", "carlength", "carwidth", "carheight","curbweight", "enginesize", "horsepower", "peakrpm"

Столбец price является зависимой переменной.

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

car_df_ctn.info()

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

Исследовательский анализ данных (EDA)

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

Одномерный EDA

В Python мы можем использовать две команды для одномерного EDA с набором данных. С помощью одномерного EDA мы можем проверить сводную статистику для каждого столбца в наборе данных (или) сводке только по одной переменной. Мы можем использовать следующие команды:

car_df_ctn.describe()

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

sns.boxplot(data=car_df_ctn)

Многомерный EDA

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

sns.pairplot(data=car_df_ctn)
plt.show()

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

plt.figure(figsize=(10,10))
sns.heatmap(car_df_ctn.corr(), vmin=-1, vmax=1, cmap="coolwarm", annot=True)
plt.show()

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

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

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

Разделение данных

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

Применение модели

Чтобы применить модель, мы должны обучить модель, используя данные поезда, которые мы только что разделили на предыдущем шаге. Следующее, что мы хотим сделать, это обучить модель линейной регрессии с помощью команды fit (). Не забудьте добавить X_train и y_train в качестве параметров. Затем модель автоматически подсчитает коэффициент каждой переменной.

Сделайте прогноз

Чтобы сделать прогноз цен на автомобили, мы должны использовать команду .predict (). Числа внутри параметров - это значения каждой независимой переменной (или, в основном, столбца), которые мы ранее поместили в функцию iloc.

Оценка модели

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

Резюме модели

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

Проверьте результаты прогнозов с помощью тестовых данных

Оценка качества подгонки с помощью MSE и RMSE

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

Средняя абсолютная ошибка в процентах

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

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

MAPE result Notes : 
1. Below 10% = Excellent
2. 10% - 20% = Good
3. 21% - 50% = Reasonable
4. Above 50% = Inaccurate

Почему MAPE?

Причина, по которой мы используем MAPE, заключается в том, что число, которое возвращает MSE, является фактическим значением, но мы не знаем, насколько велико или мало это число по сравнению с прогнозом целых данных. Возьмем это в качестве примера: если мы хотим купить автомобиль и знаем, что компания получает прибыль в размере 100 долларов с каждой транзакции, означает ли это, что 100 долларов - это большое число? ответ - нет. Для небольшой транзакции вроде 300 $ это большая прибыль. Но если транзакция стоит 500000 долларов, 100 долларов выглядят относительно небольшими. Вот почему использование MAPE действительно важно для оценки нашей модели.

Конечные заметки

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



Ссылка