From 56a27a63721c887ac6682acbeecc0a75092e03f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=8B=89=E5=87=A1?= <78416589+Alafun@users.noreply.github.com> Date: Sun, 27 Feb 2022 00:54:57 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E5=91=A8=E5=BF=97=E5=8D=8E=E3=80=8AMa?= =?UTF-8?q?chine=20Learning=E3=80=8B=E5=AD=A6=E4=B9=A0=E7=AC=94=E8=AE=B0(5?= =?UTF-8?q?)--=E5=86=B3=E7=AD=96=E6=A0=91.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...)--\345\206\263\347\255\226\346\240\221.md" | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git "a/\345\221\250\345\277\227\345\215\216\343\200\212Machine Learning\343\200\213\345\255\246\344\271\240\347\254\224\350\256\260(5)--\345\206\263\347\255\226\346\240\221.md" "b/\345\221\250\345\277\227\345\215\216\343\200\212Machine Learning\343\200\213\345\255\246\344\271\240\347\254\224\350\256\260(5)--\345\206\263\347\255\226\346\240\221.md" index 580e6f0..4cc6d0a 100644 --- "a/\345\221\250\345\277\227\345\215\216\343\200\212Machine Learning\343\200\213\345\255\246\344\271\240\347\254\224\350\256\260(5)--\345\206\263\347\255\226\346\240\221.md" +++ "b/\345\221\250\345\277\227\345\215\216\343\200\212Machine Learning\343\200\213\345\255\246\344\271\240\347\254\224\350\256\260(5)--\345\206\263\347\255\226\346\240\221.md" @@ -1,8 +1,8 @@ 上篇主要介绍和讨论了线性模型。首先从最简单的最小二乘法开始,讨论输入属性有一个和多个的情形,接着通过广义线性模型延伸开来,将预测连续值的回归问题转化为分类问题,从而引入了对数几率回归,最后线性判别分析LDA将样本点进行投影,多分类问题实质上通过划分的方法转化为多个二分类问题进行求解。本篇将讨论另一种被广泛使用的分类算法--决策树(Decision Tree)。 -#**4、决策树** +# **4、决策树** -##**4.1 决策树基本概念** +## **4.1 决策树基本概念** 顾名思义,决策树是基于树结构来进行决策的,在网上看到一个例子十分有趣,放在这里正好合适。现想象一位捉急的母亲想要给自己的女娃介绍一个男朋友,于是有了下面的对话: @@ -30,7 +30,7 @@ * 每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集。 -##**4.2 决策树的构造** +## **4.2 决策树的构造** 决策树的构造是一个递归的过程,有三种情形会导致递归返回:(1) 当前结点包含的样本全属于同一类别,这时直接将该节点标记为叶节点,并设为相应的类别;(2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分,这时将该节点标记为叶节点,并将其类别设为该节点所含样本最多的类别;(3) 当前结点包含的样本集合为空,不能划分,这时也将该节点标记为叶节点,并将其类别设为父节点中所含样本最多的类别。算法的基本流程如下图所示: @@ -38,7 +38,7 @@ 可以看出:决策树学习的关键在于如何选择划分属性,不同的划分属性得出不同的分支结构,从而影响整颗决策树的性能。属性划分的目标是让各个划分出来的子节点尽可能地“纯”,即属于同一类别。因此下面便是介绍量化纯度的具体方法,决策树最常用的算法有三种:ID3,C4.5和CART。 -###**4.2.1 ID3算法** +### **4.2.1 ID3算法** ID3算法使用信息增益为准则来选择划分属性,“信息熵”(information entropy)是度量样本结合纯度的常用指标,假定当前样本集合D中第k类样本所占比例为pk,则样本集合D的信息熵定义为: @@ -50,13 +50,13 @@ ID3算法使用信息增益为准则来选择划分属性,“信息熵”(info 信息增益越大,表示使用该属性划分样本集D的效果越好,因此ID3算法在递归过程中,每次选择最大信息增益的属性作为当前的划分属性。 -###**4.2.2 C4.5算法** +### **4.2.2 C4.5算法** ID3算法存在一个问题,就是偏向于取值数目较多的属性,例如:如果存在一个唯一标识,这样样本集D将会被划分为|D|个分支,每个分支只有一个样本,这样划分后的信息熵为零,十分纯净,但是对分类毫无用处。因此C4.5算法使用了“增益率”(gain ratio)来选择划分属性,来避免这个问题带来的困扰。首先使用ID3算法计算出信息增益高于平均水平的候选属性,接着C4.5计算这些候选属性的增益率,增益率定义为: ![5.png](https://i.loli.net/2018/10/17/5bc728ec69647.png) -###**4.2.3 CART算法** +### **4.2.3 CART算法** CART决策树使用“基尼指数”(Gini index)来选择划分属性,基尼指数反映的是从样本集D中随机抽取两个样本,其类别标记不一致的概率,因此Gini(D)越小越好,基尼指数定义如下: @@ -66,7 +66,7 @@ CART决策树使用“基尼指数”(Gini index)来选择划分属性,基 ![7.png](https://i.loli.net/2018/10/17/5bc728ec62eaf.png) -##**4.3 剪枝处理** +## **4.3 剪枝处理** 从决策树的构造流程中我们可以直观地看出:不管怎么样的训练集,决策树总是能很好地将各个类别分离开来,这时就会遇到之前提到过的问题:过拟合(overfitting),即太依赖于训练样本。剪枝(pruning)则是决策树算法对付过拟合的主要手段,剪枝的策略有两种如下: @@ -85,7 +85,7 @@ CART决策树使用“基尼指数”(Gini index)来选择划分属性,基 上图分别表示不剪枝处理的决策树、预剪枝决策树和后剪枝决策树。预剪枝处理使得决策树的很多分支被剪掉,因此大大降低了训练时间开销,同时降低了过拟合的风险,但另一方面由于剪枝同时剪掉了当前节点后续子节点的分支,因此预剪枝“贪心”的本质阻止了分支的展开,在一定程度上带来了欠拟合的风险。而后剪枝则通常保留了更多的分支,因此采用后剪枝策略的决策树性能往往优于预剪枝,但其自底向上遍历了所有节点,并计算性能,训练时间开销相比预剪枝大大提升。 -##**4.4 连续值与缺失值处理** +## **4.4 连续值与缺失值处理** 对于连续值的属性,若每个取值作为一个分支则显得不可行,因此需要进行离散化处理,常用的方法为二分法,基本思想为:给定样本集D与连续属性α,二分法试图找到一个划分点t将样本集D在属性α上分为≤t与>t。 @@ -106,7 +106,7 @@ CART决策树使用“基尼指数”(Gini index)来选择划分属性,基 ![14.png](https://i.loli.net/2018/10/17/5bc72a093ed3c.png) -​ +