收藏 分销(赏)

学位论文—基于adaboost算法的银行客户数据分析dm课程.doc

上传人:可**** 文档编号:9901757 上传时间:2025-04-12 格式:DOC 页数:13 大小:307.50KB
下载 相关 举报
学位论文—基于adaboost算法的银行客户数据分析dm课程.doc_第1页
第1页 / 共13页
学位论文—基于adaboost算法的银行客户数据分析dm课程.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
山东财经大学 金融数据挖掘课程论文 题目:基于Adaboost算法的银行客户数据分析 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 计算机科学与技术1201班 学 号 201218441442 姓 名 王 健 山东财经大学教务处制 二O一四年 十二 月 1 山东财经大学学士学位论文 基于Adaboost算法的银行客户数据分析 摘 要 分类是一种重要的数据分析形式,它提取刻画重要数据类的模型。这种模型称为分类器,预测分类的(离散的,无序的)类标号。在机器学习中,对分类器的分类进行准确性评估是一个基本问题。我们以此来确定分类器是否可以运用到实际的分类中。组合分类器是一个复合模型,由多个分类器组合而成。组合分类器基于投票返回类标号预测。组合分类器往往比它的成员分类器更准确。传统的学习模型假定数据类是良分布的。然而在现实世界的许多领域中,数据是类不平衡的,其中感兴趣的主类只有少量元祖。这称为类不平衡问题。我们还研究提高类不平衡数据分类准确率的技术。。我们将Adaboost算法应用于银行客户数据分析,分析结果表明,该算法运行可靠。本文最后对Adaboost算法的优缺点进行了总结。 关键词:银行信息;AdaBoost;组合分类 1.引言 1.1组合分类方法简介 袋装、提升和随机森林都是组合分类方法的列子。组合分类把k个学习得到的模型(或基分类器)M1,M2,······Mk组合在一起,旨在创建一个改建的复合分类模型M*。使用给定的数据集D创建k个训练集D1,D2,······,Dk,其中Di用于创建分类器Mi。给定一个待分类的新数据元祖,每个基分类器通过返回类预测投票。组合分类器基于基分类器的投票返回类预测。 组合分类器往往比它的基分类器。列如,考虑一个进行多数表决的组合分类器。也就是说,给定一个待分类元祖X,它收集由基分类器返回的类标号预测,并输入占多数的类。基分类器可能出错时,但是仅当超过一半的基分类器出错时,组合分类器才会误分类X,当模型之间存在显著差异时,组合分类器产生更好的结果。也就说,理想的,基分类器之间几乎不相关。基分类器还应该优于随机预测。 1.2组合分类方法 我们分类中用到很多经典分类算法如:SVM、logistic 等,我们很自然的想到一个方法,我们是否能够整合多个算法优势到解决某一个特定分类问题中去,答案是肯定的! 通过聚合多个分类器的预测来提高分类的准确率。这种技术称为组合方法(ensemble method) 。组合方法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行权重控制来进行分类。 考虑25个二元分类组合,每个分类误差是0.35 ,如果所有基分类器都是相互独立的(即误差是不相关的),则在超过一半的基分类器预测错误组合分类器才会作出错误预测。这种情况下的组合分类器的误差率: 组合分类器性能优于单个分类器必须满足两个条件:(1)基分类器之间是相互独立的 (2) 基分类器应当好于随机猜测分类器。实践上很难保证基分类器之间完全独立,但是在基分类器轻微相关情况下,组合方法可以提高分类的准确率。 2.背景介绍 2.1 Boosting方法提出和发展 在了解Adaboost方法之前,先了解一下Boosting方法 回答一个是与否的问题,随机猜测可以获得50%的正确率。如果一种方法能获得比随机猜测稍微高一点的正确率,则就可以称该得到这个方法的过程为弱学习;如果一个方法可以显著提高猜测的正确率,则称获取该方法的过程为强学习。1994年,Kearns和Valiant证明,在Valiant的PAC(Probably  ApproximatelyCorrect)模型中,只要数据足够多,就可以将弱学习算法通过集成的方式提高到任意精度。实际上,1990年,SChapire就首先构造出一种多项式级的算法,将弱学习算法提升为强学习算法,就是最初的Boosting算法。Boosting意思为提升、加强,现在一般指将弱学习提升为强学习的一类算法。1993年,Drucker和Schapire首次以神经网络作为弱学习器,利用Boosting算法解决实际问题。前面指出,将弱学习算法通过集成的方式提高到任意精度,是Kearns和Valiant在1994年才证明 的,虽然Boosting方法在1990年已经提出,但它的真正成熟,也是在1994年之后才开始的。1995年,Freund提出了一种效率更高的Boosting算法。 2.2 AdaBoost算法的提出 AdaBoost算法是Freund和Schapire根据在线分配算法提出的,他们详细分析了AdaBoost算法错误率的上界,以及为了使强分类器达到错误率,算法所需要的最多迭代次数等相关问题。与Boosting算法不同的是,adaBoost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力。 Adaboost是一种基于级联分类模型的分类器。级联分类模型可以用图2-1表示: 所有待检测样本 判决为正例样本 3 2 1 负例样本 图2-1 级联分类器介绍:级联分类器就是将多个强分类器连接在一起进行操作。每一个强分类器都由若干个弱分类器加权组成,例如,有些强分类器可能包含10个弱分类器,有些则包含20个弱分类器,一般情况下一个级联用的强分类器包含20个左右的弱分类器,然后在将10个强分类器级联起来,就构成了一个级联强分类器,这个级联强分类器中总共包括200若分类器。因为每一个强分类器对负样本的判别准确度非常高,所以一旦发现检测到的目标位负样本,就不在继续调用下面的强分类器,减少了很多的检测时间。因为一幅图像中待检测的区域很多都是负样本,这样由级联分类器在分类器的初期就抛弃了很多负样本的复杂检测,所以级联分类器的速度是非常快的;只有正样本才会送到下一个强分类器进行再次检验,这样就保证了最后输出的正样本的伪正(false positive)的可能性非常低。 3.方法 3.1 AdaBoost算法的基本原理 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把 这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。 AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中 n 为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过 T 次循环,得到 T 个弱分类器,把这 T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。 AdaBoost实际具体解决了两个问题: 怎么处理训练样本? 在AdaBoost中,每个样本都被赋予一个权重。如果某个样本没有被正确分类,它的权重就会被提高,反之则降低。这样,AdaBoost方法将注意力更多地放在“难分”的样本上。 怎么合并弱分类器成为一个强分类器? 强分类器表示为弱分类器的线性加权和形式,准确率越高的弱学习权重越高。 3.2 AdaBoost算法分析 AdaBoost算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据分类能力。 1、先通过对N个训练样本的学习得到第一个弱分类器; 2、 讲分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器; 3、 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器; 4、 最终经过提升的强分类器。即某个数据被分为哪一类要通过······的多数表决。 具体说来,整个Adaboost 迭代算法就3步: 1、 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权重:1/N。 2、 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。 3、 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。 3.3 AdaBoost算法流程 1. 给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数; 2. 初始化样本权重为1/n ,即为训练样本的初始概率分布; 3. 第一次迭代:  (1) 训练样本的概率分布相当下,训练弱分类器:   (2) 计算弱分类器的错误率: (3) 选取合适阈值,使得错误率最小 (4) 更新样本权重: (5) 最终得到的强分类器。 3.4 AdaBoost算法的实现 ···· ···· 图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算法的结构图一样,前一个分类器改变权重w,同时组成最后的分类器。 - - - + - - + + + + 3.6 AdaBoost算法实例 图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器来进行分类。 - - - + - + + - + + 第一步: - - - + - - + + + + 根据分类的正确率,得到一个新的样本分布,一个子分类器 其中画圈的样本表示被分错了。在下面的图中,比较大的“+”表示对该样本做了加权。 算法最开始给了一个均匀分布的D。所以里的每个点的值是0.1。当划分后,有三个点划分错了,根据算法误差表达式。得到误差为分错了的三个点的值之和,所以=(0.1+0.1+0.1)=0.3,而根据表达式可以算出为0.42。然后根据算法把分错的点权值变大。如此迭代,最终完成AdaBoost算法。 第二步: - - - + - + - + + + - - - + - + + - + + h2 根据分类的正确率,得到一个新的样本分布,一个子分类器 第三步: - - - + - + + - + + h3 得到一个子分类器 整合所以子分类器: (0.42图一 + 0.65图二 +0.92图三)= - - + - - - + + + + 因此可以得到整合的结果,从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果。 4. 实验与结果 表4-1为AdaBoost算法对银行客户信息的数据分析。 表4-1 id age sex region income married children car save_act current_act mortgage pep ID12101 48 FEMALE INNER_CITY 17546 NO 1 NO NO NO NO YES ID12102 40 MALE TOWN 30085.1 YES 3 YES NO YES YES NO ID12103 51 FEMALE INNER_CITY 16575.4 YES 0 YES YES YES NO NO ID12104 23 FEMALE TOWN 20375.4 YES 3 NO NO YES NO NO ID12105 57 FEMALE RURAL 50576.3 YES 0 NO YES NO NO NO ID12106 57 FEMALE TOWN 37869.6 YES 2 NO YES YES NO YES ID12107 22 MALE RURAL 8877.07 NO 0 NO NO YES NO YES ID12108 58 MALE TOWN 24946.6 YES 0 YES YES YES NO NO ID12109 37 FEMALE SUBURBAN 25304.3 YES 2 YES NO NO NO NO ID12110 54 MALE TOWN 24212.1 YES 2 YES YES YES NO NO ID12111 66 FEMALE TOWN 59803.9 YES 0 NO YES YES NO NO ID12112 52 FEMALE INNER_CITY 26658.8 NO 0 YES YES YES YES NO ID12113 44 FEMALE TOWN 15735.8 YES 1 NO YES YES YES YES ID12114 66 FEMALE TOWN 55204.7 YES 1 YES YES YES YES YES ID12115 36 MALE RURAL 19474.6 YES 0 NO YES YES YES NO ID12116 38 FEMALE INNER_CITY 22342.1 YES 0 YES YES YES YES NO ID12117 37 FEMALE TOWN 17729.8 YES 2 NO NO NO YES NO ID12118 46 FEMALE SUBURBAN 41016 YES 0 NO YES NO YES NO ID12119 62 FEMALE INNER_CITY 26909.2 YES 0 NO YES NO NO YES ID12120 31 MALE TOWN 22522.8 YES 0 YES YES YES NO NO ID12121 61 MALE INNER_CITY 57880.7 YES 2 NO YES NO NO YES ID12122 50 MALE TOWN 16497.3 YES 2 NO YES YES NO NO ID12123 54 MALE INNER_CITY 38446.6 YES 0 NO YES YES NO NO ID12124 27 FEMALE TOWN 15538.8 NO 0 YES YES YES YES NO ID12125 22 MALE INNER_CITY 12640.3 NO 2 YES YES YES NO NO ID12126 56 MALE INNER_CITY 41034 YES 0 YES YES YES YES NO ID12127 45 MALE INNER_CITY 20809.7 YES 0 NO YES YES YES NO ID12128 39 FEMALE TOWN 20114 YES 1 NO NO YES NO YES ID12129 39 FEMALE INNER_CITY 29359.1 NO 3 YES NO YES YES NO ID12130 61 MALE RURAL 24270.1 YES 1 NO NO YES NO YES ID12131 61 FEMALE RURAL 22942.9 YES 2 NO YES YES NO NO ID12132 20 FEMALE TOWN 16325.8 YES 2 NO YES NO NO NO ID12133 45 MALE SUBURBAN 23443.2 YES 1 YES YES YES NO YES ID12134 33 FEMALE INNER_CITY 29921.3 NO 3 YES YES NO NO NO ID12135 43 MALE SUBURBAN 37521.9 NO 0 NO YES YES NO YES ID12136 27 FEMALE INNER_CITY 19868 YES 2 NO YES YES NO NO ID12137 19 MALE RURAL 10953 YES 3 YES YES YES NO NO ID12138 36 FEMALE RURAL 13381 NO 0 YES NO YES NO YES ID12139 43 FEMALE TOWN 18504.3 YES 0 YES YES YES NO NO ID12140 66 FEMALE SUBURBAN 25391.5 NO 2 NO NO YES NO NO ID12141 55 MALE TOWN 26774.2 YES 0 NO NO YES YES YES ID12142 47 FEMALE INNER_CITY 26952.6 YES 0 YES NO YES NO NO ID12143 67 MALE TOWN 55716.5 NO 2 YES YES NO NO YES ID12144 32 FEMALE TOWN 27571.5 YES 0 YES NO YES YES NO ID12145 20 MALE INNER_CITY 13740 NO 2 YES YES YES YES NO ID12146 64 MALE INNER_CITY 52670.6 YES 2 NO YES YES YES YES ID12147 50 FEMALE INNER_CITY 13283.9 NO 1 YES YES YES NO YES ID12148 29 MALE INNER_CITY 13106.6 NO 2 NO YES YES YES YES ID12149 52 MALE INNER_CITY 39547.8 NO 2 YES NO YES NO YES 应用AdaBoost算法,得到以下结果: R1:IF age>40 AND sex=MALE THEN car=YES R2:IF income<2000 AND sex=MALE THEN marr=no R3:IF income<2000 AND sex=MALE THEN marr=no R4:IF marr=NO then chil=0 R5:IF income<1500 AND save=no THEN marr=no R6:IF marr=YES AND sex=FEMA THEN save=YES 5.结论 本文通过AdaBoost算法对银行客户信息的研究,对银行客户资料做了不同角度的分析,同时也总结了AdaBoost算法的优缺点及对AdaBoost算法的思考。 1)adaboost是一种有很高精度的分类器 2)可以使用各种方法构建子分类器,adaboost算法提供的是框架 3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单 4)简单,不用做特征筛选 5)不用担心overfitting! AdaBoost算法的核心思想是当分类器对某些样本正确分类时,则减少这些样本的权值;当错误分类时,则增加这些样本的权值,让学习算法在后续的学习中集中对比较难的训练样本进行学习,从而得到一个识别准确率理想的分类器。当训练样本集包含噪音样本和一些罕见的困难样本时,AdaBoost算法的重心将转移到难分类的样本上,即难分类的样本权重会呈指数增长。 到这里,也许你已经对adaboost算法有了大致的理解。但是也许你会有个问题,为什么每次迭代都要把分错的点的权值变大呢?这样有什么好处呢?不这样不行吗? 这就是我当时的想法,为什么呢?。然后我仔细一想,也许提高错误点可以让后面的分类器权值更高。然后看了adaboost算法,和我最初的想法很接近,但不全是。 注意到算法最后的表到式为,这里面的a 表示的权值,是由得到的。而a是关于误差的表达式,到这里就可以得到比较清晰的答案了,所有的一切都指向了误差。提高错误点的权值,当下一次分类器再次分错了这些点之后,会提高整体的错误率,这样就导致 a 变的很小,最终导致这个分类器在整个混合分类器的权值变低。也就是说,这个算法让优秀的分类器占整体的权值更高,而挫的分类器权值更低。这个就很符合常理了。 最后,我们可以总结下adaboost算法的一些实际可以使用的场景:   1)用于二分类或多分类的应用场景   2)用于做分类任务的baseline无脑化,简单,不会overfitting,不用调分类器   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-1755 [6][赵秀宽;阳建宏;黎敏;徐金梧;;一种改进的不平衡数据集分类方法[A];中国科学院地质与地球物理研究所第11届(2011年度)学术年会论文集(下)[C];2012年 11 7
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服