《学位论文—基于adaboost算法的银行客户数据分析dm课程.doc》由会员分享,可在线阅读,更多相关《学位论文—基于adaboost算法的银行客户数据分析dm课程.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 山东财经大学金融数据挖掘课程论文题目:基于Adaboost算法的银行客户数据分析学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 计算机科学与技术1201班学 号 201218441442 姓 名 王 健 山东财经大学教务处制二一四年 十二 月1山东财经大学学士学位论文基于Adaboost算法的银行客户数据分析摘 要分类是一种重要的数据分析形式,它提取刻画重要数据类的模型。这种模型称为分类器,预测分类的(离散的,无序的)类标号。在机器学习中,对分类器的分类进行准确性评估是一个基本问题。我们以此来确定分类器是否可以运用到实际的分类中。组合分类器是一个复合模型,由多个分类器组合而成。组
2、合分类器基于投票返回类标号预测。组合分类器往往比它的成员分类器更准确。传统的学习模型假定数据类是良分布的。然而在现实世界的许多领域中,数据是类不平衡的,其中感兴趣的主类只有少量元祖。这称为类不平衡问题。我们还研究提高类不平衡数据分类准确率的技术。我们将Adaboost算法应用于银行客户数据分析,分析结果表明,该算法运行可靠。本文最后对Adaboost算法的优缺点进行了总结。 关键词:银行信息;AdaBoost;组合分类1.引言1.1组合分类方法简介袋装、提升和随机森林都是组合分类方法的列子。组合分类把k个学习得到的模型(或基分类器)M1,M2,Mk组合在一起,旨在创建一个改建的复合分类模型M*
3、。使用给定的数据集D创建k个训练集D1,D2,,Dk,其中Di用于创建分类器Mi。给定一个待分类的新数据元祖,每个基分类器通过返回类预测投票。组合分类器基于基分类器的投票返回类预测。组合分类器往往比它的基分类器。列如,考虑一个进行多数表决的组合分类器。也就是说,给定一个待分类元祖X,它收集由基分类器返回的类标号预测,并输入占多数的类。基分类器可能出错时,但是仅当超过一半的基分类器出错时,组合分类器才会误分类X,当模型之间存在显著差异时,组合分类器产生更好的结果。也就说,理想的,基分类器之间几乎不相关。基分类器还应该优于随机预测。1.2组合分类方法 我们分类中用到很多经典分类算法如:SVM、lo
4、gistic 等,我们很自然的想到一个方法,我们是否能够整合多个算法优势到解决某一个特定分类问题中去,答案是肯定的! 通过聚合多个分类器的预测来提高分类的准确率。这种技术称为组合方法(ensemble method) 。组合方法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行权重控制来进行分类。考虑25个二元分类组合,每个分类误差是0.35 ,如果所有基分类器都是相互独立的(即误差是不相关的),则在超过一半的基分类器预测错误组合分类器才会作出错误预测。这种情况下的组合分类器的误差率: 组合分类器性能优于单个分类器必须满足两个条件:(1)基分类器之间是相互独立的 (2) 基分类器应当
5、好于随机猜测分类器。实践上很难保证基分类器之间完全独立,但是在基分类器轻微相关情况下,组合方法可以提高分类的准确率。2.背景介绍2.1 Boosting方法提出和发展在了解Adaboost方法之前,先了解一下Boosting方法回答一个是与否的问题,随机猜测可以获得50%的正确率。如果一种方法能获得比随机猜测稍微高一点的正确率,则就可以称该得到这个方法的过程为弱学习;如果一个方法可以显著提高猜测的正确率,则称获取该方法的过程为强学习。1994年,Kearns和Valiant证明,在Valiant的PAC(ProbablyApproximatelyCorrect)模型中,只要数据足够多,就可以将
6、弱学习算法通过集成的方式提高到任意精度。实际上,1990年,SChapire就首先构造出一种多项式级的算法,将弱学习算法提升为强学习算法,就是最初的Boosting算法。Boosting意思为提升、加强,现在一般指将弱学习提升为强学习的一类算法。1993年,Drucker和Schapire首次以神经网络作为弱学习器,利用Boosting算法解决实际问题。前面指出,将弱学习算法通过集成的方式提高到任意精度,是Kearns和Valiant在1994年才证明的,虽然Boosting方法在1990年已经提出,但它的真正成熟,也是在1994年之后才开始的。1995年,Freund提出了一种效率更高的Bo
7、osting算法。2.2 AdaBoost算法的提出AdaBoost算法是Freund和Schapire根据在线分配算法提出的,他们详细分析了AdaBoost算法错误率的上界,以及为了使强分类器达到错误率,算法所需要的最多迭代次数等相关问题。与Boosting算法不同的是,adaBoost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力。 Adaboost是一种基于级联分类模型的分类器。级联分类模型可以用图2-1表示:所有待检测样本 判决为正例样本321 负例样本 图2-1级联分类器介
8、绍:级联分类器就是将多个强分类器连接在一起进行操作。每一个强分类器都由若干个弱分类器加权组成,例如,有些强分类器可能包含10个弱分类器,有些则包含20个弱分类器,一般情况下一个级联用的强分类器包含20个左右的弱分类器,然后在将10个强分类器级联起来,就构成了一个级联强分类器,这个级联强分类器中总共包括200若分类器。因为每一个强分类器对负样本的判别准确度非常高,所以一旦发现检测到的目标位负样本,就不在继续调用下面的强分类器,减少了很多的检测时间。因为一幅图像中待检测的区域很多都是负样本,这样由级联分类器在分类器的初期就抛弃了很多负样本的复杂检测,所以级联分类器的速度是非常快的;只有正样本才会送
9、到下一个强分类器进行再次检验,这样就保证了最后输出的正样本的伪正(falsepositive)的可能性非常低。3.方法 3.1 AdaBoost算法的基本原理Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的
10、训练数据特征,并将关键放在关键的训练数据上面。 AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过T次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。AdaBoost实际具体解决了两个问题:怎么处理训练样本?在AdaBoost中,每个样本都被
11、赋予一个权重。如果某个样本没有被正确分类,它的权重就会被提高,反之则降低。这样,AdaBoost方法将注意力更多地放在“难分”的样本上。怎么合并弱分类器成为一个强分类器?强分类器表示为弱分类器的线性加权和形式,准确率越高的弱学习权重越高。3.2 AdaBoost算法分析 AdaBoost算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据分类能力。 1、先通过对N个训练样本的学习得到第一个弱分类器;2、 讲分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器;3、 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练
12、样本,通过对这个样本的学习得到第三个弱分类器;4、 最终经过提升的强分类器。即某个数据被分为哪一类要通过的多数表决。 具体说来,整个Adaboost 迭代算法就3步:1、 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权重:1/N。2、 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。3、 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大
13、分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。3.3 AdaBoost算法流程1. 给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数;2. 初始化样本权重为1/n ,即为训练样本的初始概率分布;3. 第一次迭代:(1) 训练样本的概率分布相当下,训练弱分类器: (2) 计算弱分类器的错误率: (3) 选取合适阈值,使得错误率最小 (4) 更新样本权重: (5) 最终得到的强分类器。3.4 Ada
14、Boost算法的实现 图3-1图3-1就是Adaboost的结构,最后的分类器YM是由数个弱分类器(weak classifier)组合而成的,相当于最后m个弱分类器来投票决定分类,而且每个弱分类器的“话语权”不一样。 3.5 AdaBoost算法过程1. 初始化所有训练样列的权重为1/N,其中N是样列数2. For m=1,M; A).训练弱分类器ym(),使其最小化权重误差函数(weighted error function): B).计算该弱分类器的话语权: . C).更新权重: 其中Zm: 是规范因子,使所有w的和为1. 3.得到最后的分类器: . 以上过程和AdaBoost算法的结构
15、图一样,前一个分类器改变权重w,同时组成最后的分类器。 - - -+ - -+ + + + 3.6 AdaBoost算法实例图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器来进行分类。 - - - + - + + - + +第一步: - - -+ - -+ + + + 根据分类的正确率,得到一个新的样本分布,一个子分类器 其中画圈的样本表示被分错了。在下面的图中,比较大的“+”表示对该样本做了加权。 算法最开始给了一个均匀分布的D。所以里的每个点的值是0.1。当划分后,有三个点划分错了,根据算法误差表达式。得到误差为分错了的三个点的值之和,所以=(0.1
16、+0.1+0.1)=0.3,而根据表达式可以算出为0.42。然后根据算法把分错的点权值变大。如此迭代,最终完成AdaBoost算法。第二步: - - - + - + - + + + - - - + - + + - + + h2 根据分类的正确率,得到一个新的样本分布,一个子分类器第三步: - - - + - + + - + + h3得到一个子分类器整合所以子分类器: (0.42图一 + 0.65图二 +0.92图三)= - - + - - - + + + + 因此可以得到整合的结果,从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果。4. 实验与结果表4-1为AdaBoost算法对银
17、行客户信息的数据分析。表4-1idagesexregionincomemarriedchildrencarsave_actcurrent_actmortgagepepID1210148FEMALEINNER_CITY17546NO1NONONONOYESID1210240MALETOWN30085.1YES3YESNOYESYESNOID1210351FEMALEINNER_CITY16575.4YES0YESYESYESNONOID1210423FEMALETOWN20375.4YES3NONOYESNONOID1210557FEMALERURAL50576.3YES0NOYESNONONO
18、ID1210657FEMALETOWN37869.6YES2NOYESYESNOYESID1210722MALERURAL8877.07NO0NONOYESNOYESID1210858MALETOWN24946.6YES0YESYESYESNONOID1210937FEMALESUBURBAN25304.3YES2YESNONONONOID1211054MALETOWN24212.1YES2YESYESYESNONOID1211166FEMALETOWN59803.9YES0NOYESYESNONOID1211252FEMALEINNER_CITY26658.8NO0YESYESYESYESN
19、OID1211344FEMALETOWN15735.8YES1NOYESYESYESYESID1211466FEMALETOWN55204.7YES1YESYESYESYESYESID1211536MALERURAL19474.6YES0NOYESYESYESNOID1211638FEMALEINNER_CITY22342.1YES0YESYESYESYESNOID1211737FEMALETOWN17729.8YES2NONONOYESNOID1211846FEMALESUBURBAN41016YES0NOYESNOYESNOID1211962FEMALEINNER_CITY26909.2Y
20、ES0NOYESNONOYESID1212031MALETOWN22522.8YES0YESYESYESNONOID1212161MALEINNER_CITY57880.7YES2NOYESNONOYESID1212250MALETOWN16497.3YES2NOYESYESNONOID1212354MALEINNER_CITY38446.6YES0NOYESYESNONOID1212427FEMALETOWN15538.8NO0YESYESYESYESNOID1212522MALEINNER_CITY12640.3NO2YESYESYESNONOID1212656MALEINNER_CITY
21、41034YES0YESYESYESYESNOID1212745MALEINNER_CITY20809.7YES0NOYESYESYESNOID1212839FEMALETOWN20114YES1NONOYESNOYESID1212939FEMALEINNER_CITY29359.1NO3YESNOYESYESNOID1213061MALERURAL24270.1YES1NONOYESNOYESID1213161FEMALERURAL22942.9YES2NOYESYESNONOID1213220FEMALETOWN16325.8YES2NOYESNONONOID1213345MALESUBU
22、RBAN23443.2YES1YESYESYESNOYESID1213433FEMALEINNER_CITY29921.3NO3YESYESNONONOID1213543MALESUBURBAN37521.9NO0NOYESYESNOYESID1213627FEMALEINNER_CITY19868YES2NOYESYESNONOID1213719MALERURAL10953YES3YESYESYESNONOID1213836FEMALERURAL13381NO0YESNOYESNOYESID1213943FEMALETOWN18504.3YES0YESYESYESNONOID1214066F
23、EMALESUBURBAN25391.5NO2NONOYESNONOID1214155MALETOWN26774.2YES0NONOYESYESYESID1214247FEMALEINNER_CITY26952.6YES0YESNOYESNONOID1214367MALETOWN55716.5NO2YESYESNONOYESID1214432FEMALETOWN27571.5YES0YESNOYESYESNOID1214520MALEINNER_CITY13740NO2YESYESYESYESNOID1214664MALEINNER_CITY52670.6YES2NOYESYESYESYESI
24、D1214750FEMALEINNER_CITY13283.9NO1YESYESYESNOYESID1214829MALEINNER_CITY13106.6NO2NOYESYESYESYESID1214952MALEINNER_CITY39547.8NO2YESNOYESNOYES应用AdaBoost算法,得到以下结果:R1:IF age40 AND sex=MALE THEN car=YESR2:IF income2000 AND sex=MALE THEN marr=noR3:IF income2000 AND sex=MALE THEN marr=noR4:IF marr=NO then
25、 chil=0R5:IF income1500 AND save=no THEN marr=noR6:IF marr=YES AND sex=FEMA THEN save=YES5.结论本文通过AdaBoost算法对银行客户信息的研究,对银行客户资料做了不同角度的分析,同时也总结了AdaBoost算法的优缺点及对AdaBoost算法的思考。1)adaboost是一种有很高精度的分类器2)可以使用各种方法构建子分类器,adaboost算法提供的是框架3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单4)简单,不用做特征筛选5)不用担心overfitting! AdaBoo
26、st算法的核心思想是当分类器对某些样本正确分类时,则减少这些样本的权值;当错误分类时,则增加这些样本的权值,让学习算法在后续的学习中集中对比较难的训练样本进行学习,从而得到一个识别准确率理想的分类器。当训练样本集包含噪音样本和一些罕见的困难样本时,AdaBoost算法的重心将转移到难分类的样本上,即难分类的样本权重会呈指数增长。到这里,也许你已经对adaboost算法有了大致的理解。但是也许你会有个问题,为什么每次迭代都要把分错的点的权值变大呢?这样有什么好处呢?不这样不行吗? 这就是我当时的想法,为什么呢?。然后我仔细一想,也许提高错误点可以让后面的分类器权值更高。然后看了adaboost算
27、法,和我最初的想法很接近,但不全是。 注意到算法最后的表到式为,这里面的a 表示的权值,是由得到的。而a是关于误差的表达式,到这里就可以得到比较清晰的答案了,所有的一切都指向了误差。提高错误点的权值,当下一次分类器再次分错了这些点之后,会提高整体的错误率,这样就导致 a 变的很小,最终导致这个分类器在整个混合分类器的权值变低。也就是说,这个算法让优秀的分类器占整体的权值更高,而挫的分类器权值更低。这个就很符合常理了。最后,我们可以总结下adaboost算法的一些实际可以使用的场景:1)用于二分类或多分类的应用场景2)用于做分类任务的baseline无脑化,简单,不会overfitting,不用
28、调分类器3)用于特征选择(feature selection)4)Boosting框架用于对badcase的修正只需要增加新的分类器,不需要变动原有分类器 5)应用于人脸检测、目标识别等领域。由于adaboost算法是一种实现简单,应用也很简单的算法。Adaboost算法通过组合弱分类器而得到强分类器,同时具有分类错误率上界随着训练增加而稳定下降,不会过拟合等的性质,应该说是一种很适合于在各种分类场景下应用的算法。9参考文献1于玲;吴铁军;集成学习:Boosting算法综述J;模式识别与人工智能;2004年01期2赵江,徐鲁安;基于AdaBoost算法的目标检测J;计算机工程;2004年04期3陈家辉;付忠良;陈腊梅;基于模板匹配的AdaBoost演化算法J;计算机应用;2007年12期4李秋洁;茅耀斌;王执铨;一种基于boosting的不平衡数据分类算法A;中国自动化学会控制理论专业委员会C卷C;2011年5付忠良,关于AdaBoost有效性的分析J;计算机研究与发展,2008,45(10);1747-17556赵秀宽;阳建宏;黎敏;徐金梧;一种改进的不平衡数据集分类方法A;中国科学院地质与地球物理研究所第11届(2011年度)学术年会论文集(下)C;2012年117