机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树
上一讲主要利用不同模型计算出来的g。採用aggregation来实现更好的g。假设还没有做出来g。我们能够採用bootstrap的方法来做出一系列的“diversity”的data出来。然后训练出一系列的g。比方PLA来说,尽管模型一样,就是直线对二维平面的切割,模型都为直线,那么我们利用bootstrap来做出不同的数据,然后计算出不同的g,然后融合后就能够得到非常好的效果。或者也能够通过调整PLA的初始值来训练,得到一堆g,最后融合(parameter diversity,random initial。。。
)
以下主要讲一下一个更加强的机器学习的技法:Adaptive boosting。
以下以老师教小孩认识苹果的过程,将标识苹果的特征(形状(圆的),颜色(红的、绿的)。。
。
。
等等),一个同学说苹果形状是如何,还有一个同学说苹果颜色是如何,然后还有其它同学说苹果还有其它特征,就这样一次次的给苹果添加特征,然后联合起来就能让同学们都能非常好的认出苹果了(苹果的概念就非常丰富了)。
先从bootsrapping開始引入adaptive boosting,利用bootstrap来生成u,然后就比較像是Re-weighting process,用来优化Re-Weight Ein_u(h)为最小。
pic3
就是小u相应着data中数据点被抽样的次数,怎样得到g(t)与g(t+1)是有差异的呢?调整这个u(weight)来使得得到的g(t)在下一轮表现非常不好。这样g(t+1)就与g(t) diversity了。
做出u(t+1)在g(t)上的加权error大致等于掷硬币的概率0.5就好了。
在数学上仅仅须要让犯错误的u之和与没有犯错的u之和相等就能够得到0.5。处理方法:将错误的点乘以对的比率。让正确的点乘以错的比率,例如以下图所看到的:
在数学上。通过将factor规则化,scale up incorrect , scale down correct(有点类似PLA,对错误放大,然后进行调整,就像老师教学生认识苹果一样,贾同学说了苹果是圆形的,可是他在橘子上犯错了,那就放大苹果与橘子的区别,对颜色。通过颜色分别,加强对苹果认识)例如以下所看到的:
我们通过bootstrap中不同的u得到了一系列小g。那么u的更新过程就例如以下图来进行。最后将小g合并得到非常好的非常强非常丰富的G。
能够利用线性aggregation的方法来融合全部的g。得到G。
所以,这个线性的权重怎样衡量呢?我们能够用g的表现性能来进行决定alpha。算法设计的时候,用来衡量的话採用了ln()来做,当推断的概率为0.5时。就像是掷硬币一样。这样权重计算就为0,我们不选这种没用的g,当犯错误的概率为0时,计算出的权重为无穷大,这样也是合理的啊。
这样从理论上分析一下。Adaboost有何优点呢?我们知道VC bound来进行,仅仅要我们得到的小g比乱猜做的好一点。通过逐步的(AdaBoost + 演算法)。我们就能够在T=O(log(N))次的逐步演进就能够得到Ein(G)=0,同一时候依据VC bound 我们能够看出upper bound也非常小,即Eout也能保证非常小,从而实现比較好的性能。
所以。我们仅仅须要一个可以比乱猜好一点的“weak” base 学习算法A,通过adaboost就行做到最好的G。一个很好的用于adaboost的演算法---decision stump(决策树)。decision stump是利用单一的feature进行切割,二维平面上就是一条条垂直或水平的线。由于它仅仅在一个维度下进行切割。
所以,假设单独的decision stump就是一个比較弱的分类器。那么结合了adaboost呢?以下就给出几个样例
尽管单个decision stump是一个“weak”的分类器,就是说它的分界线是简单的直线,可是通过adaboost,就行拟合、逼近一个很细腻的边界。
边界的拟合过程就是vote的结果,而adaboost的过程,就是通过逐步的放大错误。纠正错误,最后通过vote来实现边界的融合。
从而做出很复杂边界的过程。并且这个过程由于有VC bound的理论指导,在一定程度上可以遏制overfitting,所以Adaboost是一种很有效的方法逐步增强的融合方法,
上面是一个比較简单的sample。那么以下的样例就是比較复杂的边界,你说用decision stump可以做出来sine波的形状吗?以下的结果就说明了这个过程。
它实际上就做出了非线性的拟合过程。AdaBoost-Stump在实际的project应用中就是世界上首个实时人脸识别:
实际上AdaBoost-Stump具备了特征选择的能力。这方面能够联想到deep learning中的一些知识。
回头能够採用opencv利用AdaBoost来对人脸进行识别的程序学习一下。以便更好地掌握AdaBoost在详细的处理中的应用。
机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树的更多相关文章
- 机器学习技法:08 Adaptive Boosting
Roadmap Motivation of Boosting Diversity by Re-weighting Adaptive Boosting Algorithm Adaptive Boosti ...
- Coursera台大机器学习技法课程笔记08-Adaptive Boosting
将分类器组合的过程中,将重点逐渐聚焦于那些被错分的样本点,这种做法背后的数学原因,就是这讲的内容. 在用bootstraping生成g的过程中,由于抽样对不同的g就生成了不同的u,接下来就是不断的调整 ...
- 机器学习技法笔记:Homework #6 AdaBoost&Kernel Ridge Regression相关习题
原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import nump ...
- 机器学习技法笔记:08 Adaptive Boosting
Roadmap Motivation of Boosting Diversity by Re-weighting Adaptive Boosting Algorithm Adaptive Boosti ...
- 机器学习技法-AdaBoost元算法
课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hy ...
- 机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation
本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voti ...
- 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)
http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- 【转载】 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
原文地址: https://www.cnblogs.com/steven-yang/p/5686473.html ------------------------------------------- ...
随机推荐
- window Chrome 下允许跨域访问服务端接口设置
关闭chrome,使用cmd命令进入chrome安装目录cd C:\Program Files (x86)\Google\Chrome\Application 然后使用命令打开chromechrome ...
- Android开发案例 - 淘宝商品详情【转】
http://erehmi.cnblogs.com/ 所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等 ...
- git-忽略文件改动不进行提交
命令:git update-index --assume-unchanged 文件名 作用:忽略文件的改动,但是不加入.gitignore 文件中,这样可以达到仅在本地目录中忽略,不影响其他团队成员的 ...
- vs 2012安装ASP.NET MVC5
VS2012能使用MVC5开发,但VS2012不自带MVC5,需要安装“用于 Visual Studio 2012 的 ASP.NET 和 Web 工具 2013.1” 从下面提供的链接下载安装: h ...
- Angular缺少 FormsModule
虽然 ngModel是一个有效的 Angular 指令,不过它在默认情况下是不可用的. 解决方法: 在根模块引入FormModule import { FormsModule } from '@ang ...
- luogu P2078 朋友
题目背景 小明在A公司工作,小红在B公司工作. 题目描述 这两个公司的员工有一个特点:一个公司的员工都是同性. A公司有N名员工,其中有P对朋友关系.B公司有M名员工,其中有Q对朋友关系.朋友的朋友一 ...
- 深搜DFS
POJ-1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...
- 分分钟钟学会Python - 模块
目录 模块 1 模块基础知识 2 random 返回随机生成的一个实数 3 hashlib 摘要算法模块 Hmac算法 4 time /datetime 时间模块 5 getpass 密码不显示(只能 ...
- LeetCode(66)Plus One
题目 Given a non-negative number represented as an array of digits, plus one to the number. The digits ...
- Eclipse设置反编译插件
有些项目我们想看看引入的包的源码的时候,因为打包好的.class文件的内容我们是看不懂的,但是又懒得去找源码文件的时候,就会用到反编译工具. 步骤: 1.安装反编译插件. 2.设置使用的反编译工具. ...