数据挖掘:针对小样本与不均衡样本的机器学习算法实践
01 小样本、不均衡样本在分类任务中普遍存在
随着计算能力、存储空间、网络的高速发展,人类所积累的数据量正在快速增长,而分类在数据挖掘中是一项非常重要的任务,已渐渐融入到了我们的日常生活中。
上述为机器学习领域分类任务的几个典型应用场景。在信用卡反欺诈场景中,大部分行为为正常刷卡,盗刷行为(为识别目标,定义为正样本)是小概率事件,甚至 1%都不到。同理,在用户离网告警场景中,大部分用户是正常的在网用户,离网用户(为识别目标,定义为正样本)只占非常小的一部分。可见,在很多建模场景中都存在识别目标样本数据量较少,样本极度不均衡的问题。
02 小样本、不均衡样本可能导致的问题
建模样本量不足,将导致模型陷入对小样本的过拟合以及对整体任务的欠拟合,缺乏泛化能力
过拟合是指模型对训练集“死记硬背”,记住了不适用于测试集的训练集性质或特点,没有理解数据背后的规律。导致其在训练样本中表现得过于优越,但在验证数据集以及测试数据集中表现不佳,即我们所说的“泛化能力差”。
正负样本比例严重失衡,信息的不均衡使得分类器更倾向于将数据样本判别为多数类
在一个极度不平衡的样本中,由于机器学习会针对每个样本数据进行学习,那么多数类样本带有的信息量比少数类样本信息量大,会对分类器的规则学习造成困扰,使得分类器存在将样本判别为多数类的倾向。具体表现为:多数类样本的查全率过高,少数类样本的查全率过低,而整体的准确率依然会有很好的表现。
举例来说:假如有 100 个样本,其中只有 1 个是正样本,其余 99 个全为负样本,那么学习器只要制定一个简单的方法:所有样本均判别为负样本,就能轻松达到 99%的准确率。此时,正样本召回率为 0%,而负样本召回率达到 100%。但这个分类器的决策很明显不是我们想要的判定标准。
03 如何解决小样本、不均衡样本问题
数据角度出发,运用采样技术以均衡建模样本
从数据的角度出发,既然样本数据是不平衡的,那么可以通过某种策略进行重采样,从而让数据相对均衡一些。抽样策略主要包括过采样、欠采样、综合采样三种方式。
过采样(over-sampling)
对少数类样本进行采样,通过扩充少数类数据样本,使得两类数据数目接近,然后再进行学习。粗暴的随机复制少数样本存在一定缺点:虽然引入了额外的训练数据,但没有给少数类样本增加任何新的信息,非常容易造成过拟合。为了合成有效新样本,可选用 SMOTE、KMeansSMOTE、SVMSMOTE 等过采样算法。
欠采样(under-sampling)
又称下采样。对多数类样本进行采样,通过减少多数类数据样本,使得两类数据量级接近,然后再正常进行学习。简单随机抽样方式存在一定缺陷:如果采样随机丢弃反例,会损失已经收集的信息,往往还会丢失重要信息。为了缓解随机欠采样中的信息丢失,可选用 NearMiss、ClusterCentroids、TomekLinks、EditedNearestNeighbours 等欠采样算法。
综合采样法
过采样算法的缺点是生成的少数类样本容易与周围的多数类样本产生重叠难以分类,而欠采样的数据清洗技术恰好可以处理掉重叠样本,所以可以将二者结合起来形成一个 pipeline,先过采样再进行数据清洗。主要的方法是 SMOTE + ENN 和 SMOTE + Tomek。
算法角度出发,选用适用于不均衡样本的算法
在通常的学习任务中,假定所有样本的权重一般都是相等的,或者说误分类成本是相同的。但是在大多数实际应用中,这种假设是不正确的。因此从算法的角度出发,采用基于代价敏感学,即考虑不同误分类情况代价的差异性对算法进行优化,使得算法在不平衡数据下也能有较好的效果。所谓代价敏感学习主要考虑的是在分类问题中,不同类别的样本在分类错误时导致不同的误分类成本如何去训练模型。
从学习模型出发
主要是对算法的改进,使之能适应不平衡数据下的学习,如感知机,支持向量机,决策树,神经网络等分别都有其代价敏感的版本。以代价敏感的决策树为例,可从三个方面对其进行改进以适应不平衡数据的学习,这三个方面分别是:决策阈值的选择方面、分裂标准的选择方面、剪枝方面。
从贝叶斯风险理论出发
把代价敏感学习看成是分类结果的一种后处理,按照传统方法学习到一个模型,以实现损失最小为目标对结果进行调整,优化公式为:
此方法的优点在于它可以不依赖所用具体的分类器,但是缺点也很明显它要求分类器输出值为概率。
从预处理的角度出发
将代价用于权重的调整,使得分类器满足代价敏感的特性。其代表的算法是基于代价敏感的 AdaCost 算法。
04 小样本、不均衡样本案例实战
浩鲸科技算法团队在支撑某省份权益产品“任我选”潜客挖掘模型专题时,也同样遇到了小样本+样本不均衡的问题。
需求背景
“任我选”潜客挖掘模型的目的是通过用户基本信息、行为数据,以及用户是否订购任我选视频会员的标签数据,利用分类算法构建训练模型,预测用户是否会订购任我选视频会员,挖掘潜在的目标用户,降低营销成本,提升营销效果。
数据说明
获取全量用户特征数据宽表,共计 400 多万。其中,只有 5 万用户是任我选视频会员用户,占比约为 1.24%,除建模标签字段外,总共有 128 个输入字段。为了方便进行分类处理,将这些输入字段归为静态数据、动态数据、标识数据 3 类。
静态数据,即用户的基本信息,如性别、年龄、入网时长、归属地市等。
动态数据,指用户的行为数据,如使用习惯、消费行为等。
标识数据,如“是否开通家庭网”、“是否当月订购‘和彩云’”等。
模型构建
由于未订购任我选视频会员的用户量远大于有订购的用户量,即负样本量远大于正样本量,属于典型的正负样本比例不均衡任务。在建模过程中,需要考虑以下四个要点:
1. 是否需要对不均衡样本数据做均衡处理?
2. 是否需要选用适于不均衡样本的特定算法?
3. 采取怎样的样本比例效果最好?
4. 模型参数如何选择?
对比数据增强对算法效果的影响
分别尝试无数据增强处理、SMOTE、SMOTE+TomekLinks、SMOTE+enn 样本四种采样策略,SVM、XGBoost、AdaCost 四种分类算法,构建二分类模型。随机抽取 1223100 条样本数据进行效果验证,对比记录如下表所示。
由上表可看出:
数据采样方面,对比未做任何处理的训练集,经过数据增强的训练集建模效果提升很大。与只进行过采样(SMOTE)的训练集进行对比,进一步剔除部分干扰样本(SMOTE+TomekLinks)后的训练集模型泛化能力亦有所提升。
模型选择方面,基础机器学习算法 SVM 学习能力不足,分类效果不佳。XGBoost 算法虽然能得出较高的精确率,但其在选择正样本时较为谨慎,导致召回率过低,同样亦不适用于小样本训练。AdaCost 是基于代价敏感学习的 boosting 算法,在小样本不平衡数据集中有较好的效果。
对比样本比例对算法效果的影响
使用 SMOTE+TomekLinks 策略,分别尝试 1:5、1:2、1:1 三种采样比例构建 AdaCost 模型,验证条件不变,对比记录如下表所示。
由上表可看出:
样本比例方面,当生成的少数类较少,模型从少数类样本中学不到足够多的信息;若生成的样本过多,会导致生成样本把原始样本信息覆盖。
综合来看,当过采样生成样本比例为 1:2 时,F1 得分最高。
对比关键超参对算法效果的影响
代价敏感学习主要考虑的是在分类问题中,不同类别样本在分类错误时导致不同的误分类成本。AdaCost 在 AdaBoost 算法的基础上进行改进:对于代价高的误分类样本(本研究中的正样本),在 AdaBoost 调整系数的基础上再乘以一个代价系数,作为权重的更新。下表记录了 AdaCost 在不同代价系数中的模型效果。
由上表可看出:
模型超参方面,代价系数增大,代表着误杀成本更高,模型倾向于把更多的样本分类为正样本(召回率提高),但是精确率会随之有所下降,模型使用者可以根据需求控制模型的效果。
综合来看,当代价系数取值在 1.75 时 F1 评分最高,模型效果最佳。
结论
数据采样方面,对比未做任何处理的训练集,经过数据增强的训练集建模效果提升很大。增加有用的样本,使得模型从样本中学习到更多的信息,SMOTE 过采样算法能增加样本数量,TomekLinks 等欠采样的思想可以减少多余样本对模型的干扰。
模型选择方面,基于代价敏感学习的 AdaCost 算法在小样本不平衡数据集中较好的效果。
样本比例方面,当生成的少数类较少,模型从少数类样本中学不到足够多的信息;若生成的样本过多,会导致生成样本把原始样本信息覆盖。合理的采样比例 1:2,更适合本业务场景。
模型超参方面,代价系数增大,召回率提高,但是精确率会随之有所下降。综合来看,当代价系数取值在 1.75 时 F1 评分最高,模型效果最佳。
版权声明: 本文为 InfoQ 作者【鲸品堂】的原创文章。
原文链接:【http://xie.infoq.cn/article/eed94bb77cdddb693bee96e67】。文章转载请联系作者。
评论