Хотя существует множество моделей регрессии, одним из первых методов оценки регрессии, которые изучают люди, является линейная регрессия. Линейная регрессия, пожалуй, один из самых известных и понятных алгоритмов в статистике и машинном обучении. Возможно, это связано с тем, что линейная регрессия настолько хорошо изучена, что ее преподают во многих курсах по машинному обучению, анализу данных и науке о данных.
Существует два типа линейной регрессии: одномерная линейная регрессия и многомерная линейная регрессия.
Простая линейная регрессия включает массив для переменной 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