首页 > 解决方案 > 预测客户意图

问题描述

我得到了这个前景数据集:

ID     Company_Sector         Company_size  DMU_Final  Joining_Date  Country
65656  Finance and Insurance       10        End User   2010-04-13   France
54535  Public Administration       1         End User   2004-09-22   France

和销售数据集:

ID    linkedin_shared_connections   online_activity  did_buy   Sale_Date
65656            11                        65           1      2016-05-23
54535            13                        100          1      2016-01-12

我想建立一个模型,为潜在客户表中的每个潜在客户分配成为客户的概率。该模型将预测潜在客户是否会购买,并返回概率。Sales 表提供有关 2015 年销售额的信息。我的方法——“确实购买”列应该是模型中的一个标签,因为 1 代表 2016 年购买的潜在客户,0 表示没有销售。另一个有趣的专栏是在线活动,范围从 5 到 685。它越高 - 潜在客户对产品的活跃度越高。所以我正在尝试做随机森林模型,然后以某种方式将每个潜在客户的概率放在新的意图列中。在这种情况下,随机森林是一个有效的模型,或者我应该使用另一个模型。如何将模型结果应用到第一个表中每个潜在客户的新“意图”列中。

标签: pythonpandasnumpyscikit-learndata-mining

解决方案


首先,请参阅如何提问主题指南。这更像是一个咨询,而不是一个实际或具体的问题。也许更合适的主题是机器学习。

TL;DR:随机森林很好,但由于数据不平衡,似乎不合适。你应该阅读推荐系统,以及更流行的性能良好的模型,如Wide 和 Deep

答案取决于:你有多少数据?在推理过程中你有哪些可用数据?在客户购买之前,您能看到潜在销售的当前“online_activity”属性吗?许多问题可能会改变适合您任务的整个方法。

建议:

一般来说,这是一种您通常会处理非常不平衡的数据的业务——“did_buy”=1 的数量很少,而潜在客户数量巨大。

在数据科学方面,您应该定义可以直接映射到金钱的有价值的成功指标。在这里,通过广告或接近更有可能的客户采取行动似乎可以提高“did_buy”/“was_approached”是衡量成功的重要指标。加班,如果你增加这个数字,你就成功了。

要考虑的另一件事是您的数据可能很稀疏。我不知道您通常会得到多少购买,但可能每个国家/地区只有 1 个等。这也应该考虑在内,因为简单的随机森林可以很容易地在其大多数随机模型中定位该列,并且过度拟合将成为一个大问题。决策树受到不平衡数据集的影响。然而,通过获取叶子中每个标签的概率,而不是决策,有时对简单的可解释模型很有帮助,它反映了不平衡的数据。老实说,我并不真正相信这是正确的方法。

如果我在你那里:

我会首先通过以下方式将 Prospects 列嵌入到向量中:

  • 将类别转换为随机向量(针对每个类别)或 one-hot 编码。
  • 将公司规模标准化或分桶化为适合预测模型的数字(下一个)
  • 关于日期的相同想法。在这里,也许年份可能有问题,但几个月/几天应该是有用的。
  • 国家绝对是分类的,也许添加另一个“未知”国家类。

然后,

  • 我会使用一个可以根据不同成本实际优化的模型。逻辑回归是宽泛的一种,深度神经网络是另一种选择,或者看谷歌的Wide 和 deep的组合。
  • 将成本设置为我的黄金数字(标签方面的货币指标),或尽可能接近的值。
  • 运行实验

最后,

  • 检查我的结果以及失败的原因。
  • 建议其他型号/功能
  • 重复。
  • 去吃发射。
  • 问一堆数据问题。
  • 尝试至少回答一些问题。
  • 在数据中发现新的有趣关系。
  • 推荐一些有趣的东西。
  • 重复(明天)。

当然,除了上述内容之外,还有很多其他内容,但这是供您在数据和业务中发现的。

希望我有所帮助!祝你好运。


推荐阅读