IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 朴素贝叶斯笔记 -> 正文阅读

[人工智能]朴素贝叶斯笔记

朴素贝叶斯

1.引入

  • 我们要确定一件事,算法得出的结论,永远不是100%确定,更多的是判断出了一种"样本的标签更可能是某类的可能性",而非一种"确定".我们通过模型算法的某些规定,来强行让算法为我们返回一个固定的分类结果,在很多时候,我们也希望能够理解算法判断出结果的可能性概率,例如:文章分类,希望可以得出该文章可以分到财经,体育,社会这几种不同类别的概率,而不是返回一个分类结果
  • 我们都希望使用真正的概率来衡量可能性,即有礼真正的概率算法朴素贝叶斯
  • 朴素贝叶斯:是一种直接衡量标签和数据之间的概率关系的有监督学习算法,是一种专注分类的算法。朴素贝叶斯的算法根源基于概率论和数理统计,因此它是概率模型

2.什么是贝叶斯推断/算法

2.1含义

  • 贝叶斯推断(Bayesian inference)是一种统计学方法,用来估计统计量的某种性质。它是贝叶斯定理(Bayes’ theorem)的应用。英国数学家托马斯·贝叶斯(Thomas Bayes)在1763年发表的一篇论文中,提出的这个定理
  • 贝叶斯推断与其他统计学推断方法截然不同。它建立在主观判断的基础上,即,你可以不需要客观的证据,先估计一个值,然后根据实际结果不断修正。
  • 贝叶斯推断需要大量的计算,因此历史上很长一段时间,无法得到广泛应用。只有计算机诞生以后,它才获得真正的重视。人们发现,许多统计量是无法事先进行客观判断的,而互联网时代出现的大型数据集,再加上高速运算能力,为验证这些统计量提供了方便,也为应用贝叶斯推断创造了条件,它的威力正在日益显现。

2.1先验概率与后验概率

  • 假设出门堵车的可能因素有2个:车太多和交通事故

  • 先验概率:堵车就是先验概率(不管有没有其他事件的发生造成的堵车)

  • 后验概率:出门前,新闻报道路上发生了交通事故,在计算发生事故后堵车的概率就是后验概率,p(堵车|交通事故),即有因求果

  • 总结:

    • 先验概率是根据以往经验和分析得到的概率
    • 后验概率是依据得到"结果"所计算出的最有可能是那种事件发生的概率
    • 先验概率越接近后验概率说明以往积累的经验分析得到的概率越高,经验余额准确,这种经验估计事件发生概率也叫做"最大似然估计"

2.2什么是贝叶斯推断

  • 贝叶斯推断含义:我们先预估一个"先验概率"(预估堵车的概率),然后加入实验结果(发生事故造成的堵车),看这个实验到底是增强还是减弱了"先验概率",由此得到更接近事实的"后验概率"
  • 实验结果是后验概率,也就是事实上发生堵车的概率,如果先验概率越接近后验概率,说明在不知情的情况下发生堵车概率也就是先验概率越准确

2.3最大似然估计

理解案例

  • 有一天,有个病人到医院看病。他告诉医生说自己头痛,然后医生根据自己的经验判断出他是感冒了,头痛的原因有很多种啊,比如感冒,中风,脑溢血,脑残。那么医生凭什么说那个病人就是感冒呢?
  • 从概率的角度来研究这个问题。医生的大脑是这么工作的,他计算了一下:
    • P(感冒|头痛)【头痛由感冒引起的概率】
    • P(中风|头痛)【头痛由中风引起的概率】
    • P(脑溢血|头痛)【头痛由脑溢血引起的概率】
  • 然后这个计算机大脑发现,P(感冒|头痛)是最大的,因此就认为呢,病人是感冒了。这个就叫最大似然估计。
  • 后验概率
    • P(感冒|头痛),P(中风|头痛),P(脑溢血|头痛),属于后验概率
    • 事实上,后验概率起到了一个用途,根据一些发生的事实,分析结果产生的最可能结果,然后才能针对性地去解决问题
  • 先验概率使用:
    • p(脑残|头疼)=头疼中脑残的人数/头疼的人数,但是头疼样本数据好找,头疼人中脑残的样本不好找
    • 就可以用先验概率
    • 概率公式p(B|A)=P(A|B)P(B)/P(A)【B表示脑残,A表示头疼】
    • p(脑残|头疼)=p(头疼|脑残)p(脑残)/p(头疼)【p(头疼|脑残)就是先验概率】
  • 总结:后验概率在实际中一般是很难直接计算出来,相反先验概率就比较容易,因此一般会利用先验概率来计算后验概率

2.4朴素贝叶斯的优缺点

在这里插入图片描述

3.概率基础

  • 概念:概率定义为一件事情发生的可能性。

    • 扔一个硬币,正面朝上
    • 某天是阴天
  • 概率计算准则:联合概率和条件概率

在这里插入图片描述

  • 注意:

    • 上述的求概率公式只是用于各个特征之间是条件独立(每个特征值之间没有必然关系)的。条件不独立指的是特征之间有关联的,例如:体重和是否喜欢吃零食这两个之间有关联
    • 朴素贝叶斯只是适用于特征之间是条件独立的情况下,否则分类效果不好。这里朴素指的就是条件独立
    • 朴素贝叶斯主要被广泛的适用于文档分类中

4.朴素贝叶斯的分类

  • sklearn中提供了三种不同的贝叶斯模型算法
    • 高斯模型
    • 多项式模型
    • 伯努利模型

4.1高斯分布

  • 高斯分布【正态分布】

    • 高斯分布就是当频率直方图的区间变得特别小时的拟合曲线,像座小山峰,其中两端特别小,越往中间越高
    • 高斯分布有时也被称为正态分布,是一种在自然界大量的存在的、最为常见的分布形式。 现实生活中有很多现象均服从高斯分布,比如收入,身高,体重等,大部分都处于中等水平,特别少和特别多的比例都会比较低。
    • 高斯分布是一种连续型变量的概率分布
    • 一个事件发生(样本属于哪个类别)的概率也满足高斯分布
  • 高斯分布概率密度公式
    在这里插入图片描述

    • 参数 μ 表示均值,𝛔参数表示标准差,均值对应正态分布的中间位置,标准差衡量了数据围绕均值分散的程度
  • 小例子1

    • 对大量的人口进行身高数据的随机采样,并且将采得的身高数据画成柱状图,得到如下图图形。这张图模拟展示了334个成人的统计数据,可以看出图中最多出现的身高在180cm左右2.5cm的区间里。

在这里插入图片描述

  • 我们可以推测均值在180cm附近。95%的数据分布在均值周围2个标准差的范围内。本例中大约20到30左右是标准差参数的取值,因为大多数数据都分布在120cm到240cm之间。

  • 为什么生活中高斯分布如此常见?

    • 通常情况下一个事物的影响因素往往很多,比如身高:饮食习惯,运动情况等
    • 每一个因素,都会对身高产生一定的影响,要么是正向的影响,要么是反向的影响,所有因素最终让整体身高接近于正态分布

4.2高斯模型

  • 通过假设p(xi|Y)是服从高斯分布,来估计训练集数据的每个样本特征分到每个类别Y上的条件概率,对于每个样本特征下的对应每个分类结果概率的取值,高斯朴素贝叶斯公式

在这里插入图片描述

  • exp函数是以自然常数e为底的指数函数

  • 对于任意一个Y的取值,高斯函数都以求解最大化的P为目标,这样我们才能够比较在不同标签下我们的样本究竟更靠近哪一个取值

  • API

    from sklearn.naive_bayes import GaussianNB

    • 参数:piror:默认值表示根据数据计算先验概率
    • 实例化模型对象时,不需要对高斯朴素贝叶斯类输入任何的参数,是一个非常轻量级的类,操作非常容易。但过于简单也意味着贝叶斯没有太多的参数可以调整,因此贝叶斯算法的成长空间并不是太大,如果贝叶斯算法的效果不是太理想,我们一般都会考虑换模型。

4.3sklearn文本特征提取

  • TfidfVectorizer(求出Ni/N的值)
  • 什么是TF-IDF
    • 在信息检索中,tf-idf(词频-逆文档频率)是一种统计方法,用以评估一个单词在一个文档集合或语料库中的重要程度
  • 原理
    • TF-IDF实际上是TF*IDF,主要思想是:如果某个词或短语在一篇文章中出现的频率高(即TF高),并且在其他文章中很少(IDF高),则认为此词或者短语具有很好的类别区分能力,适合用来分类
  • TF:表示一个给定词语t在一篇给定文档d中出现的频率.TF越高,则词语t对文章d越重要,TF越低,则词语t对文章d越不重要。
    • TF(w)=(词w在文档中出现的次数)/(文档的总词数)==p(F1|C)=Ni/N
  • IDF:逆向文章频率.有些词可能在文本中频繁出现,但是不重要,即信息量少,如is,of,"我"等,这些单词在语料库中出现的频率也相当大,就可以利用这一点,降低其权重

4.4多项式模型

  • 多项式模型主要适用于离散特征的概率计算,且sklearn的多项式模型不接受输入负值,虽然sklearn中的多项式模型也可以被用作在连续性特征概率计算中,但是最好的选择是使用高斯模型。

  • 注意:多项式模型不接受负值的输入,所以如果样本数据的特征为数值型数据,务必要进行归一化处理保证特征数据没有负值出现

  • 算法公式

在这里插入图片描述

  • 小例子1

    • 计算出一篇文章为某些类别的概率(文章是固定的,在该文章为前提下求出所属类别的概率,因此文章就是概率论中条件概率的条件),最大概率的类型就是该文章的类别。

    • 一篇文档为财经和军事的概率计算如下

      w为给定文档的特征,也就是文章中拆分出来的不同词语
      c为文档的类别(财经,体育,军事......)
      
      P(财经|词1,词2,词3)==》P(词1,词2,词3|财经)*P(财经)/P(W)
      P(军事|词1,词2,词3)==》P(词1,词2,词3|军事)*P(军事)/P(W)
      上述两个公式中都有P(W),可以抵消,则公式简化为:
      	P(词1,词2,词3|财经)*P(财经)==》P(W|C)*P(C)
      	P(词1,词2,词3|军事)*P(军事)==>P(W|C)*P(C)
      P(C):每个文档类别的概率(某个文档类别文章的数量/总文档数量)
      P(W|C):给定类别下特征的概率,此处的特征就是预测文档中出现的词语
      P(W|C)的计算方法:
      	P(F1|C)=Ni/N:F1为预测文档中的某一个词,C为指定的类别
      	Ni:F1这个词在C类别所有文档中出现的次数
      	 N:所属类别C下的文档所有词出现的次数和
      
  • 小例子2

在这里插入图片描述

在这里插入图片描述

  • 注意:属于某个类别的概率为0,不合适
    在这里插入图片描述

  • API

    • from sklearn.naive_bayes import MultinomialNB
    • MultinomialNB(alpha=1.0,fit_piror=True,class_prior=None)
      • aplha:拉普拉斯平滑系数

4.5伯努利模型

  • 伯努利模型适用于离散特征的情况,数据中可以存在多个特征,但是每个特征都是二分类的伯努利模型中每个特征的取值只能是0和1(以文本分类为例,单词在文档中出现过特征为1,否则为0),伯努利模型需要比MultinomialNB多定义一个二值化的方法,该方法会接受一个阈值并将输入的特征二值化(1,0),也可以直接使用MultinomialNB,但需要预先将输入的特征二值化

  • 作用

    • 伯努利朴素贝叶斯与多项式朴素贝叶斯非常相似,都常用于处理文本分类数据。但由于伯努利朴素贝叶斯是处理二项 分布,所以它更加在意的是“是与否”。判定一篇文章是否属于体育资讯,而不是说属于体育类还是娱乐类。
  • API

    • from sklearn.naive_bayes import BernoulliNB

    • BernoulliNB(alpha=1.0,binarize=0.0,fit_prior=True,class_prior=None)

      • aplha:拉普拉斯平滑系数
      • binarize:可以是数值或者不输入。如果不输入,则BernoulliNB认为每个数据特征都已经是二元(二值化)的。否则的话,小于binarize的会归为一类,大于binarize的会归为另外一类
    • 二值化操作

      from sklearn import preprocessing
      import numpy as np
       
      X = np.array([[1,-2,2,3,1,10],
                   [1,2,3,33,4,-90],
                   [11,29,90,-80,0,4]])
      binarizer = preprocessing.Binarizer(threshold=3)
      X_binarizer = binarizer.transform(X)
      print("二值化(闸值:5)",X_binarizer)
      #二值化(闸值:5) [[0 0 0 0 0 1]
      #  [0 0 0 1 1 0]
      #  [1 1 1 0 0 1]]
      
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:44:41  更:2022-02-05 21:46:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:34:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码