机器学习技法总结(五)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 ------------------------------------------- ...
随机推荐
- android 解密工具
androguard. 这个是python写的 安装: pip install androguard
- install mysql at linux
cd /usr/local wget http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm rpm -ivh mysql5 ...
- spring注解开发-IOC
1. @Configuration, @Bean @Configuration该注解就是用来告诉spring这是配置类 @Bean该注解是用来注册一个bean.类型是返回值的类型,ID默认是用方法名作 ...
- python基础(一)—— 核心数据类型
Hello World程序 [root@mysql ~]# python3 Python 3.6.5 (default, Jul 8 2018, 11:41:23) [GCC 4.4.7 20120 ...
- kvm中内存过载使用
与CPU过载使用类似,在KVM中内存也是允许过载使用(over commit)的,KVM能够让分配给客户机的内存总数大于实际可用的物理内存总数. 由于客户机操作系统及其上的应用程序并非一直100%地利 ...
- python基础知识07-函数作用域和匿名函数
1.匿名函数 list(filter(lamda a:a>3,[1,2,3,4,5])) 一般和过滤器一起使用 2.函数的作用域 a = 123 def test(): a = 666 a = ...
- 昨天去面试,这5个Python面试题都被考到了,Python面试题No6
第1题:字符串的拼接–如何高效的拼接两个字符串? 字符串拼接的几种方法 加号 逗号 直接连接 格式化 join 多行字符串拼接() 加号 print('Python' + 'Plus') 逗号 pri ...
- CentOS 7下安装Composer + Laravel
1.wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a+x /usr/local/bi ...
- 慕课网 微信小程序商城构建全栈应用 tp5【总结】
1.异常处理: [代码越抽象,复用性越高] [封装性越好,适应代码变化的能力越强] [] <?php/** * Created by PhpStorm. * User: 14155 * Date ...
- 【Codeforces 449A】Jzzhu and Chocolate
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 设最后行分成了x行,列分成了y列. 那么答案就是floor(n/x)floor(n/y) 然后x+y-2=k //即平均分配x行.y列 我们可 ...