【机器学习算法】10、朴素贝叶斯算法+中文分词项目实战(一)

简介: 【机器学习算法】10、朴素贝叶斯算法+中文分词项目实战(一)

简介


朴素贝叶斯算法是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法,即通过考虑特征概率来预测分类。该算法采用了“特征属性独立性假设”的方法,即对已知类别,假设所有特征属性相互独立。换言之,假设每个特征属性独立地对分类结果发生影响。


   朴素贝叶斯法是基于贝叶斯定理特征属性独立假设的分类方法,属于监督学习的生成模型。对于给定的训练数据集,首先基于特征属性独立假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入,利用贝叶斯定理估计后验概率最大输出。


   朴素贝叶斯法由稳定的分类效率,在大量样本下会有比较好的表现,对小规模的数据仍然有效,能处理多分类任务。其次,朴素贝叶斯适合增量式训练,即可以实时对新增样本进行训练。同时,由于朴素贝叶斯法对缺失数据不敏感,通常用于文本分类识别、欺诈检测、垃圾邮件过滤、拼写检查等领域。

贝叶斯分类器的基本原理就是:通过某对象的先验概率,利用贝叶斯公式计算出后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。


贝叶斯定理


先验概率:根据以往经验和分析得到的概率


全概率公式:设试验E的样本空间为S,A为E的事件,B1,B2,...,Bn为样本空间的一个划分,且P(Bi)≥0(i=1,2,...,n),则有:

贝叶斯定理:设试验E的样本空间为S,A为E的事件,B1,B2,...,Bn为样本空间的一个划分,且P(A)>0, P(Bi)≥0(i=1,2,...,n),则有:


朴素贝叶斯算法流程



朴素贝叶斯算法具体步骤


(1)确定特征属性xj,获取训练样本集合yj;

   该步骤的主要工作就是根据具体情况确定特征属性,并对每个特征进行适当划分,然后人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一步是整个朴素贝叶斯分类中唯一需要人工完成的阶段。


   对于所有待分类数据,确定其特征属性xj,获取训练样本集合yj:

98deae8cf4384d61bbe7dbb873fb2b27.png

其中m表示m个样本,n表示每个样本有n个特征。yi表示训练样本,取值为{C1,C2,...,Ck}


(2)计算各类别的先验概率P(Y=Ck)

   针对训练样本集,可以利用最大似然估计计算出先验概率。但为了弥补最大似然估计中可能出现概率值为0的情况,也就是某个事件出现的次数为0,我们可以使用贝叶斯估计计算先验概率:

dcfedf2bb24359228a68be77b9259a2a.png

其中

2a84afce9b0e8a704b17eb99e856e518.png

(3)计算各类别下各特征属性xj的条件概率P(Xj=xj|Y=Ck)(j=1,2,...,n)

如果xj是离散值,可以假设xj符合多项式分布,这样得到的条件概率是在样本类别Ck中特征xj出现的频率,即:

fa1dc37495de2169576ae39ed505cd28.png

   有些时候,可能某些类别在样本中没有出现,这可能导致条件概率为0,这样会有效后验概率的估计。为了避免出现这样的情况,在这里引入拉普拉斯平滑,即此时有:

8dd0940bbe643ac7940da2ec8013e4f6.png

如果xj是稀疏二项离散值,即各个特征出现概率很低,可以假设xj符合伯努利分布,即特征xj出现记为1,不出现记为0。这里不关注xj出现的次数,这样得到的条件概率是在样本类别Ck中xj出现的频率。此时有:

936644c597bbd76fc83383f8ab5caaf8.png

如果xj是连续值,通常取xj的先验概率为正态分布,即在样本类别Ck中,xj的值符合正态分布。这样得到的条件概率分布是:

   其中,μk和σ2是正态分布的期望和方差,可以通过最大似然估计求得,μk为在样本类别Ck中,所有Xj的均值。σ2为在样本类别中,所有Xj的方差,对于一个连续的样本值,代入正态分布的公式,就可以得到概率分布。


(4)计算各类别的后验概率P(Y=Ck|X=x)

   由于假设各特征属性是条件独立的,则根据贝叶斯定理,各类别的后验概率有如下的推导:

(5)把后验概率最大项作为样本所属类别

   预测的样本所属类别Cresult是使得后验概率P(Y=Ck|X=x)最大化的类别,推导如下:

由于对于所有类别计算后验概率时,分母是一样的,因此预测公式可以进一步简化为:

利用朴素贝叶斯的独立性假设,就可以得到通常意义上的朴素贝叶斯推断公式:


贝叶斯分类器的主要特点


相关文章
|
15天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
44 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
16天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
20 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
29天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
165 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
2月前
|
机器学习/深度学习 存储 算法
图解最常用的 10 个机器学习算法!
图解最常用的 10 个机器学习算法!
|
5月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
210 14
|
5月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
下一篇
无影云桌面