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

2023-11-08

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_,通过这个属性就可以在模型训练结束之后看到每个特征的重要性。其他属性可以通过训练好的模型后面加“.”代码的自动补全就会显示。
  • 决策树当中的一些重要参数:
    在这里插入图片描述
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习——决策树/随机森林 的相关文章

  • QDU 算法考试复习

    第一章 算法概述 主定理 算法满足4条性质 1 输入 有零个或多个由外部提供的量作为算法的输入 2 输出 至少一个量作为输出 3 确定性 每条指令是清晰的 无歧义的 4 有限性 每条指令的执行次数是有限的 执行时间也是有限的 算法与程序的区

随机推荐

  • 发现【Stable-Diffusion WEBUI】的插件:不健康内容过滤器

    文章目录 零 前言 一 不健康内容过滤器 NSFW Sensor 零 前言 本篇主要提到了WEBUI的不健康内容过滤插件 它宁可错杀一千也不放过一个 可以有效避免有害内容 更多不断丰富的内容参考 继续Stable Diffusion WEB
  • odoo12从零开始:一、安装odoo运行环境(windows10)

    前言 鉴于好多朋友说没有mac电脑 windows开发其实也差不了多远 只是个人习惯问题 而且吧 windows的电脑其实配环境也挺快的其实 我在这里再稍微补一个比较简单的windows环境部署 希望可以对朋友们有一些帮助 在windows
  • 运算放大器积分电路及积分电路设计

    运算放大器积分电路及积分电路设计 积分电路 Integrator circuit 在运算放大器积分器电路中 电容器插入反馈环路中 并在反相输入端与R1一起产生一个RC时间常数 积分的物理意义 积分的物理意义我们经常会使用到 例如下面的几个例
  • 交叉编译Cubietruck的u-boot

    1 下载u boot源码 mkdir cubietruck cd cubietruck git clone https github com linux sunxi u boot sunxi git
  • CSS基础之动画

    动画 1 过渡 需要结合鼠标 动画 网页只要运行动画就可以立即生效 创建动画的方式 1 方式一 from 起点 to 终点 keyframes 动画的名字 from to 2 方式二 keyframes 动画的名字 0 100 如果一个元素
  • ICPC Latin American Regional – 2017 Jumping Frog

    Pog the Frog wants to compete in the World Frog Jump competition which will take place in Nlogonia In the competition ea
  • 前端代码规范

    9个前端代码规范秘籍 让你也能写出诗一样的代码 9个秘籍里边有6个文档 1本书和2个工具 如果你耐心看完 一定会提升代码质量 让你写出漂亮的代码 第一个秘籍 京东凹凸实验室前端代码规范 网址是 https guide aotu io 如果你
  • CTFHub技能树 Web-SQL注入 详解

    目录 整数型注入 字符型注入 报错注入 布尔盲注 时间盲注 MySQL结构 Cookie注入 UA注入 Refer注入 过滤空格 整数型注入 我们输入 1 不断尝试发现闭合方式就是 1 整数型 存在两列 order by 2 存在两个注入点
  • JBOSS4.2.2 Spring2.0.8 web中调用EJB异常

    从容器外能够正常调用EJB 但是web 应用中spring bean调用EJB出现下面异常
  • 深度学习分类基础概念对ACC、PPV、TPR、TNR

    举个例子 ACC 10 15 20 10 1 2 3 14 4 5 6 20 PPV 猫 10 10 1 2 解释 这里的1和2是因为狗 猪分类错误 分到了猫 PPV 狗 15 15 3 4 PPV 猪 20 20 5 6 TPR 猫 10
  • UDP与TCP报头介绍,三次握手与四次挥手详谈

    先介绍我们UDP TCP协议缓冲区 在UDP和TCP在数据传输和介绍时有有缓冲区概念的 UDP缓冲区 UDP没有真正意义上的 发送缓冲区 调用sendto会直接交给内核 由内核将数据传给网络层协议进行后 续的传输动作 UDP具有接收缓冲区
  • Python—retrying模块的使用

    使用超时参数能够加快我们整体的运行速度 但是在普通的生活中当我们使用浏览器访问网页时 如果发生速度很慢的情况 我们会做的选择是刷新页面 那么在代码中 我们是否也可以刷新请求呢 对应的 retrying模块就可以帮助我们解决 1 retryi
  • Quality Center设置开发人员修改bug状态

    使用QC时遇到了一个问题 将开发人员分配到QC默认的Developer的组中后 开发人员不能修改bug的状态 提示无权限操作 经查看原来是QC默认的Developer组对bug的权限没有 新建 gt 打开 这一操作 只有Project Ma
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据

    系列文章 python网络爬虫专栏 目录 序言 本节学习目标 特别申明 4 7 使用BeautfulSoup解析h
  • Idea项目爆红

    解决办法 方案一 重新加载Maven依赖 方案二 清除缓存 方案三 在当前项目下执行以下命令 重新生成 iml文件 mvn idea module
  • 利用java制作桌面应用程序_Java桌面应用

    对于作Java桌面应用来说 比较烦人的就是安装部署问题 客户端是否安装有jre jre版本问题 jre去哪下载 如 何用jre启动你的Java应 用 不要说刚接触电脑的人 就算是比较熟悉电脑 如果没有接触过Java 面对一个Java应用 如
  • Mysql复习总结

    目录标题 数据库特性 原子性 一致性 隔离性 持久性 Mysql事务所存在的问题 数据库隔离级别 Mysql中的log bin log VS redo log MVCC ACID如何被保证的 存储引擎 Innodb 和 MyISAM Inn
  • 百度云盘分享:MySQL零基础入门视频教程!

    百度云盘分享 MySQL零基础入门视频教程 首先给大家介绍一下数据库工程师 数据库工程师 Database Engineer 是从事管理和维护数据库管理系统 DBMS 的相关工作人员的统称 他属于运维工程师的一个分支 主要负责业务数据库从设
  • spark内存调优

    executor内存 1 RDD存储 persist cache操作 RDD持久化在executor中 注 UnifiedMemoryManager模式可设置spark storage memoryFraction调节 默认0 6 2 sh
  • 机器学习——决策树/随机森林

    0 前言 决策树可以做分类也可以做回归 决策树容易过拟合 决策树算法的基本原理是依据信息学熵的概念设计的 Logistic回归和贝叶斯是基于概率论 熵最早起源于物理学 在信息学当中表示不确定性的度量 熵值越大表示不确定性越大 ID3算法就是