机器学习技法总结(五)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 ------------------------------------------- ...
随机推荐
- Linux test命令
test命令 长格式的例子: test "$A" == "$B" && echo "Strings are equal" t ...
- JSP菜鸟之困
我一直想把java一套系统学好... 之前寒假学了android......feel good 大四又把jsp补习了一边.....85 但是苦于没有做过实例..... 暑假学PS之间想恶补一下jsp. ...
- CTO俱乐部官方群聊-探讨创业和跳槽
今天,CTO俱乐部官方群,有交流,若干活跃分子探讨了创业和跳槽等相关话题. 感觉质量很不错,就整理了下. 老徐 17:02:00 跳来跳去也不是长久之计,除了涨点工资 张苗苗 17:02:46 ...
- ES6(函数新增特性)
ES6(函数新增特性) 1.函数参数默认值 没有 y 时,默认就是world 有 y 时,输出值即可 (错误) (C有默认值,正确) 默认值后面不能再有没有默认值的变量 2.作用域 y 取其前面的 x ...
- 3. express 框架使用 vue框架 weiUI
express 1. 安装 npm install express --save 2. 创建项目 vue js 安装Vuejs vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue- ...
- 基于 WPF + Modern UI 的 公司OA小助手 开发总结
前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会发现自己的不足. 公司每天都要在OA系统上上班点击签到,下班点击签退 ...
- cherrypy入门
主要是一个简单的cherrypy hello例子 import cherrypy from jinja2 import Environment, FileSystemLoader import os ...
- $config['base_url'] BASE_URL
/*|------------------------------------------------| Base Site URL|--------------------------------- ...
- Jmeter用于接口测试中,关联如何实现
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...
- @locked_cached_property ---flask.helpers模块
源码: class locked_cached_property(object): """A decorator that converts a function int ...