SIGAI机器学习第五集 贝叶斯分类器
讲授贝叶斯公式、朴素贝叶斯分类器、正态贝叶斯分类器的原理、实现以及实际应用
大纲:
贝叶斯公式(直接用贝叶斯公式完成分类,计算一个样本的特征向量X属于每个类c的概率,这个计算是通过贝叶斯公式来完成的。)
朴素贝叶斯分类器(预测算法、训练算法)
正态贝叶斯分类器(预测算法、训练算法)
实验环节
实际应用
贝叶斯公式:
澄明了两个相关的(有因果关系的)随机事件以及随机变量之间的概率关系的。
随机事件a、b,假设b是因a是果:
推广到随机变量的情况:
①根据这个公式就可以完成分类了,给定任意一个样本的特征向量X,就可以计算它属于每个类的概率值。
离散的变量p(x)也可推广到连续的情况概率密度函数f(x),p(x)或f(x)对于每个类yi的概率是相等的一样的,样本属于某个类的概率正比于分子,仅仅以分类为目的而非精确计算样本属于某个类的概率的话,只需计算分子,舍弃分母。
②每个类的条件概率(对连续型随机变量是条件密度函数),统计每个类y它的随机变量x的概率分布就可以了,可以用最大似然估计或其他算法(根据训练样本,把训练样本归类在一起,统计出某个样本的p(x|y)),判定为分子最大的类,即最大化后验概率p(y|x)。

一般情况下,我们是知道每个类y它的样本x所服从的概率分布的p(x|y)(概率密度函数或概率分布表),这称为先验概率,而分类器要做的是反推另一个概率,已知x算它属于某个类的概率,即p(y|x),刚好和先验概率相反,要得到后验概率的概率。
朴素贝叶斯分类器:简称NB,naive bayes
核心问题是计算p(x|y)*p(y),p(y)可以简单的设置为每个类出现的概率相等,也可以根据训练样本每个类出现的概率来统计出概率值来。然后核心的问题就是计算所有样本x在每个类下的条件概率p(x|y)(对于连续型变量是条件密度函数,离散型随机变量是条件概率),p(x|y)怎么计算呢?肯定要假设x服从某种概率分布,关键是怎么根据样本估计概率分布(或概率密度函数)中的参数,例如x如果服从正态分布就要估计它的均值和方差(多维是协方差)。有个习惯,现实世界中很多样本就假设它服从正态分布,如人的身高、体重、考试分数等近似服从正态分布,而且中心极限定理也保证了很多随机变量它的极限分布就是一个正态分布。
这里有两种假设:
①第一种就是朴素贝叶斯分类器:假设特征向量x,它的每一个分量相互独立。

Z是p(x),归一化因子,对每个类都相等。分子最大化,所属的类ci就是分类的结果。
对于离散型特征:
样本x的分量xi是有限种取值

可能所有的样本的某个分量xi都不取某个类c,那么此时p(xj|y=c)的分母就取值为0了,这时对分母都加k(一共k类),分子加1平滑一下,保证概率值加起来等于1。

对于连续型特征:
假设x服从一维正态分布。
最大似然固然估计,用样本均值、样本方差来估计正态分布的均值和方差,是有偏估计。

对每个类都要估计,都要算它的均值和方差。
朴素贝叶斯的精髓就是特征向量所有分量之间相互独立,这样就极大地简化问题的求解难度,因为要算一个高维的概率分布是非常麻烦的,但是能把他转化为n个一维的话,情况会简单很多。
正态贝叶斯分类器:简称也是NB,normal bayes
多维
假设样本的特征向量x,对于每个类来说,它的样本特征向量x,服从多维正态分布:
,指数里是一个二次型,∑是协方差矩阵,∑-1是它的逆矩阵,|∑|是∑的行列式,和一维正态分布形式上是统一的。

三维以上看不到,均值的地方概率值最大,协方差矩阵决定帽子的宽度、朝向(扁的或圆的)。
假设有一批样本,把样本分成多个类,每个类有一批样本,根据这一批样本用最大似然估计把每个类的均值向量μ和协方差矩阵∑给估计出来,估计出来之后带入贝叶斯判定公式中判定一下就OK了。
训练的时候主要是求解均值向量μ和协方差矩阵∑,在求出μ和∑后,预测的时候稍微麻烦一点:
根据估算出来的协方差矩阵∑求它的逆矩阵∑-1,从而求出p(x|c)。

协方差矩阵∑是一个n阶对称方阵,这里求逆矩阵,借助了奇异值分解SVD,对于实对称阵来说,它的奇异值分解就退化为特征值分解了。
对角阵W,正交阵U(UT=U-1)。
|∑|=|U||W||UT|=|W|=∏wii(wii为W对角线元素,因为U是正交阵|U||UT|=1)。
然后将p(x|c)带到贝叶斯分类中,这里假设p(c)是一样的:

训练的时候每个类都要最大似人估计计算均值向量μ和协方差矩阵∑,在预测的时候只需算
,求它的极小值对应的类即是结果。
实验环节:
贝叶斯分类器是非线性模型,可以解决异或分类问题。

每个类的分布的函数图像的形状不同:

实际应用:
有病没病
垃圾邮件分类问题:根据邮件里边的关键词,来用贝叶斯公式分类,一般用的是朴素贝叶斯,给定指定长度的特征向量,带入到贝叶斯公式中计算。
Mehran Sahami, Susan T Dumais, David Heckerman, Eric Horvitz. A Bayesian Approach to Filtering Junk E-Mail.1998.
文本分类问题:对于文本我们会提一个特征向量出来,一般用tf-idf,它考虑了词频和文档频率的分布。特征向量维度通常非常高,如果要拟合一个高维分布是非常麻烦的,这时可以用朴素贝叶斯。
Yiming Yang, Xin Liu. A re-examination of text categorization methods.international acm sigir conference on research and development in information retrieval, 1999.
智能视频监控中的背景建模算法:摄像机固定不动的时候,人或车在其中走来走去,我们要把这些动的目标抠出来。
Liyuan Li, Weimin Huang, Irene Y H Gu, Qi Tian. Foreground object detection from videos containing complex background. acm multimedia, 2003.

摄像机固定不动,假如1秒学习到40帧图像,学习到背景图像,再来一帧当前最新的图像,来判断每个像素点是前景还是背景,就是二分类问题。选用的特征向量是一点的RGB亮度值和前一帧的差值,把这样一个特征向量带入到贝叶斯公式里去算,算属于前景还是背景的概率,如果前景概率大判断为前景否则为背景,前两个公式带入到第三个全概率公式(每个样本不是属于前景就是属于背景),满足第四个公式则为背景,否则就是前景。关键是怎么得到贝叶斯分类器中的概率分布,通过前面图像的像素点样本的学习得到的。贝叶斯分类器核心是构造特征向量x,训练估计概率分布,预测带入到公式中计算最大值。
人脸识别中的联合贝叶斯模型:把两张照片判定为是否是同一个人,根据姿态、光照因素利用贝叶斯建模。
Dong Chen, Xudong Cao, Liwei Wang, Fang Wen, Jian Sun. Bayesian face revisited: a joint formulation. european conference on computer vision, 2012.
总结:
贝叶斯分类器核心是①构造特征向量x,②训练估计概率分布,③预测带入到公式中计算最大值。
SIGAI机器学习第五集 贝叶斯分类器的更多相关文章
- 【原创】.NET平台机器学习组件-Infer.NET连载(二)贝叶斯分类器
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 微软Infer.NET机器学习组件文章目录:http:/ ...
- 吴裕雄 python 机器学习——高斯贝叶斯分类器GaussianNB
import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from sklearn.model_selectio ...
- 吴裕雄 python 机器学习——多项式贝叶斯分类器MultinomialNB模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from skl ...
- SIGAI机器学习第四集 基本概念
大纲: 算法分类有监督学习与无监督学习分类问题与回归问题生成模型与判别模型强化学习评价指标准确率与回归误差ROC曲线交叉验证模型选择过拟合与欠拟合偏差与方差正则化 半监督学习归类到有监督学习中去. 有 ...
- SIGAI机器学习第十七集 线性模型1
讲授logistic回归的基本思想,预测算法,训练算法,softmax回归,线性支持向量机,实际应用 大纲: 再论线性模型logistic回归的基本思想预测函数训练目标函数梯度下降法求解另一种版本的对 ...
- Naive Bayes Classifier 朴素贝叶斯分类器
贝叶斯分类器的分类 根据实际处理的数据类型, 可以分为离散型贝叶斯分类器和连续型贝叶斯分类器, 这两种类型的分类器, 使用的计算方式是不一样的. 贝叶斯公式 首先看一下贝叶斯公式 $ P\left ( ...
- Python机器学习笔记:朴素贝叶斯算法
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...
- machine learning for hacker记录(3) 贝叶斯分类器
本章主要介绍了分类算法里面的一种最基本的分类器:朴素贝叶斯算法(NB),算法性能正如英文缩写的一样,很NB,尤其在垃圾邮件检测领域,关于贝叶斯的网上资料也很多,这里推荐那篇刘未鹏写的http://mi ...
- Python实现机器学习算法:朴素贝叶斯算法
''' 数据集:Mnist 训练集数量:60000 测试集数量:10000 ''' import numpy as np import time def loadData(fileName): ''' ...
随机推荐
- ActiveMQ Topic使用示例
一.非持久的Topic Topic 发送 public class NoPersistenceSender { public static void main(String[] args) throw ...
- [yarn]yarn和npm的对比
一.简介 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服 ...
- (八)Activiti之流程变量和局部流程变量
一.流程变量 1.1 概念 如果,当流程走到"学生请假"这个任务节点的时候,此时可以用TaskService设置流程变量,变量值包含请假人.请假时间.请假理由等信息,这些信息存在表 ...
- ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 视图模板页
https://www.cnblogs.com/xlhblogs/archive/2013/06/09/3129449.html MVC Razor模板引擎 @RenderBody.@RenderPa ...
- [NOIP2018模拟赛10.23]发呆报告
闲扯 考场看了眼题目感觉很难,一个小时敲完了所有暴力...嗯然后就在那里发呆什么事也没做 T3考场上把数据结构想了个遍都不会完成1操作,现在看这种思路其实之前也接触过... 比较玄学的一件事情就是T1 ...
- row_number() over()函数基本用法
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记 ...
- vue学习(6)-路由(导入包;创建子组件;创建路由对象)传参,子路由,多个组件
后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源 前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换(不会刷新页 ...
- Java 之 Hashtable 集合
Hashtable 集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口 Hashtable:底层也是一个哈希表,是一个线 ...
- springload热更新的优缺点
java开发web应用没有.net的方便快捷, 原因是传统开发模式下新增修改代码后要查看效果, 一般要重启应用, 导致浪费了许多无谓的时间,没有.net的高效, 任意更新文件实时生效. 但是有个叫sp ...
- Java面试容器,collection,list,set
1.容器指的是可以容纳其他对象的对象. 2.collection/set/list的联系和区别? (1)collection是Java集合顶级接口,存储一组不唯一,无序的对象: (2)list接口 ...