机器学习-贝叶斯
概率论基础知识
条件概率
- 一个事件发生后另一个事件发生的概率
- 一般的形式为
P(X|Y)
,表示 y 发生的条件下 x 发生的概率 - 有时为了区分一般意义上的条件概率,也称似然概率
先验概率
- 事件发生前的预判概率
- 可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。
- 一般都是单独事件发生的概率,如
P(A)
、P(B)
后验概率
- 事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率
- 基于先验概率求得的反向条件概率,形式上与条件概率相同(若
P(X|Y)
为正向,则P(Y|X)
为反向)
贝叶斯
贝叶斯公式:
- 该公式可由联合概率公式推导出来:P(A,B)=P(A|B)P(B)=P(B|A)P(A)
- P(y|x)是后验概率,一般是我们求解的目标
- P(x|y)是条件概率,又叫似然概率,一般是通过历史数据统计得到
- P(y) 是先验概率,一般都是人主观给出的。贝叶斯中的先验概率一般特指它
- P(x)其实也是先验概率,只是在贝叶斯的很多应用中不重要(因为只要最大后验不求绝对值),需要时往往用全概率公式计算得到
极大似然估计
极大似然估计可以拆成三个词,分别是“极大”、“似然”、“估计”,分别的意思如下:
极大:最大的概率
似然:看起来是这个样子的
估计:就是这个样子的
连起来就是,最大的概率看起来是这个样子的那就是这个样子的。
举个例子:
有两个妈妈带着一个小孩到了你的面前,妈妈A和小孩长得很像,妈妈B和小孩一点都不像,问你谁是孩子的妈妈,你说是妈妈A。好的,那这种时候你所采取的方式就是极大似然估计:妈妈A和小孩长得像,所以妈妈A是小孩的妈妈的概率大,这样妈妈A看来就是小孩的妈妈,妈妈A就是小孩的妈妈。
极大似然估计就是在只有概率的情况下,忽略低概率事件直接将高概率事件认为是真实事件的思想
朴素贝叶斯
设输入空间X⊆RnX\subseteq \mathbb{R}^nX⊆Rn 为nnn 维向量的集合,输出空间为类标记集合Y={c1,c2,...,cK}Y=\left \{ c_1,c_2,...,c_K \right \}Y={c1,c2,...,cK} ,输入特征向量x∈Xx \in Xx∈X ,输出类标记为y∈Yy\in Yy∈Y ,P(X,Y) 是X 和Y 的联合概率分布,数据集
T={(x1,y1),(x2,y2),...,(xn,yn)}T = \left \{ (x_1,y_1),(x_2,y_2),...,(x_n,y_n) \right \}T={(x1,y1),(x2,y2),...,(xn,yn)}
由P(X,Y)P(X,Y)P(X,Y)独立同分布产生。
朴素贝叶斯法就是通过训练集来学习联合概率分布P(X,Y).具体就是从先验概率分布和条件概率分布入手,俩概率相乘即可得联合概率。
称之为朴素是因为将条件概率的估计简化了,对条件概率分布作了条件独立性假设,这也是朴素贝叶斯法的基石,假设如下
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)
k=1,2,...,Kk=1,2,...,Kk=1,2,...,K
这个公式在之前的假设条件下等价于
∏j=inP(X(j)=x(j)∣Y=ck)\prod \limits_{j=i}^n P(X^{(j)}=x^{(j)}|Y=c_k)j=i∏nP(X(j)=x(j)∣Y=ck)
对于给定的输入向量xxx ,通过学习到的模型计算后验概率分布P(Y=Ck∣X=x)P(Y=C_k|X=x)P(Y=Ck∣X=x),后验分布中最大的类作为x 的输出结果,根据贝叶斯定理可知后验概率为
P(Y=ck∣X=x)=P(X=x∣Y=ck)P(Y=ck)∑kP(X=x∣Y=ck)P(Y=ck)P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
其中∑kP(X=x∣Y=ck)P(Y=ck)⇔P(X=x)\sum_kP(X=x|Y=c_k)P(Y=c_k)\Leftrightarrow P(X=x)∑kP(X=x∣Y=ck)P(Y=ck)⇔P(X=x)
所有ckc_kck 的P(X=x)P(X=x)P(X=x) 都是相同的,这样我们可以把输出结果化简成
y=argmaxckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y = arg \max \limits_{c_k} P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k)y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
参数估计
极大似然估计
我们已经知道对于给定的输入向量xxx,其输出结果可以表示为
y=argmaxckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y = arg \max \limits_{c_k} P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k)y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
可以使用极大似然估计法来估计相应的概率。先验概率P(Y=ck)P(Y=c_k)P(Y=ck)的极大似然估计是
P(Y=ck)=∑i=1NI(yi=ck)N,k=1,2,...,KP(Y=c_k)=\frac{\sum \limits_{i=1}^NI(y_i=c_k)} {N}, k=1,2,...,KP(Y=ck)=Ni=1∑NI(yi=ck),k=1,2,...,K
设第jjj个特征x(j)x^{(j)}x(j)可能的取值的集合为{aj1,aj2,...,ajsj}\left \{ a_{j1} ,a_{j2} ,...,a_{js_j} \right \}{aj1,aj2,...,ajsj},条件概率P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_k)P(X(j)=ajl∣Y=ck) 的极大似然估计是
P(X(j)=ajl,Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)P(X^{(j)}=a_{jl},Y=c_k)=\frac{\sum \limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)} {\sum \limits_{i=1}^NI(y_i=c_k)}P(X(j)=ajl,Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck)
j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,Kj=1,2,...,n;l=1,2,...,Sj;k=1,2,...,Kj=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
学习与分类算法
学习与分类算法
下面给出朴素贝叶斯法的学习与分类算法。
算法 (朴素贝叶斯算法)
输入: 训练数据 T={(x1,y1),(x2,y2),...,(xn,yn)}T = \left \{ (x_1,y_1),(x_2,y_2),...,(x_n,y_n) \right \}T={(x1,y1),(x2,y2),...,(xn,yn)}, 其中xi=(xi(1),xi(2),...,xi(n))Tx_i = (x_i^{(1)},x_i^{(2)},...,x_i^{(n)} )^Txi=(xi(1),xi(2),...,xi(n))T,xi(j)∈{aj1,aj2,...,ajsj}x_i^{(j)}\in \left \{ a_{j1} ,a_{j2} ,...,a_{js_j} \right \}xi(j)∈{aj1,aj2,...,ajsj},j=1,2,...,nj=1,2,...,nj=1,2,...,n,l=1,2,...,Sjl=1,2,...,S_jl=1,2,...,Sj,yi∈{c1,c2,...,cK}y_i \in \left \{ c_1,c_2,...,c_K \right \}yi∈{c1,c2,...,cK};实例xxx ;
输出: 实例xxx的分类.
(1) 计算先验概率及条件概率
P(Y=ck)=∑i=1NI(yi=ck)N,k=1,2,...,KP(Y=c_k)=\frac{\sum \limits_{i=1}^NI(y_i=c_k)} {N}, k=1,2,...,KP(Y=ck)=Ni=1∑NI(yi=ck),k=1,2,...,K
P(X(j)=ajl,Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)P(X^{(j)}=a_{jl},Y=c_k)=\frac{\sum \limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)} {\sum \limits_{i=1}^NI(y_i=c_k)}P(X(j)=ajl,Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck)
j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,Kj=1,2,...,n; l=1,2,...,S_j;k=1,2,...,Kj=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
(2) 对于给定的实例x=(x(1),x(2),...,x(n))Tx = (x^{(1)},x^{(2)},...,x^{(n)} )^Tx=(x(1),x(2),...,x(n))T,计算
P(Y=ck)∏jP(X(j)=x(j)∣Y=ck),k=1,2,...,KP(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k),k=1,2,...,KP(Y=ck)j∏P(X(j)=x(j)∣Y=ck),k=1,2,...,K
(3) 确定实例xxx 的类
y=argmaxckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)y = arg \max \limits_{c_k} P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k)y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)