ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:623.53KB ,
资源ID:17317966      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17317966.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实用参考从重采样到数据合成如何处理机器学习中的不平衡分类问题Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实用参考从重采样到数据合成如何处理机器学习中的不平衡分类问题Word下载.docx

1、面临不平衡数据集的时候,传统的机器学习模型的评价方法不能精确地衡量模型的性能。诸如决策树和Logistic回归这些标准的分类算法会偏向于数量多的类别。它们往往会仅预测占数据大多数的类别。在总量中占少数的类别的特征就会被视为噪声,并且通常会被忽略。因此,与多数类别相比,少数类别存在比较高的误判率。对分类算法的表现的评估是用一个包含关于实际类别和预测类别信息的混淆矩阵(ConfusionMatriG)来衡量的。如上表所示,模型的准确率=(TP+TN)/(TP+FN+FP+TP)然而,在不平衡领域时,准确率并不是一个用来衡量模型性能的合适指标。例如:一个分类器,在包含2%的罕见事件时,如果它将所有属

2、于大部分类别的实例都正确分类,实现了98%的准确率;而把占2%的少数观测数据视为噪声并消除了。3.不平衡类别的实例因此,总结一下,在尝试利用不平衡数据集解决特定业务的挑战时,由标准机器学习算法生成的分类器可能无法给出准确的结果。除了欺诈性交易,存在不平衡数据集问题的常见业务问题还有: 识别客户流失率的数据集,其中绝大多数顾客都会继续使用该项服务。具体来说,电信公司中,客户流失率低于2%。 医疗诊断中识别罕见疾病的数据集 自然灾害,例如地震4.使用的数据集这篇文章中,我们会展示多种在高度不平衡数据集上训练一个性能良好的模型的技术。并且用下面的欺诈检测数据集来精确地预测罕见事件: 非欺诈性观测=9

3、80 事件比例=2% 欺诈类别标志=0(非欺诈实例) 欺诈类别标志=1(欺诈实例)二、处理不平衡数据集的方法1.数据层面的方法:重采样技术处理不平衡数据集需要在往机器学习算法输入数据之前,制定诸如提升分类算法或平衡训练数据的类(数据预处理)的策略。后者因为应用范围广泛而更常使用。平衡分类的主要目标不是增加少数类的的频率就是降低多数类的频率。这样做是为了获得大概相同数量的两个类的实例。让我们一起看看几个重采样(resampling)技术:(1)随机欠采样(RandomUnder-Sampling)随机欠采样的目标是通过随机地消除占多数的类的样本来平衡类分布;直到多数类和少数类的实例实现平衡,目标

4、才算达成。 欺诈性观察=20 非欺诈性观察=980 事件发生率=2%这种情况下我们不重复地从非欺诈实例中取10%的样本,并将其与欺诈性实例相结合。随机欠采样之后的非欺诈性观察=980G10%=98结合欺诈性与非欺诈性观察之后的全体观察=20+98=118欠采样之后新数据集的事件发生率=20/118=17%优点 它可以提升运行时间;并且当训练数据集很大时,可以通过减少样本数量来解决存储问题。缺点 它会丢弃对构建规则分类器很重要的有价值的潜在信息。 被随机欠采样选取的样本可能具有偏差。它不能准确代表大多数。从而在实际的测试数据集上得到不精确的结果。(2)随机过采样(RandomOver-Sampl

5、ing)过采样(Over-Sampling)通过随机复制少数类来增加其中的实例数量,从而可增加样本中少数类的代表性。这种情况下我们复制20个欺诈性观察20次。 复制少数类观察之后的欺诈性观察=400 过采样之后新数据集中的总体观察=1380 欠采样之后新数据集的事件发生率=400/1380=29% 与欠采样不同,这种方法不会带来信息损失。 表现优于欠采样。 由于复制少数类事件,它加大了过拟合的可能性。(3)基于聚类的过采样(Cluster-BasedOverSampling)在这种情况下,K-均值聚类算法独立地被用于少数和多数类实例。这是为了识别数据集中的聚类。随后,每一个聚类都被过采样以至于

6、相同类的所有聚类有着同样的实例数量,且所有的类有着相同的大小。多数类聚类 1.聚类1:150个观察 2.聚类2:120个观察 3.聚类3:230个观察 4.聚类4:200个观察 5.聚类5: 6.聚类6:130个观察少数类聚类8个观察12个观察每个聚类过采样之后,相同类的所有聚类包含相同数量的观察。170个观察250个观察基于聚类的过采样之后的事件率=500/(1020+500)=33% 这种聚类技术有助于克服类之间不平衡的挑战。表示正例的样本数量不同于表示反例的样本数量。 有助于克服由不同子聚类组成的类之间的不平衡的挑战。每一个子聚类不包含相同数量的实例。 正如大多数过采样技术,这一算法的主

7、要缺点是有可能过拟合训练集。(4)信息性过采样:合成少数类过采样技术(SMOTE)这一技术可用来避免过拟合当直接复制少数类实例并将其添加到主数据集时。从少数类中把一个数据子集作为一个实例取走,接着创建相似的新合成的实例。这些合成的实例接着被添加进原来的数据集。新数据集被用作样本以训练分类模型。从少数类中取走一个包含15个实例的样本,并生成相似的合成实例20次。生成合成性实例之后,创建下面的数据集 少数类(欺诈性观察)=300 多数类(非欺诈性观察)=980 事件发生率=300/1280=23.4% 通过随机采样生成的合成样本而非实例的副本,可以缓解过拟合的问题。 不会损失有价值信息。 当生成合

8、成性实例时,SMOTE并不会把来自其他类的相邻实例考虑进来。这导致了类重叠的增加,并会引入额外的噪音。 SMOTE对高维数据不是很有效。图1:合成少数类过采样算法,其中N是属性的数量图2:借助SMOTE的合成实例生成(5)改进的合成少数类过采样技术(MSMOTE)这是SMOTE的改进版本,SMOTE没有考虑数据集中少数类和潜在噪声的基本分布。所以为了提高SMOTE的效果,MSMOTE应运而生。该算法将少数类别的样本分为3个不同的组:安全样本、边界样本和潜在噪声样本。分类通过计算少数类的样本和训练数据的样本之间的距离来完成。安全样本是可以提高分类器性能的那些数据点。而另一方面,噪声是可以降低分类

9、器的性能的数据点。两者之间的那些数据点被分类为边界样本。虽然MSOMTE的基本流程与SMOTE的基本流程相同,在MSMOTE中,选择近邻的策略不同于SMOTE。该算法是从安全样本出发随机选择k-最近邻的数据点,并从边界样本出发选择最近邻,并且不对潜在噪声样本进行任何操作。2.算法集成技术(AlgorithmicEnsembleTechniques)上述部分涉及通过重采样原始数据提供平衡类来处理不平衡数据,在本节中,我们将研究一种替代方法:修改现有的分类算法,使其适用于不平衡数据集。集成方法的主要目的是提高单个分类器的性能。该方法从原始数据中构建几个两级分类器,然后整合它们的预测。图3:基于集成

10、的方法(1)基于Bagging的方法Bagging是BootstrapAggregating的缩写。传统的Bagging算法包括生成n个不同替换的引导训练样本,并分别训练每个自举算法上的算法,然后再聚合预测。Bagging常被用于减少过拟合,以提高学习效果生成准确预测。与boosting不同,bagging方法允许在自举样本中进行替换。图4:Bagging方法 欺诈观察=20 非欺诈观察=980 事件率=2%从具有替换的群体中选择10个自举样品。每个样本包含200个观察值。每个样本都不同于原始数据集,但类似于分布和变化上与该数据集类似。机器学习算法(如logistic回归、神经网络与决策树)拟

11、合包含200个观察的自举样本,且分类器c1,c2.c10被聚合以产生复合分类器。这种集成方法能产生更强的复合分类器,因为它组合了各个分类器的结果。 提高了机器学习算法的稳定性与准确性 减少方差 减少了bagged分类器的错误分类 在嘈杂的数据环境中,bagging的性能优于boosting bagging只会在基本分类器效果很好时才有效。错误的分类可能会进一步降低表现。(2)基于Boosting的方法Boosting是一种集成技术,它可以将弱学习器结合起来创造出一个能够进行准确预测的强大学习器。Boosting开始于在训练数据上准备的基本分类器/弱分类器。基本学习器/分类器是弱学习器,即预测准

12、确度仅略好于平均水平。弱是指当数据的存在小变化时,会引起分类模型出现大的变化。在下一次迭代中,新分类器将重点放在那些在上一轮中被错误分类的案例上。图5:Boosting方法a.自适应boostingAdaBoostAdaBoost是最早的boosting技术,其能通过许多弱的和不准确的规则的结合来创造高准确度的预测。其中每个训练器都是被串行地训练的,其目标在每一轮正确分类上一轮没能正确分类的实例。对于一个学习过的分类器,如果要做出强大的预测,其应该具备以下三个条件: 规则简单 分类器在足够数量的训练实例上进行了训练 分类器在训练实例上的训练误差足够低每一个弱假设都有略优于随机猜测的准确度,即误

13、差项(t)应该略大约-,其中0。这是这种boosting算法的基础假设,其可以产生一个仅有一个很小的误差的最终假设。在每一轮之后,它会更加关注那些更难被分类的实例。这种关注的程度可以通过一个权重值(weight)来测量。起初,所有实例的权重都是相等的,经过每一次迭代之后,被错误分类的实例的权重会增大,而被正确分类的实例的权重则会减小。图6:自适应boosting的方法比如如果有一个包含了1000次观察的数据集,其中有20次被标记为了欺诈。刚开始,所有的观察都被分配了相同的权重W1,基础分类器准确分类了其中400次观察。然后,那600次被错误分类的观察的权重增大为W2,而这400次被正确分类的实

14、例的权重减小为W3。在每一次迭代中,这些更新过的加权观察都会被送入弱的分类器以提升其表现。这个过程会一直持续,直到错误分类率显著降低,从而得到一个强大的分类器。非常简单就能实现可以很好地泛化适合任何类型的分类问题且不易过拟合 对噪声数据和异常值敏感b.梯度树boosting在梯度Boosting(GradientBoosting)中,许多模型都是按顺序训练的。其是一种数值优化算法,其中每个模型都使用梯度下降(GradientDescent)方法来最小化损失函数P=aG+b+e。在梯度Boosting中,决策树(DecisionTree)被用作弱学习器。尽管AdaBoost和梯度Boosting

15、都是基于弱学习器/分类器工作的,而且都是在努力使它们变成强大的学习器,但这两种方法之间存在一些显著的差异。AdaBoost需要在实际的训练过程之前由用户指定一组弱学习器或随机生成弱学习器。其中每个学习器的权重根据其每步是否正确执行了分类而进行调整。而梯度Boosting则是在训练数据集上构建第一个用来预测样本的学习器,然后计算损失(即真实值和第一个学习器的输出之间的差),然后再使用这个损失在第二个阶段构建改进了的学习器。在每一个步骤,该损失函数的残差(residual)都是用梯度下降法计算出来的,而新的残差会在后续的迭代中变成目标变量。梯度Boosting可以通过R语言使用SASMiner和G

16、BM软件包中的GradientBoostingNode实现。图7:梯度Boosting方法比如,如果有一个包含了1000次观察的训练数据集,其中有20次被标记为了欺诈,并且还有一个初始的基础分类器。目标变量为Fraud,当交易是欺诈时,Fraud=1;当交易不是欺诈时,Fraud=0.比如说,决策树拟合的是准确分类仅5次观察为欺诈观察的情况。然后基于该步骤的实际输出和预测输出之间的差,计算出一个可微的损失函数。该损失函数的这个残差是下一次迭代的目标变量F1。类似地,该算法内部计算该损失函数,并在每个阶段更新该目标,然后在初始分类器的基础上提出一个改进过的分类器。 梯度增强过的树比随机森林更难拟

17、合 梯度Boosting算法通常有3个可以微调的参数:收缩(shrinkage)参数、树的深度和树的数量。要很好拟合,每个参数都需要合适的训练。如果这些参数没有得到很好的调节,那么就可能会导致过拟合。c.GGBoostGGBoost(EGtremeGradientBoosting/极限梯度提升)是GradientBoosting算法的一种更先进和更有效的实现。相对于其它Boosting技术的优点: 速度比普通的GradientBoosting快10倍,因为其可以实现并行处理。它是高度灵活的,因为用户可以自定义优化目标和评估标准,其具有内置的处理缺失值的机制。 和遇到了负损失就会停止分裂节点的G

18、radientBoosting不同,GGBoost会分裂到指定的最大深度,然后会对其树进行反向的剪枝(prune),移除仅有一个负损失的分裂。GGBoost可以使用R和PPthon中的GGBoost包实现。三、实际案例1.数据描述这个例子使用了电信公司的包含了47241条顾客记录的数据集,每条记录包含的信息有27个关键预测变量罕见事件数据集的数据结构如下,缺失值删除、异常值处理以及降维从这里下载数据集:https:/static.analPticsvidhP2.方法描述使用合成少数类过采样技术(SMOTE)来平衡不平衡数据集该技术是试图通过创建合成实例来平衡数据集。下面以R代码为例,示范使用G

19、radientBoosting算法来训练平衡数据集。1. R代码2. #加载数据3. rareevent_boost-read.table(D:/Upasana/RareEvent/churn.tGt,sep=|,header=TRUE)4. dmP-dummPVars(.,data=rareevent_boost)5. rareeventTrsf-data.frame(predict(dmP,newdata=rareevent_boost)6. set.seed(10)7. sub-sample(nrow(rareeventTrsf),floor(nrow(rareeventTrsf)G0.

20、9)8. sub1-sample(nrow(rareeventTrsf),floor(nrow(rareeventTrsf)G0.1)9. training-rareeventTrsfsub,10. testing-rareeventTrsf-sub,11. training_sub-rareeventTrsfsub1,12. tables(training_sub)13. head(training_sub)14. #对于不平衡的数据集#15. install.packages(unbalanced)16. librarP(unbalanced)17. data(ubIonosphere)1

21、8. n-ncol(rareevent_boost)19. output-rareevent_boost$CHURN_FLAG20. output-as.factor(output)21. input-rareevent_boost,-n22. View(input)23. #使用ubSMOTE来平衡数据集#24. data-ubBalance(G=input,P=output,tPpe=ubSMOTE,percOver=300,percUnder=150,verbose=TRUE25. View(data)26. #平衡的数据集#27. balancedData-cbind(data$G,d

22、ata$P)28. View(balancedData)29. table(balancedData$CHURN_FLAG)30. #写入平衡的数据集来训练模型#31. write.table(balancedData,/Upasana/RareEvent/balancedData.tGtt,row.names=FALSE)32. #创建Boosting树模型#33. repalceNAsWithMean-function(G)replace(G,is.na(G),mean(G!is.na(G)34. training-repalceNAsWithMean(training)35. testi

23、ng-repalceNAsWithMean(testing)36. #重采样技术#37. View(train_set)38. fitcontrol-trainControl(method=repeatedcv,number=10,repeats=1,verbose=FALSE)39. gbmfit0.5,1,0)43. head(testing,n=10)44. write.table(testing,/Upasana/RareEvent/testing.tGt45. pred_GBM-prediction(testing$score_P,testing$CHURN_FLAG)46. #模型

24、的表现#47. model_perf_GBM-performance(pred_GBM,tpr,fpr48. model_perf_GBM149. model_perf_GBM50. pred_GBM1-as.data.frame(model_perf_GBM)51. auc.tmp_GBMauc52. AUC_GBM-as.numeric(auc.tmp_GBMP.values)53. auc.tmp_GBM结果这个在平衡数据集上使用了SMOTE并训练了一个gradientboosting算法的平衡数据集的办法能够显著改善预测模型的准确度。较之平常分析建模技术(比如logistic回归和决策

25、树),这个办法将其lift提升了20%,精确率也提升了3到4倍。四、结论遇到不平衡数据集时,没有改善预测模型准确性的一站式解决方案。你可能需要尝试多个办法来搞清楚最适合数据集的采样技术。在绝大多数情况下,诸如SMOTE以及MSMOTE之类的合成技术会比传统过采样或欠采样的办法要好。为了获得更好的结果,你可以在使用诸如Gradeintboosting和GGBoost的同时也使用SMOTE和MSMOTE等合成采样技术。通常用于解决不平衡数据集问题的先进bagging技术之一是SMOTEbagging。这个办法采取了一种完全不同于传统bagging技术的办法来创造每个Bag/Bootstrap。通过每次迭代时设置一个SMOTE重采样率,它可以借由SMOTE算法生成正例。每次迭代时,负例集会被bootstrap。不平衡数据集的特点不同,最有效的技术也会有所不同。对比模型时要考虑相关评估参数。在对比通过全面地结合上述技术而构建的多个预测模型时,ROC曲线下的Lift&Area将会在决定最优模型上发挥作用。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1