首先复习一下贝叶斯公式:
假设有事件A, B i , i = 1 , 2 , 3 , . . . , n \quad B_i,i=1,2,3,...,n Bi,i=1,2,3,...,n,则在A事件发生时, B i B_i Bi事件发生的概率 P ( B i ∣ A ) P\left(B_{i} | A\right) P(Bi∣A):
P ( B i ∣ A ) = P ( B i A ) P ( A ) = P ( B i ) P ( A ∣ B i ) P ( A ) P\left(B_{i} | A\right)=\frac{P\left(B_{i} A\right)}{P(A)}=\frac{P(B_i)P(A|B_i)}{P(A)} P(Bi∣A)=P(A)P(BiA)=P(A)P(Bi)P(A∣Bi)
现在我们可以将上述公式应用于分类问题,求出样本 x \bm x x在各个类别上发生的最大概率,就可以判断它属于那哪一个类。为了便于我们理解,上述公式可以写成: P ( c ∣ x ) = P ( c ) P ( x , c ) P ( x ) P(c | \boldsymbol{x})=\frac{P(c)P(\boldsymbol{x}, c)}{P(\boldsymbol{x})} P(c∣x)=P(x)P(c)P(x,c)
其中 Y = { c 1 , c 2 , … , c N } , \mathcal{Y}=\left\{c_{1}, c_{2}, \dots, c_{N}\right\}, Y={c1,c2,…,cN}, c 表 示 类 别 , Y 表 示 数 据 集 中 类 的 集 合 , x \quad c表示类别,\mathcal{Y}表示数据集中类的集合,\bm x c表示类别,Y表示数据集中类的集合,x表示数据集中的一个样本(是一个多维向量,每一维代表一个属性)。
通常情况下,样本 x \bm x x都有多种属性, P ( c ∣ x ) P(c|x) P(c∣x)是样本 x \bm x x所有属性上的联合概率,难以从有限的样本中直接估计而得,为了避开这个障碍,朴素贝叶斯采用了属性条件独立性假设,假设每个属性独立的对分类结果产生影响,即计算每种属性是某一类的概率 P ( c ∣ x i ) P(c|x_i) P(c∣xi)( x i x_i xi表示样本 x \bm x x的某种属性),然后将样本x的所有属性是某类的概率相乘 Π i = 1 d P ( c ∣ x i ) \Pi_{i=1}^d{P(c|x_i)} Πi=1dP(c∣xi),然后比较属于每个类的概率谁大。
以下公式中 c c c代表样本集合 Y \mathcal Y Y中的一个类。
因此贝叶斯公式可以写成:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c | \boldsymbol{x})=\frac{P(c) P(\boldsymbol{x} | c)}{P(\boldsymbol{x})}=\frac{P(c)}{P(\boldsymbol{x})} \prod_{i=1}^{d} P\left(x_{i} | c\right) P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)i=1∏dP(xi∣c)
,因为 P ( x ) P(\bm x) P(x)对所有的类别都相同,所以我们不需要考虑这一项,因此贝叶斯分类可以改写成:
h n b ( x ) = a r g m a x c ∈ Y P ( c ) ∗ Π i = 1 d P ( x i ∣ c ) h_{nb}(\bm x)={arg max}_{c\in \mathcal{Y}}\quad P(c)*\Pi_{i=1}^dP(x_i|c) hnb(x)=argmaxc∈YP(c)∗Πi=1dP(xi∣c)
若样本充足, P ( c ) P(c) P(c)的概率可以用频率近似, P ( c ) = ∣ c ∣ ∣ Y ∣ P(c)=\frac{|c|}{\mathcal{|Y|}} P(c)=∣Y∣∣c∣, ∣ c ∣ \quad |c| ∣c∣表示 c 类 在 Y c类在\mathcal Y c类在Y中的个数, ∣ Y ∣ \mathcal {|Y|} ∣Y∣表示总个数。
求 ( x i ∣ c ) (x_i|c) (xi∣c)(各个类中 x i x_i xi属性的出现的概率)需要考虑离散型属性和连续型属性值的概率的计算。
朴素贝叶斯分类不考虑属性间的依赖关系,即属性条件独立性假设;而多数情况下,属性间是有依赖关系的,半贝叶斯是考虑一部分属性间的强依赖关系。
独依赖估计仅考虑每个属性在类别之外最多仅依赖于一个其他属性。即
h n b ( x ) = a r g m a x c ∈ Y P ( c ) ∗ Π i = 1 d P ( x i ∣ c , p a i ) h_{nb}(\bm x)={arg max}_{c\in \mathcal{Y}}\quad P(c)*\Pi_{i=1}^dP(x_i|c,pa_i) hnb(x)=argmaxc∈YP(c)∗Πi=1dP(xi∣c,pai)
其中 p a i pa_i pai是属性 x x x所依赖的属性,是 x i x_i xi的父属性, P ( x i ∣ c , p a i ) P(x_i|c,pa_i) P(xi∣c,pai)表示属于c类且属性为 p a i pa_i pai的样本有属性 x i x_i xi的概率,可以通过前面条件概率的计算方式求得: P ( x i ∣ c ) = ∣ c x i ∣ ∣ c p a i ∣ , 其 中 ∣ c p a i ∣ 表 示 c 类 中 有 p a i 属 性 的 样 本 的 个 数 。 P(x_i|c)=\frac{|c_{x_i}|}{|c_{pa_i}|},其中|c_{pa_i}|表示c类中有pa_i属性的样本的个数。 P(xi∣c)=∣cpai∣∣cxi∣,其中∣cpai∣表示c类中有pai属性的样本的个数。
现在的问题如何确定属性间的依赖关系,确定每个属性的父属性。
确定父属性的方法有SPODE,TAN,AODE等方法。
相比于独依赖(一对一属性依赖),多属性依赖是指一个属性可以影响多属性,或者多个属性影响一个属性,这种情况可以用贝叶斯网络来解决。
贝叶斯网络借助于带权有向无环图来表示属性间的依赖关系。假设属性 x i x_i xi的父节点集合是 π i \pi_i πi(即 π i \pi_i πi中的属性决定属性x),则 θ x i ∣ π i = P ( x i ∣ π i ) \theta_{x_i|\pi_i}=P(x_i|\pi_i) θxi∣πi=P(xi∣πi), θ \theta θ定量的描述属性间的关系。
假设贝叶斯网络 B B B由结构 G G G和参数 θ \theta θ构成, B = < G , θ > B=<G,\theta> B=<G,θ>,G是有向无环图。顶点表示属性。若顶点之间有依赖关系,则用有有向线段连接起来。
B = < G , θ > 将 属 性 x 1 , x 2 , . . . x d B=<G,\theta>将属性x_1,x_2,...x_d B=<G,θ>将属性x1,x2,...xd的联合概率分布定义为:
P B ( x 1 , x 2 , x 3 , . . . x d ) = Π i = 1 d P B ( x i ∣ π i ) = Π i = 1 d θ x i ∣ π i P_B(x_1,x_2,x_3,...x_d)=\Pi_{i=1}^dP_B(x_i|\pi_i)=\Pi_{i=1}^d\theta_{x_i|\pi_i} PB(x1,x2,x3,...xd)=Πi=1dPB(xi∣πi)=Πi=1dθxi∣πi
举例:
P ( x 1 , x 2 , x 3 , x 4 , x 5 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ∣ x 1 ) P ( x 4 ∣ x 1 , x 2 ) P ( x 5 ∣ x 2 ) P\left(x_{1}, x_{2}, x_{3}, x_{4}, x_{5}\right)=P\left(x_{1}\right) P\left(x_{2}\right) P\left(x_{3} | x_{1}\right) P\left(x_{4} | x_{1}, x_{2}\right) P\left(x_{5} | x_{2}\right) P(x1,x2,x3,x4,x5)=P(x1)P(x2)P(x3∣x1)P(x4∣x1,x2)P(x5∣x2)