Практические уроки

Сквозной проект машинного обучения: отток клиентов телекоммуникационных компаний

Анализ телекоммуникационных данных IBM (набор данных Kaggle)

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

В этой статье мы создаем модель для прогнозирования вероятности оттока клиента путем анализа его характеристик: (1) демографическая информация, (2) информация об учетной записи и (3) информация об услугах. Цель состоит в том, чтобы получить решение, основанное на данных, которое позволит нам снизить уровень оттока и, как следствие, повысить удовлетворенность клиентов и доход корпорации.

Набор данных

Набор данных, используемый в этой статье, доступен в Kaggle (CC BY-NC-ND) исодержит девятнадцать столбцов (независимых переменные), которые указывают характеристики клиентов вымышленной телекоммуникационной корпорации. Столбец Churn (переменная ответа) показывает, ушел ли клиент в течение последнего месяца или нет. В класс No входят клиенты, не ушедшие из компании в прошлом месяце, а в класс Yes входят клиенты, принявшие решение о прекращении отношений с компанией. Цель анализа — получить связь между характеристиками клиента и оттоком.



Оригинальные данные IBM можно найти по следующей ссылке:



Набор данных, доступный в Kaggle, представляет собой адаптацию исходных данных IBM.

Этапы проекта

Проект состоит из следующих разделов:

  1. Чтение данных
  2. Исследовательский анализ данных и очистка данных
  3. Визуализация данных
  4. Важность функции
  5. Разработка функций
  6. Установка базового уровня
  7. Разделение данных на наборы для обучения и тестирования
  8. Оценка нескольких алгоритмов
  9. Выбран алгоритм: усиление градиента
  10. Настройка гиперпараметров
  11. Производительность модели
  12. Подведение итогов — Резюме

1. Чтение данных

Первый шаг анализа состоит из чтения и сохранения данных во фрейме данных Pandas с использованием функции pandas.read_csv.

Как показано выше, набор данных содержит 19 независимых переменных, которые можно разделить на 3 группы:

(1) Демографическая информация

  • gender: Является ли клиент женщиной или мужчиной (Female, Male).
  • SeniorCitizen: Является ли клиент пожилым гражданином или нет ( 0, 1).
  • Partner: есть ли у клиента партнер или нет (Yes, No).
  • Dependents: есть ли у клиента иждивенцы или нет (Yes, No).

(2) Информация об учетной записи клиента

  • tenure: количество месяцев, в течение которых клиент оставался в компании (несколько различных числовых значений).
  • Contract: указывает текущий тип контракта клиента (Month-to-Month, One year, Two year).
  • PaperlessBilling: Есть ли у клиента безбумажный биллинг или нет (Yes, No).
  • PaymentMethod: способ оплаты клиента (Electronic check, Mailed check, Bank transfer (automatic), Credit Card (automatic)).
  • MontlyCharges: Сумма, взимаемая с клиента ежемесячно (несколько разных числовых значений).
  • TotalCharges: Общая сумма, выставленная клиенту (несколько разных числовых значений).

(3) Информация об услугах

  • PhoneService: Есть ли у клиента телефонная связь или нет (Yes, No).
  • MultipleLines: есть ли у клиента несколько линий или нет (No phone service, No, Yes).
  • InternetServices: Подключен ли клиент к интернет-сервису компании (DSL, Fiber optic, No)
  • OnlineSecurity: есть ли у клиента сетевая безопасность или нет (No internet service, No, Yes).
  • OnlineBackup: есть ли у клиента резервная копия онлайн или нет (No internet service, No, Yes).
  • DeviceProtection: есть ли у клиента защита устройства или нет (No internet service, No, Yes).
  • TechSupport: Есть ли у клиента техподдержка или нет (No internet service, No, Yes).
  • StreamingTV: Есть ли у клиента потоковое ТВ или нет (No internet service, No, Yes).
  • StreamingMovies: Есть ли у клиента потоковое видео или нет (No internet service, No, Yes).

2. Исследовательский анализ данных и очистка данных

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

Отсутствующие значения и типы данных

В начале EDA мы хотим знать как можно больше информации о данных, вот тогда и пригодится метод pandas.DataFrame.info. Этот метод печатает краткую сводку фрейма данных, включая имена столбцов и их типы данных, количество ненулевых значений и объем памяти, используемый фреймом данных.

Как показано выше, набор данных содержит 7043 наблюдения и 21 столбец. По-видимому, в наборе данных нет нулевых значений; однако мы видим, что столбец TotalCharges был ошибочно определен как объект. В этом столбце представлена ​​общая сумма, взимаемая с клиента, и, следовательно, это числовая переменная. Для дальнейшего анализа нам нужно преобразовать этот столбец в числовой тип данных. Для этого мы можем использовать функцию pd.to_numeric. По умолчанию эта функция вызывает исключение, когда видит нечисловые данные; однако мы можем использовать аргумент errors='coerce', чтобы пропустить эти случаи и заменить их на NaN.

Теперь мы можем заметить, что в столбце TotalCharges пропущено 11 значений.

Срок действия этих наблюдений также равен 0, хотя MontlyCharges для этих записей не является нулевым. Эта информация оказалась противоречивой, и поэтому мы решили удалить эти наблюдения из набора данных.

Удалить столбец идентификатора клиента

Столбец customerID бесполезен, чтобы объяснить, не уйдет ли клиент. Поэтому мы удаляем этот столбец из набора данных.

Номиналы способов оплаты

Как показано ниже, некоторые номиналы способов оплаты содержат в скобках слово «автоматический». Эти номиналы слишком длинные, чтобы их можно было использовать в качестве галочек в дальнейших визуализациях. Поэтому убираем это уточнение в скобках из записей столбца PaymentMethod.

3. Визуализация данных

В этом разделе мы анализируем данные с помощью визуализации.

Переменная ответа

На следующей гистограмме показан процент наблюдений, соответствующих каждому классу переменной ответа: no и yes. Как показано ниже, это несбалансированный набор данных, поскольку оба класса неравномерно распределены между всеми наблюдениями, составляя no класс большинства (73,42%). При моделировании этот дисбаланс приведет к большому количеству ложноотрицательных результатов, как мы увидим позже.

В этой статье мы собираемся использовать нормализованные гистограммы с накоплением для анализа влияния каждой независимой категориальной переменной на результат.

На нормализованном графике с накоплением каждый столбец имеет одинаковую высоту, поэтому он бесполезен для сравнения общих чисел; однако он идеально подходит для сравнения того, как переменная отклика меняется во всех группах независимой переменной.

С другой стороны, мы используем гистограммы для оценки влияния каждой независимой числовой переменной на результат. Как упоминалось ранее, набор данных несбалансирован; поэтому нам нужно нарисовать функцию плотности вероятности каждого класса (density=True), чтобы иметь возможность правильно сравнивать оба распределения.

Демографическая информация

Следующий код создает гистограмму с накоплением процентов для каждого демографического атрибута (gender, SeniorCitizen, Partner, Dependents), показывающую процент Churn для каждой категории атрибута.

Как показано выше, каждый столбец является категорией независимой переменной и подразделяется, чтобы показать долю каждого класса ответа (No и Yes).

Мы можем сделать следующие выводы, проанализировав демографические атрибуты:

  • Коэффициент оттока пожилых граждан почти вдвое выше, чем молодых граждан.
  • Мы не ожидаем, что пол будет иметь значительную прогностическую силу. Одинаковый процент оттока показан как для мужчин, так и для женщин.
  • Клиенты с партнером уходят меньше, чем клиенты без партнера.

Информация об учетной записи клиента — Категориальные переменные

Как и в случае с демографическими атрибутами, мы оцениваем процентное соотношение Churn для каждой категории атрибутов учетной записи клиента (Contract, PaperlessBilling, PaymentMethod).

Мы можем сделать следующие выводы, проанализировав атрибуты учетной записи клиента:

  • У клиентов с ежемесячными контрактами уровень оттока клиентов выше по сравнению с клиентами с годовыми контрактами.
  • Клиенты, выбравшие электронный чек в качестве способа оплаты, с большей вероятностью покинут компанию.
  • Клиенты, подписавшиеся на безбумажный биллинг, уходят чаще, чем те, кто не подписался.

Информация об учетной записи клиента — числовые переменные

На следующих графиках показано распределение tenure, MontlyCharges, TotalCharges по Churn. Для всех числовых атрибутов распределения обоих классов (No и Yes) различны, что говорит о том, что все атрибуты будут полезны для определения того, уходит ли клиент.

Мы можем сделать следующие выводы, проанализировав приведенные выше гистограммы:

  • Коэффициент оттока, как правило, выше, когда ежемесячные платежи высоки.
  • Новые клиенты (с небольшим постоянным сроком) с большей вероятностью уйдут.
  • Клиенты с высокими общими расходами с меньшей вероятностью покинут компанию.

Информация об услугах

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

Мы можем сделать следующие выводы, оценив атрибуты услуг:

  • Мы не ожидаем, что атрибуты телефона(PhoneService и MultipleLines) будут иметь значительную прогностическую силу. Процент оттока для всех классов в обеих независимых переменных почти одинаков.
  • Клиенты с онлайн-безопасностью теряют меньше клиентов, чем без нее.
  • Клиенты без технической поддержки уходят чаще, чем те, у кого есть техническая поддержка.

Глядя на графики выше, мы можем определить наиболее релевантные атрибуты для обнаружения оттока. Мы ожидаем, что эти атрибуты будут дискриминационными в наших будущих моделях.

4. Важность функции

Взаимная информация - анализ линейных и нелинейных отношений

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

Библиотека Scikit-Learn реализовала взаимную информацию в пакете metrics. Следующий код вычисляет оценку взаимной информации между каждой категориальной переменной набора данных и переменной Churn.

Взаимная информация позволяет нам не только лучше понимать наши данные, но и определять переменные-предикторы, которые полностью независимы от цели. Как показано выше, gender, PhoneService и MultipleLines имеют показатель взаимной информации, действительно близкий к 0, что означает, что эти переменные не имеют сильной связи с целью. Эта информация соответствует выводам, которые мы сделали ранее, визуализируя данные. На следующих этапах мы должны рассмотреть возможность удаления этих переменных из набора данных перед обучением, поскольку они не предоставляют полезной информации для прогнозирования результата.

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

5. Разработка функций

Разработка признаков — это процесс извлечения признаков из данных и преобразования их в формат, подходящий для модели машинного обучения. В этом проекте нам нужно преобразовать как числовые, так и категориальные переменные. Большинству алгоритмов машинного обучения требуются числовые значения; поэтому все категориальные атрибуты, доступные в наборе данных, должны быть закодированы в числовые метки перед обучением модели. Кроме того, нам нужно преобразовать числовые столбцы в общую шкалу. Это предотвратит доминирование в процессе обучения столбцов с большими значениями. Методы, реализованные в этом проекте, более подробно описаны ниже. Все преобразования осуществляются только с помощью Pandas; однако мы также предоставляем альтернативную реализацию с использованием Scikit-Learn. Как видите, одну и ту же проблему можно решить несколькими способами 😃.

Без модификации

Столбец SeniorCitizen уже является двоичным столбцом и не должен изменяться.

Кодировка этикетки

Кодирование меток используется для замены категорийных значений числовыми значениями. Эта кодировка заменяет каждую категорию числовым ярлыком. В этом проекте мы используем кодирование меток со следующими двоичными переменными: (1) gender, (2) Partner, (3) Dependents, (4) PaperlessBilling, (5) PhoneService и (6) Churn .

Горячее кодирование

Горячее кодирование создаетновый двоичный столбец для каждого уровня категориальной переменной. Новый столбец содержит нули и единицы, указывающие на отсутствие или наличие категории в данных. В этом проекте мы применяем однократное кодирование к следующим категориальным переменным: (1) Contract, (2) PaymentMethod, (3) MultipleLines, (4) InternetServices, (5) OnlineSecurity, (6) OnlineBackup, (7) DeviceProtection , (8) TechSupport, (9) StreamingTV и (10) StreamingMovies.

Основным недостатком этого кодирования является значительное увеличение размерности набора данных (проклятие размерности); поэтому этого метода следует избегать, если категориальный столбец имеет большое количество уникальных значений.

Нормализация

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

В статистике существует несколько методов нормализации. В этом проекте мы будем использовать метод min-max для масштабирования числовых столбцов (tenure, MontlyCharges и TotalCharges) до общего масштаба. Минимальный-максимальный подход (часто называемый нормализацией) изменяет масштаб функции до фиксированного диапазона [0,1] путем вычитания минимального значения признака и последующего деления на диапазон.

6. Установка базового уровня

В машинном обучении мы часто используем простой классификатор, называемый базовым уровнем, для оценки производительности модели. В этой задаче классификации количество клиентов, которые не ушли (наиболее частый класс), можно использовать в качестве основы для оценки качества созданных моделей. Эти модели должны превосходить базовые возможности, чтобы их можно было учитывать для будущих прогнозов.

7. Разделение данных на наборы для обучения и тестирования

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

Сначала мы создаем переменную X для хранения независимых атрибутов набора данных. Кроме того, мы создаем переменную y для хранения только целевой переменной (Churn).

Затем мы можем использовать функцию train_test_split из пакета sklearn.model_selection для создания обучающего и тестового наборов.

8. Оценка нескольких алгоритмов

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

В этом проекте мы сравниваем 6 разных алгоритмов, все они уже реализованы в Scikit-Learn.

  • Фиктивный классификатор (базовый уровень)
  • K ближайших соседей
  • Логистическая регрессия
  • Машины опорных векторов
  • Случайный лес
  • Усиление градиента

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

Важно помнить, что мы обучили все алгоритмы с использованием гиперпараметров по умолчанию. Точность многих алгоритмов машинного обучения очень чувствительна к гиперпараметрам, выбранным для обучения модели. Более глубокий анализ будет включать оценку более широкого диапазона гиперпараметров (не только значений по умолчанию) перед выбором модели (или моделей) для настройки гиперпараметров. Тем не менее, это выходит за рамки данной статьи. В этом примере мы будем дополнительно оценивать только модель, которая обеспечивает более высокую точность, используя гиперпараметры по умолчанию. Как показано выше, это соответствует модели повышения градиента, которая показывает точность почти 80 %.

9. Выбранный алгоритм: повышение градиента

Повышение градиента — это очень популярный метод ансамбля машинного обучения, основанный на последовательном обучении нескольких моделей для получения прогнозов. В Gradient Boosting сначала вы создаете модель, используя случайную выборку ваших исходных данных. После подгонки модели вы делаете прогнозы и вычисляете невязки своей модели. Остатки — это разница между фактическими значениями и прогнозами модели. Затем вы обучаете новое дерево на основе остатков предыдущего дерева, снова вычисляя остатки этой новой модели. Мы повторяем этот процесс до тех пор, пока не достигнем порога (остаток, близкий к 0), что означает, что существует очень небольшая разница между фактическими и прогнозируемыми значениями. Наконец, вы берете сумму всех прогнозов модели (прогноз данных и прогноз ошибки), чтобы сделать окончательный прогноз.

Мы можем легко создать классификатор повышения градиента с помощью Scikit-Learn, используя класс GradientBoostingClassifier из модуля sklearn.ensemble. После создания модели нам нужно обучить ее (используя метод .fit) и проверить ее производительность, сравнив прогнозы (метод .predict) с фактические значения класса, как вы можете видеть в приведенном выше коде.

Как показано в документации Scikit-Learn (ссылка ниже), GradientBoostingClassifier имеет несколько гиперпараметров; некоторые из них перечислены ниже:

  • learning_rate: вклад каждого дерева в окончательный прогноз.
  • n_estimators: количество деревьев решений для выполнения (этапы повышения).
  • max_depth: максимальная глубина отдельных оценок регрессии.
  • max_features: количество функций, которые следует учитывать при поиске наилучшего разделения.
  • min_samples_split: минимальное количество выборок, необходимое для разделения внутреннего узла.


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

10. Настройка гиперпараметров

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

Для настройки гиперпараметров нам нужно снова разделить обучающие данные на набор для обучения и набор для тестирования гиперпараметров (часто называемый проверочным набором). Очень часто используется k-fold перекрестная проверка для настройки гиперпараметров. Обучающий набор снова делится на k выборок одинакового размера, 1 выборка используется для тестирования, а оставшиеся k-1 выборки используются для обучения модели, повторяя процесс k раз. Затем k показателей оценки (в данном случае точность) усредняются, чтобы получить единую оценку.

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

Существует несколько методов поиска лучших гиперпараметров для модели. Наиболее популярными методами являются (1) поиск по сетке, (2) случайный поиск и (3) байесовская оптимизация. Поиск по сетке проверяет все комбинации гиперпараметров и выбирает наиболее эффективную. Это очень трудоемкий метод, особенно когда количество гиперпараметров и значений, которые нужно попробовать, очень велико.

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

Мы можем реализовать случайный поиск в Scikit-learn, используя класс RandomSearchCV из пакета sklearn.model_selection.

Прежде всего, мы указываем сетку значений гиперпараметров с помощью словаря (grid_parameters), где ключи представляют гиперпараметры и значения — это набор параметров, которые мы хотим оценить. Затем мы определяем объект RandomizedSearchCV для пробы различных случайных комбинаций из этой сетки. Количество выбранных комбинаций гиперпараметров определяется параметром n_iter. Естественно, увеличение n_iter в большинстве случаев приведет к более точным результатам, поскольку выбирается больше комбинаций; однако во многих случаях улучшение производительности не будет значительным.

После подбора объекта сетки мы можем получить наилучшие гиперпараметры, используя best_params_attribute. Как вы могли видеть выше, лучшими гиперпараметрами являются: {‘n_estimators’: 90, ‘min_samples_split’: 3, ‘max_features’: ‘log2’, ‘max_depth’: 3}.

11. Производительность модели

Последним шагом процесса машинного обучения является проверка производительности модели (лучшие гиперпараметры ) с использованием матрицы путаницы и некоторых показателей оценки.

Матрица путаницы

Матрица путаницы, также известная как матрица ошибок, используется для оценки производительности модели машинного обучения путем изучения количества правильно и неправильно классифицированных наблюдений. Каждый столбец матрицы содержит предсказанные классы, а каждая строка представляет фактические классы или наоборот. В идеальной классификации матрица путаницы будет состоять из нулей, кроме диагонали. Все элементы за пределами главной диагонали представляют собой ошибочные классификации. Важно помнить, что матрица путаницы позволяет нам наблюдать закономерности неправильной классификации (какие классы и в какой степени они были классифицированы неправильно).

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

  • TP (True Positive): количество пациентов с проблемами позвоночника, которые правильно классифицированы как больные.
  • TN (True Negative): количество пациентов без патологий, которые правильно классифицированы как здоровые.
  • FP (ложноположительный результат): количество здоровых пациентов, ошибочно классифицированных как больные.
  • FN (False Negative): количество пациентов с заболеваниями позвоночника, ошибочно классифицированных как здоровые.

Теперь, когда модель обучена, пришло время оценить ее производительность с помощью тестового набора. Сначала мы используем предыдущую модель (классификатор повышения градиента с лучшими гиперпараметрами), чтобы предсказать метки классов тестовых данных. (методом predict). Затем мы строим матрицу путаницы, используя функцию confusion_matrix из пакета sklearn.metrics, чтобы проверить, какие наблюдения были правильно классифицированы. Результатом является массив NumPy, в котором строки представляют истинные значения, а столбцы — предсказанные классы.

Как показано выше, 1402 наблюдения данных тестирования были правильно классифицированы моделью (1154 истинно отрицательных и 248 истинно положительных). Наоборот, мы можем наблюдать 356 ошибочных классификаций (156 ложноположительных и 200 ложноотрицательных).

Метрики оценки

Оценка качества модели является фундаментальной частью процесса машинного обучения. Наиболее часто используемые показатели оценки эффективности рассчитываются на основе элементов матрицы путаницы.

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

  • Чувствительность: представляет долю положительных образцов (больных пациентов), которые идентифицированы как таковые.

  • Специфичность. Представляет собой долю отрицательных образцов (здоровых пациентов), которые идентифицированы как таковые.

  • Точность. Представляет собой долю положительных прогнозов, которые на самом деле верны.

Мы можем рассчитать метрики оценки вручную, используя числа матрицы путаницы. Кроме того, в Scikit-learn уже реализована функция classification_report, предоставляющая сводку ключевых показателей оценки. Отчет о классификации содержит точность, чувствительность, показатель f1 и поддержку (количество выборок), достигнутые для каждого класса.

Как показано выше, мы получаем чувствительность 0,55 (248/(200+248)) и специфичность 0,88 (1154/(1154+156)). Полученная модель более точно предсказывает клиентов, которые не уходят. Это совсем не должно нас удивлять, поскольку классификаторы с повышением градиента обычно склоняются к классам с большим количеством наблюдений.

Как вы могли заметить, предыдущее резюме не содержит точности классификации. Однако это можно легко вычислить с помощью функции accuracy_score из модуля metrics.

Как вы можете заметить, настройка гиперпараметров едва повысила точность модели.

12. Делаем выводы — Резюме

В этом посте мы рассмотрели полный комплексный проект машинного обучения с использованием набора данных Telco client Churn. Мы начали с очистки данных и их анализа с визуализацией. Затем, чтобы иметь возможность построить модель машинного обучения, мы преобразовали категориальные данные в числовые переменные (разработка признаков). После преобразования данных мы попробовали 6 различных алгоритмов машинного обучения с параметрами по умолчанию. Наконец, мы настроили гиперпараметры Gradient Boosting Classifier (лучшая модель производительности) для оптимизации модели, получив точность почти 80 % (почти на 6 % выше, чем базовый уровень). ).

Важно подчеркнуть, что точные шаги задачи машинного обучения зависят от проекта. Хотя в статье мы следовали линейному процессу, проекты машинного обучения, как правило, являются итеративными, а не линейными процессами, когда предыдущие этапы часто возвращаются по мере того, как мы узнаем больше о проблеме, которую пытаемся решить.

Аманда Иглесиас