Дорогой друг!

Специально для тебя, есть готовое решение в формате ."IPYNB" (.ipynb), но оно платное.

При получении вами критического (красного) замечания по проекту, проведу правки.

Решение сдесь: Добавь в корзину - Перейди в корзину - Укажи Email - Оплатить по СБП - СБП (приложение вашего банка) - Получи решение на Email

Не можешь оплатить, тогда через "Помощь" запроси другую систему оплаты (Webmoney, Alipay, Telegram (USDT, TON)).

Проектная работа

Телеком

Поздравляем! Вы прошли курс. Самое время проверить знания и решить новую задачу машинного обучения. Выполнять работу будете самостоятельно.

Когда закончите, отправьте её на проверку ревьюеру: он пришлёт комментарии в течение суток. После этого нужно доработать проект и пройти повторную проверку.

Скорее всего, вы будете дорабатывать кейс по комментариям ещё несколько раз. Это нормально.

Проект завершён, когда ревьюер одобрит все доработки.

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

Оператор связи «ТелеДом» хочет бороться с оттоком клиентов. Для этого его сотрудники начнут предлагать промокоды и специальные условия всем, кто планирует отказаться от услуг связи. Чтобы заранее находить таких пользователей, «ТелеДому» нужна модель, которая будет предсказывать, разорвёт ли абонент договор. Команда оператора собрала персональные данные о некоторых клиентах, информацию об их тарифах и услугах. Ваша задача — обучить на этих данных модель для прогноза оттока клиентов.


Описание услуг
Оператор предоставляет два основных типа услуг:
Стационарную телефонную связь. Телефон можно подключить к нескольким линиям одновременно.
Интернет. Подключение бывает двух типов: через телефонную линию DSL (англ. digital subscriber line — «цифровая абонентская линия») или оптоволоконный кабель (англ. fiber optic).
Также абонентам доступен ряд услуг:
Интернет-безопасность: антивирус (Device Protection) и блокировка опасных сайтов (Online Security);
Выделенная линия технической поддержки (Tech Support);
Облачное хранилище файлов для резервного копирования данных (Online Backup);
Стриминговое телевидение (Streaming TV) и каталог фильмов (Streaming Movies).
За услуги клиенты могут платить ежемесячно или раз в 1–2 года. Доступны различные способы расчёта и возможность получить электронный чек.

Инструкция по выполнению проекта

Шаг 1. Загрузите данные

В начале работы над проектом подключитесь к базе данных в Sqlite. Для этого достаточно иметь доступ к файлу с расширением .db.
Чтобы его загрузить, используйте команду wget в отдельной ячейке Jupiter Notebook:

!wget https://code.s3.yandex.net/data-scientist/ds-plus-final.db 

Этот способ подойдёт для выполнения проекта на платформе Практикума. Если вы планируете работать локально, то можете скачать файл, перейдя по ссылке.
Далее для подключения к базе данных используйте этот код:

import os
import pandas as pd
from sqlalchemy import create_engine

path_to_db = 'ds-plus-final.db'
engine = create_engine(f'sqlite:///{path_to_db}', echo=False) 

При выполнении проекта задайте константу RANDOM_STATE. Её значение будет равно дате начала вашей работы над проектом. Например, если это 1 сентября 2022 года, то RANDOM_STATE = 10922. Используйте эту константу везде, где это необходимо: например при разделении данных на выборки.

Шаг 2. Проведите исследовательский анализ и предобработку данных

Проанализируйте исходные данные. Проверьте:
Все ли таблицы содержат данные.
Соответствует ли количество таблиц условию задачи.
Для каждой таблицы:
  
Проведите исследовательский анализ данных: проверьте наличие пропусков и аномалий, изучите распределение признаков.
Обработайте аномалии с учётом особенностей услуг телекоммуникации.
Объедините таблицы по ID клиента:
  
Каждому клиенту должно соответствовать одно наблюдение. При объединении учитывайте особенности услуг телекоммуникации.
Попробуйте сгенерировать новые признаки, которые могут пригодиться при обучении. Например, рассчитайте длительность контракта абонента.
Выделите в целевую переменную признак EndDate.
Проведите исследовательский анализ данных объединённой таблицы, при необходимости заполните пропуски и визуализируйте распределение каждого признака.
Визуализируйте соотношение ушедших и оставшихся клиентов для каждого признака.
Проведите корреляционный анализ.
Подготовьте данные для обучения:
  
Выберите признаки, которые будете использовать для обучения, учитывайте особенности данных и выбранных моделей. Перед вами не стоит задача временных рядов, поэтому не стоит использовать даты как входные признаки модели.
Если вы сгенерируете новый признак «Длительность контракта абонента», то не используйте его одновременно с любыми другими производными признака BeginDate — например с годом заключения договора. Это приведёт к утечке целевого признака.
Разделите данные на тренировочную и тестовую выборки (test_size = 0.25).
Подготовьте выборки для обучения, учитывайте особенности выбранных моделей.

Шаг 3. Обучите модель
Рассмотрите классы моделей:
решающее дерево или случайный лес,
бустинги,
нейронные сети.
Найдите лучшую модель для прогноза оттока клиентов. Оцените её качество метрикой ROC-AUC. Выберите лучшую модель по значению метрики на кросс-валидации.
Подберите значения как минимум двум гиперпараметрам хотя бы для одной модели. Лучше всего использовать методы автоматизированного подбора гиперпараметров: GridSearchCV, RandomizedSearchCV, OptunaSearchCV, Optuna и другие.

Шаг 4. Протестируйте модель и продемонстрируйте её работу
Проверьте качество лучшей модели на тестовой выборке. Значение метрики ROC-AUC должно быть не менее 0.85. Для интерпретируемости модели дополнительно выведите значение accuracy.
Постройте матрицу ошибок лучшей модели. Отобразите полноту и точность модели на графике.
Проанализируйте важность основных входных признаков, влияющих на отток клиентов.
Для одного из важных входных признаков проведите дополнительное исследование:
Покажите график зависимости входного и целевого признаков.

Шаг 5. Сделайте общий вывод по работе
Напишите общие выводы, предложите способы для дальнейшего улучшения модели и дайте бизнес-рекомендации заказчику.

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

Данные хранятся в Sqlite  — СУБД, в которой база данных представлена одним файлом. Она состоит из нескольких таблиц:

  • contract — информация о договорах;
  • personal — персональные данные клиентов;
  • internet — информация об интернет-услугах;
  • phone — информация об услугах телефонии.

Таблица contract
customerID — ID абонента;
BeginDate — дата начала действия договора;
EndDate — дата окончания действия договора;
Type — тип оплаты: раз в год-два или ежемесячно;
PaperlessBilling — электронный расчётный лист;
PaymentMethod — тип платежа;
MonthlyCharges — расходы за месяц;
TotalCharges — общие расходы абонента.

Таблица personal
customerID — ID пользователя;
gender — пол;
SeniorCitizen — является ли абонент пенсионером;
Partner — есть ли у абонента супруг или супруга;
Dependents — есть ли у абонента дети.

Таблица internet
customerID — ID пользователя;
InternetService — тип подключения;
OnlineSecurity — блокировка опасных сайтов;
OnlineBackup — облачное хранилище файлов для резервного копирования данных;
DeviceProtection — антивирус;
TechSupport — выделенная линия технической поддержки;
StreamingTV — стриминговое телевидение;
StreamingMovies — каталог фильмов.

Таблица phone
customerID — ID пользователя;
MultipleLines — подключение телефона к нескольким линиям одновременно.

Информация о договорах актуальна на 1 февраля 2020.

Как будут проверять мой проект?

Мы подготовили критерии оценки проекта, которыми руководствуются ревьюеры. Прежде чем приступить к решению кейса, внимательно их изучите.

На что обращают внимание ревьюеры, проверяя проект:

  • Как вы готовите данные к обучению?
  • Выполнили все шаги по инструкции?
  • Все ли условия бизнеса учтены?
  • Какие выводы об исследовании задачи делаете?
  • Корректно ли выполнена процедура Bootstrap?
  • Предложен ли регион для разработки скважин? Обоснован ли выбор?
  • Не дублируете ли код?
  • Следите ли за структурой проекта и поддерживаете ли аккуратность кода?

Всё, что вам нужно знать, есть в шпаргалках и конспектах прошлых тем.

Успеха!

Дорогой друг!

Я внимательно наблюдал за твоими действиями на сайте через вебвизор.

Если ты добрался до этой страницы, то скорее всего ты проходишь платное обучение на курсах.

Благодаря моим стараниям, целую главу ты можешь закрыть за сутки, а то и быстрее.

Думаю, что сэкономленное время, ты потратил с пользой, в то время как я сидел и пыхтел над заданиями.

Лучшая благодарность от тебя, это пожертвования на мой IT - проект.

Жертвуй столько, сколько не жалко, но и не скупись, чтобы было не стыдно.