大数据项目8(sklearn决策树)

晨沉宸辰 晨沉宸辰     2022-12-11     206

关键词:

一、了解什么是决策树

  1. 分类
  • 分类树:分类标签值(天气?是否垃圾网页?)定性
  • 决策树:定量
  1. 决策树的过程:
    (1)决策树的特征选择
    (2)决策树的生成( I D 3 ID3 ID3, C 4.5 C4.5 C4.5,~)
    (3)决策树的剪枝

  2. 决策树是什么?(decision tree) 是一种分类与回归方法,主要用于分类,决策树模型呈现树形结构,是基于输入特征对实例进行分类的模型。

我认为决策树其实是定义在特征空间与类空间上的条件概率分布!

二、决策树模型

分类决策树模型是一种对实例进行分类的树形结构,其由结点(node)和有向边组成,而结点也分成内部结点和叶结点两种,内部结点表示的是一个特征和一个属性,叶结点表示具体的一个分类,这个地方一定要搞清楚.

用决策树进行分类,从根结点开始,对实例的某一个特征进行测试,根据测试结果分配往对应的子结点中去,每个子结点对应一个特征的取值,递归的进行分类测试和分配,最终到达对应的叶结点,完成本次的分类,这个过程就好像是大学生新生入学军训中分队伍,看你身高体重这一特征将你分配到正步排还是刺杀操排还是酱油排,一旦你进入了其中的某一个排就会再根据你正步走的好不好决定你具体在第几个班这样子,直到找到你合适的位置,对决策树来说就是找到了你合适的’类’

三、决策树-信息增益


在信息论中,熵是定义一个随机变量不确定性的度量,如果X是一个随机变量,它的概率分布为:P(X=xi)=Pi, i = 1,2,…n,则随机变量X的熵就定义为:

,并且我们认为的规定 0log0=0,当log分别以2和e为底数的时候计量单位就是比特和纳特

仔细观察公式我们发现,其实熵只和分布有关系,和分布的具体取值无关,希望读者仔细记住!所以H(x)=H§只和p有关
熵越大,随机变量的不确定性越大。

接下来我们通过联合概率分布引入条件熵的定义:
设有随机变量(X ,Y) 其联合概率分布为:

条件熵H(Y|X)就是指在已知随机变量X的条件下,随机变量Y的不确定性,随机变量X给定的条件下,随机变量Y的条件熵定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

此处,pi指的是x的分布!
信息增益:特征A对训练数据集的D的信息增益g(D,A),定义为集合D的经验熵与特征A给定条件下D的经验条件熵H(D/A)之差,即

四、信息增益比

其实信息增益用来衡量特征的好坏其实是有弊端的,**因为它总是偏向于选择取值较多的特征的问题,**而使用信息增益比就可以很好的解决这个问题,接下来给出信息增益比的定义:
特征A 对训练数据集D的信息增益比Gr(D,A)定义为其信息增益与训练数据集关于特征A的值的熵Ha(D)之比:


这样就得到了信息增益比的完整定义了!

五、ID3算法

输入 :训练数据集,特征集A,阈值\\varepsilon
输出:决策树

  1. 若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该结点的标记,返回T

  2. 若A=,则T为单结点树,并将D中实例数最大的类Ck作为该类的标记,返回T

  3. 否则,按照上述介绍信息增益的算法计算A中各特征对D的信息增益,选择信息增益最大的特征Ag

  4. 如果Ag的信息增益小于阈值,则T为单结点树,并将D中实例数最大的类Ck作为该结点的标记,返回T

  5. 否则,对Ag的每一个可能值ai,Ag=ai,将D进行分割成非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T

  6. 对第i个子结点,以Di为训练集,以A-Ag为特征集递归的调用上述步骤,得到子树Ti,返回Ti

六、决策树的剪枝

决策树容易出现过拟合的现象,决策树的剪枝往往通过极小化决策树整体的损失函数或者代价函数实现,假设树的叶结点个数为|T|,t是树的一个叶结点,其上有Nt个样本,其中k类的样本有Ntk个,k=1,2,3…K,Ht(T)为叶结点上的经验熵,\\alpha参数大于0,那么决策树损失函数可以定义为:


将经验熵代入,可以得到公式:
解释一下,这里面C(T)指的是模型对训练数据的预测误差,而|T|表示的就是模型的叶结点个数,代表了模型的复杂度,起到了控制平衡两者之间的作用的一个角色,=0意味着只考虑对训练数据的预测误差而不考虑结点个数,模型负责度,自然会有过拟合的现象产生。

所谓的剪枝,就是当确定的时候,选择损失函数最小的模型,确定时候,子树越大,训练数据拟合程度越好,但是泛化能力就越差,相反的,子树越小,模型的复杂度就越小,对训练数据的拟合程度越差,但是泛化能力相对较好,损失函数同时考虑二者的影响,达到一个平衡的最优!

本质上 这样的损失函数最小化原则就是等价与正则化的极大似然估计,利用损失函数最小化原则进行剪枝,就是利用正则化的极大似然估计进行模型的筛选!

sklearn 大数据线性回归

】sklearn大数据线性回归【英文标题】:sklearnlinearregressionforlargedata【发布时间】:2014-05-0507:08:22【问题描述】:sklearn.LinearRegression是否支持在线/增量学习?我有100组数据,我正在尝试完全实现它们。对于每个组,有超过10000个实... 查看详情

sklearn:无法用大数据框训练决策树

】sklearn:无法用大数据框训练决策树【英文标题】:sk-learn:cannottraindecisiontreewithbigdataframes【发布时间】:2015-06-2710:15:08【问题描述】:我正在使用Python和sk-learn进行我的第一个项目。在项目中,我必须根据可用数据进行预测。... 查看详情

sklearn专题一:决策树(代码片段)

目录决策树1概述1.1决策树是如何工作的1.2sklearn中的决策树2 DecisionTreeClassifier与红酒数据集2.1 重要参数2.1.2 random_state& splitter2.1.3 剪枝参数2.1.4 目标权重参数2.2 重要属性和接口3.DecisionTreeRegressor3.1重要参数,属性及接... 查看详情

再探决策树算法之利用sklearn进行决策树实战

sklearn模块提供了决策树的解决方案,不用自己去造轮子了(不会造,感觉略复杂):下面是笔记:Sklearn.tree参数介绍及使用建议参数介绍及使用建议官网:http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.htmlclasss... 查看详情

sklearn决策树的BFS遍历

】sklearn决策树的BFS遍历【英文标题】:BFStraversalofsklearndecisiontree【发布时间】:2020-08-0300:12:29【问题描述】:如何进行sklearn决策树的广度优先搜索遍历?在我的代码中,我尝试了sklearn.tree_库并使用了各种函数,例如tree_.feature... 查看详情

sklearn实践:决策树(代码片段)

sklearn实践(二):决策树一、数据处理继续上次聚类的练习,基于稍作处理的数据,在决策树中,只需划分一下训练集和测试集即可这里用到的是sklearn.model_selection.train_test_split()函数原型:sklearn.model_selection.``train_test_split(**array... 查看详情

决策树 sklearn:网球数据集

】决策树sklearn:网球数据集【英文标题】:DecisionTreesklearn:PlayTennisDataSet【发布时间】:2018-06-2306:16:39【问题描述】:我正在练习将sklearn用于决策树,我正在使用打网球数据集play_是目标列。根据我的纸笔计算熵和信息增益,根... 查看详情

决策树唯一性sklearn

】决策树唯一性sklearn【英文标题】:DecisionTreeUniquenesssklearn【发布时间】:2018-05-2402:14:05【问题描述】:我有一些关于决策树和随机森林分类器的问题。问题1:经过训练的决策树是否独一无二?我认为它应该是独一无二的,因... 查看详情

决策树sklearn:预测准确率100%

】决策树sklearn:预测准确率100%【英文标题】:decisiontreesklearn:predictionaccuracy100%【发布时间】:2017-05-3102:41:58【问题描述】:我的决策树分类器准确度为1.0,决策树输出中只有一个节点,混淆矩阵中也只有一个元素。随机森林也... 查看详情

sklearn1.分类决策树(代码片段)

...,本篇博文不注重相关数学原理,主要注重使用sklearn实现分类树的效果。参考课程见【2020机器学习全集】菜菜的sklearn完整版决策树简介决策树(DecisionTree)是一种非参数的有监督学习方法 查看详情

SkLearn 的决策树:过度拟合还是错误?

】SkLearn的决策树:过度拟合还是错误?【英文标题】:DecisionTreeOfSkLearn:OverfittingorBug?【发布时间】:2014-07-1916:46:31【问题描述】:我正在使用sklearn的tree包分析我的决策树模型的训练误差和验证误差。#computethermserrordefcompute_error(... 查看详情

我们可以选择在 sklearn 中使用啥决策树算法吗?

】我们可以选择在sklearn中使用啥决策树算法吗?【英文标题】:CanwechoosewhatDecisionTreealgorithmtouseinsklearn?我们可以选择在sklearn中使用什么决策树算法吗?【发布时间】:2016-03-1718:02:09【问题描述】:我的问题是我们可以选择在skle... 查看详情

黑客/克隆 sklearn 以支持修剪决策树?

】黑客/克隆sklearn以支持修剪决策树?【英文标题】:Hacking/cloningsklearntosupportpruningDecisionTrees?【发布时间】:2015-03-2008:01:38【问题描述】:我想创建一个决策树,然后在python中对其进行修剪。但是,sklearn本身不支持剪枝。通过... 查看详情

修剪 sklearn 决策树以确保单调性

】修剪sklearn决策树以确保单调性【英文标题】:Prunesklearndecisiontreetoensuremonotony【发布时间】:2021-10-0100:36:38【问题描述】:我需要修剪sklearn决策树分类器,以使指示的概率(图像右侧的值)单调增加。例如,如果你用python编写... 查看详情

sklearn中的交叉验证+决策树

】sklearn中的交叉验证+决策树【英文标题】:crossvalidation+decisiontreesinsklearn【发布时间】:2016-05-0722:12:03【问题描述】:尝试使用sklearn和panads创建具有交叉验证的决策树。我的问题在下面的代码中,交叉验证拆分数据,然后我将... 查看详情

sklearn决策树

决策树的原理很简单:一颗由多个判断节点组成的树。因为其应用之广,也有许许多多的衍生(RandomForest,GBDT,XGBOOST)。我想确实很有必要做一个总结。决策树的一些优点是:简单理解和解释。树可以被可视化。需要很少的数据... 查看详情

决策树 Sklearn - 树的深度和准确性

】决策树Sklearn-树的深度和准确性【英文标题】:DecisionTreeSklearn-DepthOftreeandaccuracy【发布时间】:2018-08-2315:47:42【问题描述】:我正在使用sklearn将决策树应用于数据集在Sklearn中有一个参数可以选择树的深度-dtree=DecisionTreeClassifier... 查看详情

决策树中特定类的 Sklearn 决策规则

】决策树中特定类的Sklearn决策规则【英文标题】:SklearnDecisionRulesforSpecificClassinDecisiontree【发布时间】:2019-03-0409:57:19【问题描述】:我正在创建决策树。我的数据属于以下类型X1|X2|X3|.....X50|Y_____________________________________1|5|7|....... 查看详情