经典监督式学习算法决策树作为最经典的机器学习算法之一,决策树(包括其衍生或以其为最小决策单元的算法,包括随机森林

作为最经典的机器学习算法之一,决策树(包括其衍生或以其为最小决策单元的算法,包括随机森林、坡度爬升树、XGBoost等)在神经网络盛行的今天,在监督式学习算法家族中,依旧有着重要的地位。

它是一种基于树形模型提供决策能力的机器学习预测模型,树中的每个节点表示对象,而相应的分叉路径代表其属性值,叶子结点则对应从根节点到该叶子结点所经历的路径表示的对象的值。下文将会在阐述决策树的基本原则与原理的基础上,通过一个经典的例子来展示一个基本的决策树模型是如何运作的。

对于监督式学习任务往往存在以下的训练集和目标:训练集:S={(X1,y1),...,(Xn,yn)}目标:h:X->y的映射,能在实际任务T中有着较好的表现。(h表示hypothesis)

对于模型在真实情景下的运行情况,我们不得而知。但是我们通常会在一组被标记过的训练集上验证模型的性能。而经验风险最小化原理,机器学习算法的最终目标是在一类假设(asetofhypotheses)中找到一个在数据集上平均损失函数最小的假设(即风险最小的):

**R(h)=E(L(h(x),y))E表示期望,L表示损失函数**

当然,这一切都是建立在训练集对真实情况有足够的代表性的前提下。众所周知,在训练集往往对真实情况缺乏代表性,结果就是造成模型的过拟合,类似带答案的习题和期末考试之间的差别。

这个数据集中,Outlook有Sunny,Overcast,Rain三种状态,Temp有Hot,Mild,Cold三种状态,Humid有High.Normal两种状态,Wind有Weak,Strong两种状态。因此一共有3x3x2x2=36种组合,每种组合对应Yes和No两种预测结果。因次,对于这个打网球的问题,如果我们想建立一个决策树的模型,这里一共会存在236种不同的假设(hypotheses),而其中哪种假设会是最合适的模型,这便是接下来我们需要讨论的问题。

上一节中我们指出了对于这个训练集一共存在236种不同的决策树模型,而这些可能的模型中,又有多少在这14个样本上(样本不互相矛盾)能做到完全正确的预测模型呢?答案是2(36-14)=222种。

十四世纪的方济会修士WilliamofOccam提出过一条经典的逻辑学法则:若无必要,勿增实体(Ifnotnecessarynotbyentity)。换言之就是一切体系应该尽可能地简单。这条理论可以同先前提到的经验风险最小化结合起来,成为决策树构造设计的基石。由于这是一个NP-Hard问题,为了在222种能达到目的的模型中挑选出最简洁的,我们在这里可以使用一种贪心的递归策略(GreedyProcedure-Recursive),从根阶段开始进行以下循环:

在决策树的生长策略中,我们提到了每次需要选择一个合适的属性作为节点,事实上我们所要做的事最大化该节点的后代对标签的区分度(减少分类的随机性)。举个例子,属性A沿着0和1两个值生长,子节点上的样本的标签分别为(4Yes,4No),(3Yes,3No)。属性B沿着0和1两个值生长,子节点上的样本标签分别为(8Yes,0No),(0Yes,6No)。那么很明显选择B节点会更具区分度。而量化这种区分度的指标一般可以有两种,基尼不纯度(GiniImpurity)和信息增益(InformationGain),原则上决策树应该沿着基尼指数或者交叉熵损失下降最快的方向上生长。

如果标签的数量分布如下:n1,n2,......,n****L

那交叉熵损失可以被描述为:

H(S)=(n1/n)*log(n/n1)+(n2/n)*log(n/n2)+......+(nL/n)*log(n/nL)

通过父节点(S)的交叉熵损失与子节点(v)的加权交叉熵损失之间的差,我们可以求得信息增益:

IG(S)=H(S)-(n1/n)H(v1***)-(n2/n)H(v2**)-......-(nL**/n)H(vL****)

类似地,基尼指数可以被描述为:

**Gini(S)=1-(n1/n)2-(n2/n)2-.......-(nL/n)**2

同样地,基尼不纯度可以根据父节点(S)的基尼指数与子节点(v)的加权基尼指数之间的差求得:

GiniImp(S)=Gini(S)-(n1/n)Gini(v1***)-(n2/n)Gini(v2**)-......-(nL**/n)Gini(vL****)

如果用之前提到的网球的例子,那么一颗完整的决策树用基尼不纯度作为决策方法,它的生长过程会是这样子的。首先根节点处,在没有使用任何属性时,训练集可分为(9Yes,5No),相应的基尼指数如下:

分别计算以四种维度的属性作为决策树生长的指标的基尼不纯度:

很明显Outlook属性的基尼不纯度最高,意味着此时选择这一维度生长下去更能区分训练集。

我们可以观察到在Outlook的值为Overcast时,样本为(4Yes,0No),意味着这一分支全部分类正确,可以终结。如果将Sunny属性计为OS,Rain属性计为OR,接下来的基尼不纯度在选择Outlook-Sunny后可以如下计算:

很明显选择Humidity能最大程度减小随机性,因此Outlook-Sunny一支的子节点为Humidity。同时我们观察到此后所有样本皆能正确分类,此分支可终结。

相似地对于Outlook-Rain一支,可以计算如下:

显然选择Wind作为子节点能最大程度减小随机性,同时我们观察到此后的样本皆能正确分类,因此此分支终结。综上所述,我们可以得到如下结构的一棵决策树,这是我们使用了递归贪心策略生成的较优解(在ERM与Ockham'sRazor原则指导下):

决策树的过拟合抑制策略一般可以分为先剪枝(Prepruning)和后剪枝(Postpruning)。其中先剪枝一般是根据预设的规则(如最大节点数、最大高度、基尼不纯度或者信息增益的增长幅度等)来提前停止树的生长。而后剪枝是在树完全生长后进行修剪,比如根据复杂度对损失增加惩罚项,在后剪枝的过程中,那些对基尼不纯度或者信息增益提升效率低下的分支就会被剔除。

THE END
1.监督学习机器之心监督式学习算法多种多样,每种算法各有其优势和弱点。并没有某一种算法可以解决所有的监督式学习问题,这被称为‘天下没有免费的午餐’理论。目前被广泛使用的监督式学习算法有人工神经网络、线性回归、逻辑回归、线性识别分析、支持向量机、最近邻居法、高斯混合模型、朴素贝叶斯方法、决策树和径向基函数分类等。 https://www.jiqizhixin.com/graph/technologies/94fdbfed-9ebb-491b-b54e-9c2aae512f70
2.监督学习的分类算法所有的回归算法和分类算法都属于监督学习。回归(Regression)和分类(Classification)的算法区别在于输出变量的类型,定量输出称为回归,或者说是连续变量预测;定性输出称为分类,或者说是离散变量预测。 以下是一些常用的监督型学习方法。 一.K-近邻算法(k-Nearest Neighbors,KNN),K-近邻是一种分类算法,其思路是:如果一个https://wenku.baidu.com/view/3976264b02f69e3143323968011ca300a6c3f6fd.html
3.监督学习方法精讲在机器学习中,无监督学习(Unsupervised learning)就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类;而监督型学习(Supervised learning)就是有训练样本,带有属性标签,也可以理解成样本有输入有输出。 所有的回归算法和分类算法都属于监督学习。回归(Regression)和分类(Classification)的算法区别在于https://blog.csdn.net/laobai1015/article/details/75006511
4.自监督学习算法BarlowTwins在ImageNet ILSVRC-2012 dataset上用自监督的方法进行预训练,在图像分类和目标检测任务上进行验证。 Linear evaluation on ImageNet Top1 73.2% image.png IMAGENET 半监督性能 用预训练的twins在imagnet的1%和10%有标签的子集进行半监督学习测试。 image.png https://www.jianshu.com/p/7f7f0c14ece5
5.无监督深度学习经典算法无监督算法举例1,有监督:通常被称为监督学习(supervised learning),常用于回归问题和分类问题。使用这种方法需要提供原始数据以及其对应的标签,常用的监督学习方法有K-近邻算法(k-Nearest Neighbors,KNN),决策树(Decision Trees),朴素贝叶斯(Naive Bayesian),逻辑回归(Logistic Regression)等。 https://blog.51cto.com/u_16099252/9423357
6.头条文章大部分模型都是属于监督学习,包括线性分类器、支持向量机等。常见的监督学习算法有: k-近邻算法(k-Nearest Neighbors, kNN)、决策树(Decision Trees)、朴素贝叶斯(Naive Bayesian)等。监督学习的基本流程如图1所示。 图1 监督学习的基本流程 无监督学习(Unsupervised Learning, UL)https://card.weibo.com/article/m/show/id/2309404598738399395890
7.科学网—[转载]最实用的机器学习算法优缺点分析,没有比这篇说得更分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。 正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。 逻辑回归 2.1 (正则化)逻辑回归 逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归https://blog.sciencenet.cn/blog-1396960-1170780.html
8.17个机器学习的常用算法在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inferehttps://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
9.机器学习(一)2万多字的监督学习模型总结? 本文根据Andreas C.Muller的《Introduction to Machine Learning with Python》和西瓜书,整理了常见的监督学习模型。本文不讲解复杂的数学理论,涉及到了K近邻、线性模型、朴素贝叶斯分类器、决策树、随机森林、梯度提升回归树、SVM、MLP,以及监督学习模型的选择原则,全文2万多字,后续还会进一步补充。 https://www.flyai.com/article/515
10.《常用算法之智能计算(三)》:机器学习计算(2)基于学习方式的分类 机器学习算法按照学习方式的不同可以分为五种类型:有监督学习、无监督学习、半监督学习、强化学习和深度学习。 1)有监督学习?输入的数据为训练数据,并且每一个数据都会带有标签或类别。通过训练过程建模,模型需要作出预测,如果预测出错会被修正,直到模型输出准确的训练结果,训练过程会一直http://www.kepu.cn/blog/zhangjianzhong/201903/t20190327_475625.html
11.学习笔记:神经网络学习算法腾讯云开发者社区主流的神经网络学习算法(或者说学习方式)可分为三大类:有监督学习(SupervisedLearning)、无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning),如下图所示。 注:有监督学习、无监督学习和强化学习并不是某一种特定的算法,而是一类算法的统称。 https://cloud.tencent.com/developer/article/1610502