Интуитивно ръководство за наука за данни: Линейна регресия

Въведение:

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

Какво е линейна регресия?

Линейната регресия е статистически метод, който се опитва да моделира връзката между целевите променливи (това, което искате да предскажете) и обяснителните променливи (това, което въвеждате в модела) чрез монтиране на линейно уравнение към предоставените данни. „Линеен“ се отнася до линейната връзка между всяка обяснителна променлива и целевата променлива, НЕ до самите променливи. Това означава, че x² може да има линейна връзка с y, стига коефициентите да са линейни.

Линейна регресия от вашето въведение към класа по статистика

Ще използвам данните за класирането на отборите в НБА за този пример и ще прогнозирам колко играчи напускат отбора след всеки сезон, като използвам броя победи за този отбор като обяснителна променлива. Логично, човек би очаквал отрицателна корелация, защото колкото повече отбор печели, толкова повече този отбор иска стабилност, което означава, че по-малко играчи ще напуснат. Да видим дали можем да прогнозираме броя на играчите, които ще напуснат отбора. (Такива данни могат да бъдат получени тук с Красива супа)

Ето бърз поглед към данните (общо 1276 записа):

Обобщеното уравнение за линейна зависимост би било:

За нашата прогноза създаваме обикновена линейна регресия (една цел Y с една обяснителна променлива X), която е:

Използвайки пакета Sklearn от Python, получих следния регресионен резултат:

Червената линия, която се използва за напасване на данните и описване на връзката, е:

Корелацията е отрицателна, както се очаква. За да определим колко значимо е това, използваме показател, наречен R². В този линеен модел R² е 0,144, което означава, че моделът улавя около 14% от всички вариации в данните.

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

Сега това изглежда като модела на линейна регресия от моето въведение към класа по статистика. Като се имат предвид данните (класиране в НБА и брой останали играчи), се напасва и описва линия (Y=-0,095*X + 11,176). Производителността е обяснена и с R² (0,144). Остатъците изглеждат добре.

Готови ли сме? Не, далеч от това. Това е само вашата линейна регресия от въведението към класа на статистиката, където получавате монтираната линия и R² и го наричате ден. Начинът на истинския специалист по данни за подход към линейната регресия се отнася до по-сложни данни и по-практични въпроси относно данните, моделите и линейните допускания.

Пътят на Data Scientist към линейната регресия

Предположения за линейна регресия:

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

  • Линейност между целта и всяка характеристика: ((Ако имате нелинейни връзки, е много вероятно предвижданията да са неправилни, особено когато моделът се прилага извън данните за тренировка/тест. Нелинейният модел може да бъде наблюдавани в остатъчната диаграма или тествани с тест за остатъчна нормалност. За да коригирате това, помислете за трансформиране на функции или използвайте различни алгоритми.))
  • Хомоскедастичност на термините за грешка:Термините за грешка имат постоянни отклонения и се показват в рамките на граница. Помислете за трансформация на журнал.
  • Без автоматична корелация на термини за грешки: Грешките не зависят една от друга. Ако е така, това са данни от времеви серии.
  • Без колинеарност между характеристиките (независими характеристики): Колинеарността не добавя допълнителна информация, нито обяснителна сила, но намалява интерпретируемостта
  • Без отклонения/Точки с висок ливъридж:Тези точки просто изкривяват модела.

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

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

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

EDA: Получете повече подходящи данни

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

  • Победа:Колкото повече печели един отбор, толкова по-малко играчи ще напуснат за стабилност
  • Загуба: Колкото повече един отбор губи, толкова повече играчи ще напуснат за промени
  • Общо игрово време на играча (класирано от 1-ви до 15-ти): Колко играе играчът показва неговата стойност за отбора. Колкото по-голямо е общото игрово време, толкова по-ценно е, толкова по-малка е вероятността да напусне отбора

EDA: PairPlots!

Сега имаме три ключови типа обяснителни функции. Те имат смисъл от бизнес гледна точка, както е обяснено по-горе. Сега искаме да видим дали има смисъл да бъдат включени в нашия модел. Нека първо да разгледаме корелацията.

Изглежда, че победа/загуба и 13-15-ти най-играни играчи имат относително силна корелация с целевия ни брой оставащи играчи всяка година. Така че нека да разгледаме как точките от данни на тези характеристики се нанасят спрямо нашата цел. За тази цел пакетът на Python Seaborn има „двойни графики“, което е идеално за нашата цел.

Идентифицирайте отклоненията (високи точки на ливъридж)

Виждаме отклонения! Най-важното може да се каже от графиката за победа/загуба (маркирана по-горе). В идеалния случай сюжетът трябва да бъде победа + загуба = 82, като се има предвид, че има 82 мача в сезон на НБА. Има обаче два реда, показващи, че общият брой игри е по-малко от 82 игри. След известно проучване, има два сезона на локаут, в които имаше съответно само 50 и 66 игри!

По-обобщен метод за идентифициране на отклонения би бил използването на статистически метод за намиране на точки от данни извън 1,5*IQR (интерквартилен диапазон).

Справяне с отклонения (високи точки на ливъридж)

Има много причини някои данни да са извънредни:1)Просто лоши данни 2) Изключителни случаи (напр. Майкъл Джордан и неговата средна точка на игра) 3) Опашки на разпределението на извадката (напр. 99 персентил от SAT резултати)

За лоши данни няма какво да направите, освен да ги изхвърлите или да извършите трансформация (напр. трансформация на журнал) , за да смекчите въздействието на извънредните стойности. За изключителни случаи ще искате да ги запазите в данните си, защото няма нищо лошо в тях! За опашките на извадковото разпределение трябва да използвате преценката си, за да определите дали ги искате или не, за предпочитане след трансформация.

Инженеринг на функции

Инженерингът на функции е техника за създаване на нови функции за подобряване на производителността и интерпретируемостта на модела чрез използване на дадени функции и знания за домейна. В примера на НБА ще комбинирам победа и загуба, за да създам „процент на победа“ като нова функция. Тук има две причини: 1) победата/загубата са пряко свързани, което нарушава предположението за липса на колинеарност 2) печалбата/загубата имат различно въздействие върху промяната в списъка, където пределната загуба ще се асоциира с по-висока пределна промяна в списъка. Казано по-просто, отборите и мениджърите са по-противни на загубата.

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

Трансформация: Подготовка на вашите данни

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

Избор на функция/модел

Поздравления, току-що преминахте през подготовката на вашите данни за линейна регресия. Още веднъж, отделянето на време за подготовка на вашите данни, преди да преминете към моделиране, напълно си заслужава, защото… БОКЛУК ВЪН БОКЛУК ВЪН.

Функциите, които сте избрали и проектирали, са като съставки в кошницата. Моделът, който предстои да изградите, е ястието, което приготвяте.

Голям: Разделяне на обучение/валидиране/тест

Малък: Кръстосано валидиране в рамките на Train, след което резултат на набор от тестове

  • Cross val резултат (валидиращ RMSE)
  • K-кратно (влач/вал RMSE)

Определете над/под прилягане, висока RMSE, след което погледнете съотношението Test/Train RMSE

Ако прекалите, опитайте с регулиране

Ако не сте готови, опитайте да добавите повече сложност, полиномна регресия

Обучете настроен модел (какви данни, какви форми на данни, кой модел, каква алфа, каква мощност и т.н.) върху всички данни

След като преминете през EDA, за да разберете съответните обяснителни променливи и техните трансформации, ще получите представа как се вписва вашият линеен модел (свръх или недостатъчно). След това, чрез прилагане на различни алгоритми, ще разберете кой алгоритъм дава най-добра предсказваща сила и резултати. Последното нещо в този процес е да обучите избрания от вас модел върху обяснителните променливи, които сте избрали в ЦЕЛИЯ НАБОР ДАННИ за оптимизиран линеен модел.

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

Моля, свържете се с мен, ако се интересувате от кода на Python, който използвах.

[email protected]