摘要:旁听了清华大学王建勇老师的 数据挖掘:理论与算法 的课,讲的还是挺细的,好记性不如烂笔头,在此记录自己的学习内容,方便以后复习。

一:贝叶斯分类器简介

1)贝叶斯分类器是一种基于统计的分类器,它根据给定样本属于某一个具体类的概率来对其进行分类。

2)贝叶斯分类器的理论基础是贝叶斯理论

3)贝叶斯分类器的一种简单形式是朴素贝叶斯分类器,跟随机森林、神经网络等分类器都有可比的性能。

4)贝叶斯分类器是一种增量型的分类器。

二:贝叶斯理论

第一次接触贝叶斯还是本科学概率论的时候,那时候也就只知道做题目,没想到现在还能够在工作和学习中用到它,先复习下相关的基础概率公式吧:

1) 乘法定理:设P(B)>0,则有P(AB) = P(A|B)P(B).

2) 全概率公式:设试验E的样本空间为S,A为E的事件,若事件组B1,B2,…,Bn为S的一个划分,且P(Bi)> 0(i=1,2,…,n),则有

P(A) = P(A|B1)P(B1) + P(A|B2)P(B2) + …+ P(A|Bn)P(Bn).

:在很多事件问题中P(A)不容易算出来,但是可以很容易的找到S的一个划分:B1,B2,…,Bn,并且P(Bi)和P(A|Bi)为已知或者容易算出,那么就可以根据上式求出P(A).

3)贝叶斯公式:设试验E的样本空间为S,A为E的事件,B1,B2…,Bn为S的一个划分,且P(A)>0,P(Bi)>0(i=1,2,…,n),则有

P(Bi|A) = P(ABi)/P(A) = P(A|Bi)P(Bi)/∑P(A|Bi)P(Bi),i=1,2,…n.

举例

X是一个待分类的数据元组,由n个属性描述;H是一个假设,例如X属于类C。对于分类问题,我们想计算出概率P(H|X):即已知元组X的每个元素对应的属性值,求出X属于C类的概率。

例如:X的属性值为:age=25,income=$5000,H对应的假设是:X会买电脑。

P(H|X):意思是在已知某客户信息age=25,income=$5000的条件下,该客户会买电脑的概率。

P(H):意思是对于任何给定的客户信息,该客户会购买电脑的概率。

P(X|H):意思是已知客户会买电脑,那么该客户的age=25,income=$5000的概率。

P(X):意思是在我们所有的客户信息集合中,客户的age=25,income=$5000的概率。

所以:P(H|X) = P(X|H)P(H)/P(X)

三:朴素贝叶斯分类器

朴素贝叶斯分类器的工作流程如下:

1:设D为样本训练集;每一个样本X是由n个属性值组成的,X=(x1,x2,…xn);对应的属性集为A1,A2,A3…An;

2: 假设有m个类标签:C1,C2,…Cm.对于某待分类元X,朴素分类器会把P(Ci|X)(i=1,2,…m)值最大的那个类标签Ci认为是X的类别,即朴素贝叶斯分类器预测出X属于类Ci,当且仅当P(Ci|X)>P(Cj|X) (1≤j≤m,j≠i).因此我们的目标就是找出P(Ci|X)中的最大值。

P(Ci|X) = P(X|Ci)P(Ci)/P(X)

对于给定的样本集,P(X)是常数,跟某个具体的类标签没有关联,所以要想找出P(Ci|X)的最大值也就是找出P(X|Ci)P(Ci)的最大值:

如果我们不知道P(Ci)的值,我们可以假设P(C1)=P(C2)=…=P(Cm),当然P(Ci)可以通过估计值来代替,P(Ci)=|Ci, D| /|D|

其中|D|为样本总数,|Ci,D|为D中属于类Ci的样本数。

3:如果n的值特别大,也就是说样本元有很多属性,那么对于P(X|Ci)的计算会相当复杂。所以在朴素贝叶斯中进行了一个假设:即对于样本元中的每个属性,它们都互相条件独立

所以有:

对于P(xi|Ci)我们可以从训练集中算出来,其中xi代表在某个具体样本中对应属性Ai的值。

P(xi|Ci)的计算分为两种情况:

1):如果属性Ai的值是分类变量(离散变量),那么P(xi|Ci)等于训练样本空间|D|中,属于类Ci并且对应属性Ai的值等于xi的数目除以样本空间中属于类Ci的样本数目。

2):如果Ai的值是连续型的变量,则P(xi|Ci)的计算会根据高斯分布来计算,设其中均值为μ,标准方差为σ:

4:为了预测X所属的类标签,我们根据前面的步骤可以算出每一个类标签Ci对应的P(X|Ci)P(Ci)值,当某一个类标签Ci有:

P(X|Ci)P(Ci)>P(X|Cj)P(Cj) 对于任意j:   1≤j≤m,j≠i

则我们认为X属于类标签Ci.

四:具体例子分析

这里我们还是用 分类算法之决策树 中的样本数据来进行举例:

样本空间D如下表所示:其中 |D|=14.

属性集合为A{age,come,student,credit_rating} 对应的属性个数n=4.

分类属性为:buys_computer,值为{yes,no}  即C1:buys_computer = yes;C2: buys_computer = no; 分类标签个数 m = 2;

有一待分类的数据元X={age<=30,income=medium,student=yes,credit_rating=fail}.

则根据朴素贝叶斯分类器的工作流程我们可以计算出:

P(Ci):

P(buys_computer = “yes”) = 9/14 = 0.643

P(buys_computer = “no”) = 5/14= 0.357

P(xi|Ci):

P(age = “<=30” | buys_computer = “yes”) = 2/9 = 0.222

P(age = “<= 30” | buys_computer = “no”) = 3/5 = 0.6

P(income = “medium” | buys_computer = “yes”) = 4/9 = 0.444

P(income = “medium” | buys_computer = “no”) = 2/5 = 0.4

P(student = “yes” | buys_computer = “yes) = 6/9 = 0.667

P(student = “yes” | buys_computer = “no”) = 1/5 = 0.2

P(credit_rating = “fair” | buys_computer = “yes”) = 6/9 = 0.667

P(credit_rating = “fair” | buys_computer = “no”) = 2/5 = 0.4

P(X|Ci):

P(X|buys_computer = “yes”) = 0.222 x 0.444 x 0.667 x 0.667 = 0.044

P(X|buys_computer = “no”) = 0.6 x 0.4 x 0.2 x 0.4 = 0.019

P(X|Ci)*P(Ci) :

P(X|buys_computer = “yes”) * P(buys_computer = “yes”) = 0.028

P(X|buys_computer = “no”) * P(buys_computer = “no”) = 0.007

因为0.28>0.007所以X属于类:buys_computer = “yes”.

五:朴素贝叶斯存在的问题

1:零概率问题

在上述的例子中假设在样本数据集中income = medium的样本数为0,那么P(income = “medium” | buys_computer = “yes”) 和

P(income = “medium” | buys_computer = “no”) 都将为0,那么在计算P(X|Ci)*P(Ci)时结果也为0,这样就不好决定X是属于哪一个类。

对于这样的问题的一个解决方案叫做:Laplacian correction或者Laplacian estimator,是以一位法国数学家Pierre Laplace名字命名的。

它的具体做法就是给相应的属性的不同值数目都加1:

假设:有1000个训练样本,其中income=low的数目为10,income=medium的数目为0,income=high的数目为990,则为了避免零概率问题,我们给每一种income的数目加1,及最后结果为 income =medium的数目为1,low的数目为11,high的数目为991.这样也就避免了零概率问题。

2:准确度问题

朴素贝叶斯分类器是基于样本属性条件独立的假设的前提下的,但是实际情况可能并不成立,这样也就缺失准确性了.

解决朴素贝叶斯准确性问题提出的一种方法叫做:贝叶斯网络(Bayesian Belief Networks ).这个方法留着下次学习。

转载于:https://www.cnblogs.com/justcxtoworld/p/3451571.html

分类算法之贝叶斯(Bayes)分类器相关推荐

  1. 算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)

    算法杂货铺--分类算法之贝叶斯网络(Bayesian networks) 2010-09-18 22:50 by T2噬菌体, 66011 阅读, 25 评论, 收藏, 编辑 2.1.摘要 在上一篇文 ...

  2. 机器学习监督学习之分类算法---朴素贝叶斯理论知识

    感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 朴素贝叶斯理论 1.1 贝叶斯理论 1.1.1 相关计算公式:条件概率公式,贝叶斯 ...

  3. 机器学习监督学习之分类算法---朴素贝叶斯代码实践

    目录 1. 言论过滤器 1.1 项目描述 1.2 朴素贝叶斯 工作原理: 1.2.1 词条向量 1.3 开发流程: 1.4 代码实现 1.4.1 创建样本 1.4.2 构建词汇表,用于建立词集向量 1 ...

  4. 任务八 分类算法谈论 贝叶斯算法

    6.梯度下降实例_哔哩哔哩_bilibili 回归和分类是两个概念 回归得到一个具体的值 目录 线性回归算法 逻辑回归算法 梯度下降 决策树算法 随机森林算法 贝叶斯算法 概述 算法公式 朴素贝叶斯 ...

  5. 基于python的贝叶斯分类算法_分类算法-朴素贝叶斯

    朴素贝叶斯分类器(Naive Bayes Classifier, NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比 ...

  6. 分类算法之贝叶斯网络(Bayesian networks)

    2.1.摘要 在上一篇文章中我们讨论了朴素贝叶斯分类.朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立).当这个条件成立时,朴素贝叶斯分类法 ...

  7. 机器学习-分类算法-朴素贝叶斯算法07

    概率:概率定义为一件事情发生的可能性 如:扔硬币某一面朝上有50%概率 "朴素"贝叶斯:所有特征之间条件独立 朴素贝叶斯-文档分类 from sklearn.datasets im ...

  8. python人工智能——机器学习——分类算法-朴素贝叶斯算法对新闻进行分类案例

    朴素贝叶斯案例流程 1.加载20类新闻数据,并进行分割 2.生成文章特征词 3.朴素贝叶斯estimator流程进行预估 代码 from sklearn.datasets import fetch_2 ...

  9. python人工智能——机器学习——分类算法-朴素贝叶斯算法

    1.概率基础 2.朴素贝叶斯介绍 概率基础 概率定义为一件事情发生的可能性 联合概率和条件概率 朴素贝叶斯-贝叶斯公式 拉普拉斯平滑 如果词频列表里面有很多出现次数都为0,则会导致计算结果为0. sk ...

最新文章

  1. ClassLoader(二)- 加载过程
  2. 分布式一致Hash算法
  3. 自由主义者的周一和周五
  4. 基于Policy Gradient实现CartPole
  5. CF1009F-Dominant Indices【长链剖分】
  6. nodejs cluster ip hash_redis集群架构了解一下?一致性hash了解吗?
  7. mysql使用Navicat 导出和导入数据库
  8. 旅游管理系统(包含旅游最短路径规划算法等,包含系统分析的各种uml图和界面图)
  9. html5箱子游戏源代码,html5 canvas绘制小人推箱子小游戏源码
  10. 物联网平台发展的4个阶段和5个实践案例
  11. 超声B mode聚焦成像仿真(ultrasound B mode fcous imaging simulation)
  12. 车架号 生成 java_JAVA匹配车架号以及生成虚拟车架号
  13. App数据抓取(Appium使用)
  14. JS截取视频靓丽的帧作为封面
  15. 安装Redis使用make命令出现make /bin/sh: cc: 未找到命令 make[1]: 离开目录“/usr/local/mytools/redis-5.0.0/src“
  16. 互斥锁的应用与pthread_mutex_destory的出错
  17. 【华人学者风采】林跃河 华盛顿州立大学
  18. 128-Vue中的事件修饰符-阻止冒泡事件
  19. 怎么压缩jpg图片文件大小?jpg图片格式的压缩方法
  20. Android——一个神奇的计算器APP

热门文章

  1. java怎么设置背景_如何在Java中设置背景图片?
  2. jenkins组权限_JENKINS针对不同项目组对用户进行权限分配-阿里云开发者社区
  3. 吃下去的东西老是往上翻上来_食管裂孔疝的这个诱因你知道吗?医生:不要再吃过烫的食物...
  4. list的contains方法为什么不好使_道理都懂,为什么我们还打不好网球?
  5. linux查看一小时之内的日志,linux – 在[timespan]内(例如最后一小时)查找日志文件中的条目...
  6. 相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!
  7. java+timer+退出,java timer 兑现在指定时间执行方法
  8. 如何将谷歌浏览器的背景色(包括显示的网站界面等)全部调为黑色?2020.12.28
  9. 十一、Python第十一课——用户输入和另一种循环(While)
  10. android区域截图app,【干货】最新App应用市场截图尺寸大全