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

Существует два типа линейной регрессии: одномерная линейная регрессия и многомерная линейная регрессия.

Простая линейная регрессия включает массив для переменной y, который зависит от переменной X, которая также является одним массивом. Математическая формула простой линейной регрессии:

y = B0 + B1*X

В более высоких измерениях, когда для переменной X имеется более одного столбца данных, формула множественной линейной регрессии выглядит следующим образом:

yi = B0 + B1xi1+ B2xi2 … Bpxip + E i для i = 1, 2, … n

При изучении линейной регрессии мне в голову пришел вопрос, является ли простая линейная регрессия более точной, чем множественная линейная регрессия.

Единственный способ правильно найти ответ на этот запрос — попробовать его, введя данные в две модели: простую линейную регрессию и множественную линейную регрессию.

Чтобы проверить свою гипотезу, я решил использовать автомобильный набор данных, который я использовал в курсе Coursera, под названием «Анализ данных с помощью Python».

Ссылку на автомобильный набор данных можно найти в репозитории Kaggle по адресу: https://www.kaggle.com/toramky/automobile-dataset/code?datasetId=1291&sortBy=dateRun&tab=profile.

Алгоритм простой линейной регрессии можно найти на скриншоте ниже:

Я импортировал функцию LinearRegression sklearn и назначил столбец фрейма данных, high-way, переменной X, которая независима. Затем я назначил цель, состоящую из столбца цена, переменной y, которая является зависимой.

Я определил модель как функцию LinearRegression и поместил в нее переменные X и y. Чтобы переменные X и y соответствовали модели, мне пришлось изменить форму на (-1, 1).

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

Я распечатал результат, точность которого составила 49,66%.

Хммммммм.

Я также нарисовал прогнозы относительно переменной y, и можно увидеть, что прогнозы слабо выровнены с переменной y с несколькими выбросами: -

Затем я вставил код алгоритма многомерной линейной регрессии, который можно увидеть на снимке экрана ниже:

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

Чтобы переменная Z соответствовала алгоритму, мне пришлось изменить ее форму на (-1, 4), чтобы вместить четыре столбца, которые будут предсказаны.

Используя многомерную линейную регрессию, точность прогнозов увеличилась до 81,12%, что близко к улучшению на 32%.

Лучше.

Я нарисовал прогнозы относительно переменной y и заметил, что они более точно совпадают, чем в случае с простой линейной регрессией, хотя все еще есть несколько выбросов:

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

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

Код для этого поста можно полностью найти в моей личной учетной записи Kaggle, ссылка находится здесь: https://www.kaggle.com/tracyporter/coursera-data-analysis-with-python/edit/run/ 73867078