自学内容网 自学内容网

朴素贝叶斯

朴素贝叶斯介绍(Naive Bayes)

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。下面是该方法的核心公式:

P(Y|X)=\frac {P(X|Y)P(Y)}{P(X)}

这是我们在概率统计中求概率的一个常见公式:

举一个小case,假设有两个盒子,每个盒子里面都有10个球,第一个盒子中10个球有7个红球3个白球,第二个盒子中有5个红球5个白球。现在从其中一个盒子中摸出一个球,发现其为白球,问该球是从第一个盒子中摸出来的概率。

因此


这是朴素贝叶斯最简单的应用,但是常见的分类问题中,X的维度会有很多。我们换一个场景:假设A,B两个盒子球有无限个,已知从A盒子摸出红球和白球的概率为0.7和0.3,从B盒子中摸出的红球和白球的概率为0.5和0.5。从某一个盒子中摸了3次球,颜色依次为白,白,红。问是从A盒子中,摸得概率是多少?此时我们得公式为:

其中

感谢兴趣的同学可以求一个这个结果。


朴素贝叶斯推断算法

下面我们来介绍朴素贝叶斯的一般解释:

设输入𝑋为n维向量的集合,输出空间维标记集合 Y={c_1,c_2,..c_k} 。输入为特征向量𝑥∈𝑋,输出为标记𝑦。𝑃(𝑋,𝑌)是X和Y的联合概率分布。训练数据:

T=\{(x_1,y_1),(x_2,y_2),...(x_n,y_n)\}

由𝑃(𝑋,𝑌)独立同分布产生。

我们需要求得是  P(Y=c_k|X=x),根据朴素贝叶斯分类我们需要求得  P(X=x|Y=c_k)P(Y=c_k)。(其实这个也是X,Y的联合概率分布P(X,Y))

注意:P(X=x|Y=c_k)  是很难求出来的。假设 x^{(j)} 有 S_j 和取值,那么𝑋=𝑥有 \prod_{j=1}^{n}S_j 种取值,(可能都超过样本空间的大小了)。无法根据统计计算出 Y=c_k 的情况下𝑋=𝑥的条件概率。因此朴素贝叶斯做了一个很重要的假设:条件独立性假设,也就是x种各个维度的取值是独立的。(其实现实中很多都不是独立的,比如在银行违约判断中,一个人的年龄和收入,年龄和学历就是不独立的。)

有了条件独立性假设之后,我们很难求的  就可以简化了:

P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)}|Y=c_k)*P(X^{(2)}=x^{(2)}|Y=c_k)*....P(X^{(n)}=x^{(n)}|Y=c_k)=\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)}


将上面的几个式子融合起来:

P(Y = c_{k}|X = x) = \frac{P(Y = c_{k}\prod _{j}P(X^{j} = x^{j}|Y = c_{k}))}{\sum_{k}P(Y = c_{k})\prod _{j}P(X^{j} = x^{j}|Y = c_{k})}

于是我们需要预测的Y的值为:

y=f(x)=argmax_{c_k} \frac{P(Y=c_k)\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)}}{\sum_k{P(Y=c_k)}\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)}}

由于对于所有的ck𝑐𝑘上面公式的分母都是相同的,因此:

y=f(x)=argmax_{c_k} P(Y=c_k)\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)}

由于 P(Y=c_k)\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)} 我们一般成为后验概率(知道了结果去反推结果发生的可能),因此贝叶斯推断也就是后验概率最大化。

期望风险最小化与后验概率最大化之间的关系:

以分类为例,我们选择0-1损失函数:

L(Y,f(X))={0,1}

𝑌==𝑓(𝑥)时取1,否则为0。其中𝑓(𝑥)是分类的决策函数。此时期望风险为:

R_{exp}(f)=E[L(Y,f(X))]

将上式稍微变更一下(其实就是将𝑓(𝑋)展开了一下):

R_{exp}(f)=E_x\sum_{k=1}^K[L(c_k,f(X))]P(c_k|X)

为了使得期望风险最小。需要对于任何一个样本𝑋=𝑥最小,由此可以得到:

f(x)=argmin_{c_k}\sum_{k=1}^K{L(c_k,y)P(c_k|X=x)}=argmin_{c_k}\sum_{k=1}^K{P(y\neq{c_k}|X=x)}=argmin_{c_k}\sum_{k=1}^K{(1-P(y={c_k}|X=x))}=argmin_{c_k}\sum_{k=1}^K {P(y={c_k}|X=x)}

这样一来,通过期望风险最小化就转化成了后验概率最大化。总结一下就是:贝叶斯推荐是后验概率最大化,在以0-1函数为损失函数的情况下,我们可以直接通过期望风险最小化推导到后验概率最大化。

朴素贝叶斯推断算法的步骤

输入:训练数据  T=\{(x_1,y_1),(x_2,y_2),(x_3,y_3),...(x_N,y_N)\},其中 x_i=(x_i^{(1)},x_i^{(2)},x_i^{(3)},...x_i^{(n)})^T 是第𝑖个样本的第𝑗个特征。x_i^{(j)}\in\{a_{j1},a_{j2},a_{j3},...a_{jS_j} \}  。a_jl  是第𝑗个特征可能取得第𝑙个值, j=1,2,...nl=1,2,...S_j  , y_i \in \{c_1,c_2,...c_K\}

输出:实例𝑥的分类。

步骤1:计算先验概率及条件概率

先验概率:

P(Y=c_k)=\frac{\sum_{i=1}^K{I(y_i=c_k)}}{N}

条件概率:

P(X^j=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^N I(x_i^j=a_{jl},y_i=c_k)}{I(y_i=c_k)}

其中 j=1,2,...n (特征维度),l=1,2,3,...S_j  (每个特征的取值维度), k=1,2,..k  (预测结果的类别维度)。

步骤2:对于给定的实例 x=(x^{(1)},x^{(2)},...x^{(n)}) 计算:

P(Y=c_k)\prod_{j=1}^n{P(X^{(j)}=x^{(j)}|Y=c_k)}

其中𝑘=1,2,3,...𝐾,其实也就是求在给定 y=c_k 的情况下,实例𝑋出现的概率。(由于假设了特征独立,其实求得是每个特征出现的概率的乘积)

步骤3:确定实例𝑥的类:

y=f(x)=argmax_{c_k} P(Y=c_k)\prod_j{P(X^{(j)}=x^{(j)}|Y=c_k)}


贝叶斯估计

注:贝叶斯估计和贝叶斯推断大致是一个意思,Inference范围更大一点,包括区间估计、假设检验等;Estimation则更倾向于指参数估计。

在上述的算法中我们计算 P(Y=c_k) 和 P(X^{(j)}=x^{(j)}|Y=c_k) 时,我们采用的是极大似然估计。我们的假设基础是:

 P(Y=c_k) 是一个确定的值,我们根据数据就可以直接将其求出来。这也是频率学派的观点,比如下面就是我们使用极大似然求 P(Y=c_k) 的例子:

P(Y=c_k)=\frac{\sum_{i=1}^K{I(y_i=c_k)}}{N}

我们是直接根据 c_k 出现的次数除以样本的总数,这有一个假设前提是:我们认为 c_k 天然就是一个常数,只是我们暂时不知道而已。


那么贝叶斯估计是什么样子的呢?
P(Y=c_k)=\frac{\sum_{i=1}^K{I(y_i=c_k)+\lambda}}{N+K\lambda}

当𝜆等于1的时候,称之为拉普拉斯平滑。

贝叶斯估计是假设参数服从一个分布。不是确定的值(有点层层套娃的意味:  Y=\{c_1,c_2,..c_k\}   本来就是服从一个分布的,如果Y服从一个确定的分布的话,那么里面  c_k  的取值就是确定唯一的,但是这样又假设  c_k   是服从一个分布的。)。从假设  Y==c_k  服从二项式分布(等于  c_k  或者不等于)出发推广到beta分布,将先验知识(假设的  c_k 的值)代入,通过这一组共轭分布计算出在有先验知识的情况下后验的概率(比较复杂,这里就不介绍。)

关于贝叶斯估计的方法,可以看逻辑回归中贝叶斯估计与正则化的关系,希望可以提升各位的理解。

增加平滑后显然解决了一个很大的问题,那就是在原本的  P(X^j=a_{jl}|Y=c_k)  公式中,极容易出现某一个  c_k  下某个特征取值没有出现过,从而被估计为0,导致整个实例𝑥被估计为0。或者样本不足导致某个  c_k  没有出现在样本中,从而被估计为0。
增加平滑可以解决这种风险。(比如投掷一枚骰子,投了20次,恰好1没有出现过,这时候我们不能很武断的判断1出现的概率为0,只能给他一个较低的权重。)


贝叶斯推断与贝叶斯估计
f(\theta|x)=\frac{f(x|\theta)\pi(\theta)}{\int f(x|\theta)\pi(\theta) d\theta}

与贝叶斯推断的公式相比,上面贝叶斯估计的公式将连续值转化为离散值它们两个就完全是一样的。只是一个是去估计参数,另外一个是根据后验概率去做推断。在贝叶斯推断中,也可以在求 P(Y=c_k)   中加入贝叶斯估计的方法。

这两个东西初学者很容易搞混,其实我认为可以记住以下有助于理解:贝叶斯推断是去求𝑃(𝑌|𝑋)的,贝叶斯估计是去求𝑃(𝜃|𝑥)的,一个是预测结果(先验知识是根据结果计算出来的),一个是去估计参数(参数的先验大概率是假设的)。并且在使用贝叶斯推断的时候,我们在计算  P(Y=c_k)  或者  P(X^j=a_{jl}|Y=c_k)  中可以采用贝叶斯估计的方法。


原文地址:https://blog.csdn.net/qq_52421831/article/details/142795289

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!