简介
本文旨在介绍一个在教育领域内落地的机器学习用户分层项目。通过利用xgboost模型预测体验课用户转化的可能性,该项目能够将用户按照他们的转化意向分为不同的用户群。这一分类使得公司销售团队能够根据用户的意向级别,采取差异化的接触策略。
项目的实际运行数据显示,在三个不同批次的用户中,高意向群体的平均转化率为整体平均转化率的3至4倍,而中意向群体的转化率则是整体的1.5至3倍。相比之下,较低意向群体的转化率与整体水平相近,低意向群体的转化率仅为整体的十分之一。
项目背景
随着公司业务的不断扩展,目标用户的精准分层成为提高销售团队效率和产出的关键。通过将用户划分为高意向、中意向,中低意向和低意向四个层级,我们能够使销售团队的工作更加精确和高效。
用户分层策略不仅有助于确定运营周期中的接触优先顺序,促进高价值用户的及时转化,同时减少对低价值用户的无效努力,从而显著提高每个批次的人效比。
此外,该策略还能规范接触行为,提高客户沟通过程中的服务品质和行为监管,确保有效措施的实施,并增强过程的可跟踪性。通过这种方式,我们不仅优化了客户体验,还提升了团队的整体工作效率。
项目流程图
下图展示了本文所介绍的用户分层项目的核心流程,涵盖三个关键环节:数据集获取、模型的训练与测试,以及模型的线上预测。在接下来的部分中,我们将详细介绍这三个环节的具体步骤。
获取数据集
1.需求定义
首先,本项目的核心目标是对体验课用户进行有效分层。具体而言,这意味着将体验课的用户分为高意向用户、中意向用户、中低意向用户及低意向用户四个类别。通过这种分层,业务团队能够根据用户的不同意向采取相应的接触策略,进而优化人力资源的效率和提升产值。
从技术视角出发,项目的需求为开发一个基于历史数据(区分已购买和未购买正式课程的用户)的预测模型。这个模型的目的是预测体验课用户在一定时间内购买正式课程的可能性。根据这一可能性的高低,我们可以将用户归入不同的意向层级,从而实现精准的用户分层和针对性的营销策略。
2.取数模型定义
在明确项目需求之后,接下来的步骤是确定数据采集的具体对象、特征值和标签的取数范围,以及预测的具体时点。
对于本项目而言,数据采集的目标对象是每一批次的体验课用户,例如11月5日开始上课的一批体验课用户。这些用户的行为特征值将从体验课上课时间的前12天开始,延续至体验课上课后的第3天;而标签数据的采集范围设定为从体验课上课后的第3天到第8天。因此,我们将在体验课上课后的第3天进行用户的转化概率预测。
3.特征和标签口径定义
在明确了项目需求和目标数据集后,接下来的步骤是与业务团队合作,深入分析哪些学员的行为特征对于预测结果(即是否购买正式课程)具有显著影响,并据此制定详尽的特征提取标准。正确选择和精确量化的行为特征是模型学习预测转化关系的基础,因此,特征的合理性、广泛性和准确度直接关系到模型性能的优劣。在教育领域,决定学员是否最终转化的关键特征主要包括以下几个维度:
- 用户基本信息:如年龄、所在城市及其等级、性别、使用的登录设备等;
- 用户当前状态:包括近7天的活跃度、距离开课时间的长度、登录应用的频次等;
- 用户行为数据:如是否添加微信、是否提供邮寄地址、体验课期间的具体行为表现等。
4.获取原始数据集
在确定了数据提取的具体标准后,接下来的步骤是编写SQL查询语句,以从业务数据库或数据仓库中提取所需数据。在这一数据提取过程中,有几个关键注意事项需遵守:
- 必须严格限定行为数据的提取时间范围,确保所有数据均来自预测时间点之前的记录。
- 尽可能利用日志表进行数据提取。相较于其他数据来源,日志表中的数据通常更为精确,且其结构更适合进行时间范围的限制。
5. 数据预处理和清洗
在获取原始数据集后,通常会遇到包含脏数据和不适合直接作为模型输入的数据情况。为此,对原始数据进行预处理和清洗变得尤为重要。预处理和清洗包括以下关键步骤:
特征筛选与分类:面对众多特征时,首要任务是将特征按数据类型分为两大类:分类变量(categorical features)和数值变量(numerical features)。随后,计算各特征与目标变量的相关性,以筛选出相关性较高的特征进行进一步分析。
分类特征编码:许多特征中可能包含中文,这些分类特征需要转换成模型可接受的格式。可以借助Scikit-learn库的OrdinalEncoder函数来实现这一转换。
空值处理:对于空值数据过多的特征,考虑将其删除以避免对模型造成干扰。同时,可以采用填充空值的方法,如使用众数、平均数等策略,以保持数据完整性。
这些步骤的目的是确保数据的质量和适用性,为模型训练提供一个干净、准确的数据基础。
模型训练与预测
1.训练模型
概率模型接收数据的各项特征作为输入,并输出相应的预测概率。这些预测概率,根据设定的不同阈值,可以进一步应用于用户分层。在常见的概率模型中,包括逻辑回归、支持向量机(SVM)、K近邻(KNN)算法、决策树、随机森林以及极限梯度提升决策树(XGBoost)。经过对比这些模型的优劣,我们选择了XGBoost作为我们的模型。
XGBoost模型以其防止过拟合的能力、快速的训练速度、结果的可解释性以及高准确率等特点而著称。采用XGBoost使我们能够迅速验证之前设计的特征选择和数据提取方法的有效性,并能快速将模型部署到实际业务中。
在数据预处理完成后,我们将其分为训练集(80%)和测试集(20%)。通过将训练数据输入XGBoost进行训练,我们便可以得到一个能够预测转化概率的模型(可以直接使用sklearn库中的XGBClassifier来进行训练)。
2.测试模型
模型测试分为两个关键阶段。首先,我们利用数据集内的测试数据对模型进行初步测试。这一步骤可以迅速完成,使我们能够立即获得模型大致性能的初步了解。
第二个阶段涉及在1-2个数据批次中进行更为深入的对照测试,即分别设定对照组和实验组,通过比较两组的实际转化数据来评估模型性能。尽管这个测试过程较长,但它可以最大限度地确保模型在实际应用中的表现符合预期,从而避免模型部署后出现较大误差。
下图展示了使用测试集得到的结果,其中测试集由数据集中随机选取的20%的用户组成,总人数为45,883人,其中新签用户数为2,798人,新签率为6.09%。
从结果中我们可以观察到,在新签概率排名前10%的用户群体中,新签率高达23.01%,这一比例占测试集中总新签用户数的37.74%(召回率)。这意味着S级用户的新签率是整体新签率的3至4倍,A级用户的新签率是整体新签率的1.5至3倍,B级用户的新签率与整体新签率大致相同,而C级用户的新签率仅为整体新签率的十分之一。
模型线上预测
当模型的验证结果达到业务需求标准时,接下来的步骤是将模型及其相关流程集成到系统中。在本项目中,我们实施的线上流程包括以下几个关键环节:
- 模型部署:将模型部署于服务器,设定每月进行一次模型训练,并在每个新课程批次开始时自动执行预测任务。
- 数据管理:将用于训练和预测的数据集成至数据仓库中。服务器通过调用聚合服务接口,自动从数据仓库表中获取所需数据。
- 结果存储:预测完成后,将结果回传并存储于数据仓库表中,便于在工作台上使用以及日后进行运营分析。
- 工作台集成:通过标签系统,工作台从数据仓库中提取数据。在工作台上展示的结果中,每个用户档案或详情页将包含一个名为“转化层级”的标签,如预测结果为高意向的用户,其标签值将标为“S”。
通过这一流程的实施,我们能够确保模型预测的结果能够有效地支持业务决策和运营分析,同时提升用户管理和营销策略的精细化程度。