Образовательная компания X Education продает онлайн-курсы профессионалам отрасли. В любой день многие профессионалы, заинтересованные в курсах, заходят на их веб-сайт и просматривают курсы.

Компания продает свои курсы на нескольких веб-сайтах и ​​в поисковых системах, таких как Google. Зайдя на сайт, эти люди могут просматривать курсы или заполнять форму для курса или смотреть видео. Когда эти люди заполняют форму, указывая свой адрес электронной почты или номер телефона, они классифицируются как ведущие. Более того, компания также получает потенциальных клиентов через прошлых рефералов. Как только эти лиды будут получены, сотрудники отдела продаж начинают звонить, писать электронные письма и т. Д. В ходе этого процесса некоторые лиды конвертируются, а большинство - нет. Типичный коэффициент конверсии лидов в X education составляет около 30%.

Теперь, хотя у X Education много лидов, коэффициент конверсии у него очень низкий. Например, если, скажем, они получают 100 потенциальных клиентов в день, только около 30 из них конвертируются. Чтобы сделать этот процесс более эффективным, компания хочет определить наиболее потенциальных клиентов, также известных как «горячие лиды». Если они успешно идентифицируют этот набор лидов, коэффициент конверсии лидов должен вырасти, так как отдел продаж теперь будет больше сосредотачиваться на общении с потенциальными лидами, а не на звонках всем.

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

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

Библиотека Пикарет

PyCaret - это библиотека машинного обучения с открытым исходным кодом на Python с низким кодом, которая позволяет перейти от подготовки данных к развертыванию модели за считанные минуты в выбранной вами среде записной книжки.

Для более подробной информации посетите их страницу https://pycaret.org/.

Содержание

Переменные Описание

  • Prospect ID - уникальный идентификатор, по которому идентифицируется покупатель.
  • Номер лида - номер интереса, присваиваемый каждому закупленному лиду.
  • Происхождение лида - идентификатор источника, по которому клиент был идентифицирован как лид. Включает API, отправку целевой страницы и т. Д.
  • Источник лида - источник лида. Включает Google, обычный поиск, чат Olark и т. Д.
  • Не отправлять по электронной почте - индикаторная переменная, выбираемая клиентом, в которой он выбирает, хотят ли они получать по электронной почте информацию о курсе или нет.
  • Не звонить - индикаторная переменная, выбираемая клиентом, в которой он выбирает, хотят ли они, чтобы им звонили по поводу курса или нет.
  • Преобразовано - целевая переменная. Указывает, успешно ли преобразован интерес.
  • Всего посещений - общее количество посещений, совершенных клиентом на веб-сайте.
  • Общее время, проведенное на веб-сайте - общее время, проведенное клиентом на веб-сайте.
  • Просмотры страниц за посещение - среднее количество страниц на веб-сайте, просмотренных во время посещений.
  • Последнее действие - последнее действие, выполненное клиентом. Включает открытое электронное письмо, беседу в чате Olark и т. Д.
  • Страна - страна заказчика.
  • Специализация - отрасль, в которой заказчик работал раньше. Включает уровень «Выбрать специализацию», что означает, что клиент не выбрал эту опцию при заполнении формы.
  • Как вы узнали о X Education - источник, из которого заказчик узнал о X Education.
  • Ваша текущая профессия - указывает, является ли клиент студентом, безработным или работающим.
  • Что для вас наиболее важно при выборе этого курса Вариант, выбранный клиентом, с указанием его основного девиза, стоящего за прохождением этого курса.
  • Поиск - указывает, видел ли покупатель рекламу в любом из перечисленных элементов.
  • Журнал
  • Газетная статья
  • X Образовательные форумы
  • Газета
  • Цифровая реклама
  • По рекомендациям - указывает, пришел ли клиент по рекомендациям.
  • Получать больше обновлений о наших курсах - указывает, решил ли клиент получать больше обновлений о курсах.
  • Теги - теги, присвоенные клиентам, указывающие на текущий статус лида.
  • Качество лида - указывает качество лида на основе данных и интуиции сотрудника, который был назначен лиду.
  • Сообщите мне о содержимом цепочки поставок - указывает, хочет ли клиент обновлять содержимое цепочки поставок.
  • Получать обновления контента DM - указывает, хочет ли клиент обновлять контент DM.
  • Профиль лида - уровень интереса, назначаемый каждому клиенту в зависимости от его профиля.
  • Город - город заказчика.
  • Индекс асимметричной активности - индекс и оценка, присваиваемая каждому клиенту в зависимости от его активности и профиля.
  • Индекс асимметричного профиля
  • Оценка асимметричной активности
  • Оценка асимметричного профиля
  • Я согласен оплатить сумму чеком - указывает, согласился ли клиент оплатить сумму чеком.
  • Бесплатная копия Mastering The Interview - указывает, хочет ли клиент бесплатную копию Mastering The Interview или нет.
  • Последнее заметное действие - последнее заметное действие, выполненное учеником.

Благодарности

Пример использования UpGrad

Установка библиотеки Pycaret

!pip install pycaret

Чтение набора данных

dataset=pd.read_csv('/content/Lead_Scoring.csv')
dataset.head()
dataset.shape
(9240, 37)

Набор данных содержит 9240 строк и 37 функций.

Информация о наборе данных

dataset.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9240 entries, 0 to 9239
Data columns (total 37 columns):
 #   Column                                         Non-Null Count  Dtype  
---  ------                                         --------------  -----  
 0   Prospect ID                                    9240 non-null   object 
 1   Lead Number                                    9240 non-null   int64  
 2   Lead Origin                                    9240 non-null   object 
 3   Lead Source                                    9204 non-null   object 
 4   Do Not Email                                   9240 non-null   object 
 5   Do Not Call                                    9240 non-null   object 
 6   Converted                                      9240 non-null   int64  
 7   TotalVisits                                    9103 non-null   float64
 8   Total Time Spent on Website                    9240 non-null   int64  
 9   Page Views Per Visit                           9103 non-null   float64
 10  Last Activity                                  9137 non-null   object 
 11  Country                                        6779 non-null   object 
 12  Specialization                                 7802 non-null   object 
 13  How did you hear about X Education             7033 non-null   object 
 14  What is your current occupation                6550 non-null   object 
 15  What matters most to you in choosing a course  6531 non-null   object 
 16  Search                                         9240 non-null   object 
 17  Magazine                                       9240 non-null   object 
 18  Newspaper Article                              9240 non-null   object 
 19  X Education Forums                             9240 non-null   object 
 20  Newspaper                                      9240 non-null   object 
 21  Digital Advertisement                          9240 non-null   object 
 22  Through Recommendations                        9240 non-null   object
23  Receive More Updates About Our Courses         9240 non-null   object 
 24  Tags                                           5887 non-null   object 
 25  Lead Quality                                   4473 non-null   object 
 26  Update me on Supply Chain Content              9240 non-null   object 
 27  Get updates on DM Content                      9240 non-null   object 
 28  Lead Profile                                   6531 non-null   object 
 29  City                                           7820 non-null   object 
 30  Asymmetrique Activity Index                    5022 non-null   object 
 31  Asymmetrique Profile Index                     5022 non-null   object 
 32  Asymmetrique Activity Score                    5022 non-null   float64
 33  Asymmetrique Profile Score                     5022 non-null   float64
 34  I agree to pay the amount through cheque       9240 non-null   object 
 35  A free copy of Mastering The Interview         9240 non-null   object 
 36  Last Notable Activity                          9240 non-null   object 
dtypes: float64(4), int64(3), object(30)

Предварительная обработка набора данных

Взятие 70% выборочных данных для обучения и оставшихся 30% для тестирования

data = dataset.sample(frac=0.70, random_state=42)
data_unseen = dataset.drop(data.index)
data.reset_index(inplace=True, drop=True)
data_unseen.reset_index(inplace=True, drop=True)
print('Data for Modeling: ' + str(data.shape))

Данные для моделирования: (6468, 37)

print('Unseen Data For Predictions: ' + str(data_unseen.shape))

Невидимые данные для прогнозов: (2772, 37)

Импорт всех классификационных библиотек из Pycaret

from pycaret.classification import *

Инициализация установки

Цель, которую нам нужно предсказать, преобразована.

clf1 = setup(data = data, target = 'Converted', session_id=1)

Подробнее о том, как pycaret настраивает эксперимент с машинным обучением, вы можете узнать по ссылке https://pycaret.org/setup/.

Сравнение результатов разных классификаторов

best_model = compare_models()

Легкий классификатор GBM дает нам лучший результат, двигаясь вперед с классификатором LGBM.

lightgbm = create_model('lightgbm')

Печать гиперпараметров LGBM по умолчанию

print(lightgbm)
LGBMClassifier(boosting_type='gbdt', class_weight=None, colsample_bytree=1.0,
               importance_type='split', learning_rate=0.1, max_depth=-1,
               min_child_samples=20, min_child_weight=0.001, min_split_gain=0.0,
               n_estimators=100, n_jobs=-1, num_leaves=31, objective=None,
               random_state=1, reg_alpha=0.0, reg_lambda=0.0, silent=True,
               subsample=1.0, subsample_for_bin=200000, subsample_freq=0)

Применение настройки гиперпараметров

tuned_lightgbm = tune_model(lightgbm)

Построение кривой roc-auc для lightgbm

plot_model(tuned_lightgbm, plot = 'auc')

График важности функции

plot_model(tuned_lightgbm, plot='feature')

Важность переменной Lead Number самая высокая. Номер лида - это номер, присвоенный каждому предоставленному лиду.

Кривая точного отзыва

plot_model(tuned_lightgbm, plot = 'pr')

Матрица неточностей

plot_model(tuned_lightgbm, plot = 'confusion_matrix')

Ниже приведен код для проверки всех показателей оценки и диаграмм.

evaluate_model(tuned_lightgbm)

Прогнозирование модели

predict_model(tuned_lightgbm)

Проверка модели на невидимых данных

unseen_predictions = predict_model(tuned_lightgbm, data=data_unseen)

После этого шага «Метка» и «Оценка» мы создаем две новые функции.

Проверка точности невидимых данных

from pycaret.utils import check_metric
check_metric(unseen_predictions['Converted'], unseen_predictions['Label'], metric = 'Accuracy')

Точность составляет 0,9455% для невидимых данных.

Сохранение модельного конвейера

save_model(tuned_lightgbm,'./model')
Transformation Pipeline and Model Succesfully Saved
(Pipeline(memory=None,
          steps=[('dtypes',
                  DataTypes_Auto_infer(categorical_features=[],
                                       display_types=True, features_todrop=[],
                                       id_columns=[],
                                       ml_usecase='classification',
                                       numerical_features=[], target='Converted',
                                       time_features=[])),
                 ('imputer',
                  Simple_Imputer(categorical_strategy='not_available',
                                 fill_value_categorical=None,
                                 fill_value_numerical=None,
                                 numeric_st...
                                 boosting_type='gbdt', class_weight=None,
                                 colsample_bytree=1.0, feature_fraction=0.5,
                                 importance_type='split', learning_rate=0.3,
                                 max_depth=-1, min_child_samples=26,
                                 min_child_weight=0.001, min_split_gain=0.8,
                                 n_estimators=230, n_jobs=-1, num_leaves=100,
                                 objective=None, random_state=1, reg_alpha=0.005,
                                 reg_lambda=4, silent=True, subsample=1.0,
                                 subsample_for_bin=200000, subsample_freq=0)]],
          verbose=False), './model.pkl')

saved_final_lightgbm_model = load_model('./model')

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

Результат

Нам удалось достичь точности 94% на тестовой выборке и 0,99 AUC для обоих классов. Эта модель может помочь X Education более эффективно планировать свои бизнес-стратегии и расширять свой рост, уделяя больше внимания функциям, которые придали нам наибольшее значение.

Надеюсь, вам понравился анализ!

Вы можете подписаться на меня в Linkedin, Github и Kaggle.

Ссылка на Github для этого проекта

Https://github.com/ratul442/Capstone-Project-PGP-DSE/blob/main/Lead_Prediction_using_Pycaret_Library%20(1).ipynb

Kaggle Link

Https://www.kaggle.com/ratul6

Ссылка на Linkedin

Https://www.linkedin.com/in/ratul-ghosh-8048a8148/