机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

4.1.1 如何定义Y

万事开头难,机器学习同样如此。本节内容属于模型设计的范畴,需要重点指出的是,样本定义极具业务技巧,尤其对于有监督学习。样本的定义是需求的直接映射,可以说样本的定义决定了项目的成败,需要对需求进行深度的分析、解读、研讨。样本定义需要综合考虑如下几点。

·样本定义是否满足业务目标。

·样本的获取难易度及成本。

·不同定义下的样本量是否足够。

·正负样本是否过于不平衡。

·目标值是否要具有一定的区分度以便算法学习等。

·数据集之间尽量满足分布一致性,使噪声尽可能少。

样本的定义将影响后续数据处理、算法选择等节点。下面以有监督学习为例,说明两种常见目标变量Y的定义方法。

第一个常见例子是网络节目点击率预估中的样本定义,要求针对用户定义喜欢的节目和不喜欢的节目。喜欢可以从如下方面判断:用户播放的节目、顶和踩的喜好标注,以及评论、分享、收藏或下载节目。不喜欢可以从推荐展示过但用户一直没有播放或收藏等行为来判断。基于获客最大化需求,重点关注用户喜欢节目的样本定义。此处假设所有样本已经存于数据库(忽略获取难易度和成本的考虑),所以只考虑样本量和正负是否平衡的问题。比如,用户播放过的节目只取最近一个月或半年,还是所有播放历史?是否考虑播放时长或以多长时间作为阈值(那些播放时长只有几秒钟的情况,我们有理由说是误点)?评论可以是正面、负面或中性评论,对于中性评论要慎重考虑或排除在建模样本之外。用户播放后是分享还是推荐给他人?前者有理由相信用户喜欢,后者则不确定,可能需要排除在建模样本之外。

另一个典型的例子是金融信贷行业对用户好坏的定义。这类场景具有清晰的时间属性,比如银行向客户发放一笔12期的贷款,客户逐月还款。该场景下申请评分模型的建模需求表述为:未来一段时间(如4个月)客户出现违约(如至少一次30天以上的逾期)的概率。

模型设计阶段需要解决样本定义的问题是:定义多长时间内客户逾期多少天为坏用户,其隐含的目标是坏用户尽可能坏,好用户尽可能好,这样便于算法学习。这是一个二维组合的优化问题,如表4-1所示,假设最终定义为4个月内逾期30~60天为坏用户(以下数据纯属虚构)。

表4-1 二维目标定义示意表

依据行业经验的做法是在每个维度上独立分析。对“逾期天数”维度使用滚动率(Roll Rate)分析,其中每个单元格表示由上一风险等级滚动到下一风险等级(迁徙率),“<=60”天的贷款有超过85%滚动到下一级,定义逾期小于60天时风险区分明显,如表4-2所示。

表4-2 滚动率示意表

注意:此处示例以每月来分析,只是为了读者更好地理解其含义。更为常见的做法是看总体样本,在各逾期情况下滚动到下一等级的占比。

对“多长时间”维度使用的账龄(Vintage)分析。按上述30~60天固定后,查看每个放款月后续每期逾期率的表现,将曲线达到平稳时的表现时长定义为表现期,示意图为第4期(MOB4),如图4-3所示。

图4-3 Vintage示意图

账龄(Vintage)一词源于葡萄酒酿造行业,葡萄酒的品质会因葡萄采摘的年份和气候不同而不同。Vintage分析评估不同年份葡萄酒的品质随窖藏时间的推移而发生变化,当窖藏一定年份后,其品质会趋于稳定。对应到信贷用户来说,较短的时间不足以判断用户的好坏,好坏用户需要有足够的暴露时间,比如某用户第一期忘记还款,经提醒后,逐渐养成了良好的还款行为,如果过早下坏用户的定论则有失偏颇。

从以上分析方式可得出如下结论:滚动率从行为维度(逾期、还款)刻画了用户的好坏,账龄分析则从时间维度衡量用户好坏。当然,以上只是从方法论上说明了好坏定义的方法,实践中可以变通,比如业务开展初期,样本量不足,表现期不够,此时可以使用首逾7天、15天等定义为坏用户,或考虑制定规则进行人工标注,并在后续持续改进和修正,这些就是技术之外的业务经验。另外,根据进一步分析可能将7到60天的逾期样本定义为中间样本,运营活动上一些特殊时段的样本等可考虑排除在建模样本之外。从机器学习的角度看,这些灰色样本可视为噪声。逾期时间小于7天即为好用户,至此好坏用户定义完毕。总之,实践中要综合考虑上述几点进行参考。

以上只是信贷行业申请评分模型定义的简单描述,实际还有很多的注意事项,这属于具体的业务范畴,此处不再过多描述。另外,信贷行业行为评分和催收评分定义方式类似,但稍有区别,还有其他有意思的样本定义方式,例如拒绝演绎,感兴趣的读者可自行查阅相关资料。