1.bootstrap   在原始数据的范围内作有放回的再抽样M个, 样本容量仍为n,原始数据中每个观察单位每次被抽到的概率相等, 为1/n , 所得样本称为Bootstrap样本。于是可得到参数θ的一个估计值θ^(b),这样重复若干次,记为B 。为了可以避免一些误差点对少量树的决策影响。

2.决策树 : 

   信息熵: Ent(D) = - ΣPk*logPk, Ent(D)的值越小,则D的纯度越高
           信息增益: ID3中使用, 存在过拟合的情况,

避免过拟合的方法,1. 通过significant test,用判断成功的概率来判断要不要进行剩下的分类

2. 进行剪枝,去掉该枝还是可以完成正确的分类,就说明该枝没有用

举例说明: 17个西瓜, 8个好瓜, 9个坏西瓜

P1 = 8/17, P2 = 9/17

当前的信息熵 = -(8/17*log(8/17)+9/17*log(9/17))

根据色泽特征(绿色,红色,白色)分成了3类

绿色里面有6个瓜,3个好瓜,3个坏瓜, 红色里面有4个好瓜,2个坏瓜, 白色里面有一个好瓜,4个坏瓜

Ent(D1) = -(3/6*log(3/6) + 3/6*log(3/6))  根据绿色条件分出了6个西瓜,其中3个好瓜,3个坏瓜

Ent(D2) = -(4/6*log(4/6) + 2/6*log(2/6))  根据红色条件分出了6个西瓜,其中4个好瓜,2个坏瓜

Ent(D3) = -(1/5*log(1/5) + 4/5*log(4/5))   根据白色条件分出了5个西瓜,其中1个坏瓜,4个好瓜
                             信息增益率 = 上一次的信息熵 - 当前信息熵

=  -(8/17*log(8/17)+9/17*log(9/17)) - (6/17 * Ent(D1)  + 6/17 * Ent(D2) + 5/17*Ent(D3))  > 0 说明存在信息增益

信息增益率: C4,5

通过进行前后的信息熵的相除

CART算法: 基尼系数, 从两个样本中随机抽取两个样例,其类别标记不一致的概率

Gini(D) = 1 - ΣPk^2

如果是连续值的话,那么进行的就是回归树的分类

多分类  ΣΣPk*logPk

决策树:优势:

- 非黑盒

- 轻松去除无关attribute(Gain=0)

- test 起来很快
                            劣势:

- 只能线性分割数据
                                  - 贪婪算法(可能找不到最好的树)

3. Bagging 表示集群树进行投票,根据票数的结果来统计最终结果

4. Random Forest (随机森林) 在选取有限样本的同时,选取的特征也是有限的,有点像dropout,最后的结果进行投票

5.  Boosting :

1. 先在原始数据集中长出一个Tree,

2 把前一个tree没有完美分类的数据,进行数据权重的重构,让没有分好的数据所占的权重更大

3. 用新的re-weighted tree再训练一个tree

4.最终的分类结果由投票决定

根据前一个树的分类结果,来强化当前的树

6. Adaboost

步骤1 : 首先初始化数据的权重分布,每个训练样本最开始被赋予相同的权值

D1 = (w11, w12, ...., W1n) W1i = 1/n i= 1, 2, ....N

步骤2: 使用权值分布Dm的训练集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器)

步骤3: 计算Gm(x) 在训练数据集上的分类误差率,Wm = 当前分类器的分类误差, 根据错误率对训练数据进行加权

em = ΣWmIGm(xi) != yi

步骤4: 带入上述进行权重加权的em,然后表示当前分类器的受重视程度

am = 1/2log(1-em/em) 当em<1/2 时 am>=0 且am随着em的减小而增大
                      意味着分类误差率越小的基本分类器在最终分类器的作用越大

步骤5:组合各个弱分类器

7.GBDT

Adaboost 的Regreesion版本
        Adaboost的em , 这里可以使用欧式距离或者交叉熵做为错误率判断的方式

把残差做为下一轮的学习目标

c .最终的结果有加权和值得到,不再是简单的多数投票

G(x) = ΣamGm(x)

8. XGboost 本身也是一种GBDT,但是把速度与效率做到了极值

a. 使用L1, L2 Regularization 防止Overfitting, 加入正则化偏质相,使得每次梯度方向都存在一定的偏差,减少局部拟合的情况

L1

w = argminΣ(t(xj) - Σwihi(xj)^2) + λΣwi

L2

w =argminΣ(t(xj) - Σwihi(xj)^2) + λΣwi^2

b. 对代价函数一阶与二阶求导,更快的Converge

c. 树长全后再进行剪枝,防止贪心算法

     

决策树与树集成模型(bootstrap, 决策树(信息熵,信息增益, 信息增益率, 基尼系数),回归树, Bagging, 随机森林, Boosting, Adaboost, GBDT, XGboost)的更多相关文章

  1. 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  2. 机器学习之路:python 集成回归模型 随机森林回归RandomForestRegressor 极端随机森林回归ExtraTreesRegressor GradientBoostingRegressor回归 预测波士顿房价

    python3 学习机器学习api 使用了三种集成回归模型 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.dat ...

  3. 集成方法:渐进梯度回归树GBRT(迭代决策树)

    http://blog.csdn.net/pipisorry/article/details/60776803 单决策树C4.5由于功能太简单.而且非常easy出现过拟合的现象.于是引申出了很多变种决 ...

  4. bootstrap && bagging && 决策树 && 随机森林

    看了一篇介绍这几个概念的文章,整理一点点笔记在这里,原文链接: https://machinelearningmastery.com/bagging-and-random-forest-ensembl ...

  5. 【机器学习】迭代决策树GBRT(渐进梯度回归树)

    一.决策树模型组合 单决策树C4.5由于功能太简单,并且非常容易出现过拟合的现象,于是引申出了许多变种决策树,就是将单决策树进行模型组合,形成多决策树,比较典型的就是迭代决策树GBRT和随机森林RF. ...

  6. 机器学习实战---决策树CART回归树实现

    机器学习实战---决策树CART简介及分类树实现 一:对比分类树 CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方.首先,我 ...

  7. 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)

    http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...

  8. 什么是机器学习的分类算法?【K-近邻算法(KNN)、交叉验证、朴素贝叶斯算法、决策树、随机森林】

    1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类 ...

  9. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

随机推荐

  1. MyBatis Generator配置文件context元素的defaultModelType属性

    MyBatis Generator配置文件context元素的defaultModelType属性 MyBatis Generator配置文件context元素有一个defaultModelType属 ...

  2. css之水平垂直居中方式

    布局中常用到的水平垂直居中问题 作为一个前端开发人员,布局是我们日常工作中解除最多的,而水平垂直居中也必不可少的出现,面试中也经常遇到噢- 一.position:absolute(固定宽高) widt ...

  3. java读取PHP接口数据的实现方法(四)

    PHP文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3 ...

  4. 无法安装64位版本的office因为在您的pc

    无法安装64位版本的office因为在您的pcWindows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Installer\Products\00 ...

  5. POJ 3414 Pots 暴力,bfs 难度:1

    http://poj.org/problem?id=3414 记录瓶子状态,广度优先搜索即可 #include <cstdio> #include <cstring> #inc ...

  6. Python3 循环语句(十)

    Python中的循环语句有 for 和 while. Python循环语句的控制结构图如下所示: while 循环 Python中while语句的一般形式: while 判断条件: 语句 同样需要注意 ...

  7. <NET CLR via c# 第4版>笔记 第6章 类型和成员基础

    6.1 类型的各种成员 6.2 类型的可见性 public 全部可见 internal 程序集内可见(如忽略,默认为internal) 可通过设定友元程序集,允许其它程序集访问该程序集中的所有inte ...

  8. java中可以让程序暂停几秒执行的代码

    //n为毫秒数 try { Thread.sleep ( n ) ; } catch (InterruptedException ie){} try { TimeUnit.SECONDS.sleep( ...

  9. setup factory 9制作VB程序安装包

    setup factory 使用起来很简单你可以如下:1.你把你刚编译出来的exe和相关的资源文件复制到某一空目录下.把exe文件添加到setup factory里之后,在列表里右键,属性里面可以设置 ...

  10. flask第二十五篇——控制语句

    有兴趣的请加船长公众号:自动化测试实战 先和大家强调一个发邮件的问题 # coding: utf-8 import smtplib from email.mime.text import MIMETe ...