机器学习-----决策树、GBDT

决策树初步理解

决策树是一种非线性有监督离散型分类模型
决策树的生成:数据在不断分裂的递归过程,每一次分裂,尽可能让类别一样的数据在树的一边,
当树的叶子节点的数据都是一类的时候,则停止分裂(if lese语句)
在这里插入图片描述

  • 小案例理解决策树的分析思路:
    在这里插入图片描述
    选取2种特征分类方法:
    方法一:
    在这里插入图片描述
    方法二:
    在这里插入图片描述

对比可以看出,方法一种的特征选取可以一步得到是否发生车祸的结果,节点之间相似度小,纯度高。而方法二还需要进一步细分,容易过拟合。

总结:

(1)决策树使用特征进行分类
(2)分类的特征使用顺序不一样,导致分类的复杂度不一样
(3)纯度指的是一个节点是不是有所有的分类结果;纯度高的复杂度就低,一定要去判断当我们使用一个特征进行分类的时候,哪个特征得到的结果纯度高,就使用哪个
由下图可以明确:分割方式一纯度高,分割方式二纯度低。在这里插入图片描述

决策树的特点

单颗决策树的缺点:

1.运算量大,需要一次加载所有数据进内存。并且找寻分割条件是一个极耗资源的工作
2.训练样本中出现异常数据时,将会对决策树产生很大影响。抗干扰能力差

解决方法:

1.减少决策树所需训练样本(减少列或者减少行)
2.随机采样,降低异常数据的影响

逻辑回归的优点:
和逻辑回归比,逻辑回归可以给告诉我们概率(或者设置阈值),二决策树只能0, 1

随机森林

森林:由树组成
随机:生成树的数据都是从数据集中随机选取的
当数据集很大的时候,我们随机选取数据集的一部分,生成一颗树,重复上述过程,我们可以生成一堆形态各异的树,这些树放在一起就叫森林。
在这里插入图片描述
在这里插入图片描述

随机森林VS逻辑回归
在这里插入图片描述

随机森林实现鸢尾花分类预测

具体操作代码链接: iris_random_forest code

决策树的思想

ID3

算法的核心是在决策树各个节点上应用 信息增益(熵,Entropy 选择特征,递归的构建决策树。

具体方法是:

(1)从根节点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特 征作为结点的特征,由该特征的不同取值建立子节点;
(2)再对子节点递归地调用以上方法,构建决策树;
(3)直到所有特征的信息增益均很小或没有特征可以选择为止。
(4)最后得到一个决策树
两个信息增量没有差别就是最好的
信息增益(熵): Entropy=- sum [p(x_i) * log2(P(x_i) ] 其中p(x_i) 为x_i出现的概率。

熵的理解:

假如是2分类问题,当A类和B类各占50%的时候,
Entropy = - (0.5*log_2( 0.5)+0.5*log_2( 0.5))= 1
当只有A类,或只有B类的时候,
Entropy= - (1*log_2( 1)+0)=0
所以当Entropy最大为1的时候,是分类效果最差的状态,
当它最小为0的时候,是完全分类的状态。
因为熵等于零是理想状态,一般实际情况下,熵介于0和1之间。

小案例理解ID3

在这里插入图片描述

  1. 分数小于70为【不是好学生】:分错1个
  2. 出勤率大于70为【好学生】:分错3个
  3. 问题回答次数大于9为【好学生】:分错2个
  4. 作业提交率大于80%为【好学生】:分错2个

最后发现
分数小于70为【不是好学生】这条分错最少,也就是熵最小,所以应该选择这条为父节点进行树的生成

ID3的缺点

那就是越细小的分割分类错误率越小,所以ID3会越分越细。
比如以第一个属性为例:设阈值小于70可将样本分为2组,但是分错了1个。
如果设阈值小于70,再加上阈值等于95,那么分错率降到了0。
但是这种分割显然只对训练数据有用,对于新的数据没有意义,这就是所说的过度学习(Overfitting)

C4.5

所以为了避免分割太细,c4.5对ID3进行了改进,C4.5中,优化项要除以分割太细的代价,这个比值叫做信息增益率,显然分割太细分母增加,信息增益率会降低。除此之外,其他的原理和ID3相同。

CART

CART是一个二叉树,也是回归树,同时也是分类树,CART的构成简单明了。CART只能将一个父节点分为2个子节点。CART用GINI指数来决定如何分裂:
GINI指数:总体内包含的类别越杂乱,GINI指数就越大;总体内包含的类别越单一,GINI指数就越小(跟熵的概念很相似)。

计算纯度的方式:
在这里插入图片描述
基尼系数越小,熵越大,方差越大,数据集越不一样,纯度越高

小案例理解CART:
  • a.比如出勤率大于70%这个条件将训练数据分成两组:
    ​ 大于70%里面有两类:【好学生】和【不是好学生】,
    ​ 而小于等于70%里也有两类:【好学生】和【不是好学生】。

  • b. 如果用分数小于70分来分:
    ​ 则小于70分只有【不是好学生】一类,
    ​ 而大于等于70分有【好学生】和【不是好学生】两类。

比较a和b,发现b的凌乱程度比a要小,即GINI指数b比a小,所以选择b的方案。

以此为例,将所有条件列出来,选择GINI指数最小的方案,这个和熵的概念很类似。

使用决策树时对于数据的处理

  • 1.离散的数据

天气 : 晴天 雨天 多云
​ encoding:晴天1 雨天2 多云3
​ onehot:晴天100雨天010云001

学历: 高中 本科 研究生
​ encoding:高中1 本科2 研究生3
​ onehot:高中100本科010研究生001

  1. 连续的数据需离散化, 需指明离散化后的数量

车速:
低速 (60)中速 (80 )高速
M+1种分割方式

非数字数据的分类方式:

(1)encoding
(2)one-hot
Encoding和one-hot的用法:
(1)当一组数据需要比较,但是无关大小,用encoding
(2)当一组数是独立的时候,用one-hot
举例:
one-hot:
性别: 男1 女 -1
宠物: 猫 狗 乌龟 1 0 -1
泰国: 男 女

决策树案例:鸢尾花的分类预测

决策树模型生成时所考虑的问题:

  • 剪枝:
    预剪枝: 在这棵树还没开始分裂的时候,提前设定好一些条件,在达到这些条件以后就不长了
    后剪枝:先长,长完了再去掉(比如合并叶子节点)
  • 预剪枝的方式:
    (1)控制分裂的层次
    (2)控制叶子节点的样本数量
    剪枝保证了模型的通用性

详细操作请看链接:决策树实现鸢尾花的分类预测code

决策树案例:数据的回归预测

DecisionTreeRegressor(criterion='mse')
在这里插入图片描述
详细操作请看链接:决策树做回归code

GBDT(梯度提升树 Gradient Boosting Decision Tree)

BDT:Boosting Decision Tree 提升树,在Boosting的基础上,使用DT作为弱学习器
Boosting:是一个通过逐渐缩小残差(白色面积),来达到拟合目的一个算法

残差:当一个算法有很多步的时候,每一步做完,得到的值和真实值的差就叫做残差
误差:一个算法最后一个算完得到的值,和真实值的差叫做误差
把公式y = ax + b分成两步
第一步: 计算 z = ax
第二步: 计算 y= z + b 那么,第一步计算完, z和y的差就叫做残差;第二步计算完,y 和y的差就叫做误差

整体面积:真实值
彩色面积:模型作出的预测值
白色面积:残差
我们可以把下图的整个面积想象成真实值,把染色的面积想象成模型计算出的预测值
也就是说,如果模型能把所有的颜色从白色染成彩色,那么这个模型就能100%预测准确。如果还剩下白色的部分,就证明模型还有一定的残差,就可能需要继续拟合
在这里插入图片描述

BDT、GBDT算法思想

在这里插入图片描述

  • 提升树的加法模型
    其中T(x; θm)表示的是决策树(DT),加法模型的意思就是把所有的决策树线性加和;对比上图里的内容,这个加法模型就是 Model1(DT1) + Model2 (DT2)+ Model3(DT3) + … +Modeln(DTn)。
    M为树的个数;θm是每个决策树中的参数
    在这里插入图片描述
  • BDT的前向分布算法模型 : 计算下一个梯度提升树的公式
    Fm-1(x)为当前模型, fm(x)为下一个模型, T(x; θm)为当前的决策树
    在这里插入图片描述
  • 这个是计算θm值的公式
    L指的就是残差,或者Loss,损失;或者是yi和fm(x)的残差,上图中,白的的面积
    argmin的意思就是说,让argmin后面的公式最小的时候,得到的θm 的值
    在这里插入图片描述
  • 求解决策树参数步骤:
    在这里插入图片描述
  • 将上式通过泰勒展开
    在这里插入图片描述
  • 算法思想总结:
    在这里插入图片描述

BDT算法特点

在这里插入图片描述

案例:GBDT实现数据分类预测

使用网格搜索进行调参的理解。
详细操作代码链接:GBDT实现数据分类预测code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值