如果你查看了本文开头的链接,你就会知道有不少人曾尝试过这个问题,并提交了数十次不同方法的模型。虽然有不少人会想要使用随机森林的方式进行尝试,但对于这个项目,我们将坚持使用旧的逻辑回归,并研究在特征工程和基本模型的调整中可以改进多少。
像往常一样,接近任何机器学习模型的第一步都是查看数据。在这里,草拟了Tableau中的几个基本可视化对象,仅从这些图表中我们就可以获得关于用户行为模式的见解。
nerror="javascript:errorimg.call(this);">
nerror="javascript:errorimg.call(this);">
正式使用
nerror="javascript:errorimg.call(this);">
nerror="javascript:errorimg.call(this);">
可以看到,在这个特征空间上运行基线逻辑回归产生了非常差的结果,所以这就是我们可以转向特征工程神奇的地方。这里的特征工程采用了迭代方法,并测试了每个步骤中每个新特征(如:用户特征、产品特征和用户产品特征)如何影响模型。
大部分工程特性都围绕着订单频率和一些平均指标,以便将整个客户群的一般订购趋势与特定客户的行为进行比较。除此之外,还将部门名称转换为分类变量,因为我希望他们可以为模型提供额外的信号。
但是,进行了更进一步的动作,并测试了自定义权重以进一步微调。事实证明,手动平衡模型的整体表现更好。
这种简单的逻辑回归与新设计的功能和手动类平衡取得了相当不错的结果。
如果我们看一下混淆矩阵,我们可以更好地分析F1得分实际上代表什么。在0.3的精确度下,模型可以正确预测所有重新排序项目的30%,并且以0.52确定了模型可以预测的真实和错误。至少,客户可以放心,他们不需要延期交货。
除了这些有些抽象的分数之外,可以看看模型的系数。你可以在代码中找到所有系数值,但为了突出显示最重要的发现,这里会解释为客户订单频率是客户重新排列某个产品的几率的最大预测因子。用户和产品总订单也扮演着一定的角色:一般用户订购产品越多且越频繁,这些产品再次被重新订购的机会就越高。
结语
此外,还使用了AWS EC2(亚马逊网络服务,Elastic Cloud 2)作为建模工具,并强烈建议Chris Albon的指导设置虚拟机和Jupyter Notebook以运行它。
