读书笔记—Naive Bayes

  依然是《统计学习方法》的读书笔记。
  朴素贝叶斯是一种基于贝叶斯定理和特征之间条件独立(这是一个较强的条件)假设的分类模型。与KNN不同,它仅用于特征为标称型数据的分类(如果硬是要把连续型数据转换成离散作为特征。。也可以吧),是一个基于统计的概率模型。

1.模型描述

  朴素贝叶斯有一个特征之间条件独立的假设,虽然这是一个较强的条件,但是在许多情况下都还是适用的。朴素贝叶斯的cost function用的是数据类别的后验概率,这个后验概率我们可以通过贝叶斯定理得到:

P(Y|X⃗ )=P(X⃗ |Y)P(Y)P(X⃗ )

P(Y|\vec{X}) = \frac{P(\vec{X}|Y)P(Y)}{P(\vec{X})}
  由于加了特征条件独立的假设, P(X⃗ |Y)P(\vec{X}| Y)就可以简单地拆成 P(X⃗ |Y)=P(x1|Y)P(x2|Y)...P(xn|Y)P(\vec{X}| Y) = P(x_1| Y)P(x_2| Y)...P(x_n| Y)。而后面这一串连乘可以从训练数据中统计得到(平率估计概率)。而在这个后验概率公式中,其分母是一个归一化项而已,因此我们仅需要考虑分子即可。
  这个模型一定程度上可以说是模型数据生成的过程(不过通过特征条件独立假设大大简化了生成的过程),因此被称之为生成模型(generative model)。
  为了应用这个模型,我们要从训练集中得到的信息(即训练过程)是 P(X⃗ |Y)P(\vec{X}| Y)、 P(Y)P(Y),换句话说就是学到 X⃗ \vec{X}和 YY的联合概率分布P(X⃗ ,Y)P(\vec{X}, Y)。我们得到这些信息的做法就是通过统计训练集中出现每个特征 xix_i和 yy的出现频率,在模型实现时,要统计并维护一个S×KS \times K的似然值矩阵(每个特征s在类别k中出现的频率)和一个 K×1K \times 1的先验值向量(每个类别k出现的频率)。

  因此,得到了cost function,也就是后验概率分布后(这是一个离散分布),我们从直觉的角度想就是要最大化这个后验概率分布,即:

f(Y)=argmaxYP(Y|X⃗ )∼argmaxYP(X⃗ |Y)P(Y)

f(Y) = argmax_Y P(Y| \vec{X}) \sim argmax_Y P(\vec{X}|Y)P(Y)
这样我们就估计出了特征为 X⃗ \vec{X}的测试数据最可能属于的类别了。
  从形式上看直接从似然函数 P(X⃗ |Y)P(\vec{X}| Y)估计 YY也是可以的,即统计出每个Y生成各个特征的概率(会形成一个矩阵),那么生成这个目标数据的似然函数即为P(X⃗ |Y)=∏Ki=1P(xi|Y)P(\vec{X}| Y) = \prod_{i=1}^{K} P(x_i| Y),然后 YY的取值范围里选的能使P(X⃗ |Y)P({\vec{X}| Y})最大那个 YY即可,但可以看出,这样的做法丢失了P(Y)P(Y)的信息,相比后验概率更不靠谱。

2.模型优化

(1)计算优化

  在实际应用中,我们统计得到概率P(X⃗ |Y)P(\vec{X}| Y)和P(Y)P(Y)后,不是直接将其相乘得到后验分布,而是计算

logP(Y|X⃗ )=logP(X⃗ |Y)+logP(Y)=∑i=1KlogP(xi|Y)+logP(Y)

logP(Y| \vec{X}) = logP(\vec{X}| Y) + logP(Y) = \sum_{i=1}^{K} logP(x_i| Y) + logP(Y)
  使用log值有一下两个优点:

1) log是单调增函数,不会改变原函数的单调性。当概率过小的时候,使用log值可以防止由于小数太小造成的计算机数据下溢问题(太接近0,被截断)。
2) 使用log将乘法转换成加法,可以提高计算机运行效率。

(2)数据平滑

  当我们用极大似然估计得到概率值时,若出现了0概率,不论计算log还是直接计算后验概率,都会出现问题。比如log(0)log(0)就不能求;而后验计算时,若其中一项是0,那么由于后验是将所有概率相乘,也就变成0了,而事实是该似然值只是出现概率很低。所以需要对0概率进行平滑。
  平滑的本质是在数据中加入一些伪计数(pseudo count),使统计时那些为0的项变成一个相对较小的非0项,但又保证整体概率分布基本不变。最常见的是在每个统计项上加入一个常数值,比如对于似然值:

Pλ(Xi=ail|Y=Ck)=∑Nj=1I(X(j)i=ail,Y(j)=Ck)+λ∑Nj=1I(Y(j)=Ck)+Siλ

P_{\lambda}(X_{i} = a_{il}| Y=C_k) = \frac{\sum_{j=1}^{N} I(X_i^{(j)}=a_{il}, Y^{(j)} = C_k) + \lambda}{\sum_{j=1}^{N} I(Y^{(j)} = C_k) + S_i\lambda}
  其中 λ\lambda是平滑系数; k=1,2,...,Kk=1,2,...,K代表类别; j=1,2,...,Nj=1,2,...,N代表训练集中的数据点; l=1,2,...,Sil=1,2,...,S_i代表特征i的可能取值; Xi=ailX_i = a_{il}表示测试集数据中的特征i取值为l; ∑Ni=1I(X(j)i=ajl|Yi=Ck)\sum_{i=1}^{N} I(X_i^{(j)}=a_{jl}| Y_i = C_k)是统计训练集中类别 Y=CkY=C_k,特征 XX为aila_{il}的数据的出现次数; SiS_i是测试数据中特征j取值的个数。上式用 l=1,2,...,Sil=1,2,...,S_i遍历所有特征,得到这个特征 XiX_i关于取值的分布,因此对于每个特征都有这样的一个分布,而我们此时要做的是在所有特征值上的平滑,当 λ=1\lambda=1时,被称之为拉普拉斯平滑。
  另外,对于先验 P(Y)P(Y),也有类似的平滑:

Pλ(Y=Ck)=∑Nj=1I(Y(j)=Ck)+λN+Kλ

P_\lambda(Y=C_k) = \frac {\sum_{j=1}^{N} I(Y^{(j)}=C_k) + \lambda}{N+K\lambda}

读书笔记---Naive Bayes相关推荐

  1. 机器学习笔记 3 ——Naive Bayes

    文章目录 1. naive Bayes 2. GaussianNB 高斯朴素贝叶斯 2.1 数据集预处理 2.2 构建 NaiveBayes 模型 2.3 训练与预测 3. scikit - lear ...

  2. Naive Bayes笔记

    1.贝叶斯定理 表示事件B发生的情况下,事件A发生的概率.其基本求解公式: 对于很容易直接推导出,但对于更加关心的,则很难直接推导.但是借助贝叶斯公式就很容易求解: 2.算法描述 下面用一个例子来描述 ...

  3. 《算法图解》读书笔记

    这是一本很入门的算法书,介绍的东西还算简单明了,大体补充了一些自己没理解的东西. 粗略地看了一下,感觉还是"纸上得来终觉浅,绝知此事要躬行!" <<算法图解>&g ...

  4. Chapter 4 Naive Bayes and Sentiment Classification

    Chapter 4 Naive Bayes and Sentiment Classification Speech and Language Processing ed3 读书笔记 Text cate ...

  5. Ian Goodfellow《Deep Learning》读书笔记

    Ian Goodfellow<Deep Learning>读书笔记 感觉大学快毕业了才开始做一些有用的事情,就当是个小学生吧,由于毕业设计和复试的需要,开始着手一些人工智能方面的内容,毕业 ...

  6. zz[读书笔记]《Interpretable Machine Learning》

    [读书笔记]<Interpretable Machine Learning> Jul 19, 2019 看到这本书,特意翻了下微博妖僧老冯_之前的一条微博,这样写道:"在机器学习 ...

  7. 朴素贝叶斯模型(naive bayes)

    朴素贝叶斯模型(naive bayes) 注:本博客为周志华老师<机器学习>的读书笔记,但同时也参考了李航老师的<统计学习>方法,以及其他资料(见参考文献),虽有自己的理解,但 ...

  8. 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq

    文章目录 第十一章:Deep learning for text 11.1 Natural language processing: The bird's eye view 11.2 Preparin ...

  9. 最大熵模型:读书笔记

    胡江堂,北京大学软件学院 1. 物理学的熵 2. 信息论的熵 3. 熵和主观概率(一个简单注释 4. 熵的性质 4.1. 当所有概率相等时,熵取得最大值 4.2. 小概率事件发生时携带的信息量比大概率 ...

最新文章

  1. 设置VSCode自动保存
  2. Seata 新特性,APM 支持 SkyWalking
  3. *[hackerrank]Girlfriend Necklace
  4. [css] rem是如何实现自适应布局的?
  5. java怎么写事件listener_java 事件监听器ActionListener
  6. C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
  7. esp8266设置sta失败_ESP8266使用教程之初识
  8. Hibernate学习(1):查询demo
  9. 英特尔加入 GPU 战局,终用上 6nm 工艺?
  10. Unique Binary Search Trees,Unique Binary Search Trees2 生成二叉排序树
  11. python什么字体好看_10 款最佳编程字体
  12. csdn怎么添加好友
  13. vue 动态添加组件
  14. 怎样在Edge浏览器中开启IE兼容模式
  15. 彷徨 | HDFS核心设计思想图
  16. 全网最新-扶风视频解析计费系统,2022优化免授权版(赠接口轮询插件)
  17. 跨境电商运营系统平台及Fecify推荐
  18. Linux文件权限:特殊权限、权限属性、权限掩码
  19. EXCEL添加一个目录并超链接到每张sheet
  20. 分享几个值得信赖的网站

热门文章

  1. 《Effective C++》学习笔记(持续更新)
  2. 今日小程序推荐:汇率即时查-打通微信直接搜一搜
  3. SAP 小币种金额的转换函数和处理
  4. 再谈中国的收入不平等问题
  5. matlab getprmdflt,DFLT40A-7中文资料
  6. oracle 11g 新特性之动态绑定变量窥视(一)
  7. 怎么查看一段时间的计算机ip,如何查看电脑中使用过的历史IP地址
  8. 【运筹学】对偶理论 : 影子价格 ( 对偶问题的经济解释 )
  9. 佟鑫 PHP,【盖佟鑫】姓名测试打分,起名字测试打分盖佟鑫,盖佟鑫名字打分测试,盖佟鑫测名字打分,【盖佟鑫】名字测分,姓名测试网...
  10. PSI 项目经理 PMP 计算题公式人话版解释