经过前面对AdaBoost的总结,下面要基于Matlab实现AdaBoost-Stump进行二维平面数据点的分类的实验. 一. 实验原理 参看 http://blog.csdn.net/lg1259156776/article/details/46831191 <boosting:三个臭皮匠赛过诸葛亮,adaptive:逐步(级联)> 二. 实验方法 生成一个可以利用sine线进行分割的数据点样本,然后通过AdaBoost - decision stump对数据点进行学习,最后得出能够将数据点…
Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decision Tree in Action Summary…
上一讲主要利用不同模型计算出来的g.採用aggregation来实现更好的g.假设还没有做出来g.我们能够採用bootstrap的方法来做出一系列的"diversity"的data出来.然后训练出一系列的g.比方PLA来说,尽管模型一样,就是直线对二维平面的切割,模型都为直线,那么我们利用bootstrap来做出不同的数据,然后计算出不同的g,然后融合后就能够得到非常好的效果.或者也能够通过调整PLA的初始值来训练,得到一堆g,最后融合(parameter diversity,rand…
本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voting/average.non-uniform:linear/non-linear和condition的融合形式来获取更好地性能).动态融合方法learning(没有一堆的g set,而是通过online learning获取g,边学习g,变边进行融合,对照于blending中的uniform融合形式…
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      上一节学习支持向量机,感觉公式都太难理解了,弄得我有点头大.只是这一章的Adaboost线比較起来就容易得多. Adaboost是用元算法的思想进行分类的. 什么事元算法的思想呢?就是依据数据集的不同的特征在决定结果时所占的比重来划分数据集.就是要对每一个特征值都构建决策树,而且赋予他们不同的权值,最后集合起来比較.       比方说我们能够通过是否有胡子和身高的高度这两个特征来来决定一…
课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hypothese),构建一个更强大的分类器(hypothese),从而达到"三个臭皮匠赛过诸葛亮"的效果. 例如实际中,可以通过简单的"横""竖"组成比较复杂的模型. 二.样本权重 AdaBoost元算法中有个很重要的概念叫样本权重u. 学习算法A使用…
这里先再次提出我们利用aggregation获取更好性能的Hypothesis G所涉及的方法:blending,就是在得到g_set之后进行融合:learning呢?就是在线online的获取g并融合.以下就是关于整个aggregation所涉及到的方法总结: 当中Bagging.AdaBoost我们都已经探讨.它们各自是基于uniform(voting / average)和non-uniform(linear)的aggregation type,那么以下就開始介绍一个基于condition…
原文地址:http://www.jianshu.com/p/4bc01760ac20 问题描述 程序实现 17-18 # coding: utf-8 import numpy as np import matplotlib.pyplot as plt def sign(n): if(n>0): return 1 else: return -1 def gen_data(): data_X=np.random.uniform(-1,1,(20,1))# [-1,1) data_Y=np.zeros…
Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记,用于学习之后的一些总结. 首先,对于Aggregation模型,其基本思想就是使用不同的 g t 来合成最后的预测模型 G t . 对于合成的方式主要有四种: 方法 数学描述 1. 选择.选择最值得可信的 g t 来当做最终的模型,而这个 gt 可以使用validation set 来进行选择 $$G(x)…
这是我们已经学到的(除Decision Tree外) 下面是一个典型的decision tree算法,有四个地方需要我们选择: 接着介绍了一个CART算法:通过decision stump分成两类,衡量子树的标准是,将数据分成两类后,这两类数据的纯度(purifying). 下面是不纯度的衡量: 最后是什么时候停下来: decision tree可能overfitting,需减小Ein和叶子的数目(表示树的复杂度) 如果缺少某一特征的话,可找一替代特征: 将CART和Adaboost进行对比:A…
将分类器组合的过程中,将重点逐渐聚焦于那些被错分的样本点,这种做法背后的数学原因,就是这讲的内容. 在用bootstraping生成g的过程中,由于抽样对不同的g就生成了不同的u,接下来就是不断的调整u,使得Ein最小. g越不同,通过aggregation,越能得到更好的结果.通过调整u来得到不同的g.如果某个gt,在ut+1时表现的不好,那么gt或与gt很像的hypothesis就 可能不会被选到.因此,可通过调整ut+1来使g不同.那么如何定义g的表现不好呢?如果错误率与丢硬币没什么两样(…
1 对决策树使用adaboost 对决策树使用adaboost时,有以下几个问题: (1)adaboost每次更新的样本权重如何应用到决策树中? 由于我们不知道决策树的err目标是什么,因此通常的方法是根据权重对样本采样,然后给决策树训练,这样我们不需要修改决策树算法本身,样本的权重信息就传进去了. (2)如果处理某个决策树的ε达到0的情况? 达到0时,相应的投票数变为无穷大,因此我们需要对树的强度做限制,使得ε不会为0.通常简单的做法是限制树的高度. 特别的,当树的高度被限制为1时,且不纯度定…
AdaBoost 和 Real Adaboost 总结 AdaBoost Real AdaBoost AdaBoost AdaBoost, Adaptive Boosting(自适应增强), 是一种集成学习算法(ensemble learning),由Yoav Freund 和 Robert Schapire 于1995年提出.其思想是通过多个简单的弱分类器集成一个具有较高准确率的强分类器. 经典AdaBoost算法过程 输入:训练数据,其中分别对应着样本特征和样本标签 输出:最终的强分类器 初…
很早之前就做过一些关于人脸检测和目标检测的课题,一直都没有好好总结出来,趁着这个机会,写个总结,希望所写的内容能给研究同类问题的博友一些见解和启发!!博客里面涉及的公式太繁琐了,直接截图了. 转载请注明出处:http://www.cnblogs.com/adong7639/p/4194307.html 一 人脸检测之问题概述 人脸检测是CV领域的一个经典课题,很多学者对人脸检测做了深入的研究,但真正的分水岭却是在2001年viola等大神发表的那篇经典之作Rapid Object Detecti…
关于boost算法 boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning).其根本思想在于通过多个简单的弱分类器,构建出准确率很高的强分类器,PAC学习理论证实了这一方法的可行性.下面关于几种Boost算法的比较,是基于文章<Additive Logistic Regression a Statistical View of Boosting>整理的. 几种boost算法步骤 通常使用最多…
极其淡腾的一学期终于过去了,暑假打算学下台大的这门机器学习技法. 第一课是对SVM的介绍,虽然之前也学过,但听了一次感觉还是很有收获的.这位博主总结了个大概,具体细节还是 要听课:http://www.cnblogs.com/bourneli/p/4198839.html 这位博主总结的很详细:http://www.cnblogs.com/xbf9xbf/p/4617120.html 这节课提出了一个重要的概念--maxmum margin(它和hinge loss是线性SVM最重要的两个部分)…
(本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 SVM的问题描述 表示为正式的形式,就是: 1.3 推导点到平面的距离 因此,由于约束条件1,距离里面的绝对值可以去掉,原来的最优化问题变为: 1.4 将SVM问题写成更容易解决的形式 由于w和b乘以同样的倍数得到的平面不变.因此我们做一个放缩,规定: 因此问题就变为了: 在这里,我们发现第二个约束条件其实…
(本文内容和图片来自林轩田老师<机器学习技法>) 1. 核技巧引入 如果要用SVM来做非线性的分类,我们采用的方法是将原来的特征空间映射到另一个更高维的空间,在这个更高维的空间做线性的SVM.即: 在这里我们计算这个向量内积有两种方法:一种是对Φ(x)给出明确的定义,分别算出两个高维向量,再做内积:另一种就是利用核函数,直接算出高维的内积.我们以一个例子来看这两种方法,定义一个二次转化: 我们可以直接计算出内积: 可以看出,最后的结果能够用x和x一撇表示出来,这就是一个核函数: 在这里,我们是…
从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是如何分类的,如下图,找到一条线,将两类训练数据点分开即可: PLA的最后的直线可能有很多条,那到底哪条好呢?好坏的标准则是其泛化性能,即在测试数据集上的正确率,如下,下面三条直线都能正确的分开训练数据,那到底哪个好呢?SVM就是解决这个问题的. SVM求解 直觉告诉我们最右的要好一些,因为测试数据的…
1. 决策树(Decision Tree)-决策树原理 2. 决策树(Decision Tree)-ID3.C4.5.CART比较 1. 前言 决策树是一种基本的分类和回归方法.决策树呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程.它可以认为是if-then规则的集合,也可以认为是定义在特征空间和类空间上的条件概率分布.学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型.预测时,对新的数据,利用决策树模型进行分类.决策树学习通常包括三个步骤:特征选择.决策树的生成和决策树的…
1 AdaBoost的推导 首先,直接给出AdaBoost算法的核心思想是:在原数据集上经过取样,来生成不同的弱分类器,最终再把这些弱分类器聚合起来. 关键问题有如下几个: (1)取样怎样用数学方式表达出来: (2)每次取样依据什么准则: (3)最后怎么聚合这些弱分类器. 首先我们看第一个问题,如何表示取样?答案使用原数据集上的加权error. 假设我们对数据集D做的取样如下: 那么我们在新数据集上的01error可以等效为在原数据集上的加权error: 即我们取样相当于确定一组权重μ,对这个加…
原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import numpy as np import matplotlib.pyplot as plt def ReadData(dataFile): with open(dataFile, 'r') as f: lines = f.readlines() data_list = [] for line in lines:…
Roadmap Adaptive Boosted Decision Tree Optimization View of AdaBoost Gradient Boosting Summary of Aggregation Models Summary…
Roadmap Adaptive Boosted Decision Tree Optimization View of AdaBoost Gradient Boosting Summary of Aggregation Models Summary…
将Adaboost和decision tree相结合,需要注意的地主是,训练时adaboost需要改变资料的权重,如何将有权重的资 料和decision tree相结合呢?方法很类似于前面讲过的bagging,通过采样资料来使资料获得不同的权重. 一棵完全的树的权值会无限大,可能出现过拟合.因此需要得到一棵弱分类的树,方法如下: 接下来比较深入的分析adaboost.经过代换,出现了如下惊人的结果: 某个资料的权重正比于投票分数 联系到之前学习的SVM,发现了一个秘密:投票的分数就是某个点到分隔…
决策树decision tree 什么是决策树输入:学习集输出:分类觃则(决策树) 决策树算法概述 70年代后期至80年代初期,Quinlan开发了ID3算法(迭代的二分器)Quinlan改迚了ID3算法,称为C4.5算法1984年,多位统计学家在著名的<Classification and regression tree>书里提出了CART算法ID3和CART几乎同期出现,引起了研究决策树算法的旋风,至今已经有多种算法被提出…
import numpy as np import matplotlib.pyplot as plt def loadSimpData(): dataMat = np.matrix([[1., 2.1], [2., 1.1], [1.3, 1.], [1., 1.], [2., 1.]]) classLabels = [1.0, 1.0, -1.0, -1.0, 1.0] return dataMat, classLabels def showDataSet(dataMat, label): "…
首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所有的弱分类器同时发挥作用 2)Decision Tree是每次根据condition让某个弱分类器发挥作用 林强调了一点,Decision Tree很多套路都是前人的insights,觉得这用好就这样处理了,没有那么完备的理论保证. 从递回的角度,可以这样看Decision Tree: Decisi…
Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decision Tree in Action Summary…
原文地址:https://www.jianshu.com/p/7ff6fd6fc99f 问题描述 程序实现 13-15 # coding:utf-8 # decision_tree.py import numpy as np def ReadData(dataFile): with open(dataFile, 'r') as f: lines = f.readlines() data_list = [] for line in lines: line = line.strip().split(…