Изграждане на многовариантна регресия от нулата с PyTorch и визуализиране на прогноза в 3D с PCA

Готови ли сте за дълбоко гмуркане във вълнуващото царство на интерпретацията на данни? 📊 Днес многовариантната регресия е в менюто. Звучи сложно? Е, докато приключим, ще се чувстваме като разходка в парка 🌳🚶‍♂️

Ще разгледаме как да обучим модел на многовариантна линейна регресия, като демистифицираме тези сложни математически уравнения и ги трансформираме в прости, разбираеми концепции. И най-добрата част? Ще визуализираме нашите резултати, превръщайки абстрактните числа в живи, разбираеми графики 📈

Закопчайте се, защото сме на път да запретнем ръкави и да се потопим в прилагането на многовариантна линейна регресия от нулата с помощта на Pytorch 💪

Наборът от данни: CarDekho

В това проучване ще използваме набора от данни на CarDekho, като се опитваме да предвидим цените на автомобилите. Наборът от данни съдържа следните функции 🔬:

  • името на колата
  • годината, в която е издадена
  • продажната цена
  • настоящата цена
  • броя на изминатите километри
  • вида на използваното гориво (бензин или дизел)
  • тип трансмисия (ръчна или автоматична)
  • колко пъти колата е сменяла собственика си

Всеки от тези фактори значително допринася за цената на автомобила и ние ще използваме тези данни, за да изградим прогнозен модел 🤖

Проучвателен анализ на данни

Проучвателният анализ на данни (EDA) е критична предварителна стъпка, която включва обобщаване на основните характеристики на набор от данни чрез визуални методи или статистически обобщения 📊

Това е от съществено значение за машинното обучение, тъй като ни позволява да разберем основната структура на данните, да идентифицираме извънредни стойности, да открием модели и да тестваме предположения, използвайки мощни визуални или количествени методи, като по този начин предоставяме ценна информация за изграждане на ефективни и точни прогнозни модели 🧠💡

Първо нека импортираме необходимите пакети:

Сега нека прочетем данните в рамка с данни на Pandas. Можете да изтеглите набора от данни с тази връзка на Kaggle.

Трябва да преобразуваме категоричните колони като цели числа:

Индивидуално разпределение на характеристиките

Нека визуализираме отделните разпределения на характеристиките, за да разберем обхвата, централните тенденции и разпространението на нашите данни, което от своя страна ни помага да идентифицираме всяка неравномерност, отклонения или аномалии, които биха могли да повлияят на ефективността на нашия модел 📈🔎

За тези графики можем да видим, че повечето автомобили в продажба са:

  • консумация на бензин вместо дизел
  • имаше само един собственик
  • са от времевия диапазон 2012-настояще
  • са ръчни
  • се продават между 1 и 10 100 000 индийски рупии

Корелация на топлинна карта

Нека ви представим нашия най-колоритен приятел: корелацията на Heatmap! 🌈 Това е графично представяне, което показва корелацията или връзката между различни променливи или характеристики в набор от данни, използвайки цветно кодирани клетки.

Когато две променливи са силно корелирани, те показват стойност, близка до 1 (или -1 за обратна корелация), докато стойност близо до 0 показва липса на корелация между променливите.

Корелацията на Heatmap в машинното обучение ни помага да разберем връзките и зависимостите между различни функции, като по този начин предоставя начин за идентифициране на модели и вземане на информирани решения по време на процеса на изграждане на модел 🔧

<matplotlib.axes._subplots.AxesSubplot at 0x1f5bb762b08>

Корелацията между променливите и продажната цена е най-полезната информация за нас, тъй като това е, което искаме да предвидим 🚗💵

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

Парцели по двойки

Диаграма по двойки показва решетка от диаграми на разсейване, където всяка диаграма показва връзката между разпределението на две променливи.

Графиките по двойки са полезни, защото ни позволяват бързо да оценим моделите между променливите.

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

Функцията за година има полиномиална корелация с продажната цена, така че полиномиалната регресия най-вероятно ще превъзхожда стандартната линейна регресия.

Вместо това настоящата цена има линейна връзка с настоящата цена.

Обучение и тестване на модели

Създайте дял с данни за обучение

Разделянето на обучение-валидиране-тест е процес на разделяне на набор от данни на три отделни подмножества: набор за обучение, набор за валидиране и тестов набор.

Наборът за обучение се използва за обучение на модела, наборът за валидиране се използва за настройка на параметрите на модела и оценка на производителността по време на разработката, а тестовият набор се използва за оценка на производителността на крайния модел върху невиждани данни.

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

Добре, сега е време да се потопим в математиката! 📐

Обучението на линеен модел с помощта на регресия на най-малък квадрат е еквивалентно на минимизиране на средната квадратна грешка:

където n е броят на пробите, y е предвидената стойност на модела и y е истинската цел.
Прогнозата y се получава чрез матрично умножение между входа X и теглата на модела w.

Минимизирането на Mse може да се постигне чрез решаване на градиента на това уравнение, равно на нула по отношение на теглата w:

За повече информация как да намерите w, моля, посетете следната връзка.

Изграждане на модела

Нека изградим модела с помощта на Pytorch:

Време е да обучите модела 🎉

Изчисляване на грешките при прогнозиране

Сега нека направим малко числа и изчислим показателя, за да оценим производителността на нашия модел.

MSE Train:	 2.808985471725464
MAE Train:	 1.1321566104888916

MSE Test:	 3.7205495834350586
MAE Test:	 1.2941011190414429

Моделът е сMseсредно 3.72 в тестовата серия. Това означава, че средно квадратът на разликата между прогнозираните и действителните стойности е 3,72.

Продажната цена е в 100 000 индийски рупии, които се конвертират в 1 USD = 82,20 INR към момента на писане. Това означава, че средно моделът има приблизителна грешка от 408 USD на тестовия комплект.

Анализ на основните компоненти (PCA) и 3D визуализация

В този раздел ще използваме PCA, за да намалим броя на характеристиките до две, за да визуализираме равнината на линейния регресор.

Да предположим колекция от m точки като:

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

За всяка точка x^i в R^n ще намерим съответен кодов вектор c^i в R^k strong> където k е по-малко от n.

Некаf е функцията за кодиране и g е функцията за декодиране и D в R^{n,l} е декодиращата матрица, чиито колони са ортонормални:

Нека проектираме нашите данни в 2D с PCA:

След това пресъздаваме равнината на прогнозиране, като използваме три произволни точки от прогнозата. Повече информация тук.

Добри новини ! Прогнозната равнина пасва доста добре на данните 😎

Заключение

И така, ето най-важното: EDA ни помогна да разберем някои тенденции в нашите данни и успяхме да изградим доста приличен линеен регресионен модел!

Оказва се, че линейната регресия може да работи като магия, ако вашите данни имат много линейна корелация.

Не забравяйте да добавите линеен модел към вашата базова линия за относително регресионни задачи, за да го сравните с по-сложни модели. Приятно изследване на данни! 🚀📊