数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
今天就简单聊聊工作中遇到的一些特征工程中的问题,主要针对的是业务流程中的问题,如果大家有更好的方法论,欢迎留言。
1、梳理业务流程
这个过程主要是为了了解数据产生的主要环节,每个环节产生的数据有哪些,有哪些数据是有明显的因果关系,提前剔除,避免数据泄露。
最好由业务方提供更多的业务场景特征,以及尽可能的将特征入库,如果没有的话先提需求积累数据。
2、明确业务目标
业务目标为了明确建模的目标变量,目标变量决定了如果加工数据特征。
3、确定特征范围
经过以上两轮的分析可以初步分析哪些环节的数据可以作为特征数据
4、特征加工阶段以及特征清洗
特征加工过程中,能够明确时间边界的,需要进行明确,但是与目标变量相关的时间,需要谨慎考虑引入作为模型的特征变量的时间边界的判断条件,避免数据泄露的产生。
其他特征标准化,onehot等不在本文讨论范围,可以参考脑图: https://cloud.tencent.com/developer/article/1425552
5、模型效果监控&特征监控
5.1 模型效果检验:
1)离线训练后再测试集上进行模型评估指标评估以及业务指标评估
2)线上的结果检验模型的效果,确认模型生产上的评估指标和离线的数据在可以接受的误差范围内。误差影响因素,一方面因为过拟合,另一方面由于生产数据的分布和离线的数据分布是有差异的,模型的效果随着时间的进展从下降到逐渐平稳,此时就应该定期的更新模型的特征重新训练模型并发布到生产上
3) 监控概率阈值分布是否稳定
5.2 重要特征监控分布的稳定性
6、模型特征如何作为用户画像标签使用
1)根据模型输出的特征重要性,前提特征具有解释性
2)根据业务场景由业务方提供标签需求
3)根据历史统计特征,取分位数标签值比较显著的进行展示。