本系列是七月算法机器学习课程笔记

文章目录

  • 1 从LR到决策树
  • 1.1 决策树
  • 1.2 决策树的终止条件
    • 1.3 决策树划分依据
    • 1.3.1 信息熵
    • 1.3.2 信息增益
    • 1.3.3 ID3模型
    • 1.3.4 信息增益率
    • 1.3.5 基尼指数
    • 1.3.6 信息熵与基尼指数
    • 1.3.7 连续值属性
  • 2 回归树
    • 2.1 回归树构建方法
  • 3 从决策树到随机森林
    • 3.1 bagging思想
    • 3.2 随机森林

1 从LR到决策树

1.1 决策树

决策树出现是模仿了人类自己做判断的一个过程。
例如一个相亲案例。要考查的数据维度可能有:身高、财富积累、长相、是不是潜力股、品德如何。根据逻辑回归的决策过程是下图这样。计算出的概率高,就去相亲。

但是人做决策可能是下面这样。例如年龄>30,不见。年龄<30,长得丑不见。

这样的决策过程,简单,逻辑清晰,可解释性好。上面的图就是一颗决策树。
每个绿色的节点,称为内部节点,对应于某一个属性。年龄、长相、收入、是否公务员都是属性。
每个分支对应于一种取值。
每个叶子节点对应一种结果。
学习过程:通过对训练样本的分析确定“划分属性”。例如女孩看韩剧,学习哪些属性重要,以及怎么划分。
预测过程:将测试样本从根节点开始,沿着划分属性构成的“判断测试序列”走到叶子节点。

1.2 决策树的终止条件

决策树构建过程中遇到以下三种情况就可以停止构建了。
第一种情况:当前节点包含的样本属于同一类别,无需划分。例如当前节点下所有样本的结果都是相亲。那就无需划分下去了。

第二种情况:当前属性集为空,或者所有样本在所有属性上取值相同,无法划分。例如集合中只有2个样本。一个样本身高=180,长相=帅,结果=相亲;一个样本身高=180,长相=帅,结果=不相亲。所有条件都一样(属性值都相同),但结果不同。这个时候就不划分了。

第三种情况:当前节点包含的样本集合为空,不能划分。

1.3 决策树划分依据

1.3.1 信息熵

信息熵是度量样本集合信息“纯度”的一个指标。例如一个样本集合中全是黑球,一个人伸手拿出一个球是黑球的概率是100%。这就是纯度很高的一种情况。如果样本集合中有100个球,有100种颜色,那拿出一个球是黑球的概率就是1100\dfrac{1}{100}1001​。这就是非常混乱的一种情况。不利于人做出决策。
决策树不断递进的过程是一个信息熵不断较小的过程,因为我们是要做出决策的。

如果样本集合集合中第k类样本的所占比例为pkp_kpk​,那样本信息熵的定义为Ent(D)=−∑k=1∣y∣pk∗log2pkEnt(D)=-\sum_{k=1}^{|y|}p_k*log_2p_kEnt(D)=−∑k=1∣y∣​pk​∗log2​pk​, pk=0,则log2pk=0p_k=0,则log_2p_k=0pk​=0,则log2​pk​=0
Ent(D)越小,样本集合纯度越高。

1.3.2 信息增益

信息增益直接以信息熵计算为基础,计算当前划分对信息熵造成的变化。
离散属性a的取值有a1,a2,a3...aV{a^1,a^2,a^3...a^V}a1,a2,a3...aV
信息增益是以属性a对数据集D进行划分所获得的的信息增益为:Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a)= Ent(D) - \sum_{v=1}^{V}\dfrac{|D^v|}{|D|}Ent(D^v)Gain(D,a)=Ent(D)−∑v=1V​∣D∣∣Dv∣​Ent(Dv)
|D|表示数据集D的样本数量
∣Dv∣|D^v|∣Dv∣表示数据集D中a=ava^vav的样本数量

Ent(Dv)Ent(D^v)Ent(Dv)表示划分后的信息熵
具体例子参考周老师的西瓜书。

1.3.3 ID3模型

根据信息增益选择属性,形成决策树的模型称为ID3
在上面例子中可以用同样的方法计算出其他属性的信息增益。

发现按纹理的信息增益最大。那么就选择纹理这个属性做划分。形成下面这棵树。

接着以每一个节点为一个新的数据集计算其中每个属性的信息增益。以纹理清晰这个节点为例。该结点包含的样例集合 D1 中有编号为 {1,2, 3, 4, 5, 6, 8, 10, 15} 的 9 个样例,可用属性集合为{色泽,根蒂,敲声,脐部7 触感}.基于 D1 计算出各属性的信息增益:
Gain(D1, 色泽) = 0.043; Gain(D1,根蒂) = 0.458; Gain(D1,敲声) = 0.331; Gain(D1,脐部) = 0.458; Gain(D1,触感) = 0.458.
“根蒂”、 “脐部”、 “触感” 3 个属性均取得了最大的信息增益,可任选其中之一作为划分属性。类似这样的继续划分下去,直到遇到上面那三种情况,不再划分。例子的具体信息可以查看西瓜书第四章。

1.3.4 信息增益率

根据信息增益增益率选择属性,形成决策树的模型称为C4.5。
例如在上面例子中,如果将编号作为一个属性。那它可以将每个样本分到不同的桶内,就不能再继续划分下去,但是这种划分显然没有任何意义。怎么避免选择这样的属性呢?使用信息增益率。
信息增益率:Grain_ratio(D,a)=Gain(D,a)IV(a)Grain\_ratio(D,a)=\dfrac{Gain(D,a)}{IV(a)}Grain_ratio(D,a)=IV(a)Gain(D,a)​
IV(a)=−∑v=1V∣Dv∣∣D∣log2∣Dv∣∣D∣IV(a)=-\sum_{v=1}^V\dfrac{|D^v|}{|D|}log_2\dfrac{|D^v|}{|D|}IV(a)=−∑v=1V​∣D∣∣Dv∣​log2​∣D∣∣Dv∣​
IV(a)其实是属性a在数据集上的信息熵。属性a的可能取值越多,IV(a)越大。

ID3 模型会偏好选择属性数目多的属性,C4.5会偏好选择属性数目少的属性。在实际应用中先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

1.3.5 基尼指数

根据基尼指数选择属性,形成决策树的模型称为CART。

Gini(D)=1−∑k=1∣y∣pk2Gini(D)=1-\sum_{k=1}^{|y|}p_k^2Gini(D)=1−∑k=1∣y∣​pk2​

基尼指数反应了从D中随机抽取两个样例,其类别标识不一样的概率。
基尼指数越小,数据集D的纯度越高。
例如样本集中有黑球和白球两种。基尼指数反应了两次取到的球颜色不一样的概率。

属性a的基尼指数:Gini_index(D,a)=∑v=1V∣Dv∣∣D∣Gini(D)Gini\_index(D,a)=\sum_{v=1}^V\dfrac{|D^v|}{|D|}Gini(D)Gini_index(D,a)=∑v=1V​∣D∣∣Dv∣​Gini(D)

在候选属性集中,选择那个划分后基尼指数最小的属性。

1.3.6 信息熵与基尼指数

对函数f(x)=-lnx在x=1处展开一阶泰勒展开,得到f(x)≈1−xf(x)\approx1-xf(x)≈1−x
信息熵 Ent(D)=−∑k=1∣y∣pk∗log2pk≈∑k=1∣y∣pk(1−pk)Ent(D)=-\sum_{k=1}^{|y|}p_k*log_2p_k\approx\sum_{k=1}^{|y|}p_k(1-p_k)Ent(D)=−∑k=1∣y∣​pk​∗log2​pk​≈∑k=1∣y∣​pk​(1−pk​)这个式子和基尼指数是等价的。

也就是说基尼指数和信息熵从数学公式上来讲,约等于。

根据属性选择的标准不同决策树分为三类:ID3、C4.5和CART。

1.3.7 连续值属性

还有一个问题是关于连续值属性的分割问题。
连续属性的取值数量不再有限制。此时需要连续属性离散化。最简单的策略是采用二分法。
给定样本集 D 和连续属性 α,假定 α在 D 上出现了 η个不同的取值,将这些值从小到大进行排序,记为α1α2..,an{α^1 α^2..,a^n}α1α2..,an。对于属性值相邻的两个样本aia^iai和ai+1a^{i+1}ai+1来说,可以选择Ta=ai+ai+12T_a=\dfrac{a^i+a^{i+1}}{2}Ta​=2ai+ai+1​作为分割点。
例如在一个数据集中有4个样本,年龄分别为25,35,21,28。将属性值标在数轴上:21,25,28,35。在第一个和第二个元素之间使用23作为分割点。小于等于23的是一部分,大于23的是一部分。同理,在第二个元素和第三个元素使用26.5作为分割点,在第三个和第四个元素之间用31.5作为分割点。

(以上内容来自西瓜书)。

2 回归树

回归树是决策树用于解决回归类问题的应用。经典案例是用运动员的从业年限和表现,预测运动员的工资。

回归树背后的含义是:
对空间做划分,拿着一把刀垂直于坐标轴砍一刀,将整个平面分为不同的矩形。
例如图中R1={X|Years<4.5} , R2={X|Years>4.5, Hits<117.5},R3={X|Years>4.5,Hits>=117.5}

如果说逻辑回归是产出一条边界完成分类,那么决策树就是拿起一把刀,垂直于坐标轴砍一刀,把平面分成一个一个的小矩形。

2.1 回归树构建方法

把整个空间切分成J个没有重叠的区域R1,R2...RJR_1,R_2...R_JR1​,R2​...RJ​
其中每一个区域RjR_jRj​中的样本都给一样的预测结果:=1n∑j∈Rjyj=\dfrac{1}{n}\sum_{j \in R_j}y_j=n1​∑j∈Rj​​yj​ 也就是区域内所有样本的y值的平均值。

目标函数 RSS=∑j=1J∑i∈Rj(yi−y~)2RSS=\sum_{j=1}^J\sum_{i \in R_j}(y_i-\tilde{y})^2RSS=∑j=1J​∑i∈Rj​​(yi​−y~​)2,要是的RSS最小。
求解最小值的方法是:探索式的递归二分。自顶向下:不断从当前位置把样本切到2个分支中。贪婪:每次选择当前最优切割方法。

如果我把平面一直切,切到最后一个区域只要一个元素,这就发生了过拟合。而且这样的切分毫无意义。

为了防止过拟合,引入正则化项。
Ta{T_a}Ta​是生成树的叶子节点个数。α\alphaα是正则化系数。

3 从决策树到随机森林

过拟合的本质是样本数据中是有噪声的。类比于练习册的答案是有错误的,全部按照答案去学,是不能拿到高分的。

3.1 bagging思想

bagging是每次从样本集中抽取一部分样本进行学习。根据抽取出的样本做学习。

对于t=1,2…T
1)对训练集进行第t次随机采样,共采集m次,得到一个样本量为m的采样集DmD_mDm​
2)用采样集DmD_mDm​训练第m个学习器Gm(x)G_m(x)Gm​(x)。

对于分类场景,则T个学习器投票,票数最多的结果为最终类别。对于回归场景,T个学习器得到的结果进行算数平均得到的值为最终输出结果。

3.2 随机森林

随机森林(random forest)是一种基于树模型的bagging优化版本。不同之处是:
RF选择CART树作为基学习器。
对于t=1,2…T
1)对训练集进行第t次随机采样,共采集m次,得到一个样本量为m的采样集DmD_mDm​
2)用采样集DmD_mDm​训练第m个学习器Gm(x)G_m(x)Gm​(x)。在训练决策树模型节点的时候,选择所有特征中的一部分特征,进行训练,在这些随机选择的特征中选择一个最优的特征来做决策树左右子树划分。

第二课 决策树与随机森林相关推荐

  1. 第八课 决策树和随机森林

    一.决策树原理概述 决策树通过把样本实例从根节点排列到某个叶子节点来对其进行分类. 树上的每个非叶子节点代表对一个属性取值的测试,其分支就代表测试的每个结果:而树上的每个叶子节点均代表一个分类的类别, ...

  2. 十一、决策树和随机森林

    这门课和另一门课内容都差不多,可以参考七.决策树算法和集成算法该篇博文. 一.决策树相关概念 逻辑回归本质 逻辑回归:线性有监督分类模型.常用求解二分类问题,要么是A类别要么是B类别,一般会以0.5作 ...

  3. sklearn分类算法(逻辑回归、朴素贝叶斯、K近邻、支持向量机 、决策树、随机森林 )的使用

    scikit-learn机器学习的分类算法包括逻辑回归.朴素贝叶斯.KNN.支持向量机.决策树和随机森林等.这些模块的调用形式基本一致,训练用fit方法,预测用predict方法.用joblib.du ...

  4. 2.1.决策树和随机森林

    2.1.决策树和随机森林 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用 ...

  5. 如何解读决策树和随机森林的内部工作机制?

    随机森林在过去几年里得到了蓬勃的发展.它是一种非线性的基于树的模型,往往可以得到准确的结果.但是,随机森林的工作过程大都处于黑箱状态,往往难以解读和完全理解.近日,Pivotal Engineerin ...

  6. [机器学习]京东机器学习类图书畅销原因分析-决策树或随机森林

    一. 问题描述 机器学习图书畅销原因分析 二. 分析问题的过程与步骤 1.在京东网站上爬取3000条关于机器学习类书籍的数据. 爬虫代码可以看这里 爬完结果如下 2. 数据预处理 去掉特殊字符 一些看 ...

  7. 决策树 随机森林 xgboost_从决策树到随机森林理论篇从人话到鬼话:看不懂来找我麻烦...

    从决策树产生的一些列的问题,过度到随机森林: 全文大概要阅读10分钟: 随机森林算法范畴 监督学习分类算法,基模型是由决策树组成 决策树 决策树模型与学习 特征选择 决策树生成 决策树剪枝 CART算 ...

  8. python决策树 value_直播案例 | 决策树、随机森林和 AdaBoost 的 Python 实现

    获取案例链接.直播课件.数据集在本公众号内发送"机器学习". 本案例使用 Python 逐步实现了三种基于树的模型:分类回归决策树(CART).随机森林和 AdaBoost .在实 ...

  9. 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)...

    美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble) 第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 支持向量机分类 支持向量机 ...

最新文章

  1. C# 开发和使用中的33个技巧
  2. AtCoder AGC001F Wide Swap (线段树、拓扑排序)
  3. 趣学python3(23)-队列
  4. 同理心是通往成功架构的桥梁
  5. 图像处理作业 第8次
  6. 休眠后gpio状态_浅谈Digi XBee模块的休眠模式
  7. 天天酷跑php源码_使用Java实现天天酷跑(附源码)
  8. php可以控制视频的尺寸吗吗,控制视频像素尺寸这样做
  9. flash特效原理:图片滑动放大效果(3)
  10. Nebula3资源子系统
  11. 百度杯全国网络攻防大赛——初来乍到
  12. 国密(2)-- SM2签名和加密算法介绍
  13. android 异步编程,flutter异步编程-事件循环、Isolate、Stream(流)
  14. QQ网页登陆密码加密方式农场、空间、WebQQ等通用
  15. VMware配置虚拟机映射,实现局域网络互相访问
  16. 分享一个会遮掩的吊炸天登录页面
  17. Gitlab本地备份与远程机备份
  18. Python爬取手机APP
  19. pytorch 预测手写体数字_深度学习之PyTorch实战(3)——实战手写数字识别
  20. 分布式(技术栈、关键技术、PaaS平台、资料推荐、相关论文)

热门文章

  1. struts-config message-resources配置问题总结
  2. Qt+ArcGIS Engine 10.1 开发(一)
  3. Android 图片选择器、图片剪切,文件选择器
  4. centos7 postgresql安装
  5. SharpZipLib压缩解压
  6. 哪里有mysql认证_国内哪个城市可以考mysql认证
  7. Android 蓝牙4.0在实际开发中的运用
  8. 1008 数组元素循环右移问题 (20分)
  9. php需要掌握什么,php专业需要掌握哪些知识
  10. 学校云计算机室,云计算实训室简介