Python数据挖掘 课件 第九章-贝叶斯分类_第1页
Python数据挖掘 课件 第九章-贝叶斯分类_第2页
Python数据挖掘 课件 第九章-贝叶斯分类_第3页
Python数据挖掘 课件 第九章-贝叶斯分类_第4页
Python数据挖掘 课件 第九章-贝叶斯分类_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python数据挖掘第九章贝叶斯分类前言贝叶斯分类,其实是我们日常生活中不可或缺的一部分。它就像一位精通心理学的侦探,通过分析过往的案例和经验,来预测未来的可能性。想象一下,当你打开邮箱,一封封邮件如雪花般飘落,而贝叶斯分类就像是一位高效的分拣员,将垃圾邮件一一剔除,让你能够专注于那些真正重要的信息。本章将介绍贝叶斯定理相关知识,并探讨贝叶斯分类的常用算法,如朴素贝叶斯算法和贝叶斯网络算法,并通过案例演示如何应用这些算法解决分类及预测问题。贝叶斯分类概述朴素贝叶斯算法贝叶斯网络目录01贝叶斯分类概述贝叶斯定理是贝叶斯分类技术的理论基础,由英国数学家托马斯·贝叶斯在1763年的一篇论文中首次提出,它实质上是为了解决逆向概率问题。在现实生活中,我们面对的大部分问题都是像逆向概率问题一样的。我们所拥有的信息都是不完整的,并且我们在做出决策时只能依赖这些有限的信息。因此,我们需要在有限信息的情况下做出最优的预测,贝叶斯定理在解决这些问题时非常有用。9.1.1.贝叶斯定理9.1.1.贝叶斯定理如何理解逆向概率问题逆向概率问题则是从已知结果反推事件的概率。举个例子来说明逆向概率问题:“如果一个袋子里有10个球,包括黑球和白球,但我们不知道它们的比例。那么,仅通过摸出的球的颜色,我们能否判断出袋子里面黑白球的比例?”所以贝叶斯定理可以帮助我们在已知一些信息的情况下,更新我们对未知量的估计。9.1.1.贝叶斯定理贝叶斯定理的公式如何理解该公式?9.1.1.贝叶斯定理基本概念1.先验概率先验概率是指在获得新的信息或数据之前,根据之前已有的知识、经验或观察所估计的概率值。它反映了在没有新的观察或实验数据的情况下,对某个事件或假设的可能性的主观预期。2.后验概率在贝叶斯定理中,后验概率是在考虑观测数据后,通过贝叶斯定理计算得到的事件发生概率。它是对先验概率进行更新和修正后的估计。后验概率用

表示,表示在事件B发生的条件下,事件A发生的概率。9.1.1.贝叶斯定理基本概念3.条件概率在贝叶斯定理中,条件概率也称为似然函数,指的是在已经发生或已知某个事件的前提下,另一个事件发生的概率.条件概率的公式9.1.2.贝叶斯分类贝叶斯分类的核心思想是利用贝叶斯定理来计算样本属于某个类别的概率,并选择概率最大的类别作为分类结果。9.1.2.贝叶斯分类贝叶斯分类优缺点优点缺点简单有效假设属性之间相互独立,这往往并不成立能够处理小样本问题需要知道先验概率对缺失数据不敏感分类决策存在错误率9.1.3.应用领域1.文本分类如在垃圾邮件过滤中,通过学习用户的历史标记信息,贝叶斯分类算法可以准确地判断新邮件是否为垃圾邮件。2.医学诊断贝叶斯算法在医学诊断中具有重要地位。通过结合病患的症状和相关医学测试结果,贝叶斯算法可以精确地预测患者可能患有的疾病。3.金融领域通过学习历史数据和特征,贝叶斯算法可以预测股票价格的波动趋势,评估借款人的信用风险,帮助投资者做出明智的投资决策。在风险管理方面,贝叶斯算法可以帮助识别潜在风险和漏洞,并制定相应的风险管理策略。4.推荐系统贝叶斯算法在推荐系统的个性化推荐中也起着重要作用。根据用户的历史行为和偏好,贝叶斯算法可以预测用户可能感兴趣的产品或服务,并为用户生成个性化的推荐。02朴素贝叶斯算法9.2.1.基本原理特征条件独立假设朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类方法。特征条件独立假设指出,在给定类别变量的条件下,各个特征或属性之间是相互独立的。换句话说,假设给定类别变量的情况下,不同的特征之间不存在有意义的关联或依赖关系。特征条件独立假设的数学表达如下:假设存在一个目标变量

和多个特征变量特征条件独立假设可以表示9.2.1.基本原理算法原理如何计算新样本

属于哪一个标签?9.2.1.基本原理算法原理那么该如何计算

?9.2.1.基本原理算法原理9.2.1.基本原理零概率问题在朴素贝叶斯算法中,零概率问题是指在计算概率时,某个类别下的某个特征或特征组合在训练数据集中没有出现,导致计算的概率为零。这个问题会影响模型的训练和预测结果。零概率问题可能出现在两种情况下:1)训练集中某个类别下的某个特征或特征组合没有出现2)测试集中出现了训练集中没有见过的特征或特征组合如何解决零概率问题?9.2.1.基本原理平滑处理为了避免出现零概率问题,通常会采用平滑处理方法。平滑处理的目的是在计算概率时,为那些在训练数据中没有出现的特征或组合提供一个非零的概率估计。两种常用的平滑处理方法:1)拉普拉斯平滑(Laplacesmoothing)2)Lidstone平滑9.2.1.基本原理1)拉普拉斯平滑(Laplacesmoothing)在计算概率时,对每个特征出现的次数进行加一处理,并对分母进行加上类别数乘以一个常数(通常为1)的调整。这样可以确保每个特征出现的概率都不为零。其中,

表示在训练数据中样本

X在类别标签

Y下出现的次数,

表示训练数据中类别标签Y出现的次数,n

是样本

X

的取值数量。9.2.1.基本原理2)Lidstone平滑和拉普拉斯平滑类似,Lidstone平滑也是对概率的分子和分母都进行一定的加权处理。不同之处在于,Lidstone平滑引入了一个参数alpha来调整平滑的强度。其中,

表示在训练数据中样本

X在类别标签

Y下出现的次数,

表示训练数据中类别标签Y出现的次数,n

是样本

X

的取值数量。alpha是平滑参数,通常为一个非负实数,用于控制平滑的程度。alpha=1时,Lidstone平滑等价于拉普拉斯平滑9.2.1.基本原理9.2.1.基本原理9.2.1.基本原理9.2.1.基本原理对于上述问题可以用Python代码来解决。#导入需要的模块和类fromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.naive_bayesimportMultinomialNB#定义了一个数据集data,包含了一些文本数据,每个文本数据对应一个标签labeldata=['免费抽奖赢取豪华度假套餐','明天开会的议程已经更新','优惠促销限时折扣','研讨会即将开始','特价机票机会难得立即预订','优秀员工评选即将开始']label=[0,1,0,1,0,1]#创建了一个TfidfVectorizer的实例vectorizer_word,并用fit()方法对数据进行训练,以便提取文本的TF-IDF特征:vectorizer_word=TfidfVectorizer()vectorizer_word.fit(data)9.2.1.基本原理#使用transform()方法将训练数据转换为TF-IDF特征表示,得到训练集traintrain=vectorizer_word.transform(data)#定义了一个测试数据test,使用transform()将其转换为与训练集相同的特征表示test=vectorizer_word.transform(['参加活动赢取免费机票'])#创建了一个MultinomialNB的实例clf,并用fit()方法对训练数据进行拟合,训练朴素贝叶斯分类器clf=MultinomialNB()clf.fit(train.toarray(),label)#使用训练好的分类器对测试数据进行预测,得到预测结果predictionprediction=clf.predict(test.toarray())print(prediction)#使用训练好的分类器对测试数据的每个类别进行概率预测,得到概率结果probabilitiesprobabilities=clf.predict_proba(test.toarray())print(probabilities)9.2.1.基本原理运行结果如图所示根据运算结果,我们可以清晰地看到,该邮件属于垃圾邮件。9.2.2.算法分类1.多项式朴素贝叶斯算法适用于文本分类和离散特征的分类问题多项式朴素贝叶斯是基于贝叶斯定理和多项式分布的条件概率模型,假设特征的条件概率服从多项式分布,即特征是离散型的,通过估计每个类别的条件概率以及各个特征对于每个类别的影响,多项式朴素贝叶斯算法可以对新的样本进行分类预测。9.2.2.算法分类2.伯努利朴素贝叶斯算法适用于处理二元离散型特征的分类问题伯努利分布是概率论中最简单的离散型概率分布之一。它描述的是一个随机试验只有两个可能结果的情况,比如成功和失败、正面和反面、1和0等。伯努利朴素贝叶斯算法基于伯努利分布,通过计算给定类别的条件概率来进行分类。在该算法中,我们关注每个特征在给定类别下的出现与否,而不考虑特征出现的次数。因此,对于每个特征,我们仅考虑它是否出现,而不关心它在文档中出现的频率。9.2.2.算法分类3.高斯朴素贝叶斯算法高斯朴素贝叶斯算法假设特征的条件概率符合高斯分布。高斯分布的形状呈现出典型的钟形曲线,以均值为中心对称。它的两个关键参数是均值和标准差。均值决定曲线的中心位置,标准差决定曲线的宽度。标准差越大,曲线越平缓,表示数据的分布越分散;标准差越小,曲线越陡峭,表示数据的分布越集中。在高斯朴素贝叶斯算法中,每个特征的条件概率分布都被建模为一个独立的高斯分布。在训练阶段,算法会统计每个类别下每个特征的均值和方差。然后,在预测阶段,它使用贝叶斯定理计算给定特征的类别后验概率,并选择具有最高后验概率的类别作为预测结果9.2.3.实战准备1)MultinomialNB在Python中,MultinomialNB函数是scikit-learn库中的一个类,用于实现MultinomialNaiveBayes分类算法。#导入所需的库fromsklearn.naive_bayesimportMultinomialNB#创建MultinomialNB类的实例classifier=MultinomialNB()#准备训练集和目标变量,并将其传递给MultinomialNB类的fit方法进行模型训练classifier.fit(X_train,y_train)#这里的X_train是训练集的特征数据,y_train是训练集的目标变量(类别标签)#对新样本进行预测,使用MultinomialNB类的predict方法y_pred=classifier.predict(X_test)#这里的X_test是新样本的特征数据,y_pred是预测的类别标签。9.2.3.实战准备2)BernoulliNB与MultinomialNB类似,BernoulliNB也是朴素贝叶斯算法的一种变体,适用于处理二元特征数据。#导入所需的库fromsklearn.naive_bayesimportBernoulliNB#创建BernoulliNB类的实例classifier=BernoulliNB()#准备训练集和目标变量,并将其传递给BernoulliNB类的fit方法进行模型训练classifier.fit(X_train,y_train)#对新样本进行预测,使用BernoulliNB类的predict方法y_pred=classifier.predict(X_test)9.2.3.实战准备3)GaussianNB与MultinomialNB和BernoulliNB不同,GaussianNB适用于处理连续特征的数据。#导入所需的库fromsklearn.naive_bayesimportGaussianNB#创建GaussianNB类的实例classifier=GaussianNB()#准备训练集和目标变量,并将其传递给GaussianNB类的fit方法进行模型训练classifier.fit(X_train,y_train)#对新样本进行预测,使用GaussianNB类的predict方法y_pred=classifier.predict(X_test)03贝叶斯网络朴素贝叶斯模型中的一个限制是它假设特征属性之间是条件独立或基本独立的。这在实际应用中很难完全满足,因为现实世界中的特征属性通常具有一定的相关性。当特征属性之间存在较强相关性时,朴素贝叶斯模型的分类能力就会受到限制。为了克服这个限制,贝叶斯网络应运而生。贝叶斯网络在处理复杂问题、处理有关联特征的数据时表现较好,它能够处理不完全条件独立的情况,并能够根据观测数据进行概率推理和决策。贝叶斯网络9.3.1.基本原理1.贝叶斯网络的定义与原理贝叶斯网络(BayesianNetwork)是一种概率图模型,用有向无环图(DAG)表示变量之间的依赖关系。它采用概率论作为基础,通过使用条件概率表来描述节点之间的条件依赖关系和相互独立性。贝叶斯网络的基本组成1)节点贝叶斯网络的节点表示随机变量。每个节点代表一个事件或属性,可以是离散的或连续的。节点通常具有概率分布以及可能的取值集合。2)有向边贝叶斯网络中的有向边表示变量之间的依赖关系。有向边从一个节点指向另一个节点,表示一个节点是其父节点的条件依赖。3)条件概率表(CPT)贝叶斯网络的每个节点都有一个条件概率表,它描述了该节点在给定其父节点的取值情况下的概率分布。CPT中的概率指定了每个可能的取值情况和对应的概率。9.3.1.基本原理举例(医疗诊断)说明贝叶斯网络的构造假设有以下随机变量和它们的状态:S(吸烟者):状态集合={1(是),0(否)}C(煤矿矿井工人):状态集合={1(是),0(否)}L(肺癌):状态集合={1(是),0(否)}E(肺气肿):状态集合={1(是),0(否)}其中S是L的父节点,S和C是E的父节点。然后定义条件概率表(CPT)。这些表将基于以下假设进行填充,这些假设基于真实世界的统计或专家知识,但为了示例,我们将使用简化的数字。9.3.1.基本原理(医疗诊断)贝叶斯网络9.3.1.基本原理2.结构学习结构学习的目标是找到一个最优的网络结构,在这个网络中,能够最准确地表示观测数据的概率分布。从20世纪90年代以来,研究者们从不同的角度对贝叶斯网络的结构学习问题进行了深入研究,提出了许多经典的结构学习算法。这些算法大致可以归为三大类。1)基于评分搜索的方法这类方法通过定义一个评分函数,在不同的网络结构中搜索并评估其适应度;常见的算法包括:贝叶斯信息准则(BayesianInformationCriterion,BIC)最大边缘似然准则(MaximumMarginalLikelihoodCriterion,MML)等9.3.1.基本原理2.结构学习2)基于依赖分析的方法这类方法通过分析变量之间的依赖关系来构建网络结构;常见的算法包括:基于约束的学习(Constraint-basedLearning)独立分布假设(Independence-basedAssumption)等3)混合学习方法这类方法综合了评分搜索和依赖分析的思想,通过联合使用不同的学习策略来进行网络结构学习;常见的算法包括:贝叶斯搜索(BayesianSearch)基于遗传算法的学习(GeneticAlgorithm-basedLearning)等9.3.1.基本原理3.参数学习1)最大似然估计(MLE)最大似然估计是一种基于观测数据来估计模型参数的方法。在贝叶斯网络的参数学习中,MLE的目标是找到能够最大化观测数据出现概率的参数值。参数学习的目标是通过观测数据来估计网络中的条件概率分布,即给定父节点的条件下子节点的概率。在贝叶斯网络的参数学习中,最大似然估计(MaximumLikelihoodEstimation,MLE)和期望最大化算法(Expectation-Maximization,EM)是两种常用的方法。2)期望最大化算法(EM)期望最大化算法是一种迭代方法,用于在含有隐变量或缺失数据的情况下进行参数学习。EM算法通过在期望步骤(E步骤)和最大化步骤(M步骤)之间交替进行,逐步逼近真实的参数值。9.3.1.基本原理4.贝叶斯网络的推理推理过程1)对所有可观察随机变量节点用观察值实例化,对不可观察节点实例化为随机值。2)对有向无环图(DAG)进行遍历,对每一个不可观察节点y,进行计算,其中wi表示除y以外的其它所有节点,a为正规化因子,sj表示y的第j个子节点。3)使用上一步计算出的各个y作为未知节点的新值进行实例化,重复第二步,直到结果充分收敛。4)将收敛结果作为推断值。9.3.2.算法流程及实战准备算法流程1.安装库pipinstallpgmpy2.创建一个贝叶斯网络#导入f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论