当前位置: 首页 > article >正文

工业大数据分析算法实战-day07

文章目录

  • day07
    • 概率图模型
      • 朴素贝叶斯(Naive Bayes)
      • 贝叶斯网络(Bayesian Network)
      • 一般图模型
      • 生成式和判别式模型
      • 图模型结构与模型推理
    • 集成学习
      • Boosting算法
      • Stacking算法

day07

今天是第七天,昨日主要针对是第三章节中的决策树算法、支持向量机、隐马尔可夫模型进行阐述,介绍了算法的优化点以及核心参数,今天阐述第9小节概率图模型与贝叶斯方法、第10小节集成学习

概率图模型

概率图模型简称图模型,是一种用图结构来描述多元随机变量之间条件独立关系的概率模型。概率图模型简单可以分为如下示例:

image-20241217201648572

图模型分成两种:有向图无向图

  • 有向图模型(Directed Graphical Models)

    • 特点:关系有方向,比如“谁影响谁”或者“谁依赖谁”。
    • 例子:你准备考试,学习好不好可以被下面的因素影响:
      • 节点1:你的学习时间(直接影响)
      • 节点2:你的睡眠质量(影响学习时间)
      • 节点3:你的考试成绩(依赖学习时间)这些关系之间有方向,比如:“睡眠质量 → 学习时间 → 考试成绩”。
      • 这种有方向的依赖关系,就属于有向图模型,像贝叶斯网络就是这样的模型。
    • 进一步扩展:动态贝叶斯网络(DBN):这就像看电视连续剧,每一集都会影响下一集的情节。
    • 隐马尔可夫模型(HMM):你每天心情的变化是“隐藏的”(别人看不到),但你每天的表现(比如脸色好不好)是可以观察到的。大家通过观察你的表现推测你的心情,这就是HMM的原理。
  • 无向图模型(Undirected Graphical Models)

    • 特点:关系没有方向,强调“谁和谁之间有关联”,但不会说谁影响谁。
    • 例子:假设有个微信群里几个人聊天:
      • 小明和小红聊得很多,小红和小李也聊得很频繁。这种“谁和谁关系好”就是一种无向的关系,因为大家只是互相联系,没有明确的影响方向。
      • 这种关系用无向图表示,就属于马尔可夫网络
    • 吉布斯随机场:想象一张床上放着很多沙包,每个沙包的重量会影响周围沙包的平衡。这种影响关系就是一种无向关系。
    • 条件随机场(CRF):比如看一段话,判断每个词的词性。每个词的判断依赖于它周围的词,但没有明确的方向性。

朴素贝叶斯(Naive Bayes)

  • 基本概念: 朴素贝叶斯是一种简单的概率分类方法,它基于贝叶斯定理,假设特征之间是“独立”的。也就是说,在做出分类决策时,朴素贝叶斯认为每个特征对于分类的贡献是相互独立的,尽管现实中这些特征可能是有关系的。
  • 通俗解释: 假设你要判断一封邮件是否是垃圾邮件(垃圾邮件或正常邮件是分类目标)。你可以根据邮件中的特征(如是否包含“优惠”、“免费”等关键词)来进行判断。朴素贝叶斯做出的假设是:每一个特征(比如是否含有“优惠”这个词)对是否是垃圾邮件的影响是独立的。虽然实际情况可能是这些词语是相互关联的,但朴素贝叶斯忽略了这些关联,直接将每个词的影响单独计算,再加起来得出结论。
  • **现实例子:**每天根据天气、气温、湿度等因素判断是否带伞。朴素贝叶斯会假设天气、气温、湿度等因素之间的影响是独立的,即使在现实中这些因素可能有联系。

贝叶斯网络(Bayesian Network)

  • 基本概念: 贝叶斯网络是一种图形化的模型,它通过有向图来表示变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的依赖关系。它利用贝叶斯定理进行推理,计算某些变量的条件概率。
  • 通俗解释: 贝叶斯网络可以看作是对复杂系统中变量之间关系的“图示化”。假设你有一张图,节点表示不同的因素,比如天气、交通状况、出行计划等。箭头指示了这些因素之间的因果关系。通过贝叶斯网络,你可以根据已知的某些信息(比如今天下雨了)来推断其他未知的信息(比如是否会堵车)。
  • **现实例子:**在计划外出时,天气(下雨或不下雨)会影响你是否需要带伞,而交通状况可能又会受到天气的影响。贝叶斯网络通过图形化的方式帮助你推理,给出最合理的决策。

一般图模型

一般图模型是概率图模型的一个更为广泛的概念,它包括不同类型的图结构和推理方法,主要包括以下几种:

  • PGM 是一种用图结构表示随机变量和它们之间条件依赖关系的模型,贝叶斯网络和马尔可夫网络(MRF)都是PGM的特殊形式。PGM 用图来表达复杂系统的依赖关系,利用概率进行推理。

    • 通俗解释: 想象一个大企业的管理结构图,每个员工代表一个随机变量,边表示员工之间的依赖关系(例如,经理与下属的关系)。通过PGM,你可以通过已知的某些信息(比如某个经理的决策)推断其他未知的信息(如员工的表现)。
  • 马尔可夫随机场是一种无向图模型,主要用于描述变量之间的相互依赖关系。在MRF中,图中的节点代表随机变量,而边表示这些变量之间的直接依赖关系。-

    • 通俗解释: MRF 通常用于处理“局部依赖”的情况,即每个变量的状态只依赖于它相邻的变量。例如,在图像处理任务中,每个像素的颜色可能与其相邻像素的颜色相关,MRF可以用来建模这种局部依赖关系。
    • **现实例子:**在图像分割任务中,MRF 可以用来建模像素的标签(比如前景或背景)的依赖关系,假设相邻像素的标签更可能相同。
  • 条件随机场是MRF的一种变体,主要用于有标签的序列数据的标注问题(如文本标注、语音识别等)。CRF通过条件概率模型来建模变量之间的依赖关系,特别强调在给定输入数据条件下输出的依赖性。

    • 通俗解释: CRF主要用来处理序列问题,像是在做自然语言处理时,识别一个句子中的每个词的词性标签(名词、动词等)。在CRF模型中,给定了输入句子的上下文信息,每个词的标签依赖于它周围词的标签。
    • **现实例子:**在命名实体识别(NER)任务中,CRF用于从句子中识别出人物、地点等实体。假设“李华”是一个人名,CRF会通过上下文推断出“李华”可能是人名,而不是其他实体。

生成式和判别式模型

假设你有一组图片,目标是将图片分类为“猫”或“狗”。

  • 生成模型(如朴素贝叶斯)会试图描述**“猫”和“狗”**是如何生成这些图片的特征的(例如,猫的耳朵和狗的尾巴的特征),它建模的是图像的联合分布 P(猫,图像)P(猫, 图像)P(猫,图像) 和 P(狗,图像)P(狗, 图像)P(狗,图像),并且可以通过贝叶斯公式推断每张图片属于“猫”还是“狗”。

  • 判别模型(如逻辑回归)会直接关注给定一张图片,如何预测它是猫还是狗。它只关心 P(猫∣图像)P(猫 | 图像)P(猫∣图像) 和 P(狗∣图像)P(狗 | 图像)P(狗∣图像),即在已知图像特征的条件下,如何区分标签。

  • 生成模型关注 联合分布 P(A,B)P(A, B)P(A,B),试图模拟数据和标签的共同生成过程。

  • 判别模型关注 条件分布 P(A∣B)P(A | B)P(A∣B),直接根据输入预测输出标签。

图模型结构与模型推理

图模型结构指的是概率图模型中变量如何通过边连接起来,表示它们之间的依赖关系。不同的图结构(如有向图、无向图)适合不同类型的任务。

模型推理是通过已知的信息来推断未知的信息。在概率图模型中,推理通常是通过计算条件概率分布来实现的。具体的推理方法可以包括:

  • 边际推理:计算某些变量的边际概率(即忽略其他变量)。
  • 条件推理:计算某些变量在给定其他变量条件下的概率。
  • 最大后验推理(MAP推理):给定某些观测值,推断最有可能的隐变量值。

通俗解释: 图模型结构就像是你在生活中做决策时,如何把不同的因素和它们之间的依赖关系通过图表表示出来。模型推理则是利用这些图表计算出你需要的信息,比如你知道一些条件下其他变量的可能性,或者你想通过已知条件推测其他未知的信息。

集成学习

构建多个学习器来完成任务,主要有以下三类:Bagging、Boosting、Stacking

方法思想具体步骤代表算法优点缺点
Bagging通过将多个模型训练在不同的随机子集上,降低方差,减少过拟合。从训练数据中有放回地抽取多个子集,使用不同子集训练多个相同的模型,对模型预测结果进行平均(回归)或投票(分类)。随机森林(Random Forest)减少模型方差,降低过拟合风险,对噪声有鲁棒性。训练时间较长,消耗计算资源,需要多个独立的模型进行训练。
Boosting逐步训练模型,每次着重关注前一个模型的错误,减少偏差。训练初始弱模型,增加前一模型错误样本的权重,训练下一个模型,迭代训练,最终加权所有模型的预测。AdaBoost, Gradient Boosting, XGBoost显著提高准确性,特别适合弱模型,可以减少偏差,提高整体性能。对噪声和异常值敏感,训练时间长,计算复杂。
Stacking将不同类型的模型组合,通过一个元模型进一步学习如何合并预测结果。训练多个不同类型的基础模型,将基础模型的预测结果作为新特征输入元模型,使用元模型做最终预测。常见组合:逻辑回归+决策树+神经网络等灵活结合不同类型的模型,提升性能,能够发挥不同模型的优势,提升准确性。需要大量计算资源,训练时间长,需要调优和选择合适的模型组合。

image-20241217211822416

Boosting算法

可分为AdaBoost和Gradient Boosting两类:

算法关键特点优点缺点提升与优化
AdaBoost使用弱学习器(如决策树桩),每个模型集中改进前一个模型的错误。简单易理解,效果直观;能提高弱模型的性能。对噪声和异常值敏感;训练速度慢,可能容易过拟合。主要是通过加权错分类样本来提高性能,但不适应复杂数据和高维数据。
GBM基于梯度提升的思想,逐步优化每一棵树来减少模型的误差。适合各种回归和分类任务;对于复杂数据能较好地捕捉非线性关系。训练时间长,计算开销大;对参数选择敏感。引入梯度下降优化和树的增量学习,但计算效率较低,处理大规模数据时可能不够快。
GBDT基于GBM,使用决策树作为基础模型,通过梯度提升减少误差。精度高,广泛应用于各类任务;能处理复杂的非线性关系。训练速度慢,计算开销大;容易发生过拟合,调参难度大。引入了更加精细的优化策略,如剪枝和更好的树结构,但计算效率相对较低。
XGBoost基于GBDT的优化版本,采用正则化、剪枝、并行计算等技术提升效率。计算速度快,支持并行计算;更强的正则化能力,避免过拟合;对稀疏数据支持较好。参数较多,需要精细调优;对异常值比较敏感。在GBDT基础上加入了正则化、剪枝、并行计算等,提升了训练速度和模型的泛化能力。
LightGBM采用基于直方图的决策树算法,支持类别特征,速度快,能处理大规模数据。训练速度极快,适用于大规模数据;内存使用少,支持类别特征处理。调参复杂,可能容易过拟合;对小数据集效果不一定好。使用直方图算法减少了训练时间,支持类别特征,提高了大规模数据集的处理能力,优化了内存使用。

Stacking算法

1、训练阶段的数据划分方法:在 Stacking 的训练阶段,我们首先需要训练多个基础模型,然后用这些模型的预测结果来训练一个元模型。为了避免训练过程中的数据泄露,通常会采取以下两种数据划分方式,把数据分成多个小部分,让每个基础模型在不同的子集上训练,确保它们的预测没有泄露训练数据。

  • K折交叉验证(K-Fold Cross Validation)
    • 我们把所有的训练数据分成 K 份(通常是 5 或 10)。例如,如果 K=5,我们会把数据分成 5 份,每一份轮流作为验证集,其余 4 份作为训练集。
    • 在训练每个基础模型时,我们用 K-1 份数据训练它,用剩下的 1 份数据来评估它的表现。这样每一份数据都能作为验证集,确保基础模型的预测是公平的。
    • 每个基础模型训练好后,它会在验证集上做预测,这些预测结果会作为新的特征,传递给 元模型(第二层模型)进行训练。
  • Out-of-Bag 数据(OOB 数据): 这种方法通常是在 Bagging(例如随机森林)中使用。在训练过程中,每次训练时模型只使用部分数据,剩余的没有被选中的数据叫 OOB 数据,这些数据可以用来评估模型的效果。在 Stacking 中,OOB 数据可以用于生成每个基础模型的预测结果,避免过度拟合。类似于“每次都留下一些数据不参与训练,用这些数据来帮助模型改进”。

2、评分阶段的模型行为:在 评分阶段,我们用训练好的模型来对新的数据进行预测。这个过程的步骤如下,就像是我们把每个模型的预测结果拿出来,交给另一个“总的模型”去做最终的决策,来得到最终的预测结果:

  • 基础模型预测:我们先用训练好的 基础模型(第一层模型)来对新的数据进行预测。每个基础模型会给出它自己的预测结果。比如,一个模型预测的是一个数值(回归问题),另一个模型预测的是一个类别标签(分类问题)。
  • 元模型预测:然后,我们将这些基础模型的预测结果作为新的输入数据(新特征),传递给 元模型(第二层模型)。元模型会学习如何从这些基础模型的预测结果中选出最合适的预测,最终给出最终结果。
    • 如果是回归问题,元模型给出一个数值预测。
    • 如果是分类问题,元模型给出一个类别标签或者类别的概率。

http://www.kler.cn/a/440753.html

相关文章:

  • #Js篇:map结构转普通js普通对象
  • Python毕业设计选题:基于django+vue的宠物服务管理系统
  • 汽车故障码 B100117 供电电压过高的解析及消除方法
  • 如何通过命令行解锁 macOS Gatekeeper(并恢复默认设置)
  • Ubuntu 系统下安装 Nginx
  • 戴森球计划新玩法!利用MOD和cpolar实现公网环境多人游戏
  • 游戏引擎学习第53天
  • Kafka实现监听多个topic
  • 2、C#基于.net framework的应用开发实战编程 - 设计(二、一) - 编程手把手系列文章...
  • 第19天:信息收集-Web应用源码获取闭源备份开发泄漏WebPack打包资源搜索ICO定位
  • ElasticSearch系列:索引分片调整
  • 奇绩创坛公开课第01课_创业走出第一步_陆奇:学习笔记
  • shell脚本目录下所有文件中关键词替换方法
  • K8s 如何自己实现云上的proxy代理
  • 手眼标定工具操作文档
  • 接口数据做缓存,响应飞快似天神
  • Java项目--仿RabbitMQ的消息队列--消息持久化
  • STM32单片机芯片与内部26 RTC——万年历、时钟 标准库配置 HAL库配置
  • 云计算HCIP-OpenStack02
  • 在OpenCV中轮廓处理