Основной вопрос
Dataset "Airlines Customer satisfaction" -- содержит данные перелетов и клиентов, оценки различных фичей при перелёте и уровень удовлетворенности, характеристики клиентов и характеристики перелётов.
Необходимо предсказать, будет ли лояльный клиент, который летит по личным мотивам, бизнес - классом удовлетворен своим обслуживанием, учитывая детали значений других параметров.
Оглавление
Данные и библиотеки
Обработка данных
Основной вопрос ещё раз: необходимо предсказать, будет ли лояльный клиент, который летит по личным мотивам, бизнес - классом удовлетворен своим обслуживанием, учитывая детали значений других параметров.
Также я решила обработать данные статистическими вопросами, чтобы попробовать получить какую-то дополнительную информацию из данных, которая не очевидна при простом взгляде на визуализацию данных.
Рассматривая визуализацию данных меня заинтересовали вопросы касающиеся расстояния:
1)Зависит ли удовлетворенность полётом от расстояния, который пролетели пассажиры?
Нулевая гипотеза: удовлетворенность полётом не зависит от расстояния.
Для начала я рассмотрела распределение расстояния, далее был рассмотрен размер эффекта. При сравнении моего размера эффекта с разбросом данных, выяснилось, что размер эффекта небольшой, следовательно ассоциация между независимой и зависимой переменной имеет небольшую силу.
2)А есть ли разница в расстоянии у довольных и недовольных пассажиров?
Нулевая гипотеза: разницы в расстоянии у довольных и недовольных пассажиров нет.
Так как с помощью теста Шапиро-Уилка выяснилось, что данные распределены не нормально, для ответа на этот вопрос был проведён непараметрический тест (Манна-Уитни) вместо стандартного t-теста. P-value оказался большим -- pvalue=0.9014101643714322 - больше 0.05, поэтому у меня не достаточно данных, чтобы отвергнуть нулевую гипотезу. И я НЕ могу сделать вывод, что эффект, скорее всего, существует и в популяции, и в выборке.
Следующее, что мне захотелось рассмотреть - это есть ли какая-нибудь взаимосвязь между полом пассажира и его удовлетворенность полётом.
Вопрос: Интересно, зависит ли удовлетворенность полётом от пола?
Нулевая гипотеза: удовлетворенность полётом у мужчин и женщин одинаковая.
Так как этот статистический вопрос касается двух категориальных переменных - пол (м/ж) и удовлетворенность (да/нет) я использовала хи-квадрат. pvalue оказался больше 0.05, таким образом у меня также недостаточно оснований отвергнуть нулевую гипотезу.
3)Также мне стало интересно, а что вообще влияет на удовлетворенность пассажиров, точнее какая из фич делает пассажиров довольными.
Для этого я построила логистическую регрессию. Выделяя переменные главной была переменная "satisfaction". Получившаяся мной модель оказалась статистически значима, так как LLR p-value == 3.596e-08, что <0,05.
Также оказалось, что для всех параметров, кроме "wifi", "onlineBoar" p-значение получилось больше определенного уровня (0.05), поэтому переменная-предиктора, кроме этих двух не имеет статистически значимую связь с переменной ответа в модели.
У получившейся модели Log-Likelihood: -125.54, а L-Null (нулевой модели): -161.76, поэтому она лучше, чем нулевая, т.е. модель без предикторов, также она имела показатель качества модели псевдо-R^2=0.2239, значит показатель ближе к 0, а не к 1, поэтому у меня недостаточно данных для определения, что делает пассажиров удовлетворенными.
Построение моделей для предсказания
Следующим этапом было построение моделей для предсказания, чтобы ответить на основной вопрос. Зависимой переменной является "satisfaction" (y), а остальные независимые (x). Выборку поделю в соотношении 1/3, так как у меня не так много данных - всего 514 наблюдений.
В процессе ведения дневников были выполнены clustering + subgroup discovery, где задача состояла в том, чтобы разделить клиентов на группы, чтобы понять, какие услуги на борту больше влияют на удовлетворенность, чтобы улучшить какие-то "отстающие" услуги и сделать в будущем персонализированную рекламу, но мне они н е подходят для ответа на мой основной вопрос, то есть бесполезны, поэтому я не включаю их в итоговый отчёт.
Однако были получены следующие результаты, на которые можно обратить внимание: кластер, который был более удовлетворен -- по средним оценкам выставили более плохие оценки, нежели, чем кластер наиболее удовлетворенный. С помощью subgroup discovery я заметила тот факт, что модель поделила данные на 3 подгруппы и из полученных данных выяснилось, что параметры повторяются (низкая оценка еды и напитков). Возможно авиакомпании следует пересмотреть предлагаемое меню, напитки.
Также были построены модели регрессии и регрессии с регуляризацией -- они представлены кратко при построении ансамблей.
Дерево
Задача типа классификации - метрика "accuracy".
На тестовом качество получилось даже лучше, чем на тренировочном
Модель ошибается 0 раз, когда он на самом деле недоволен. И ошибается 4 раза когда он на самом деле доволен, а модель думает, что он не доволен.
Строю дерево :
Для самого левого листа голубого цвета value = [0, 8], что значит, что в этот лист попало 0 представитель из числа недовольных и 8 из числа довольных -- предсказываем, что будет недоволен полётом. Или самый правый, нижний лист - [35, 13]. То есть 35 недовольных и 13 довольных - предсказываем, что будет недовольный. Качество дерева получилось хорошим, на тестовой выборе данных даже лучше, чем на тренировочной.
Случайный лес
Поиск параметров для случайного леса:
Поиск n_estimators -- количество деревьев в лесу
Поиск max_depth -- максимальной глубины
Поиск min_samples_split -- минимальное кол-во выборок, необходимых для разделения
Поиск min_samples_leaf -- минимальное кол-во примеров, требуемое для нахождения в листовом узле
Кросс-валидация. Я решила использовать перекрестную проверку, чтобы выявить наилучшие параметры.
Создаю модель по полученным данным:
Разница не сильно большая, но кажется есть небольшое переобучение.
Ансамбли
Основа для ансамблей:
Строю ансамбли:
Выбираю модель:
В целом из всех наилучшие показатели у Леса и Ансамбля gradient boosting. Лес: при сравнении с Accuracy тестового и тренировочного были признаки переобучения, также у леса ROC 0.95 - хороший показатель, modelGB также имела признаки переобучения, однако у леса признаки менее выражены (1.0 -> 0.97 vs. 1-> 0.959) поэтому выбираю лес.
Исследование модели
Как влияют конкретные переменные:
Так как случайный лес -- использую feature_importances_
Выбираю переменную wifi, LegRoom так как для данной модели они наиболее важные, чаще всего встречаются, разделение более значимо и больше разделений по feature_importances_. Также по feature_importances_ важной переменной был возраст(age), но по Permutation Importance он не показал значимости. ( + также infServ показал значимость в обеих) И мне захотелось рассмотреть переменную easyBooking.
"wifi" :
Согласно модели, предсказание резко увеличивается при оценке wifi меньше "1" или больше "4". Также заметно небольшое увеличение качества предсказания больше "3".
"easyBooking" :
Согласно графику предсказание модели увеличивается ясно при оценке больше 4, то есть при "5". Небольшое увеличение заметно при оценка "4".
"LegRoom" :
Согласно графику у модели явное улучшение предсказания при оценке меньше "1" ( то есть "0"), далее улучшения предсказания практически не наблюдается.
Что влияет на результат конкретного примера:
График важности признаков для каждого класса:
Наиболее значимым признаком - параметром оказался вайфай, легкость бронировани. Оценка вайфая имеет среднее влияние на величину выходных данных модели более 0.12.
График зависимости как изменяется wifi при изменении infServ:
График показывает влияние, которое переменные оказывают на прогнозируемый результат. По графику видно, что связь между целью среди довольных и переменными не является линейной, а скорее она более сложная. При оценках после 3 (включительно), то есть 3, 4, 5 - связь похожа на линейную и положительную, а от 1 до 3 она более монотонна с возможными выбросами(?).
График зависимости как изменяется wifi при изменении age:
На графике можно заметить, что в данной модели связь между целью среди довольных и переменными не является линейной, а скорее она более сложная. После 67 лет наблюдается положительная тенденция, а с 20 до 60 лет связь сложная и более монотонная.
Другие графики зависимости:
Анализируя графики можно сделать вывод, что при взаимосвязи foodDrink и easyBooking наиболее высокое значение shap-value наблюдается прим foodDrink = "3", при foodDrink = "3","4" или "5" очевидно увеличение shap-value с увеличением значения easyBooking, что в свою очередь, означает, что удаление этого признака означает меньшую важность признака. Обратную картину можно наблюдать при анализе графика LegRoom и onlineBoar - небольшое значение shap-value(отрицательное) для onlineBoar при её наименьших оценках - "1","2" или "3". Также практически на всех графиках наблюдаются выбросы. Делать выводы о важности тех или иных признаков в модели сложно, так как shap-values зависят не только от модели, но и от распределения данных, при этом даже признаки, которые никак не используются моделью, могут иметь ненулевые shap-values.
Для случая "0" :
Можно заметить, что вайфай = "1" снижает вероятность. Такой же тренд можно заметить при оценке easyBooking или onlineBoar или LegRoom "0". Увеличение можно заметить на 7 параметрах. Но не большое, меньше 0.01. Среднее прогнозируемое значение 0.108, а минимальное = 0.
SHAP-значения для предсказания 1 (довольный) для примера i
Для случая "15" :
При значении оценка вайфая в "3" снижает прогнозируемую вероятность того, что этот человек будет доволен. Такой же тренд можно заметить если бы оценка easyBooking или LegRoom также была равна "3". Более явное улучш ение предсказания можно заметить при расстоянии полёта в 236 км. Среднее прогнозируемое значение 0.108, минимальное 0.026
Для случая "120" :
Тут уже интереснее. Среднее прогнозируемое значение также 0.108(как и будет везде), минимальное 0.105. При значении оценка вайфая в "3" снижает прогнозируемую вероятность того, что этот человек будет доволен на -0.06. В отличие от прошлого примера для №15 при easyBooking в "3" предсказание увеличивается +0.03, такое же увеличение предсказания можно заметить при оценке onlineBoar "0". В целом 8 значений уменьшают предсказание, а 11 увеличивают.