朴素贝叶斯(Naive Bayes)
1.朴素贝叶斯模型
朴素贝叶斯分类器是一种有监督算法,并且是一种生成模型,简单易于实现,且效果也不错,需要注意,朴素贝叶斯是一种线性模型,他是是基于贝叶斯定理的算法,贝叶斯定理的形式如下:
\[P(Y|X) = \frac{P(X,Y)}{P(X)} = \frac{P(Y) \cdot P(X|Y)}{P(X)}\]
朴素贝叶斯是这样执行的,假设 $X$ 为数据的特征 其中每一维度均可看做一个随机变量,即 $X_1= x_1,X_2=x_2,...,X_n = x_n$ ,$Y = y_1,....,y_k$ 为对应的类标签, 对于给定的输入 $X$ ,朴素贝叶斯是这样预测其类别 $Y$ 的:
\begin{aligned}
P(Y = y_k|X_1 = x_1,X_2=x_2,...,X_n = x_n)
&=\frac{P(X_1 = x_1,X_2=x_2,...,X_n = x_n,Y = y_k)}{\sum_i P(X_1 = x_1,X_2=x_2,...,X_n = x_n)P(Y=y_i)} \\
&=\frac{P(Y =y_k) \cdot P(X_1 = x_1,X_2=x_2,...,X_n = x_n|Y = y_k)}{P(X_1 = x_1,X_2=x_2,...,X_n = x_n)} \\
&=\frac{P(Y =y_k) \cdot \prod_iP(X_i = x_i|Y = y_k)}{P(X_1 = x_1,X_2=x_2,...,X_n = x_n)} \\
\end{aligned}
朴素二字的含义指的是条件独立,即在类别确定的条件下,各个特征是条件独立的。条件独立可用以下公式表示:
\[P(a,b|c) = P(a|c)P(b|c)\]
这里第倒数第二步到最后一步就利用了特征间条件独立的特性。综上可可给出最终的贝叶斯分类器的公式,样本 $X$ 的 类别 $Y = y$的计算如下:
\[ y = \max_{y_k}P(Y=y_k) \prod_iP(X_i = x_i|Y=y_k) \ \ (1)\]
这里需要注意的几个问题
1) 朴素贝叶斯是一个生成模型,需要对联合概率 $P(X,Y)$ 进行建模,然后对于给定的 $X$ 求得关于模型的后验估计 $Y$ 。
2)上式中的 $X_i$ 指把第 $i$ 个特征看做随机变量, $x_i$ 则代表第 $i$ 个特征的取值,特征 $x_i$ 可以有 $I_{x_i}$ 种取值。
3)对于给定的输入 $X$ ,要得到其分别属于 $Y = y_k , \ k = 1,....K $ 的概率,取其中最大的一个即为其类别。
2.参数估计
对于朴素贝叶斯分类器,根据 $(1)$ 式可以得到需要估计的参数,其中$P(Y= y_k) $ 即训练数据中类别 $k$ 的先验概率,对于大小为 $N$ 类别数目为 $K$ 的训练数据集:\[P(Y = y_k) = \frac{N_k}{N}, k=1,2,....,K\]相对来说,$P(X_i = x_i|Y=y_k)$ 这个参数的估计方法比较多,首先列出最 $navie$ 的一种,即多值伯努利事件模型($Multi-variate$ $Bernoulli$ $Event$ $Model$):
\[P(X_i=x_i|Y=y_k) = \frac{I_{y_k \wedge x_i}+a}{I_{y_k}+aI_{x_i}}\]
这里的 $a \in [0-1]$ 可以去到一个平滑作用,防止有些特征的某个取值没有出现的情况下 $P(X_i=x_i|Y=y_k)$ 取值为 $0$ 的问题, $a$ 的通常取值为 $1$ ,这便是常见的拉普拉斯平滑。 $I_{y_k \wedge x_i}$ 代表特征 $x_i$ 与类别 $y_k$ 的共现次数(多次出现只记做一次), $I_{y_k}$ 代表训练集中 $y_k$ 类别数据的出现次数,$I_{x_i}$ 代表特征 $x_i$ 可能取值的总数, 加上平滑前后均明显可得 $\sum_i P(X_i=x_i|Y=y_k)=1$。对于训练数据,得到所有条件概率 $P(X_i=x_i|Y=y_k)$ 后,然后对于新的观测数据 $X_{new}$ ,按照以下公式求解即可:
\[ y = \max_{y_k}P(Y=y_k) \prod_iP(X_i = x_i|Y=y_k) \] 这便是最常见的多类贝叶斯分类器,书上也大多是这种形式,但还有一些变形,分割线一下是朴素贝叶斯的一些变形形式。
因为数据的特性不一样,所以 $X$ 的分布也不一样,这里列举几种其他形式的朴素贝叶斯,分别为高斯贝叶斯与专门适用于文本分类的多项式贝叶斯,不同分布 $P(X_i = x_i|Y=y_k)$ 的计算方式也不同。
2.1 高斯贝叶斯
高斯朴素贝叶斯是用来解决特征值是连续的情况下的参数估计问题,其假设对于每个类别下的每个特征的数据均服从高斯分布,比如说对于类别为男女情况下人的身高、体重作为特征,就可以用高斯朴素贝叶斯来估计参数。一维情况下,高斯分布式的形式这样的:
\[N(x|\mu,\sigma) = \frac{1}{ (2\pi\sigma^2)^{1/2}}exp\left \{ -\frac{1}{ 2\sigma^2}(x- \mu)^2 \right \}\]
其中 $\mu$ 为均值, $\sigma$ 为标准差。高斯朴素贝叶斯假设对于每个类别下的每个特征的数据均服从高斯分布。对于不同的类别,要分别求出 $n$ 个高斯分布即可,$n$ 代表为特征维度,有了 $\mu_{y_k,i}$ 与 $\sigma_{y_k,i}$ ,即可求得模型参数:
\[P(X_i = x_i|Y=y_k) = \frac{1}{ (2\pi\sigma_{y_k,i}^2)^{1/2}}exp\left \{ -\frac{1}{ 2\sigma_{y_k,i}^2}(x- \mu_{y_k,i})^2 \right \}\]
高斯朴素贝叶斯用的还不是很多,因为样本足够的情况下可以对连续样本进行离散化,离散后按照多值伯努利的方式来处理即可。
2.2多项式分布
多项式贝叶斯是专门用来处理文本分类问题(Ng. 讲义 note3)的,在文本分类领域其表现一般会优于伯努利贝叶斯,因为其不但考虑了特征的出现与否,还考虑了特征出现的次数,可用来处理离散的情况下的参数估计问题,多项式贝叶斯假设每个类别下的所有特征服从一个不考虑次序多项式分布。在多项式贝叶斯文本分类中,首先定义一个词表,大小为 $|V|$,$N_{y_k \wedge x_i}$ 表示 特征 $x_i$ 在类别 $y_k$ 下出现的次数,$N_{y_k}$ 代表了类别 $y_k$ 下词语总数:
\[P(X_i=x_i|Y=y_k) = \frac{N_{y_k \wedge x_i}+a}{N_{y_k}+a|V|}\]
注意他与伯努利贝叶斯的区别,即这里考虑了次数信息。所以其在文本分类的表现一般由于伯努利贝叶斯,下边给出一个例子,例子里的伯努利为 $2$ 值伯努利,多值情况下类似(参考《统计学习方法》例题).
最后给出两种不同分布情况下的参数估计的结果,均是加上平滑之后的结果。
最后给出分类计算的结果:
参考:
http://nlp.stanford.edu/IR-book/html/htmledition/the-bernoulli-model-1.html
https://github.com/endymecy/spark-ml-source-analysis/blob/master/分类和回归/朴素贝叶斯/nb.md
http://scikit-learn.org/stable/modules/naive_bayes.html
http://blog.csdn.net/u012162613/article/details/48323777
统计学习方法 && Ng 讲义 note 3
朴素贝叶斯(Naive Bayes)的更多相关文章
- 朴素贝叶斯 Naive Bayes
2017-12-15 19:08:50 朴素贝叶斯分类器是一种典型的监督学习的算法,其英文是Naive Bayes.所谓Naive,就是天真的意思,当然这里翻译为朴素显得更学术化. 其核心思想就是利用 ...
- 机器学习算法实践:朴素贝叶斯 (Naive Bayes)(转载)
前言 上一篇<机器学习算法实践:决策树 (Decision Tree)>总结了决策树的实现,本文中我将一步步实现一个朴素贝叶斯分类器,并采用SMS垃圾短信语料库中的数据进行模型训练,对垃圾 ...
- 朴素贝叶斯(Naive Bayesian)
简介 Naive Bayesian算法 也叫朴素贝叶斯算法(或者称为傻瓜式贝叶斯分类) 朴素(傻瓜):特征条件独立假设 贝叶斯:基于贝叶斯定理 这个算法确实十分朴素(傻瓜),属于监督学习,它是一个常用 ...
- 【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)
目录 先验概率与后验概率 条件概率公式.全概率公式.贝叶斯公式 什么是朴素贝叶斯(Naive Bayes) 拉普拉斯平滑(Laplace Smoothing) 应用:遇到连续变量怎么办?(多项式分布, ...
- NLP系列(2)_用朴素贝叶斯进行文本分类(上)
作者:龙心尘 && 寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50597149 h ...
- 【Udacity】朴素贝叶斯
机器学习就像酿制葡萄酒--好的葡萄(数据)+好的酿酒方法(机器学习算法) 监督分类 supervised classification Features -->Labels 保留10%的数据作为 ...
- [Machine Learning & Algorithm] 朴素贝叶斯算法(Naive Bayes)
生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 一.病人分类的例子 让我从一个例子 ...
- 朴素贝叶斯方法(Naive Bayes Method)
朴素贝叶斯是一种很简单的分类方法,之所以称之为朴素,是因为它有着非常强的前提条件-其所有特征都是相互独立的,是一种典型的生成学习算法.所谓生成学习算法,是指由训练数据学习联合概率分布P(X,Y ...
- Naive Bayes(朴素贝叶斯算法)[分类算法]
Naïve Bayes(朴素贝叶斯)分类算法的实现 (1) 简介: (2) 算法描述: (3) <?php /* *Naive Bayes朴素贝叶斯算法(分类算法的实现) */ /* *把. ...
- 朴素贝叶斯算法(Naive Bayes)
朴素贝叶斯算法(Naive Bayes) 阅读目录 一.病人分类的例子 二.朴素贝叶斯分类器的公式 三.账号分类的例子 四.性别分类的例子 生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本 ...
随机推荐
- Javascript实现 图片的无缝滚动
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- mvc5 _ViewStart.cshtml 模板页如何定义
1._Viewstart.cshtml是一个在呈现View文件的时候的启动文件,会在所有View(.cshtml)被执行之前执行,主要用于一些不方便或不能在母版(_Layout.cshtml)中进行的 ...
- BZOJ 1191: [HNOI2006]超级英雄Hero 二分匹配
1191: [HNOI2006]超级英雄Hero Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或 ...
- Windows PAE 寻址
PAE 就是物理地址扩展.我们常规的寻址方式是之前的将虚拟地址化为10 10 12的方式来寻址页目录,页表,页偏移,但是在开始PAE之后的寻址方式发生了改变,将32位的虚拟地址转化成 2 9 9 12 ...
- 凌乱的yyy
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- ios开发与安卓开源项目及库
自己总结的iOS.mac开源项目及库 https://github.com/Tim9Liu9/TimLiu-iOS 自己总结的Android开源项目及库 https://github.com/Tim9 ...
- Activity 跳转动画 全局定义
定义application 的 theme <application android:allowBackup="true" android:icon="@drawa ...
- Passing JavaScript Objects to Managed Code
Silverlight If the target managed property or input parameter is strongly typed (that is, not typed ...
- flex 4 写皮肤
皮肤容器:s:SparkSkin 主机组件: [HostComponent("spark.components.Panel")] 绘制: <s:Group left=&qu ...
- shell查找匹配行,输出该行并输出下面的一行
查找匹配行,输出该行并输出下面的一行 grep: grep -A 1 'keyword' file awk:awk '$0~/keyword/{print $0; getline; print $ ...