机器学习D8——朴素贝叶斯概率论

  • 算法得出的结论永远不可能是100%确定的,更多的是根据样本判断出的一种可能性,而非是一种确定。我们通过模型算法的某些规定。来强行让算法为我们返回一个固定的分类结果。但很多时候我们也希望能够得到算法推断出结果的可能性概率。
  • 我们都希望使用真正的概率来衡量可能性,因此也就有了真正的概率算法:朴素贝叶斯。
  • 朴素贝叶斯是一种直接衡量标签和特征之间的概率关系的有监督学习算法,是一种专注分类的算法。朴素贝叶斯的算法根源就是基于概率论和数理统计的贝叶斯理论,因此它是根正苗红的概率模型。
  • 朴素贝叶斯只适用于特征之间是条件独立的情况下。否则分类效果不好。这里的朴素指的就是条件独立。
  • 朴素贝叶斯主要被广泛的适用于文档分类中!

朴素贝叶斯的分类

  • 在sk-learn中提供了三种不同的贝叶斯模型算法
    • 高斯模型
    • 多项式模型
    • 伯努利模型
  • 高斯模型
    • 介绍:
      • 高等数学中的高斯分布就是正态分布,是一种连续型变量的概率分布。简单来说高斯分布就当频率直方图的区间变得非常小的时候的拟合曲线,就像小山峰,两端特别小,中间很高。
      • 所谓正态分布,就是正常形态的分布,是自然界的一种规律。
  • 高斯分布模型的作用:
    • 在贝叶斯分类中,高斯模型就是用来处理连续型特征变量的,当使用此模型时,我们会嘉定特征属于高斯分布,然后基于训练样本计算特征所属标签的均值(μ)和标准差(σ),这样就可以估计某个特征属于某个类别的概率。
      • 比如:判断一个人帅还是丑,则帅和丑就是分类的标签,一个人的特征假设有身高,体重,三围,则高斯分布函数会计算身高的特征分到帅的条件概率和丑的条件概率,在计算体重的特征分到帅和丑的条件概率,以此类推。
    • 对于任意一个Y的取值,贝叶斯都以求解最大化的P为目标,这样我们才能够比较在不同标签下我们的样本究竟更靠近哪一个取值。以最大化P为目标,高斯朴素贝叶斯会为我们求解公式中的μy和σy。求解出参数后,代入一个新的值,就能够得到一个P的概率取值。
    • 然后高斯模型会基于高斯函数算出每一个特征对应每一个分类的最大概率,就相当于计算出了特征的概率系数,然后代入新的样本模型会计算出未知样本对应的所有特征,属于不同类别的概率,其中最大概率对应的类别就是模型分类的结果。
  • 高斯模型API
    • from sklearn.naive_bayes import GaussuanNB
    • 实例化模型对象的时候,我们不需要对高斯朴素贝叶斯类输入任何参数,可以说是一个非常轻量级的类,操作非常容易。但过于简单也一位置贝叶斯没有太多的参数可以调整,因此贝叶斯算法的成长空间并不是太大,如果贝叶斯算法的效果不是太理想,我们一般都会考虑换模型。
  • 高斯模型的使用
    在这里插入图片描述
    在这里插入图片描述
    • predict_proba():给出每一个测试集样本属于每个类别的概率,最大的就是分类结果
    • predict_log_proba():predict_proba()的对数转换,最大的就是分类结果
      在这里插入图片描述
      多项式模型
  • 介绍:
    • 与高斯分布相反,多项式模型主要适用于离散特征的概率计算,且sklearn的多项式模型不接受输入复制。虽然sklearn中的多项式模型也可以被用作在连续性特征概率计算中,但是我们如果想要处理连续性变量则最好选择使用高斯模型。
      • 注意:因为多项式不接受负值的输入,所以如果样本数据的特征为数值型数据的话,务必要进行归一化处理保证特征数据中无负值出现!!!
    • 原理:计算出一篇文章为某些类别的概率,最大概率的类型就是该文章的类别。
  • 朴素贝叶斯算法公式:
    -
  • 公式可理解为:
    在这里插入图片描述
  • 细节理解:
    • w为给定文档的特征,也就是文章中拆分出来的不同词语
    • c为文档的类别(财经,体育,军事……)

在这里插入图片描述

  • 注意:上图中吧P(W)抵消是因为谁大谁就是分类结果,不必要算出具体的值;P(W|C)的计算是依据:
    在这里插入图片描述
  • 某个特征如果是0,在相乘的时候会将概率归为0,这样并不合适
    在这里插入图片描述
  • 多项式朴素贝叶斯API
    • from sklearn.naive_bayes import MultinomialNB
    • MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
      • alpha:拉普拉斯平滑系数,默认1,不用改

在这里插入图片描述

  • TF-IDF内部已有结巴分词,可以直接处理中文文章。

  • 新闻文章分类
    在这里插入图片描述
    在这里插入图片描述

  • 鸢尾花测试:
    在这里插入图片描述

伯努利模型BernoulliNB

  • 介绍
    • 多项式朴素贝叶斯可同时处理二项分布(抛硬币)和多项分布(掷骰子),其中二项分布又叫做伯努利分布,它是一种现实常见,并且拥有很多优越数学性质的分布。因此,既然有着多项式朴素贝叶斯,我们自然也有着专门处理二项分布的朴素贝叶斯:伯努利朴素贝叶斯。
    • 与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,数据集中可以存在多个特征,但每个特征都是二分类的。伯努利模型中每个特征的取值智能是1和0。伯努利模型需要比多项式模型多定义一个二值化的方法,该方法会接受一个阈值并将输入的特征二值化(1,0)。当然也可以直接采用多项式模型,但需要预先将输入的特征二值化。
  • 作用
    • 伯努利朴素贝叶斯与多项式朴素贝叶斯非常相似,都常用于处理文本分类数据。但由于伯努利朴素贝叶斯是处理二项分布,所以他更在意的是“是与否”。判定一篇文章是否属于体育资讯,而不是说属于体育类还是娱乐类。
  • API:
    • class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
    • 参数介绍:
      • alpha:拉普拉斯平滑系数
      • binarize:可以是数值或者不输入。如果不输入,则BernoulliNB认为每个数据特征都已经是二元(二值化)的。否则的话,小于binarize的会归为一类,大于binarize的会归为另一类。
  • 手动二值化
    在这里插入图片描述
  • 伯努利模型已经集成了二值化功能,可以自动二值化
    -

猜你喜欢

转载自blog.csdn.net/weixin_44350337/article/details/115284104