这里先再次提出我们利用aggregation获取更好性能的Hypothesis G所涉及的方法:blending,就是在得到g_set之后进行融合;learning呢?就是在线online的获取g并融合。以下就是关于整个aggregation所涉及到的方法总结:

当中Bagging、AdaBoost我们都已经探讨。它们各自是基于uniform(voting / average)和non-uniform(linear)的aggregation type,那么以下就開始介绍一个基于conditional的learning model:decision tree(决策树)。

它实际上是模仿人类的决策过程。在C语言中很常见的if...else...语句就能够看作是很easy的decision tree。看我们怎样利用aggregation进行演进,例如以下图,我们希望internal nodes(内部的决策过程)都要很easy。从入口处将状况进行分开为不同的branch,Gc(x)作为一个独立的Sub-Tree。就是把一颗大Tree。配合上分支条件,分拆为小点的树,实际上就是一个递归结构的定义。tree = (root, sub-trees),root根部告诉我们怎样做branch。

另外对于Decision Tree有些优点和坏处,这里先给出。有一个大致的定位,例如以下图:

那么一个主要的decision tree演算法就应该例如以下:(採用递归的结构)。全部的资料送入作出一个大的树,root。sub-tree,然后再对sub-tree进行分解,一直到sub-tree不能再分。就是碰到了叶子(leaf)后就逐级回传,最后合成大的decision tree。

一个典型的决策树:C&RT:classification and Regression Tree。1)将branch分支为2元树(binary tree)。2)leaf级的hypothesis是g = Ein-optimal constant (常数)。3)内部节点:就直接用decision stump;4)利用全部可能的decision stump来计算其纯度(purity),最大的purity作为终于的decision
stump(branching by purifying)

那么纯度的衡量都有哪些呢?

那么演算法什么时候停止呢?到全部的purity=1时。能够回传一个常数了;或者是全部的xn都一样时。也就说没有了decision stump了。

这样的是叫作强制停止。有个特点:叶子回传的是一个常数。

所以,主要的C&RT算法例如以下。能够非常easy做多类分类。

假设我们将树叶覆盖全部的数据,那么Ein非常有可能就变成0了,这样我们非常可能出现overfitting的现象。那又该如何做呢?对。 regularization!:让叶子节点变得少,就有可能控制模型复杂度。可是我们找全部可能的 tree,这有可能非常多。计算量比較大,那么假设我们利用C&RT得到一个fully-grown tree之后。比方是10个叶子,我们能够依次去掉一片叶子来得到10个砍掉的树,这样来进行Regularization可能是实用的。

如何选择lambda呢?

先讨论一下decision stump的输入特征都有哪些种,这将决定我们怎样利用decision stump进行分割。假设是数字特征,那么非常easy就是简单的decision stump,那么假设特征是categorical features时,能够利用decision subset进行处理。所以C&RT都能够处理。

假设有些特征丢失了,该怎么办呢?我们假设类比人的方法:就是类比。就是说,比方人的身高与体重有一定的关系,weight<50 == height < 150,就这样用替代的特征进行;所以C&RT可以处理丢失的特征;

最后举出一些样例来更加形象的了解Decision Tree这个模型的工作机制,跟AdaBoost-decision stump中的解说类似,相同先从简单的样例入手:

就是逐渐的递归地把树给展开。那么与AdaBoost有和区别呢?

能够非常清楚的看到,Decision Tree是一种有condition的分割,而AdaBoost则是全平面的分割,这样相比着decision tree就会有更加细腻的边界线,可是相比着AdaBoost VC bound的理论上的upper bound的限制,decision tree则没有那么多的理论上的解释,所以须要显式的regularization,而AdaBoost则不须要。

那么再看在复杂样本上的表现吧:

C&RT方法的特点例如以下总结。

不同的decision tree的演算法不同之处可能就是在于怎样regularization即怎样砍树叶子(pruning)。或者某些点上的处理不同而已。

以下可能要做的就是把C&RT算法基于上面的样例进行实现。并于AdaBoost-stump进行对照,以加深对Decision Tree的理论上的理解。

*****************************************************随时学习。随时分享******************************************************

机器学习技法总结(六)Decision Tree Hypothesis的更多相关文章

  1. 机器学习技法:09 Decision Tree

    Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decisi ...

  2. 【机器学习】决策树(Decision Tree) 学习笔记

    [机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...

  3. Coursera台大机器学习技法课程笔记09-Decision Tree

    这是我们已经学到的(除Decision Tree外) 下面是一个典型的decision tree算法,有四个地方需要我们选择: 接着介绍了一个CART算法:通过decision stump分成两类,衡 ...

  4. Python机器学习算法 — 决策树(Decision Tree)

    决策树 -- 简介         决策树(decision tree)一般都是自上而下的来生成的.每个决策或事件(即自然状态)都可能引出两个或多个事件,导致不同的结果,把这种决策分支画成图形很像一棵 ...

  5. 机器学习技法笔记:09 Decision Tree

    Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decisi ...

  6. 机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation

    本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voti ...

  7. 【Decision Tree】林轩田机器学习技法

    首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...

  8. 机器学习技法:11 Gradient Boosted Decision Tree

    Roadmap Adaptive Boosted Decision Tree Optimization View of AdaBoost Gradient Boosting Summary of Ag ...

  9. 机器学习技法笔记:11 Gradient Boosted Decision Tree

    Roadmap Adaptive Boosted Decision Tree Optimization View of AdaBoost Gradient Boosting Summary of Ag ...

随机推荐

  1. LeetCode(125) Valid Palindrome

    题目 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ign ...

  2. Repo command reference

    Repo command reference In this document init sync upload diff download forall prune start status Rep ...

  3. Java web 服务启动时Xss溢出异常处理笔记

    本文来自网易云社区 作者:王飞 错误日志 错误日志要仔细看,第一行不一定就是关键点,这个错误出现的时候,比较靠后,其中关键行就是下面这句. Caused by: java.lang.IllegalSt ...

  4. Wp8无广告 锁屏可以持续用的手电筒

    前面的博文写了怎么实现手电筒,界面不够漂亮 我修改了界面之后 提交到了微软的App商店 在这里送上下载地址: http://www.windowsphone.com/zh-cn/store/app/% ...

  5. python基础-对象

    1. 对象:一组数据和操作数据方法的集合 >>> class Person(object): ...     def __init__(self,name): ...         ...

  6. 【bzoj3123】[Sdoi2013]森林 倍增LCA+主席树+启发式合并

    题目描述 输入 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负 ...

  7. POJ 2888 Magic Bracelet ——Burnside引理

    [题目分析] 同样是Burnside引理.但是有几种颜色是不能放在一起的. 所以DP就好了. 然后T掉 所以矩阵乘法就好了. 然后T掉 所以取模取的少一些,矩阵乘法里的取模尤其要注意,就可以了. A掉 ...

  8. [BZOJ2393] Cirno的完美算数教室(dfs+容斥原理)

    传送门 先通过dfs预处理出来所有只有2和9的数,也就大概2000多个. 想在[L,R]中找到是这些数的倍数的数,可以通过容斥原理 那么如果a % b == 0,那么便可以把 a 去掉,因为 b 的倍 ...

  9. [BZOJ4993||4990] [Usaco2017 Feb]Why Did the Cow Cross the Road II(DP + 线段树)

    传送门 f[i][j]表示当前第i个,且最后一个位置连接到j 第一维可以省去,能连边的点可以预处理出来,dp可以用线段树优化 #include <cstdio> #include < ...

  10. BZOJ 3749: [POI2015]Łasuchy【动态规划】

    Description 圆桌上摆放着n份食物,围成一圈,第i份食物所含热量为c[i]. 相邻两份食物之间坐着一个人,共有n个人.每个人有两种选择,吃自己左边或者右边的食物.如果两个人选择了同一份食物, ...