第二课 决策树与随机森林

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

文章目录

  • 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=1ypklog2pk, pk=0,则log2pk=0p_k=0,则log_2p_k=0pk=0log2pk=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=1VDDvEnt(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=1VDDvlog2DDv
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)=1k=1ypk2

基尼指数反应了从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=1VDDvGini(D)

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

1.3.6 信息熵与基尼指数

对函数f(x)=-lnx在x=1处展开一阶泰勒展开,得到f(x)≈1−xf(x)\approx1-xf(x)1x
信息熵 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=1ypklog2pkk=1ypk(1pk)这个式子和基尼指数是等价的。

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

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

1.3.7 连续值属性

还有一个问题是关于连续值属性的分割问题。
连续属性的取值数量不再有限制。此时需要连续属性离散化。最简单的策略是采用二分法。
给定样本集 D 和连续属性 α,假定 α在 D 上出现了 η个不同的取值,将这些值从小到大进行排序,记为α1α2..,an{α^1 α^2..,a^n}α1α2..an。对于属性值相邻的两个样本aia^iaiai+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=n1jRjyj 也就是区域内所有样本的y值的平均值。

目标函数 RSS=∑j=1J∑i∈Rj(yi−y~)2RSS=\sum_{j=1}^J\sum_{i \in R_j}(y_i-\tilde{y})^2RSS=j=1JiRj(yiy~)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)Gmx

对于分类场景,则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)Gmx。在训练决策树模型节点的时候,选择所有特征中的一部分特征,进行训练,在这些随机选择的特征中选择一个最优的特征来做决策树左右子树划分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc学习(27):处理数据模型--从表单到controller传输数据续

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

第三课 SVM

本系列是七月算法机器学习课程笔记 文章目录1 问题2 key idea 13 key idea 24 key idea 35 key idea46 拉格朗日乘子求解7 核函数的发现学习SVM不要先看数学公式&#xff0c;这样把SVM的精华都丢掉了。学习SVM学习作者是如何构建出这样一个算法的过程。1 问题 无论线性分类、逻…

spring mvc学习(29):modelandview向页面传输数据

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

RESTORE DATABASE命令还原SQLServer 2005 数据库

今天在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!Restore failed for Server ADANDELI. (Microsoft.SqlServer.Smo)An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfoThe bac…

第一百一十九期:支付宝历年双十一背后的技术揭秘

和过去10年一样&#xff0c;2019年天猫双11又创造了一个全新的纪录。这个数字背后&#xff0c;是数代支付宝工程师们殚精竭虑、不断突破技术难关。 作者&#xff1a;蚂蚁金服科技 自从有了双十一这个电商节日&#xff0c;很多技术人的生命轨迹都改变了&#xff0c;这种年度高…

第五课 机器学习中的特征工程

本系列是七月算法机器学习课程笔记 文章目录1 特征工程与意义2 数据与特征处理2.1数据采集2.2 数据清洗2.3 数据采样2.4 特征处理2.4.1 数值型2.4.2 类别型2.4.3 时间型2.4.3 文本型2.4.4 统计特征3 特征选择3.1 为什么做特征选择3.2 特征选择的方法3.2.1 过滤型3.2.2 包裹型3.…

局域主机做服务器,安装DNN,外网访问的解决办法

局域主机做服务器,安装DNN&#xff0c;外网访问的解决办法 问题&#xff1a; 如图&#xff1a;局域网主机IIS安装了DotNetNuke 4.0.x版本&#xff0c;设置虚拟目录为&#xff1a;dnn &#xff0c;安装好之后&#xff0c;内网用户通过http://192.168.19.9/dnn访问是没问题…

第一百二十期:终于有篇看的懂的B树文章了!

索引&#xff0c;相信大多数人已经相当熟悉了&#xff0c;很多人都知道 MySQL 的索引主要以 B 树为主&#xff0c;但是要问到为什么用 B 树&#xff0c;恐怕很少有人能把前因后果讲述完整。本文就来从头到尾介绍下数据库的索引。 作者&#xff1a;安静的boy 索引&#xff0c;…

csharp:Nhibernate Procedure with CreateSQLQuery and GetNamedQuery

<?xml version"1.0" encoding"utf-8"?> <hibernate-mapping assembly"Domain" namespace"Domain" xmlns"urn:nhibernate-mapping-2.2"><class name"DuCardType" table"DuCardType" la…

第六课 多算法组合与模型调优

本系列是七月算法机器学习课程笔记 文章目录1 前序工作流程1.1 数据处理1.2 特征工程1.3 模型选择1.4 交叉验证1.5 寻找最佳超参数2 模型优化2.1 模型状态2.2 模型优化12.3 模型优化22.4 模型优化32.5 模型优化4&#xff1a;模型融合2.5.1 bagging2.5.2 staking2.5.3 adaboost2…

第一百二十一期:当新闻报道用上AR 技术,能为读者带来什么?

「有一种名为记忆宫殿的记忆术&#xff0c;要点就是在人脑内建立起虚拟的空间场景&#xff0c;并把各种信息与空间产生联系。如果我们也能为每一起新闻建立起空间的概念&#xff0c;显然也会给读者带来更深刻的印象。」 作者&#xff1a;木斯 大部分新闻都拥有不同的切入视角…

第七章 scikit-learn与机器学习实战

文章目录1 scikit-learn2 一个项目实战2.1 项目目标2.2 划定问题2.3 选择性能指标2.4 核实假设2.5 获取数据2.6 数据探索和可视化、发现规律2.7 为机器学习算法准备数据2.8 选择并且训练模型2.9 模型微调2.10 测试集上测试1 scikit-learn 导航页与算法指南 API&#xff1a;数据…

Erlang注册进程名称-tut16.erl

作 w3cschool erlang 的练习 --------- 1 -module(tut16).2 3 -export([start/0, ping/1, pong/0]).4 5 %% Erlang 注册进程名称6 7 %% ping 进程必须通过某种途径 获得 pong 进程的进程标识符后 8 %% 才能将消息发送给 pong 进程9 10 %% Erlang 提供了 为每个进程提供一个名称…

第一百二十二期:大数据分析:红包先抢好,还是后抢好

本文用matlab程序&#xff0c;模拟微信给10个人发红包&#xff0c;设定次数1亿次&#xff0c;统计每个人抢到的红包&#xff0c;最佳手气和最差手气次数&#xff0c;用以分析红包是应该先抢还是后抢? 作者&#xff1a;景因分析 本文用matlab程序&#xff0c;模拟微信给10个人…

Linux重定向的理解

1 /*2 重定向的实例3 dup2函数4 5  利用filefd来代替STDOUT(标准输出流)&#xff0c;write写入filefd的数据&#xff0c;重定向写出到STDOUT中&#xff1b;6 */7 8 #include <stdio.h>9 #include <sys/stat.h> 10 #include <string.h> 11 #include …

spring mvc学习(30):sessionatrribute存储session数据

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

验证码

金讯教育有一节课讲的是验证码;代码如下&#xff1a; html: <label><input type"text" /><span id"yz" style" background:url(1.png) -10px -15px;width:80px;font-style: italic; height: 20px;border: 1px solid black;display: in…

第九章 隐马尔科夫模型HMM

文章目录1 隐马尔科夫模型定义2 概率计算算法2.1 前向概率2.2 概率计算3 学习算法3.1 EM算法3.2EM在HMM4 预测算法1 隐马尔科夫模型定义 隐马尔科夫模型是一个seq2seq模型。例如词性标注。 时间序列t1t2t3状态序列代词动词名词观察序列我爱机器学习 能够看到的&#xff0c;例…

spring mvc学习(31):原生api

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

如何使用设计模式来构造系统--(7)

(声明:本系列所用的模式都来自GOF23中&#xff0c;本系列并不是讲23种经典设计模式&#xff0c;而是如何去使用这些模式) 在前面的文章中,我们设计完成了员工工资,福利以及按照部门来区分员工,以及遍历统计部门人员成本等业务逻辑,这些设计基本上可以满足我们所设定的场景的…