Добавить в корзинуПозвонить
Найти в Дзене
Николай Лазарев

ML Рекомендация тарифов оператора связи

Описание проекта Оператор мобильной связи выяснил: многие клиенты пользуются архивными тарифами. Они хотят построить систему, способную проанализировать поведение клиентов и предложить пользователям новый тариф: «Смарт» или «Ультра». В нашем распоряжении данные о поведении клиентов, которые уже перешли на новые тарифы. Нужно построить модель для задачи классификации, которая выберет подходящий тариф. Предобработка данных не понадобится — сделана ранее в предыдущем проекте. Необходимо построить модель с максимально большим значением accuracy, и довести долю правильных ответов по крайней мере до 0.75. Проверить accuracy на тестовой выборке. Технический стек проекта pandas, sklearn, matplotlib, seaborn Описание данных Каждый объект в наборе данных — это информация о поведении одного пользователя за месяц. Известно: • сalls — количество звонков,
• minutes — суммарная длительность звонков в минутах,
• messages — количество sms-сообщений,
• mb_used — израсходованный интернет-трафик в Мб,
Оглавление

Описание проекта

Оператор мобильной связи выяснил: многие клиенты пользуются архивными тарифами. Они хотят построить систему, способную проанализировать поведение клиентов и предложить пользователям новый тариф: «Смарт» или «Ультра».

В нашем распоряжении данные о поведении клиентов, которые уже перешли на новые тарифы. Нужно построить модель для задачи классификации, которая выберет подходящий тариф. Предобработка данных не понадобится — сделана ранее в предыдущем проекте.

Необходимо построить модель с максимально большим значением accuracy, и довести долю правильных ответов по крайней мере до 0.75. Проверить accuracy на тестовой выборке.

Технический стек проекта

pandas, sklearn, matplotlib, seaborn

Описание данных

Каждый объект в наборе данных — это информация о поведении одного пользователя за месяц. Известно:

• сalls — количество звонков,
• minutes — суммарная длительность звонков в минутах,
• messages — количество sms-сообщений,
• mb_used — израсходованный интернет-трафик в Мб,
• is_ultra — каким тарифом пользовался в течение месяца («Ультра» — 1, «Смарт» — 0).

Общий вывод

По результатам данного проекта удалось построить прогнозную модель с точностью accuracy = 0.82

Целевой признак был присвоен переменной target Данные были разбиты на три выборки train, valid, test. Разбивка проведена с учетом стратификации - случайного выбора объектов.

Всего в работе были применены и исследованы три варианта моделирования: решающее дерево, случайный лес и логистическая регрессия. Данные модели были выбраны как наиболее характерные для прогноза бинарной классификации при обучении с учителем.

Логистическая регрессия была рассчитана в единственном варианте и показала удовлетворительный результат точности accuracy = 0.73

Для моделей на дереве решений были проанализированы пятнадцать вариантов глубины дерева от 1 до 15. Наилучший результат на валидационной выборке показала модель с глубиной дерева = 10.

На валидационных данных модель дерева решений с указанными параметрами показала точность accuracy = 0.788, а также параметр f1 = 0.589

Для моделей случайного леса были проанализированы 75 вариантов. С глубиной деревьев от 1 до 15, и количеством девьев от 10 до 50 с шагом 10. Наилучший результат на валидационной выборке показала модель с 20-тью деревьями глубиной 9, accuracy = 0.80697, а также параметр f1 = 0.590

На тестовых данных модель случайного леса с указанными параметрами показала точность accuracy = 0.8134, а также параметр f1 = 0.641. Таже удалось улучшить показатели путем повторного обучения модели на данных совместной выборки train+valid. Точность accuracy = 0.8208 Это наилучший результат в данной работе.

Далее лучшие модели были проверены на адекватность с помощью метода DummyClassifier score = 0.693

Ссылка на мой код в github