目录
1、准确率Accuracy、查准率(精确率)precision、查全率(召回率)recall、F1:
一、常用排序算法
二、正负样本不平衡处理方法总结
原始数据中经常存在正负样本不均衡,比如正负样本的数据比例为100:1.
常用的解决办法有:
1、数据上处理
2、权重设置
3、集成的思想
4、转化成异常检测问题
5、利用深度学习:自编码器.
6、确定适合样本不平衡问题的评价指标
1、数据上处理
1.1、数据源:
搜集更多的数据来使数据达到平衡,但是一般出现样本不平衡问题,就是不太可能以一种简单的方法获取到更多的样本(在金融领域,可以思考坏用户的定义是否过于严格)
1.2、数据增广:
目前数据增广主要应用于图像领域,主要包括:水平/垂直翻转,旋转,缩放,裁剪,剪切,平移,对比度,色彩抖动,噪声等
1.3、欠采样(下采样):
随机欠采样:随机去除多数类一些的样本
缺点:会造成信息缺少 or 最后模型的欠拟合。解决方法:第一种方法叫做EasyEnsemble,利用模型融合的方法(Ensemble):多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果。第二种方法叫做BalanceCascade,利用增量训练的思想(Boosting):先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。第三种方法是利用KNN试图挑选那些最具代表性的大众样本,叫做NearMiss,这类方法计算量很大。
1.4、过采样(上采样):
1.4.1、 随机过采样:随机增加少数类的一些样本
缺点:因为随机过采样是简单的对初始样本进行复制采样,这就使得学习器学得的规则过于具体化,不利于学习器的泛化性能,造成过拟合。解决方法:每次生成新数据点时加入轻微的随机扰动,经验表明这种做法非常有效
1.4.2、样本合成( SMOTE):在随机过采样上进行了改进
通过组合以有的样本的各个feature从而产生新的样本。一种简单的方法是从各个feature中随机算出一个已有值,然后拼接成一个新样本,这种方法增加了样本数目较少的那一类样本的数目,作用与上采样方法类似,不同点在于上采样是纯粹的复制样本,而合成样本是随机选取拼接得到新的样本。具有代表性的方法 是SMOTE,利用了K近邻的思想。
SMOTE算法的思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的k个最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
算法流程:
(1)对于少数类中每一个样本a,以欧式距离为标准计算它到少数类样本集中所有样本的距离,得到k个近邻样本;
(2)根据样本不平衡比例设置一个采样比例,以确定采样倍率N,对于每一个少数类样本a,从其k近邻中随机选择若干个样本,假设选择的近邻样本为b;
(3)对于每一个随机选出的近邻b,分别与原样本a按照公式构建新的样本:c=a+rand(0,1)*|a-b|
SMOTE算法缺陷:
1、由于选择k近邻,存在一定盲目性;
2、无法克服数据分布问题,可能产生边缘化分布数据。比如负类样本在边缘,则其k近邻也在边缘,依次类推产生的数据会越来越边缘,增加分类难度。
-
EasyEnsemble:
EasyEnsemble是一类欠采样方法,将多数类样本随机划分成n个子集,每个子集的数量等于少数类样本的数量。接着将每个子集与少数类样本结合起来分别训练一个模型,最后将n个模型集成。
PS:对于小数据集来说,当总体数据量不够时,为了简化模型,可以借鉴过采样的方法。具体到图像任务,还可以直接在图像空间进行变换,通过施加一定幅度的旋转、平移、裁剪、清晰度、对比度等,扩充数据集。此外,迁移学习也是在小数据集上进行建模的好方法。
对于模型的评估方法,整体准确率不适用于不平衡数据集,需要引入新的度量方式,比如G-mean,它会看正类上的准确率,再看负类上的准确率,然后两者相乘取平方根。另外一种常见的度量方法时F-score。
2、权重设置:
改变样本权重指的是增大样本数较少类别的样本的权重,当类别较少的样本被误分时,其损失值要乘以相应的权重,从而让分类器更加关注这一类数据较少的样本。
2.1、设置类别权重:class_weight
2.2、设置样本权重:sample_weight
3、集成的思想:
3.1、采用boosting的集成算法:XGB,LGB等(对不平衡数据处理效果较好的模型)
3.2、模型融合:投票法
利用gbdt/lgb/xgb分别对正负样本按比例(1:2 1:5 1:10)进行训练,然后根据AUC分数的比例得到了三者的比例,最后进行投票得到最终模型
4、一分类(转化成异常检测问题):
在样本极度不平衡的情况下,换一个完全不同的角度来看待问题,可以把它看成异常检测问题
利用用异常检测算法(IF、LOF、OneClassSVM)建立一个单类分类器,检测异常点(少数类)。
5、利用深度学习:自编码器
利用AutoEncoder进行特征的抽取,再将抽取的特征送入分类器(LR)
6、确定适合样本不平衡问题的评价指标:
ROC,AUC,F1_score
三、过拟合和欠拟合
1、过拟合
过拟合是模型在训练集上的表现很好,在测试集上的变现却很差。出现这种现象的主要原因是训练数据集中存在噪音、训练数据太少、特征选择的过多导致模型复杂度高、模型拟合了数据中噪声和训练样例中没有代表性的特征。
(1)、Early stopping
Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。这样可以有效阻止过拟合的发生,因为过拟合本质上就是对自身特点过度地学习。
(2)、正则化
指的是在目标函数后面添加一个正则化项,一般有L1正则化与L2正则化。L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项。
L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项。
- L2正则化:
为解决过拟合,尽量减小高次项特征的影响。使得w的每个元素都很小,接近于0.越小的元素说明越简单,越简单的模型则越不容易过拟合。
L2正则化的公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和。
正则化的目的是