В този блог изграждаме препоръчителен модел от нулата за оценка на размера на екипажа за потенциални купувачи на кораби, като използваме набора от данни cruise_ship_info.csv.

Този блог ще се потопи дълбоко в теоретичните и практически концепции в машинното обучение и науката за данни, за да ви помогне да разберете напълно точките по-долу —

Защо този модел (линеен/нелинеен)?

Как да изберете функции само чрез анализиране на данни и също чрез алгоритми за избор на функции?

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

Защо и как да направите тест за съответствие за оценка на модела? — R_Squared и коригиран R_Squared

Как да оптимизирам модела за по-добри оценки? — Търсене в решетка

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

Този блог е първата част от поредицата и ще обхваща EDA.

И така, нека се потопим в това пътуване на защо да как!!

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

EDA е всичко за разбиране на данните, като основна статистика (средно, стандартно отклонение, диапазон и т.н.), разпределение, типове данни, идентифициране на липсващи стойности или NaN, разбиране на връзката между независими променливи (IV) и зависими променливи (DV), и т.н.

Колкото по-добре разбираме данните, толкова мощен ще бъде нашият модел.

1. Проверете колоните и техния тип данни, проверете за нулеви стойности

Наблюдения от горните изображения —

Първото изображениепоказва информация за колоните, присъстващи в набора от данни. Можем да видим, че наборът от данни не съдържа без стойности Null. Дава ни информация и за data_types, което подчертава, че Ship_name и Cruise_line са категорични колони.

Второто изображение дава информация за нивата (Категория) в Cruise_lineзаедно с броя точки с данни в тези категории, в низходящ ред. Cruise_line има 20 ниваи можем да видим, че 70% от данните са разпределени в първите 5 нива на тези колони. Имайки предвид, че тази колона може да има бизнес значение, тези нива могат да бъдат включени по време на приспособяването на модела и по-късно да бъдат идентифицирани по време на оптимизацията на модела, независимо дали са статистически значими или не.

Трето изображение дава информация за нивата в колоната Ship_name. Ship_name има 138 категории, което е близо до общия брой редове в набора от данни. Използването на тези категории ще увеличи сложността на модела. Той дори нарушава общото правило за регресия, че поне 10 точки на независима променлива са необходими за добро съответствие. Следователно Ship_name може да се избегне по време на напасването на модела.

2. Проверка на статистически характеристики на данните

Наблюдения от основните характеристики —

Броят на всяка променлива е 158, което показва, че наборът от данни не съдържа липсваща стойност.

Диапазонът (мин. и макс. стойност) на променливите е различен, това означава, че трябва да стандартизираме или нормализираме данните, преди да ги подадем към модела.

3. Сдвояване на данни, за да разберете разпределението и връзката

Двойката е най-добрата техника за визуален анализ на разпределението на данни и идентифициране на връзката между променливите. Идентифицирането на връзка означава да се установи дали променливите са линейно свързани помежду си или имат нелинейна връзка. Тази проницателна информация може да помогне при вземането на решение какъв тип модел (линеен или нелинеен) ще се побере за тази задача.

Наблюдения от Pair-plot —

Независимите променливи Тонаж, пътници, дължина и каюти са силно свързани с променливата реакция на екипажа. Можем да видим положителна корелация с Crew. Силата на корелацията може да бъде проверена и с помощта на корелационната матрица.

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

Наличието на Мултиколинеарност може да се усети сред 4 независими променливи Тонаж, пътници, дължина и каюти.

В наблюденията по-горе споменах термини като Корелация и Мултиколинеарност. Нека разберем какво означават и дали присъствието им е добър или лош знак за модела.

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

Коефициентът на корелация на Пиърсън (обозначен с r) е мярка за всяка линейна връзка между две променливи. Стойността на r варира между −1 и 1.

Кога,

  • r = 0, това означава, че няма линейна връзка между променливите
  • r = 1, означава, че съществува перфектна линейна връзка между променливите
  • r › 0 означава положителна корелация
  • r ‹ 0 означава положителна корелация
  • |r| › 0.5означава силна положителна корелация между променливите

Както видяхме в Pairplot, че променливите имат линейна връзка, нека проверим силата на линейната връзка с помощта на корелационната матрица.

4. Начертайте корелационната матрица на Pearson

Корелационната матрица е таблица, която обобщава коефициента на корелация на Pearson между всички променливи в набор от данни.

Наблюдения от диаграмата на корелационната матрица:

Тонажът, пътниците, дължината и кабините имат r › 0,9 с екипажа, това показва много силна положителна корелация с променливата на отговор (Екипаж).

Може да се види и силна положителна корелация между тези променливи. Това се нарича Мултиколинеарност, т.е. наличие на корелация между няколко променливи.

Въпросът е, чезащо е важно да се проверява за мултиколинеарност? Потенциален проблем ли е мултиколинеарността? Да или Не, зависи от това дали нашият фокус е да тълкуваме статистическата значимост на регресионните коефициенти или само прогнозиране.

Нека разберем защо това е проблем, причината за мултиколинеарността и как да го поправим.
Защо това е проблем, се крие в концепцията за разбиране на тълкуването на регресионните коефициенти. Коефициентите на регресия се тълкуват като средна промяна в зависимата променлива с промяна на 1 единица в коефициента на регресия, като стойността на други коефициенти се задава на 0.
Нека разберем това с пример. Просто уравнение на линейна регресия с 2 променливи ще бъде -

y = αx1 + βx2 + c + e,

α иβ са коефициенти на x1 и x2, c е константа и „e“ е грешка. Ако β е 0, тогава 1 единица промяна в αе равна на средна промяна в „y“. Но ако αи βса корелирани, тогава промяната в βще засегне α, причината за която не можем да определим значението на α. Но оценката „y“ няма да бъде засегната поради това.
Как да открием мултиколинеарност?
Е, има няколко начина за откриване на мултиколинеарност, но тази публикация ще обсъди най-популярните начини.
1. Чрез визуално анализиране на данните с помощта на диаграма на двойки.
2. Използване на корелационна матрица

Тези 2 вече са обяснени по-горе.
3. Използване на фактора на инфлация на отклонението (VIF)

Какво е VIF? Това е техника, при която всяка променлива се регресира спрямо останалите променливи и резултатът се изчислява по формулата по-долу.

Тук R-квадрат е коефициентът на определяне, чиито стойности са между 0 и 1. Това е показател за оценка за регресионен модел. Засега пазете това в плик, ще разгледаме това подробно във 2-ра част от тази серия.
Като цяло, ако една променлива има VIF повече от 5, тогава се счита, че е силно колинеарна с други променливи. Означава висока мултиколинеарност.

Как да коригирате мултиколинеарността?
1.
Премахнете променливите, имащи VIF › = 5.
2. Линейно комбинирайте 2 или повече променливи.
3. Използване на анализ на принципни компоненти( PCA)
4. Техника за регулиране LASSO може също да се използва за премахване на мултиколинеарността.

Въпрос, който изскача в ума поради мултиколинеарността —
Може ли премахването на мултиколинеарността да подобри прогнозата на модела? Е, като цяло мултиколинеарността няма ефект върху прогнозата, Така че не е задължително. Но в случай, че имаме голям брой предиктори ( › 10), тогава коригирането на multicollineairty може да подобри производителността и прецизността на модела. Тъй като големият брой предиктори може да увеличи сложността, което ще доведе до пренастройване и моделът няма да може да обобщава добре тестови данни. следователно в този сценарий фиксирането на мултиколинеарността може да бъде полезно. Но винаги имайте предвид, че докато коригираме мултиколинеарността, ние премахваме променливи с висок VIF и това води до загуба на информация. Така че можем да загубим променлива, която има бизнес значение, докато оценяваме променливата на отговора.

5. Избор на функцията

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

Има няколко начина за избор на характеристики —
- С помощта на Pairplot и Corelation Matrix — Изберете променливи, които имат висока стойност на корелация със зависимата променлива. Корелацията може да се види и в графиката по двойки.
- Стъпкова регресия
- Избор напред
- Елиминиране назад
- Резултат за взаимна информация

Последните 4 метода ще изискват разбиране на p-стойност, t-стойност, R-квадрат и Adj. R-Squared, така че ще разгледаме тези методи и термини в следващата публикация от тази серия.
Връщайки се сега към първия метод (използване на корелационна матрица), списъкът с избрани характеристики ще бъде —
Selected_list = ['Тонаж', 'пътници', 'дължина', 'каюти', 'Cruise_line_Royal_Caribbean', 'Cruise_line_Carnival', 'Cruise_line_Holland_American', 'Cruise_line_Costa', 'Cruise_line_Norwegian', 'Cruise_line_Celebrity' ]
Base_list= ['Tonnage' , 'passengers', 'length', 'cabins', 'passenger_density', 'Cruise_line_Royal_Caribbean', 'Cruise_line_Carnival', 'Cruise_line_Princess', 'Cruise_line_Holland_American', 'Cruise_line_Norwegian', 'Cruise_line_Celebrity' ]
В избрани списък {'Tonnage', 'passengers', 'length', 'cabins'}, са избрани, защото са силно свързани с Екипажи 'Cruise_line_* ( Един горещо кодиран предиктор на Cruise_line)е избран, като се има предвид въздействието върху бизнеса. В следващия блог ще видим как се държи моделът, ако се захранва с тези набори от функции и ще се опитаме да оптимизираме производителността на модела.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Благодарим Ви!

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

Също така ме последвайте в LinkedIn и GitHub.

ПРИЯТНО УЧЕНЕ!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —