文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放与转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0
      • 宣布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建和部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 将 ML Pipeline 部署到云端
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 在边缘部署 PyCaret 模型
      • GitHub 是你所需过的最好的 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 实现简单的 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中进行机器学习
      • 使用 PyCaret 在 KNIME 中进行机器学习
      • 使用 PyCaret 在 SQL 中进行机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中进行机器学习
      • 使用 PyCaret 在 Tableau 中进行机器学习
      • 使用 PyCaret 进行多个时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能总结
      • 使用 PyCaret 将 ML 模型交付到 SQL Server
      • 使用 PyCaret 和 Gradio 超越你的机器学习
      • 时间序列 101 - 针对初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建和部署 ML 应用
      • PyCaret 2.3.6 发布了!了解新功能?
    • 📺视频
    • 🛩️备忘单
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 许可
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 驱动
本页内容
  • 使用 PyCaret 预测潜在客户得分(正确方法)
  • 引言
  • 潜在客户管理流程概览
  • 👉潜在客户生成
  • 👉潜在客户资质评估
  • 👉潜在客户转化
  • 👉潜在客户评分到底意味着什么?
  • 让我们通过实际例子开始吧 👇
  • 什么是 PyCaret?
  • 安装 PyCaret
  • 👉数据集
  • 👉探索性数据分析
  • 👉数据准备
  • 👉模型训练与选择
  • 👉模型分析
  • AUC-ROC 图
  • SHAP 值
  • 特征重要性图
  • 混淆矩阵
  • 👉在 PyCaret 中添加自定义评估指标
  • 如何使用模型生成潜在客户得分?
  • 重要链接
  • 更多 PyCaret 相关教程

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 预测潜在客户得分(正确方法)

上一篇使用 PyCaret 预测客户流失下一篇使用 PyCaret 在 Python 中进行 NLP 文本分类

上次更新时间 2 年前

这有帮助吗?

使用 PyCaret 预测潜在客户得分(正确方法)

一步步指导如何使用 PyCaret 构建潜在客户评分模型,并提高营销活动的投资回报率。

使用 PyCaret 预测潜在客户转化(正确方法)— 作者图片

引言

潜在客户是当今许多企业的驱动力。随着订阅制商业模式的进步,特别是在初创领域,将潜在客户转化为付费客户的能力是生存的关键。简单来说,“潜在客户”代表着对购买你的产品/服务感兴趣的潜在客户。

通常当你获取潜在客户时,无论是通过第三方服务还是自己运行营销活动,通常会包含以下信息:

  • 潜在客户的姓名和联系方式

  • 潜在客户属性(人口统计学、社交、客户偏好)

  • 来源(Facebook 广告、网站登录页、第三方等)

  • 在网站上花费的时间、点击次数等

  • 推荐详情等

潜在客户管理流程概览

市场营销和销售部门在潜在客户管理上投入了大量时间、金钱和精力,这是一个涵盖潜在客户生成、资质评估和盈利化三个关键阶段的概念。

👉潜在客户生成

潜在客户生成是激发客户对你的企业产品或服务的兴趣或咨询的过程。生成潜在客户的目的是将兴趣或咨询转化为销售。互联网上有无数第三方公司承诺生成最佳潜在客户。然而,你也可以通过运行营销活动自己生成。潜在客户生成的方法通常属于广告范畴,但也可能包括非付费来源,如有机搜索引擎结果或现有客户的推荐。

👉 潜在客户资质评估

潜在客户资质评估是指确定哪些潜在客户最有可能实际购买的过程。它是销售漏斗不可或缺的一部分,销售漏斗通常会接收大量潜在客户,但只有一小部分能够转化。简单来说,潜在客户资质评估意味着评估并优先排序潜在客户,从而得出转化可能性,这样你的市场营销和销售部门就可以追逐优先排序的潜在客户,而不是数量可能高达数千的所有潜在客户。

👉潜在客户转化

潜在客户转化是将符合条件的潜在客户最终转化为付费客户的阶段。它涵盖了所有激发购买产品或服务欲望并推动潜在客户做出购买决定的营销实践。这是一个盈利或成交阶段,其结果通常决定了整体营销活动的成功与否。

👉 潜在客户评分到底意味着什么?

想象一下,你的团队有很多潜在客户,但资源不足以追逐所有这些客户。无论你是一个拥有大量免费增值用户的产品导向型企业,还是拥有一个优秀的内联潜在客户渠道,或者仅仅是一个优秀的上门销售团队,归根结底,你需要优先安排销售团队的时间,并给予他们“最佳”的潜在客户。

问题是如何做到这一点,从而最大化你的赢单率?

一个简单的方法是分析历史数据,并查看潜在客户转化为销售所基于的属性。例如,在某个特定的国家、城市或邮政编码,潜在客户历史上有 90% 的时间转化为了销售。类似地,你的数据还可以告诉你,在你的网站上花费超过 20 分钟的客户在大多数情况下都会转化为销售。使用这些业务规则,你可以创建一个**潜在客户评分系统**,该系统使用这些业务规则为每个潜在客户附加分数(分数越高越好)。

这种方法的问题在于,业务规则只能覆盖有限的范围。随着业务的扩展,你可以收集的数据类型和多样性将呈指数级增长。在某个时候,手动基于规则的系统将不足够健壮,无法持续增加价值。

机器学习来了

你可以从机器学习的角度来看待**潜在客户评分系统**,你可以根据客户属性、潜在客户来源、推荐和其他可用细节来训练机器学习模型,目标变量将是潜在客户是否转化(是或否)。

如何获取目标变量?大多数 CRM 系统,如 Salesforce、Zoho 或 Microsoft Dynamics,都可以跟踪单个潜在客户及其状态。潜在客户的状态将帮助你创建目标变量。

需要提醒的是,你必须确保训练数据集中不泄露任何信息。例如,你的 CRM 系统可能存储有关潜在客户转化后支付给第三方的推荐费信息,想象一下,如果你在训练数据中使用该信息,技术上就构成了泄露,因为你只会在转化后支付推荐费,这是事后才知道的信息。

让我们通过实际例子开始吧 👇

什么是 PyCaret?

安装 PyCaret

**# install pycaret
**pip install pycaret

👉数据集

**# import libraries**
import pandas as pd
import numpy as np

**# read csv data
**data **= **pd.read_csv('[Leads.csv'](https://raw.githubusercontent.com/srees1988/predict-churn-py/main/customer_churn_data.csv'))
data.head()

👉探索性数据分析

**# check data info
**data.info()

直观来看,在网站上花费的时间、活动得分以及潜在客户来源对于潜在客户转化来说是非常重要的信息。让我们通过视觉方式探索它们之间的关系

请注意,来自“添加表单”的潜在客户很可能转化为销售,无论在网站上花费的时间或得分如何。而通过 API 或网站登录页获得的潜在客户则不同。较高的得分以及在网站上花费的较长时间更可能将潜在客户转化为最终销售。

👉数据准备

**# init setup**
from pycaret.classification import *
s = setup(data, target = 'Converted', ignore_features = ['Prospect ID', 'Lead Number'])

在 PyCaret 中初始化 setup 函数后,它会自动分析数据集并推断所有输入变量的数据类型。如果一切推断正确,你可以按 Enter 键继续。你也可以在 setup 函数中使用 numeric_features 和 categorical_features 参数来强制/覆盖数据类型。

另外,请注意我在 setup 函数中传递了 ignore_features = ['Prospect ID', 'Lead Number'],这样在训练模型时就不会考虑这些特征。这样做的好处是 PyCaret 不会从数据集中删除这些列,它只会在幕后忽略它们进行模型训练。因此,当你在最后生成预测时,无需担心自己将 ID 重新 जोड़回。

👉模型训练与选择

数据准备完成后,让我们使用 compare_models 功能开始训练过程。该函数会训练模型库中所有可用的算法,并使用交叉验证评估多个性能指标。

**# compare all models**
best_model = compare_models(sort='AUC')

基于AUC的最佳模型是Catboost 分类器,其平均 10 折交叉验证 AUC 为0.9864。

**# print best_model parameters**
print(best_model.get_all_params())

**# except for catboost you can do this:**
print(best_model)

👉模型分析

AUC-ROC 图

AUC — ROC 曲线是用于衡量分类问题在各种阈值设置下的性能指标。ROC 是一条概率曲线,AUC 代表可分离程度或衡量标准。它表明模型区分不同类别的能力。AUC 越高,模型预测正类和负类的能力越好。虽然它对于评估和比较不同模型的性能非常有帮助,但不容易将此指标转化为商业价值。

**# AUC Plot**
plot_model(best_model, plot = 'auc')

SHAP 值

与 AUC-ROC 不同,shap 值并不能告诉你模型性能的任何信息,而是解释了给定特征具有某个特定值时与该特征取某个基准值时预测结果的差异。在下图中,y 轴(左侧)显示了模型的所有重要特征,x 轴是相关特征的 Shapley 值,颜色刻度(右侧)是特征的实际值。图表上每个特征处的每个点都代表一个客户潜在客户(来自测试集)— 它们相互重叠。

**# Shapley Values**
interpret_model(best_model)

特征重要性图

特征重要性图是解释模型结果的另一种方式。虽然 Shap 值仅适用于复杂的树形模型,但特征重要性图更常见,可用于不同系列的模型。与 shap 值不同,特征重要性并不能告诉我们该特征对特定类别的影响,它只告诉我们该特征是否重要。

**# Feature Importance
**plot_model(best_model, plot = 'feature')

混淆矩阵

混淆矩阵是评估模型性能的另一种方式。在所有可能的工具中,这也许是最简单的一种。它基本上比较了预测值与实际标签,并将其分为四个象限

  • 真正例 (预测: 转化, 实际: 转化)

  • 真负例 (预测: 未转化, 实际: 未转化)

  • 假正例(**预测:** 转化, 实际: 未转化)

  • 假负例 (预测: 未转化, 实际: 转化)

如果你将所有四个象限相加,它将等于测试集中的客户潜在客户数量 (1667 + 70 + 84 + 952 = 2,773)。

  • 952 个客户(右下象限)是真正例,这些是模型预测将转化且实际转化的潜在客户;

  • 70 个潜在客户是假正例(这可能是你付出努力却会浪费的地方);

  • 84 个潜在客户是假负例,即(错失的机会);以及

  • 1,667 个潜在客户是真负例(无影响)。

    **# 混淆矩阵 **plot_model(best_model, plot = 'confusion_matrix')

到目前为止,我们已经准备好了用于建模的数据(运行 setup 函数时 PyCaret 会自动完成),训练了多个模型以根据 AUC 选择最佳模型,并通过 AUC-ROC、特征重要性、混淆矩阵和 Shapley 值等不同图表分析了性能。然而,我们尚未回答最重要的问题

这个模型的商业价值是什么,以及我们为什么要使用这个模型?

为了给这个模型赋予商业价值,让我们做一些假设

  • 潜在客户转化为销售将在第一年产生 $120 的收入

  • 追逐优先排序的潜在客户(由模型预测)所花费的时间和精力是 $15

  • 模型错失的机会(假负例)产生 $120 的负值作为机会成本(你可能添加或不添加此项,因为这不是实际成本而是机会成本 — 完全取决于用例)

如果你在这里做一些简单的数学计算,你会得出$88,830 的利润。计算方法如下

这可能是一个好模型,但它不是一个业务智能的模型,因为我们还没有输入成本/利润的假设。默认情况下,任何机器学习算法都会优化 AUC 等传统指标。为了实现业务目标,我们必须使用业务指标来训练、选择和优化模型。

👉在 PyCaret 中添加自定义评估指标

得益于 PyCaret,使用 add_metric 函数可以非常轻松地实现这一点。

**# create a custom function
**def calculate_profit(y, y_pred):
    tp = np.where((y_pred==1) & (y==1), (120-15), 0)
    fp = np.where((y_pred==1) & (y==0), -15, 0)
    fn = np.where((y_pred==0) & (y==1), -120, 0)
    return np.sum([tp,fp,fn])

**# add metric to PyCaret
**add_metric('profit', 'Profit', calculate_profit)

现在让我们再次运行 compare_models

**# compare all models**
best_model = compare_models(sort='Profit')

请注意,这次添加了一个新列利润,并且基于利润的最佳模型不再是**Catboost 分类器**。它是**Light Gradient Boosting Machine**。尽管在这个例子中差异并不显著,但根据你的数据和假设,有时这可能意味着数百万美元。

**# confusion matrix**
plot_model(best_model, plot = 'confusion_matrix')

客户总数仍然相同(测试集中的 2,773 个客户),变化的是模型现在在假正例和假负例上犯错的方式。让我们用美元价值来衡量它,使用与之前相同的假设(如上)

利润现在是 $89,925,而使用 Catboost 分类器时是 $88,830。这是一个 1.2% 的提升,根据假正例和假负例的大小和成本,这可能转化为数百万美元。除此之外,你还可以做一些其他事情,例如通过显式优化利润而不是 AUC、准确率、召回率、精确率或任何其他传统指标来调整最佳模型的超参数。

如何使用模型生成潜在客户得分?

嗯,你现在肯定会问,既然我们已经选择了最佳模型,如何将这个模型应用于新的潜在客户来生成得分?这并不难。

**# create copy of data
**data_new = data.copy()
data_new.drop('Converted', axis=1, inplace=True)

**# generate labels using predict_model
**predict_model(best_model, data=data_new, raw_score=True)

注意,数据集添加了最后三列 — 标签(1 = 转化,0 = 未转化)、Score_0 和 Score_1 是每个类别介于 0 到 1 之间的概率。例如,第一个观测值的 Score_0 是 0.9973,意味着未转化的概率是 99.7%。

使用这个轻量级的 Python 工作流自动化库,你可以实现的目标没有限制。如果你觉得这很有用,请不要忘记在我们的 GitHub 仓库上给我们一个 ⭐️。

重要链接

更多 PyCaret 相关教程

潜在客户管理流程概览 — 作者图片
预测性潜在客户评分工作流 — 经作者许可的图片

是一个开源的、低代码的机器学习库和端到端的模型管理工具,用于自动化机器学习工作流。使用 PyCaret,你可以高效地构建和部署端到端的机器学习 pipeline。要了解更多关于 PyCaret 的信息,请查看他们的.

PyCaret 的特性 — 作者图片

对于本教程,我使用了一个来自 Kaggle 的数据集。该数据集包含超过 9,000 条潜在客户数据,包括客户特征,如潜在客户来源、引流来源、在网站上花费的总时间、网站总访问量、人口统计信息以及目标列 Converted(表示 1 代表转化,0 代表未转化)。

数据集示例 — 作者图片
data.info() — 作者图片

注意,有几列包含许多缺失值。处理缺失值有几种方法。我将交给 PyCaret 自动处理缺失值。如果你想了解更多关于 PyCaret 中处理缺失值的不同方法,请查看这个.

按网站总停留时间、活动得分和来源划分的潜在客户转化情况 — 作者图片

与 PyCaret 中的所有模块一样,setup 是在 PyCaret 中执行任何机器学习实验的第一步,也是唯一必需的步骤。该函数负责处理模型训练前所需的所有数据准备工作。除了执行一些基本的默认处理任务外,PyCaret 还提供了广泛的预处理功能。要了解更多关于 PyCaret 中所有预处理功能的信息,你可以查看这个.

pycaret.classification 中的 setup 函数 — 作者图片(图片已截断)
setup 输出 — 为显示已截断 — 作者图片(图片已截断)
compare_models 输出 — 作者图片
Catboost 超参数 — 作者图片
best_model 的 AUC 图 — 作者图片

shap 值(x 轴)越高,正类(在本例中是转化)的可能性就越高。因此,从顶部读取,我会将标记为“阅读邮件后会回复”的潜在客户解读为具有较高的 shap 值,与基准相比意味着较高的转化可能性。相反,如果你看到标记为“响铃”,则恰恰相反,shap 值在基准值的左侧,即负 shap 值,意味着此特征不利于转化。要更详细地了解 shap 值,请参阅此.

best_model 的 Shapley 特征重要性图 — 作者图片
best_model 的特征重要性图 — 作者图片
best_model 的混淆矩阵 — 作者图片
模型对 2,773 位客户的影响价值 — 作者图片
compare_models 输出 — 作者图片
LightGBM 的混淆矩阵 — 作者图片
模型对 2,773 位客户的影响价值 — 作者图片
使用 best_model 生成的预测结果 — 作者图片

我是一位常驻博主,主要撰写关于 PyCaret 及其在现实世界中的用例的文章。如果你想自动接收通知,可以关注我的, ,以及.

PyCaret — 作者图片
PyCaret — 作者图片

要了解更多关于 PyCaret 的信息,请关注我们的和.

加入我们的 Slack 频道。邀请链接.

📖
PyCaret
GitHub
潜在客户转化
文档链接
链接
链接
Medium
LinkedIn
Twitter
LinkedIn
Youtube
此处
文档
博客
GitHub
StackOverflow
安装 PyCaret
Notebook 教程
贡献 PyCaret
使用 PyCaret 预测客户流失(正确方法) towardsdatascience.com
使用 PyCaret 构建,使用 FastAPI 部署 一个逐步且适合初学者的教程,介绍如何使用 PyCaret 构建端到端机器学习 Pipeline 并…towardsdatascience.com
使用 PyCaret 进行时间序列异常检测 一个逐步教程,介绍如何使用 PyCaret 对时间序列数据进行无监督异常检测towardsdatascience.com
使用 PyCaret 和 Gradio 超越你的机器学习实验 一个逐步教程,介绍如何快速开发机器学习 pipeline 并与之交互towardsdatascience.com
使用 PyCaret 进行多个时间序列预测 一个逐步教程,介绍如何使用 PyCaret 预测多个时间序列towardsdatascience.com