贝叶斯与朴素贝叶斯入门及实战
文章目录
- 什么是贝叶斯
- 朴素贝叶斯
- 原理
- 朴素贝叶斯优点
- 朴素贝叶斯缺点
- 贝叶斯模型
- 高斯分布朴素贝叶斯
- 多项式分布朴素贝叶斯
- 伯努利分布朴素贝叶斯
- 总结
- 贝叶斯实战
- 生成式模型和判别式模型的区别
什么是贝叶斯
- 例如:一座别墅在过去的 20 年里一共发生过 2 次被盗,别墅的主人有一条狗,狗平均每周晚上叫 3 次,在盗贼入侵时狗叫的概率被估计为 0.9,
- 问题是:在狗叫的时候发生入侵的概率是多少?
我们假设 A 事件为狗在晚上叫,B 为盗贼入侵,
则以天为单位统计,P(A) = 3/7,P(B) = 2/(20365) = 2/7300,P(A|B) = 0.9,
按照公式很容易得出结果:P(B|A) = 0.9(2/7300) / (3/7) = 0.00058
- 另一个例子,现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,问这个红球是来自容器 A 的概率是多少?
假设已经抽出红球为事件 B,选中容器 A 为事件 A,
则有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10,
按照公式,则有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875
朴素贝叶斯
- 朴素贝叶斯(Naive Bayesian)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。
- 朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤。
- 朴素贝叶斯可以看做是贝叶斯网络的特殊情况:即该网络中无边,各个节点都是独立的。
原理
- 主要核心思想:
朴素贝叶斯的思想基础是这样的:对于给出的待分类样本特征x,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。
朴素的概念:独立性假设,假设各个特征之间是独立不相关的。
朴素贝叶斯优点
算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)
朴素贝叶斯缺点
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
朴素贝叶斯模型(Naive Bayesian Model)的朴素(Naive)的含义是"很简单很天真"地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。
贝叶斯模型
高斯分布朴素贝叶斯
特征值为连续型变量
高斯模型假设某一特征属于某一类别的观测值符合高斯分布,比如身高小于160,160~170和170以上
高斯分布就是正态分布
【用途】用于一般分类问题
使用自带的鸢尾花数据from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.targetfrom sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()gnb.fit(X,y).score(X,y)
多项式分布朴素贝叶斯
- 文本分类,特征是单词,值是单词的出现次数
多项式分布:在数学中,多项式(polynomial)是指由变量、系数以及它们之间的加、减、乘、幂运算
(非负整数次方)得到的表达式,形如a0+a1x+a2x^2+...+anx^n这种样子,若an≠0,就是n次多项式。【用途】适用于文本数据(特征表示的是次数,例如某个词语的出现次数
from sklearn.naive_bayes import MultinomialNBmnb = MultinomialNB()
mnb.fit(X,y).score(X,y)
伯努利分布朴素贝叶斯
- 特征值取bool类型,文本分类中表示一个值(单词)有没有出现过
伯努利分布:
【用途】适用于伯努利分布,也适用于文本数据(此时特征表示的是是否出现,例如某个词语的出现为1,不出现为0)
绝大多数情况下表现不如多项式分布,但有的时候伯努利分布表现得要比多项式分布要好,尤其是对于小数量级的文本数据from sklearn.naive_bayes import BernoulliNBbnb = BernoulliNB()
bnb.fit(X,y).score(X,y)得分要比多项式分布朴素贝叶斯差
总结
朴素贝叶斯是一类比较简单的算法,scikit-learn中朴素贝叶斯类库的使用也比较简单。相对于决策树,KNN之类的算法,朴素贝叶斯需要关注的参数是比较少的,这样也比较容易掌握。
在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先验为高斯分布的朴素贝叶斯,MultinomialNB就是先验为多项式分布的朴素贝叶斯,而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。
这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。
贝叶斯实战
生成式模型和判别式模型的区别
- 判别模型(discriminative model)通过求解条件概率分布P(y|x)或者直接计算y的值来预测y。线性回归(Linear Regression),逻辑回归(Logistic Regression),支持向量机(SVM), 传统神经网络(Traditional Neural Networks),线性判别分析(Linear Discriminative Analysis),条件随机场(Conditional Random Field)
- 生成模型(generative model)通过对观测值和标注数据计算联合概率分布P(x,y)来达到判定估算y的目的。朴素贝叶斯(Naive Bayes), 隐马尔科夫模型(HMM),贝叶斯网络(Bayesian Networks)和隐含狄利克雷分布(Latent Dirichlet Allocation)、混合高斯模型
你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步
贝叶斯与朴素贝叶斯入门及实战相关推荐
- 朴素贝叶斯 半朴素贝叶斯_使用朴素贝叶斯和N-Gram的Twitter情绪分析
朴素贝叶斯 半朴素贝叶斯 In this article, we'll show you how to classify a tweet into either positive or negativ ...
- 朴素贝叶斯 半朴素贝叶斯_SQL Server中的朴素贝叶斯预测
朴素贝叶斯 半朴素贝叶斯 In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server. 在本 ...
- 贝叶斯算法c语言,01 贝叶斯算法 - 朴素贝叶斯
引子: 1.孩子的性别问题 已知一对夫妻生了2个孩子,其中一个是女孩,那么另一个也是女孩的概率的多少? 普遍大家会觉得生男生女都一样,所以另一个也是女孩的概率是1/2.而另一部分稍微聪明一点的人认为: ...
- python推荐系统算法朴素贝叶斯_朴素贝叶斯算法在人才盘点中的应用(之一)
一.识别人才首先是处理不确定性问题 做招聘面试的HR应该会认同这样的经历. 打开应聘者简历,赫然写着TOP10名学毕业.抬头一瞧,小伙长得一表人才,精神抖擞,朝气蓬勃.HR兴趣大增. 再一看,研究方向 ...
- 图像算法三 —— 贝叶斯和朴素贝叶斯
文章目录 3. 贝叶斯和朴素贝叶斯 贝叶斯和朴素贝叶斯的区别 贝叶斯网络的概念 朴素贝叶斯的概念 朴素贝叶斯分类的数学原理 朴素贝叶斯的优缺点 3. 贝叶斯和朴素贝叶斯 贝叶斯和朴素贝叶斯的区别 朴素 ...
- 情感分析朴素贝叶斯_朴素贝叶斯推文的情感分析
情感分析朴素贝叶斯 Millions of tweets are posted every second. It helps us know how the public is responding ...
- 贝叶斯(朴素贝叶斯,正太贝叶斯)及OpenCV源码分析
一.原理 OpenCV实现的贝叶斯分类器不是我们所熟悉的朴素贝叶斯分类器(Naïve Bayes Classifier),而是正态贝叶斯分类器(Normal Bayes Classifier),两者虽 ...
- 用matlab朴素贝叶斯,Matlab朴素贝叶斯
你好我正在使用KDD 1999数据集,我正在寻找在matlab中应用朴素贝叶斯.我想知道的是,kdd数据集是一个494021x42数据数组,如果您注意到下面的朴素贝叶斯代码中的"traini ...
- 朴素贝叶斯基于朴素贝叶斯的文本分类算法
朴素贝叶斯 以及 基于朴素贝叶斯的文本分类算法 参考文章: https://www.cnblogs.com/jorbin/articles/1915888.html
最新文章
- 在厕所遇到领导到底该说些什么?
- 鲁棒图的三元素:抽象对象,实体对象和控制对象
- 正则表达式原理及引擎实现
- open session and Hibernate事务处理机制
- 错误ORA-04091: table is mutating, trigger/function may not see it的原因以及解决办法
- 如何使用Angular Generator创建新的Component
- vld检测不输出_输出轴热处理形变超差,找找原因
- java setpaintmode 用法_详解Paint的各种set方法
- python画正方形的代码drawingpanel_wxpython编程之 画板(一个不错的研究的完整示例)...
- JSP Servlet | 错误统一处理
- IDEA 插件开发 发送弹框提示信息
- hotmail邮箱收件服务器主机名,hotmail邮箱foxmail(pop3服务器)设置方法
- clear在c语言中用法,clear的用法总结大全
- c语言编程TLC2543AD采集,51单片机驱动12位AD转换TLC2543电路图+程序
- BLAM源码解析(三)—— 定时器总揽大局
- gradle-5.4.1-all.zip下载与替换
- 2.1 法学的历史(一):西方法学的历史
- 激活函数,优化技术和损失函数
- 大年初一头像如何制作?自己制作头像的软件
- ESP-01 8266转接板改造
热门文章
- 齐次式的相关知识【初级中阶辅导】
- #Objective - C - UI-design - 第六天 -UIKit框架-UIScrollView-分屏相册练习(相册缩略图变为浏览到第几张)
- css 排版_Web排版的未来:CSS字体4级
- 32位低功耗MCU的设计
- oracle漏洞pdf,Oracle DBA手记 4 数据安全警示录 pdf完整扫描版版
- 【新年福利】2019年值得一用的8款协作工具
- java实现“进制转换-在线工具”
- 如何绘制电气绝缘图(GB9706.1-2007和GB9706.1-2020差异)
- mac加密_如何加密Mac的Time Machine备份
- 好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题