朴素贝叶斯模型

这篇具有很好参考价值的文章主要介绍了朴素贝叶斯模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

朴素贝叶斯法

朴素贝叶斯是一种用先验概率估计后验概率的模型,通过估计先验概率得到样本和类别的近似联合概率,随后通过联合概率分布获得需要的后验概率分布进而实现分类。本次介绍的朴素贝叶斯法主要包括三块:总体思想(将后验概率转换为先验概率)、极大似然估计(使用极大似然法估计先验概率)、贝叶斯估计(使用贝叶斯估计得到先验概率)。

符号说明

设输入空间\(\mathcal{X}\subseteq \mathbf{R}^n\)\(n\)维向量的集合,输出空间的集合\(\mathcal{Y}=\{c_1,c_2,\cdots,c_K\}\),则在样本(示例,特征向量)\((\bm{x},y)\)\(\bm{x}\in \mathcal{X}\)\(y\in \mathcal{Y}\)。继续定义\(X,Y\)分别是在输入空间\(\mathcal{X}\)和输出空间\(\mathcal{Y}\)上的随机变量,\(P(X,Y)\)表示\(X\)\(Y\)的联合概率分布,且训练数据集

\[T=\{(\bm{x_1},y_1), (\bm{x_2},y_2),\cdots, (\bm{x_N},y_N)\} \]

\(P(X,Y)\)独立同分布产生。

贝叶斯总体模型

对于一个分类任务,我们可以使用判别方法直接计算样本\(x\)为所有类别的概率,并通过最大的类别概率来获得其类别即:
\begin{equation}
y^{hat} = \mathop\arg\max\limits_{c_k}P(Y=c_k|X=\bm{x}), k=1,2,\cdots,K
\end{equation}
我们也可以通过生成方法估计样本的总体分布并间接获得样本为每个类别的概率即:

\[\begin{align} P(Y=c_k|X=\bm{x})&=\frac{P(X=\bm{x},Y=c_k)}{P(X=\bm{x})}\notag \\ &=\frac{P(Y=c_k)P(X=\bm{x}|Y=c_k)}{P(X=\bm{x})}\notag \\ &=\frac{P(Y=c_k)P(X=\bm{x}|Y=c_k)}{\sum\limits_{i=1}^k P(Y=c_k)P(X=\bm{x}|Y=c_k)}\\ \end{align} \]

这样就基本构成了贝叶斯模型,但仅仅这样是不够的,因为\(P(X=\bm{x}|Y=c_k)\)是很难求得的,\(\bm{x}\)\(n\)维的向量,其组合太大,若假设在\(\bm{x}\)中,其每维维可取值\(S_j\)\(j\)代表每一维,\(j=1,2,\cdots,n\),那么对于一个样本\(\bm{x}\)其预测为\(c_k\)一个类别所含有的参数就为\(\prod\limits_{j=1}^{n}S_j\),若要得到这个样本的全部类别,那么需要的参数量就是\(k\prod\limits_{j=1}^{n}S_j\),显然这样做太复杂了,我们需要统计的组合太多,怎么办?

一种简化计算的方式是,假定每个维度的特征之前是互不相关的,虽然这样会损失掉很多原有相关的信息,但是可以大大的减少参数量,如下所示:

\[\begin{align} P(X=\bm{x}|Y=c_k)&=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},\cdots,X^{(n)}=x^{(n)}|Y=c_k)\notag \\ &=P(X^{(1)}=x^{(1)}|Y=c_k)P(X^{(2)}=x^{(2)}|Y=c_k)\cdots P(X^{(n)}=x^{(n)}|Y=c_k)\notag \\ &=\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) \end{align} \]

这样参数量可以由\(k\prod\limits_{j=1}^nS_j\)降低为\(k\sum\limits_{j=1}^nS_j\),毫无疑问,这无疑是一个巨大的突破,尽管失去了特征之间的相关性信息。
\((3)\)带入\((2)\)中可得:

\[\begin{align} P(Y=c_k|X=\bm{x})&=\frac{P(Y=c_k)P(X=\bm{x}|Y=c_k)}{\sum\limits_{i=1}^k P(Y=c_k)P(X=\bm{x}|Y=c_k)}\notag \\ &=\frac{P(Y=c_k)\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum\limits_{i=1}^k\{P(Y=c_k)\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)\}} \end{align} \]

对于同一个样本\(\bm{x}\),其共需要预测\(K\)个类别\(c_1,c_2,\cdots,c_K\),但从上式可知,无论预测哪个类别,在分母中,会计算所有类别的相关信息,而这对于所有类别都是相同的,所以分母部分可以省略。故最终的模型为:

\[\begin{align} P(Y=c_k|X=\bm{x})&={P(Y=c_k)\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)} \end{align} \]

另外几个需要区分的点是:
先验概率:即通过样本可以统计出来的概率。
后验概率:需要通过转换求取的概率,不能直接统计得到。

极大似然估计

通过贝叶斯模型,我们将一个后验概率通过条件概率公式转换成了求解\(P(X, Y)\)的分布并通过简化版的先验概率(特征独立)来估计分布\(P(X,Y)\)。但是这里面有一个问题没有解决,那就是先验概率\(P(X^{(j)}=x^{(j)}|Y=c_k)\)\(P(Y=c_k)\)如何求解?
当然一种非常直观的计算方式就是直接统计满足上面条件的样本占总体样本的比例,所以很自然的我们可以得到下面的两个计算式子:

\[\begin{equation} P(Y=c_k) = \frac{\sum\limits_{i=1}^{N}I(y_i=c_k)}{N} \end{equation} \]
\[\begin{equation} P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^N I(y_i=c_k)} \end{equation} \]

其中\(a_{jl}\)表示第\(j\)个特征的第\(i\)个可能取的值,\(x_i^{(j)}\)表示第\(i\)个样本的第\(j\)个特征的值。
但是为什么可能这样表示呢?我们通过极大似然估计来证明上述两个等式成立。
\(P(Y=c_k)\)的概率,按照极大似然函数的思想就是求解当\(P(Y=c_k)\)为多少时,可以使得能够最有可能产生这么一群样本。
因此,我们可以假设\(\theta=P(Y=c_k)\)为参数,那么\(1-\theta=P(Y\neq c_k)\)。并且我们已经假设过所有样本是独立同分布产生的,故可以构造如下的似然函数:

\[L(\{\bm{x_1},y_1\},\{\bm{x_2},y_2\},\{\bm{x_N},y_N\};\theta)=\theta^{\sum\limits_{i=1}^N I(y_i=c_k)}(1-\theta)^{N-\sum\limits_{i=1}^NI(y_i=c_k)} \]

两边取自然对数得:

\[\ln L=\sum\limits_{i=1}^N I(y_i=c_k)\ln\theta + (N-\sum\limits_{i=1}^NI(y_i=c_k)) \ln(1-\theta) \]

两边求导

\[\frac{L^{'}}{L}=\frac{\sum\limits_{i=1}^N I(y_i=c_k)}{\theta} + \frac{\sum\limits_{i=1}^NI(y_i=c_k)-N}{1-\theta} \]

令其为0\(\Rightarrow\)\(\theta=\frac{\sum\limits_{i=1}^{N}I(y_i=c_k)}{N}\)

对于\(P(X^{(j)}=a_{jl}|Y=c_k)\),我们先对其进行转换:

\[P(X^{(j)}=a_{jl}|Y=c_k)=\frac{P(X^{(j)}=a_{jl},Y=c_k)}{P(Y=c_k)} \]

由于分母已经求出,因此只需再求出分子即可,我们使用相同的思想,将样本分为两部分,第一部分样本满足$$P(X^{(j)}=a_{jl},Y=c_k)$$,第二部分取其补集。同样的,我们让概率参数\(\theta=P(X^{(j)}=a_{jl},Y=c_k)\),那么\(1-\theta\)=不同时满足上述条件的概率。
根据样本都是独立同分布产生的,我们构造相似的似然函数

\[L(\theta)=\theta^{\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)}(1-\theta)^{N-\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)} \]

显然可以求出极大值\(\theta=\frac{\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)}{N}\),所以易得

\[P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^N I(y_i=c_k)} \]

贝叶斯估计

极大似然估计虽然可以计算出先验概率,但是可能会出现估计参数的概率值为0的情况,即满足\(x_i^{(j)}=a_{jl}\)\(y_i=c_k\)的样本数量为0。(这通常是不合理的,因为我们得到的样本本就是一个采样,无法保证完全近似全体样本的分布,哪怕概率很小通常也不会设为0),那么如何避免这种情况?
一种处理方式就是添加系数,如下式:

\[\begin{equation} P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^N I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum\limits_{i=1}^N I(y_i=c_k)+S_j\lambda} \end{equation} \]

\(\lambda=0\)时为极大似然估计,当\(\lambda=1\)时成为拉普拉斯平滑,满足下式:

\[\begin{equation} \begin{cases} P_\lambda(X^{(j)}=a_{jl}|Y=c_k)>0\\ \sum\limits_{i=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1 \end{cases} \end{equation} \]

对于第二个式子,相当于把\(j\)维的每一个值分成了一份,公有\(S_j\)份,所有概率最后相加为1。
同样的对\(P(Y=c_k)\)也可以进行改写。文章来源地址https://www.toymoban.com/news/detail-839334.html

\[\begin{equation} P(Y=c_k) = \frac{\sum\limits_{i=1}^{N}I(y_i=c_k) + \lambda}{N+K\lambda} \end{equation} \]

到了这里,关于朴素贝叶斯模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 模型训练:逻辑回归、KNN、朴素贝叶斯、LDA、支持向量机、GBDT、决策树

    常用的分类预测模型:逻辑回归、KNN、朴素贝叶斯、LDA、SVC、GBDT、决策树 如果需要了解相关原理的话,可以另行百度,这里只讲解训练流程,废话不多说,直接开始讲解训练流程 这里用的数据就是一个普通的 DataFrame 数据,样式大概如下 第一列不需要,后面读取数据的时候

    2024年02月05日
    浏览(44)
  • python机器学习——分类模型评估 & 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

    交叉验证:为了让被评估的模型更加准确可信 交叉验证:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。 通常情

    2024年02月03日
    浏览(65)
  • 机器学习——先验概率、后验概率、全概率公式、贝叶斯公式

    1、定义 先验概率(prior probability)是指根据以往经验和分析得到的概率,如全概率公式,它往往作为\\\"由因求果\\\"问题中的\\\"因\\\"出现的概率。——百度百科 2、直观理解 这件事还没有发生,根据以往的经验和数据推断出这件事会发生的概率。 3、例子 以扔硬币为例,在扔之前就

    2023年04月08日
    浏览(48)
  • 【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)

    本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! ​个人主页:有梦想的程序星空 ​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等

    2024年02月03日
    浏览(45)
  • 【机器学习 | 朴素贝叶斯】朴素贝叶斯算法:概率统计方法之王,简单有效的数据分类利器

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月15日
    浏览(52)
  • 朴素贝叶斯(垃圾邮件分类)

      朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特

    2024年02月07日
    浏览(49)
  • 朴素贝叶斯算法

      NaïveBayes算法,又叫朴素贝叶斯算法。   朴素:特征条件独立;   贝叶斯:基于贝叶斯定理。属于监督学习的生成模型,实现简单,没有迭代,并有坚实的数学理论(即贝叶斯定理)作为支撑。在大量样本下会有较好的表现,不适用于输入向量的特征条件有关联的场景

    2024年02月09日
    浏览(33)
  • 【朴素贝叶斯算法】

    贝叶斯定理简介 贝叶斯定理是朴素贝叶斯算法的基础,它是一种概率理论,用于计算在给定一些条件下,另一些条件的概率。贝叶斯定理的核心思想是通过已知的信息来更新对未知事件的概率估计。 在贝叶斯定理中,我们用P(A|B)表示在事件B发生的条件下事件A发生的概率。它

    2024年02月15日
    浏览(30)
  • 朴素贝叶斯数据分类------

    E:myprogramanacondaenvspython3.6python.exe E:/xxxxxx/01_朴素贝叶斯鸢尾花数据分类.py [1.0, 0.23333333333333334, 0.6] ================================================== [0.95, 0.35833333333333334, 0.725] Process finished with exit code 0

    2024年02月09日
    浏览(26)
  • 【朴素贝叶斯-新闻主题分类】

    朴素贝叶斯算法是一种常用的文本分类方法,特别适用于自然语言处理任务,如新闻分类。在这篇博客中,我们将使用Python的scikit-learn库来实现朴素贝叶斯算法,并将其应用于新闻分类任务。 首先,我们需要下载新闻数据集并进行数据准备。在这里,我们使用scikit-learn中的

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包