机器学习实战11-adaboost元算法_第1页
机器学习实战11-adaboost元算法_第2页
机器学习实战11-adaboost元算法_第3页
机器学习实战11-adaboost元算法_第4页
机器学习实战11-adaboost元算法_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Machine Perception and Interaction Group (MPIG) .cn 机器学习实战(11)陈洪云MPIG Open Seminar 0183公众号:mpig_robotAdaBoost元算法(下)示例:在一个难数据集上应用Adaboost收集数据:提供的文本文件准备数据:确保类别标签是+1和-1 分析数据:手工检查数据训练算法:在数据上,用adaBoostTrainDS()函数训练出一系列的分类器测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就可以对AdaBoost和Logistics回归的结果进行完全对等的比较使用算法:观察该例子上的错误率自适

2、应数据加载函数def loadDataSet(fileName): numFeat = len(open(fileName).readline().split(t) dataMat = labelMat = fr = open(fileName) for line in fr.readlines(): lineArr = curLine = line.strip().split(t) for i in range(numFeat - 1): lineArr.append(float(curLinei) dataMat.append(lineArr) labelMat.append(float(

3、curLine-1) return dataMat, labelMatdataArr, LabelArr = loadDataSet(horseColicTraining2.txt)weakClassArr, aggClassEst = adaBoostTrainDS(dataArr, LabelArr,40)print(weakClassArr)predictions = adaClassify(dataArr, weakClassArr)errArr = np.mat(np.ones(len(dataArr), 1)print(训练集的错误率:%.3f% % float(errArrpre

4、dictions != np.mat(LabelArr).T.sum() / len(dataArr) * 100)观察测试错误率一栏,就会发现测试错误率在达到了最小值之后又开始上升,这种现象称之为过拟合。表1 不同弱分类器数目情况下的AdaBoost测试和分类错误率非均衡分类问题 非均衡分类问题是指在分类器训练时正例数目和反例数目不相等(相差很大),错分正例和错分反例的代价也不同。实例:检测患疝病的马匹是否存活的系统过滤垃圾邮件系统癌症检测分类性能度量指标分类性能指标:正确率、召回率及ROC曲线一般情况下,都是基于错误率来衡量分类器任务的成功程度,错误率是指在所有测试样例中错分的样例比例。实

5、际上,这样的度量错误掩盖了样例如何被分错的事实。在机器学习中,有一个普遍适用的工具-混淆矩阵(confusion matrix),它可以帮助人们更好的了解分类中的错误。表2 一个三类问题的混淆矩阵表3 一个二类问题的混淆矩阵正确率(Precision):TP/(TP+FP) 表示预测为正例的样本中的真正正例的比例召回率(Recall):TP/(TP+FN) 表示预测为正例的真实正例占所有真实正例的比例。另一个度量标准:ROC曲线(ROC curve),ROC代表接收者操作特征(receiver operating characteristic),最早在二战期间用于构建雷达系统。图1 利用10个

6、单层决策树的AdaBoost马疝病检测系统的ROC曲线 ROC曲线不但可以用于比较分类器,还可以基于成本效益分析来做出决策。对不同的ROC曲线进行比较的一个指标是曲线下的面积(Area Unser the Curve ,AUC),AUC给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察。一个完美分类器的AUC是1 ,而随机猜测的AUC则为0.5def plotROC(predStrengths,classLabels): cur = (1.0,1.0) ySum = 0.0 numPosClas = sum(array(classLabels) = 1.0) yStep = 1/

7、float(numPosClas) xStep = 1/float(len(classLabels)-numPosClas) sortedIndicies = predStrengths.argsort() fig = plt.figure() fig.clf() ax = plt.subplot(111) for index in sortedIndicies.tolist()0: if classLabelsindex = 1.0: delX = 0;delY = yStep; else: delX = xStep;delY = 0; ySum += cur1 ax.plot(cur0,c

8、ur0-delX,cur1,cur1-delY,c = b) cur = (cur0-delX,cur1-delY)ax.plot(0,1,0,1,b-)plt.xlabel(False Positive Rate);plt.ylabel(True Positive Rate)plt.title(ROC curve for Adaboost Horse Colic Detection System)ax.axis(0,1,0,1)plt.show()print the Area Under the Curve is: ,ySum*xStep图2 利用40个单层决策树的AdaBoost马疝病检测

9、系统的ROC曲线基于代价函数的分类器决策控制除了调节分类器的阈值之外,我们还有一些其他可以用于处理非均匀分类代价问题的方法,其中的一种称之为代价敏感的学习(cost-sensitive learning)在分类算法中,有很多方法可以用来引入代价信息AdaBoost中,可以基于代价函数来调整错误向量权重D在朴素贝叶斯中,可以选择具有最小期望代价而不是最大概率的类别作为最后的结果在SVM中,可以在代价函数中对于不同的类别选择不同的参数C处理非均衡问题的数据抽样方法另外一种针对非均衡问题调节分类器 的方法,就是对分类器的训练数据进行改造。这可以通过欠抽样或者过抽样来实现。过抽样意味着复制样例,而欠抽样意味着删除样例。不管采用哪种方式,数据都会从原始形式改造为新形式。抽样过程则可以通过随机抽样或者某个预定方式来实现。本章小结集成方法通过组合多个分类器的分类结果,获得了比简单的单分类器更好的分类结果。有一些利用不同分类器的集成方法,但是本章只介绍了那些同一类分类器的集成方法。多个分类器组合可能会进一步凸显单个分类器的不足,比如过拟合问题。AdaBoost算法:Adaboost以弱学习器作为基分类器,并且输入数据,使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论