Decision Tree算法的思路是,将原始问题不断递归地细分为子问题,直到子问题直接可获得答案为止。在模型训练的过程中,根据训练集去做树的生长(Grow the tree),生长所有可能的Branches,最终达到叶子节点(leaf nodes)。在预测过程中,则遍历树枝,去寻找和预测目标最相近的叶子。

构建决策树模型:

而在构建过程中的主要问题是,选择数据集的哪个feature来做分割。这里用到了Greedy Search。形象地说,每走一步,都选择当前情况下最好的路径,而不管下一步如何或几步之后如何。那么,定义什么是“最好”,有三个标准:ID3,C4.5和Gini index。

ID3:计算信息增益(Information Gain),即分割前后熵值的差,差值越大,则我们在分割过程中,获得的信息量就越大:

Entropy of the target datase:

Information Gain by a split:

C4.5:和ID3相似,但采取的是信息增益率(Information Gain Ratio),避免了通过将数据集分割为无限多个从而获得最大信息增益的极限情况:

切割信息量(feature_A将集合S分割为若干个sj):

信息增益率=信息增益/切割信息量

在ID3和C4.5算法中,构建树时需要选择Information Gain或Gain Ratio最大的feature.

CART:与前面两种算法不同,CART计算的是Gini系数。Gini如果为0,说明集合纯净,Gini大则说明集合离散度高。所以我们选择,使Gini系数最小的feature来生成枝叶。同时,在算法比较中,Gini算法没有logrithm的存在,计算速度会更快:

选择ID3, C4.5和CART中的一个标准来递归的生成树,即可完成建模。

利用决策树做预测:

在预测时,根据target example的feature取值,在现有决策树的枝叶路径中搜寻最匹配的路径。如果存在相同的路径,perfect!直接找出输出值。如果不存在,卡在了某个分叉路口,那么就对该分岔路口下的所有节点进行投票,来取得最大可能性的输出值。

问题思考:

如果我的Training Set足够大,同时其多样性也足够,那么在训练过程中生成的决策树就会枝叶茂盛、十分复杂。同时带来的问题就是,过于细枝末节的决策树,会完美拟合训练集,但对于测试集的预测会大打折扣。这是典型的Overfitting,这时就要对决策树进行修剪,具体原理请见下篇博文。

Decision Tree Algorithm的更多相关文章

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

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

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

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

  3. Decision Tree

    Decision Tree builds classification or regression models in the form of a tree structure. It break d ...

  4. Spark MLlib - Decision Tree源码分析

    http://spark.apache.org/docs/latest/mllib-decision-tree.html 以决策树作为开始,因为简单,而且也比较容易用到,当前的boosting或ran ...

  5. Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较

    DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...

  6. OpenCV码源笔记——Decision Tree决策树

    来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以 ...

  7. (转)Decision Tree

    Decision Tree:Analysis 大家有没有玩过猜猜看(Twenty Questions)的游戏?我在心里想一件物体,你可以用一些问题来确定我心里想的这个物体:如是不是植物?是否会飞?能游 ...

  8. CART分类与回归树与GBDT(Gradient Boost Decision Tree)

    一.CART分类与回归树 资料转载: http://dataunion.org/5771.html        Classification And Regression Tree(CART)是决策 ...

  9. [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)

    [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...

随机推荐

  1. INPUT输入子系统——按键

    一.什么是input输入子系统? 1.1. Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型.不同原理.不同的 ...

  2. VINS 估计器之外参初始化

    为何初始化外参 当外参完全不知道的时候,VINS也可以在线对其进行估计(rotation),先在processImage内进行初步估计,然后在后续优化时,会在optimize函数中再次优化. 如何初始 ...

  3. Untiy3D学习笔记记录

    一,原点和中心点 pivot(原点):位置移动的点(模型的原点不会发生变化) center(中心点):计算模型的中心,会发现变化(比如有两个cube,他的中心点会计算在两个模型的中间) 二,prefa ...

  4. Sql 使用游标

    DECLARE data_cursor CURSOR FOR WITH T0 AS ( SELECT COUNT(f.DeptID) SubmitCount , f.DeptID FROM biz.F ...

  5. MongoDB的应用

    一.MongoDB后台管理 # ./mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoD ...

  6. [NOIP2009]最优贸易(图论)

    [NOIP2009]最优贸易 题目描述 CC 国有 \(n\) 个大城市和 \(m\) 条道路,每条道路连接这 \(n\) 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 \(m\ ...

  7. 浅谈ContextLoaderListener及其上下文与DispatcherServlet的区别

    一般在使用SpingMVC开发的项目中,一般都会在web.xml文件中配置ContextLoaderListener监听器,如下: <listener> <listener-clas ...

  8. Flutter-Boxdecoration邊框線, 圓角

    decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border( top: BorderSide( ...

  9. 测试tensorflowgpu版本是否可用

    输入一下代码即可 import tensorflow as tf print(tf.test.is_gpu_available())

  10. 两个list 合并后去除掉重复removeAll()的,然后再随机获取最后list中的 几个值

    public static void test1(){ String s1="1,2,5,3,6,9"; String n1[]=s1.split(","); ...