机器学习——决策树/随机森林

0、前言:

  • 决策树可以做分类也可以做回归,决策树容易过拟合
  • 决策树算法的基本原理是依据信息学熵的概念设计的(Logistic回归和贝叶斯是基于概率论),熵最早起源于物理学,在信息学当中表示不确定性的度量,熵值越大表示不确定性越大。
  • ID3算法就是一种通过熵的变化,构造决策树的算法,其基本公式如下:
    在这里插入图片描述
  • ID3算法举例:
    在这里插入图片描述
    1、计算信息熵:在target中,总共有10个结果,其中yes有7个,no有3个,通过信息熵计算公式,得到如下结果:
    在这里插入图片描述
    2、计算样本熵:
    对于特征1:s有3个对应比例为0.3(这3个s对应的target中yes有1个,no有2个),m有4个对应比例为0.4(这4个m对应的target中yes有3个,no有1个),l有3个对应比例为0.3(这3个l对应的target中yes有3个,no有0个),则特征1通过样本熵的计算公式如下:
    在这里插入图片描述
    其余两个特征计算样本熵的方法和特征一一致。
    3、计算信息增益:通过公式(info(D) - info_D_L)计算出所有样本的信息增益,然后比较他们的信息增益,选最大的作为第一个决策树节点,然后根据节点划分子节点,如果子节点信息确定则设置为叶子节点,如果子节点存在不同选择,就要重新通过上面的步骤选择新的子节点。上面计算结果中特征2的信息增益最大,因此得到如下决策树,然后继续对target和特征1和特征3重复上面步骤,选择第二个节点。
    在这里插入图片描述
  • ID4.5:改进了ID3算法中不重复特征(例如序号列)熵增益过大的缺点,方法就是给每个ID3算法得到的结果除以对应特征的“信息熵”,因此就需要给每个特征通过“信息熵”公式再计算一次它对应的信息熵。(info(D) - info_D_L)/E(A)
  • CART算法(gini):改进了ID3算法中需要大量对数运算导致运算速度较慢的缺点,用基尼代替了熵的概念,核心公式如下,相当于用下面的核心公式替代了求信息熵的公式,其余计算过程和ID3算法一致。也是先求target,然后再求其余特征。
    在这里插入图片描述
    对数计算和平方计算对比情况如下:
    在这里插入图片描述
    计算过程:
    首先求target:
    在这里插入图片描述
    再求特征1(特征2、特征3类似)
    在这里插入图片描述
    最后求信息增益(特征2、特征3类似):gini_D - gini_D_L

1、决策树算法参数说明:

在这里插入图片描述

2、决策树算法的应用:

  • 1、鸢尾花分类任务(不同参数值分类结果)
    在这里插入图片描述
  • 2、sin函数回归任务:
# 导包
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

# 产生数据
x = np.linspace(1,5,100)
y = np.sin(x)
# 绘图
plt.figure(figsize=(10,5))
plt.scatter(x,y,c='r')
# 添加噪点
y[::5]+=np.random.randn(20)*0.1 # 一维数组的加法
# 绘图
plt.figure(figsize=(10,5))
plt.scatter(x,y,c='r')
# 转化输入数据维度
x = x.reshape(-1,1)
x.shape
# 预测
Dt = DecisionTreeRegressor(max_depth=7)
Dt.fit(x,y)
Dt.score(x,y)
# 生成测试数据预测
x_p = np.linspace(3.5,5,100)
x_p = x_p.reshape(-1,1)
x_p.shape
# 预测绘图
pre_y = Dt.predict(x)
plt.scatter(x,y,c='r')
plt.scatter(x_p,pre_y,c='b')

在这里插入图片描述


3、随机森林算法:

  • 原理:随机森林是决策树的升级版本,随机说的是每个树都是随机生成的,每个数都不相同。在构建随机森林时,会从训练数据中有放回的随机选取一部分样本,同样也会随机选取数据样本的部分特征进行训练。每棵树使用的样本和特征都不相同,训练结果也各不相同。
  • 使用随机森林的原因:训练最初我们并不知道哪些是异常样本,也不知道哪些特征对结果影响较大,随机的过程就能降低这两个问题的影响,随机森林的输出结果由投票决定,大部分决策树的结果就决定了最终结果。
  • 优点:可以同时训练,不容易过拟合,能处理特征较多的高维数据,不知道使用什么方法时,先试试随机森林。因为随机森林属于多模型组合学习,这些模型之间都是独立学习预测的。
  • 导入随机森林分类库:from sklearn.ensemble import RandomForestClassifier
  • 重要参数:
    n_estimators:决策树的数量,默认是100个

4、总结:

  • 不论是决策树还是随机森林都有一个属性:feature_importances_,通过这个属性就可以在模型训练结束之后看到每个特征的重要性。其他属性可以通过训练好的模型后面加“.”代码的自动补全就会显示。
  • 决策树当中的一些重要参数:
    在这里插入图片描述
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值