经典机器学习算法:朴素贝叶斯
朴素贝叶斯介绍回顾高斯判别分析朴素贝叶斯朴素贝叶斯法模型朴素贝叶斯法的假设朴素贝叶斯法的参数估计极大似然估计贝叶斯估计回顾高斯判别分析生成模型,使用较强的假设。对于两类样本,其服从伯努利分布,而对每个类中的样本,假定都服从高斯分布。朴素贝叶斯朴素贝叶斯是生成模型,和高斯判别分析类似,主要针对最大化p(X∣Y)p(Y)p(X|Y)p(Y)p(X∣Y)p(Y)进行建模,高斯判别分析有两个假设:对于两类
回顾
高斯判别分析
生成模型,使用较强的假设。
对于两类样本,其服从伯努利分布,而对每个类中的样本,假定都服从高斯分布。
朴素贝叶斯
朴素贝叶斯是生成模型,和高斯判别分析类似,主要针对最大化 p ( X ∣ Y ) p ( Y ) p(X|Y)p(Y) p(X∣Y)p(Y)进行建模,高斯判别分析有两个假设:对于两类样本,其服从伯努利分布,而对每个类中的样本,假定都服从高斯分布(多属性即多维高斯分布)。但是高斯判别分析求解过程非常复杂,所以朴素贝叶斯对数据的属性之间的关系作出了假设,每个类中的样本都服从独立同分布,即iid。
朴素贝叶斯法模型
朴素贝叶斯对数据的属性之间的关系作出了假设,一般地,我们若需要得到 p ( X ∣ Y ) p(X|Y) p(X∣Y) 这个概率值,由于 x x x 有 p p p 个维度,因此需要对这么多的维度的联合概率进行采样,但是我们知道这么高维度的空间中采样需要的样本数量非常大才能获得较为准确的概率近似,但在朴素贝叶斯中采用的是对条件概率分布作出了条件独立性的假设,使得贝叶斯求解大大简化,因此朴素贝叶斯因此得名。
p ( x ∣ y ) = ∏ i = 1 p p ( x i ∣ y ) p(x|y)=\prod\limits_{i=1}^pp(x_i|y) p(x∣y)=i=1∏pp(xi∣y)
即:
x i ⊥ x j ∣ y , ∀ i ≠ j x_i\perp x_j|y,\forall\ i\ne j xi⊥xj∣y,∀ i=j
于是利用贝叶斯定理,对于单次观测:
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) = ∏ i = 1 p p ( x i ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)p(y)=p(x)i=1∏pp(xi∣y)p(y)
朴素贝叶斯法的假设
对于单个维度的条件概率以及类先验作出进一步的假设:
- x i x_i xi 为连续变量: p ( x i ∣ y ) = N ( μ i , σ i 2 ) p(x_i|y)=\mathcal{N}(\mu_i,\sigma_i^2) p(xi∣y)=N(μi,σi2) ,即一维高斯分布
- x i x_i xi 为离散变量:类别分布(Categorical): p ( x i = i ∣ y ) = θ i , ∑ i = 1 K θ i = 1 p(x_i=i|y)=\theta_i,\sum\limits_{i=1}^K\theta_i=1 p(xi=i∣y)=θi,i=1∑Kθi=1
- p ( y ) = ϕ y ( 1 − ϕ ) 1 − y p(y)=\phi^y(1-\phi)^{1-y} p(y)=ϕy(1−ϕ)1−y
对这些参数的估计,常用极大似然估计的方法直接在数据集上估计,由于不需要知道各个维度之间的关系,因此,所需数据量大大减少了。估算完这些参数,再代入贝叶斯定理中得到类别的后验分布。
朴素贝叶斯法的参数估计
估计相应的概率 p ( y ) p(y) p(y)和 p ( x i ∣ y ) p(x_i|y) p(xi∣y)
极大似然估计
其实就是根据数据统计一下概率即可
- 计算 p ( y ) p(y) p(y)
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . . , K P(Y=c_k) = \frac{\sum_{i=1}^NI(y_i=c_k)}{N},k=1,2,...,K P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,...,K
- 计算 p ( x i ∣ y ) p(x_i|y) p(xi∣y)
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)
j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S i ; k = 1 , 2 , . . . , K j=1,2,...,n;l=1,2,...,S_i;k=1,2,...,K j=1,2,...,n;l=1,2,...,Si;k=1,2,...,K
- 给定输入,输出预测标签
给定 x = ( 2 , S ) x=(2,S) x=(2,S),输出 y = − 1 y=-1 y=−1
贝叶斯估计
可以看到计算概率时用的是连乘,用极大似然估计可能会出现所要估计的概率值为0的情况,所以当有一种特征在此前没出现过,就会导致该标签输出的概率直接为0。因此可使用贝叶斯估计解决这一问题,贝叶斯估计其实非常繁琐,但在该问题的强假设:独立同分布下,就是在取值频数时赋予一个正数对其进行平滑,避免了0值的出现。
- 计算 p ( y ) p(y) p(y)
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ , k = 1 , 2 , . . . , K P(Y=c_k) = \frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N +K\lambda},k=1,2,...,K P(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ,k=1,2,...,K
- 计算 p ( x i ∣ y ) p(x_i|y) p(xi∣y)
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ
j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S i ; k = 1 , 2 , . . . , K j=1,2,...,n;l=1,2,...,S_i;k=1,2,...,K j=1,2,...,n;l=1,2,...,Si;k=1,2,...,K
- 给定输入,输出预测标签
更多推荐
所有评论(0)