Основной вопрос
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"), далее улучшения предсказания практически не наблюдается.