0

一起走过的

首先,小夕带领大家回顾一下文章《逻辑回归》、《Sigmoid与Softmax》、《朴素贝叶斯》中的几点内容,这几点内容也是本文的前置知识:

1. 逻辑回归模型的表达式(假设函数):,其中

2. 逻辑回归模型本质上是二类分类问题中其中一个类别的后验概率

3. 用于二类分类的sigmoid函数只是用于多类分类的softmax函数的一个特例。

4. 朴素贝叶斯模型本质上计算并比较的是某样本x与某类别y的联合概率

如果对上述前置知识有疑问,小夕强烈建议再参考那三篇文章理解一下哦。

好了,上面的知识在本文中已默认为常识,不再额外解释啦~

1

战争导火索

在朴素贝叶斯模型中,P(x,y)是基于贝叶斯定理和独立性假设来近似得到的,而不是像回归模型计算P(y|x)那样直接计算出来。那么有没有一种表示来直接得到P(x,y)的表达式呢?

还记得我们在《sigmoid与softmax》中定义的,小夕将定义为向量w1与w2的“亲密度”,而某个样本x属于某个类别的后验概率P(y|x)就可以解读为“类别y与样本x的密度所有类别与样本x密度之和的比例,用数学语言(softmax)描述就是这样子的(K为类别数,wj是小夕解读过的描述类别j的向量,同时也是大众理解的模型参数):

仔细观察一下小夕用亲密度解释后验概率的这句话,有没有发现这句话非常生动的描绘了P(y|x)呢?(不是自夸啦\(//∇//)\,下文要用到...)

---> 固定住x,因此计算亲密度时忽略其他样本的存在(准确讲,忽略P(x)的分布情况),只关心当前的样本x。

那如果我们要描绘P(x,y)呢?描绘x与y的联合概率分布的话,肯定既要描绘出全部的y的情况,又要描绘出全部的x的情况,机智的你或许已经想到了,那我们不固定x了,而是考虑全部的x不就行啦。所以,某样本x与某类别y的联合概率P(x,y)就是“类别y与样本x的密度所有类别与所有样本密度之和的比例,也就是只需要让分母照顾到所有样本就行啦~所以:

没错,这就是朴素贝叶斯模型背后的东西,它本质上就是额外考虑了样本x自身分布情况的逻辑回归(多类时的softmax回归)。所以本质上,逻辑回归模型与朴素贝叶斯模型之间隔着的墙就是这个p(x)。一个优雅的数学公式总结一下:

于是机器学习模型基本上兵分两路:像朴素贝叶斯这种,通过计算样本x与类别y的联合分布来进行分类的机器学习模型被称为生成式模型;像逻辑回归这种,在固定住特定样本x的情况下,计算该样本x与类别y的条件分布来进行分类的机器学习模型被称为判别式模型。

有了这两个定义以后,战争爆发了。

2

战争

战争焦点:以朴素贝叶斯模型为代表的判别式模型与以逻辑回归为代表的生成式模型哪个更好呢?

理论上说,生成式模型不仅考虑(计算中包含)了后验概率,又包含了样本x自身的分布情况,因此比判别式模型涵盖更多的信息量,所以应该更准确才是。但是实际上,从历史战况来看,除了文本分类等个别任务外,判别式模型的代表,逻辑回归模型,往往比代表生成式模型的朴素贝叶斯模型表现更佳。

这是为什么呢?

从上文的朴素贝叶斯的公式可以看出,想要基于全部信息,来计算完整的p(x,y)其实是很困难的,因此需要像朴素贝叶斯一样做一些独立性假设才能近似计算p(x,y)。然而,这些假设又过度简化了p(x),使得它的估计很不准确,导致哪怕在朴素贝叶斯模型表现优异的场景下,它对各个p(x,y)的计算实际上都是很不准的。

在此,有一个小实验大家可以做一下:

用朴素贝叶斯分类器完成某个分类任务,记下分类器对每个预测结果的把握(即每个P(x,y))。然后把每个样本的每一维度的特征复制成两个。即让X=[x1,x2,x3…]变成X=[x1,x1,x2,x2,x3,x3…],然后再训练,然后看看对预测结果的把握有没有增大或减小。

我们知道,这样肯定不会带来任何额外的信息量,也不会改变p(x)的分布,然而,这样却会导致朴素贝叶斯增大对预测结果的把握度,也就是增大了对p(x,y)的估计值,这显然是大大的误差。

而判别式模型,由于固定了x值,所以不会考虑p(x)的问题,也就是说对p(x)的分布呈中立态度,自然不会因此引入额外的误差。而对于分类问题,去考虑和计算p(x)的分布情况本就是多此一举的,因此,反倒是判别式模型往往要优于生成式模型的。

所以,暂且就认为朴素贝叶斯模型战败了。

3

战后悄悄话

然而,就像朴素贝叶斯与逻辑回归这个生成式-判别式对,同样的战争蔓延到了分类之外的战场上...

欲知后事如何,且听小夕下回,也可能下下回,或者下下下回,或者...

逻辑回归与朴素贝叶斯的战争相关推荐

  1. sklearn分类算法(逻辑回归、朴素贝叶斯、K近邻、支持向量机 、决策树、随机森林 )的使用

    scikit-learn机器学习的分类算法包括逻辑回归.朴素贝叶斯.KNN.支持向量机.决策树和随机森林等.这些模块的调用形式基本一致,训练用fit方法,预测用predict方法.用joblib.du ...

  2. 逻辑回归,朴素贝叶斯,KMeans,决策树的不足和优势

    1.逻辑回归: (1)优点: 第一:原理直观易懂,容易实践,以输出的概率的形式展现属于某一类别的置信度,获取的信息相当的丰富. 第二:逻辑回归属于二分类任务,对多分类任务,也可以通过一定的方式将其转换 ...

  3. python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类

    实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb ...

  4. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(长文)

    好早之前就发现逻辑斯蒂回归好像和朴素贝叶斯里面的后验概率公式还有最大似然.信息熵.交叉熵.伯努利分布.回归分析.几率(odds)等等有着千丝万缕CZFZ(错综复杂).PSML(扑朔迷离)的关系.一直感 ...

  5. 机器学习(二)--sklearn之逻辑斯蒂回归和朴素贝叶斯

    文章目录 1.逻辑斯蒂回归 2.朴素贝叶斯 3.三种分类算法的比较 上回说到,sklearn中的k近邻算法解决多分类问题.k近邻的基本步骤是:收集数据.创建分类器.训练.预测.评估性能.调参(参数就是 ...

  6. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(一)

    好早之前就发现逻辑斯蒂回归好像和朴素贝叶斯里面的后验概率公式还有最大似然.信息熵.交叉熵.伯努利分布.回归分析.几率(odds)等等有着千丝万缕CZFZ(错综复杂).PSML(扑朔迷离)的关系.一直感 ...

  7. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(五)

    第五节:分类器中的天真小弟 -- 朴素贝叶斯 朴素贝叶斯文本分类模型 考虑如下文本分类模型:P(yi,di)P(y_i, d_i)P(yi​,di​) 表示一篇文章以及它的 label 的联合概率.d ...

  8. 逻辑斯蒂回归、朴素贝叶斯

    逻辑斯蒂回归 逻辑斯蒂分布(增长分布):F(X) = P(X<=x) = 1/(1+e^(-(X-u)/γ)) 该分布曲线以(u,1/2)作为中心对称点 sigmod函数(亦称作Logistic ...

  9. 基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM、CNN)实现的中文情感分析,含数据集可直接运行

    基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM.CNN)实现的中文情感分析,含数据集可直接运行 完整代码下载地址:中文情感分析 中文情感分析 本项目旨在通过一个中文情感 ...

最新文章

  1. java做个简单的登录界面_java一个简单的登录界面制作
  2. 疫情来袭,远程办公,敏捷团队怎么办?
  3. django 自定义日志配置
  4. RIP 数据包类型 路由中毒
  5. hadoop hdfs总结 NameNode部分 1
  6. Redis的 key 和 value大小限制
  7. IDEA安装和运行HelloWorld
  8. mysql 事务回滚_SQL基础丨事务处理
  9. django-中间件,视图函数调用前会执行的
  10. (49)FPGA面试题2-4译码器实现
  11. WEB测试到移动测试的转换
  12. C#list转JSON(Newtonsoft.Json.dll)(仅做记录)
  13. vue 页面保存为本地图片
  14. 2021.12.18-参加青少年人工智能编程水平(YCL)测试5级C++(良好通过)
  15. 百度apollo自动驾驶planning代码学习-Apollo/modules/planning/common/Smoother类代码详解
  16. 组织结构图的画法——office的应用
  17. vmware您无权输入许可证密钥,请请使用系统管理员账户重试
  18. P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
  19. 软件测试经典面试题之二
  20. 云闪付华为P9指纹_截胡小米支付妥妥的!华为支付正式上线,支持25家银行

热门文章

  1. Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
  2. 视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比
  3. 浅谈“三层结构”原理与用意(转帖)
  4. 打印网页时背景图片的问题
  5. 把一个数据库的数据插入到另外一个数据库
  6. std::string中的find_first_of()和find_last_of()函数
  7. C++ functor 仿函数
  8. 利用openssl来计算sha1, sha224, sha256, sha384, sha512
  9. C语言,画吃豆人剖析
  10. Android input keyevent