CS229第四课——生成学习算法

生成学习算法

目前我们讨论的算法都是在给定 x x x的情况下求解 y y y的分布情况,即 p ( y ∣ x ; θ ) p(y|x;\theta) p(yx;θ),例如逻辑回归算法,接下来我们会讨论一种不同类型的算法。
我们首先讨论二分类问题,对于给定的数据集,逻辑回归算法或感知器算法会寻找一条直线来对这些数据进行划分。而对于另一种算法,我们会先针对 y = 0 y=0 y=0的类别进行建模,然后再针对 y = 1 y=1 y=1进行建模,最后对于一个新的数据我们会将其与两个模型进行匹配,查看其特征更接近哪个模型。
直接计算 p ( y ∣ x ) p(y|x) p(yx)或直接从输入空间映射到标签数据的算法称为判别算法;而学习 p ( x ∣ y ) p(x|y) p(xy) p ( y ) p(y) p(y)的算法称为生成算法。对于生成算法,我们会针对 y = 1 y=1 y=1时数据特征的分布和 y = 0 y=0 y=0时数据特征的分布来建模,在获取 p ( x ∣ y = 0 ) , p ( x ∣ y = 1 ) 和 p ( y ) p(x|y=0),p(x|y=1)和p(y) p(xy=0),p(xy=1)p(y)后,我们根据贝叶斯公式来求解给定 x x x下的 y y y的分布。
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)} p(yx)=p(x)p(xy)p(y)
在该公式中, p ( x ) = p ( x ∣ y = 0 ) p ( y = 0 ) + p ( x ∣ y = 1 ) p ( y = 1 ) p(x)=p(x|y=0)p(y=0)+p(x|y=1)p(y=1) p(x)=p(xy=0)p(y=0)+p(xy=1)p(y=1),因此我们只需要建模 p ( x ∣ y ) , p ( y ) p(x|y),p(y) p(xy),p(y)即可,当我们计算 p ( y ∣ x ) p(y|x) p(yx)只是为了进行预测时,我们可以不计算上式中的分母
arg ⁡ min ⁡ y   p ( y ∣ x ) = arg ⁡ min ⁡ y   p ( x ∣ y ) p ( y ) p ( x ) = arg ⁡ min ⁡ y   p ( x ∣ y ) p ( y ) \arg\min_y\,p(y|x)=\arg\min_y\,\frac{p(x|y)p(y)}{p(x)}=\arg\min_y\,p(x|y)p(y) argyminp(yx)=argyminp(x)p(xy)p(y)=argyminp(xy)p(y)

1 高斯判别分析

我们首先来讨论的生成算法是高斯判别分析算法(GDA),在这个算法中,我们假设 p ( x ∣ y ) p(x|y) p(xy)满足高斯多元分布,我们首先介绍高斯多元分布具体情况。

1.1 多元高斯分布

高斯多元分布中的变量属于多维的,我们假设其是分布在 n n n维空间中,因此该多元高斯分布可以使用一个均值向量 μ ∈ R n \mu\in\mathbb{R}^n μRn和一个协方差矩阵 Σ ∈ R n × n Σ\in\mathbb{R}^{n\times n} ΣRn×n来进行参数化,其概率密度函数为:
p ( x ; μ , ∑ ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x;\mu,\sum)=\frac{1}{(2\pi)^{n/2}|Σ|^{1/2}}exp(-\frac{1}{2}(x-\mu)^TΣ^{-1}(x-\mu)) p(x;μ,)=(2π)n/2Σ1/21exp(21(xμ)TΣ1(xμ))
其中的 ∣ Σ ∣ |Σ| Σ代表该矩阵的行列式。

1.2 高斯判别分析模型

当输入特征 x x x是连续值随机变量的分类问题时,我们可以使用高斯判别模型,其中的模型我们定义为
y ∼ B e r n o u l l i ( ϕ ) x ∣ y = 0 ∼ N ( μ 0 , Σ ) x ∣ y = 1 ∼ N ( μ 1 , Σ ) \begin{aligned} y&\sim Bernoulli(\phi)\\ x|y=0 &\sim \mathcal{N}(\mu_0,Σ)\\ x|y=1 &\sim \mathcal{N}(\mu_1,Σ) \end{aligned} yxy=0xy=1Bernoulli(ϕ)N(μ0,Σ)N(μ1,Σ)
将其具体的分布写下来可以得到:
p ( y ) = ϕ y ( 1 − ϕ ) 1 − y p ( x ∣ y = 0 ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 e x p ( − 1 2 ( x − μ 0 ) T Σ − 1 ( x − μ 0 ) ) p ( x ∣ y = 1 ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 e x p ( − 1 2 ( x − μ 1 ) T Σ − 1 ( x − μ 1 ) ) \begin{aligned} p(y)&= \phi^y(1-\phi)^{1-y}\\ p(x|y=0) &= \frac{1}{(2\pi)^{n/2}|Σ|^{1/2}}exp(-\frac{1}{2}(x-\mu_0)^TΣ^{-1}(x-\mu_0))\\ p(x|y=1) &= \frac{1}{(2\pi)^{n/2}|Σ|^{1/2}}exp(-\frac{1}{2}(x-\mu_1)^TΣ^{-1}(x-\mu_1)) \end{aligned} p(y)p(xy=0)p(xy=1)=ϕy(1ϕ)1y=(2π)n/2Σ1/21exp(21(xμ0)TΣ1(xμ0))=(2π)n/2Σ1/21exp(21(xμ1)TΣ1(xμ1))
在这个模型中我们需要进行求解的参数包括: ϕ , μ 0 , μ 1 , Σ \phi,\mu_0,\mu_1,Σ ϕ,μ0,μ1,Σ(虽然模型中包含两个均值向量,但我们只假设一个协方差矩阵)
与之前一样使用似然函数来进行模型参数求解,但之前的似然函数为估 P ( y ∣ x ; θ ) P(y|x;\theta) P(yx;θ),而在生成算法中则是联合变量 P ( x , y ; ϕ , μ 0 , μ 1 , Σ ) P(x,y;\phi,\mu_0,\mu_1,Σ) P(x,y;ϕ,μ0,μ1,Σ)
l ( ϕ , μ 0 , μ 1 , Σ ) = l o g   ∏ i = 1 m p ( x ( i ) , y ( i ) ; ϕ , μ 0 , μ 1 , Σ ) = l o g   ∏ i = 1 m p ( x ( i ) ∣ y ( i ) ; μ 0 , μ 1 , Σ ) p ( y ( i ) ; ϕ ) \begin{aligned} l(\phi,\mu_0,\mu_1,Σ) &= log \, \prod_{i=1}^mp(x^{(i)},y^{(i)};\phi,\mu_0,\mu_1,Σ)\\ &=log \, \prod_{i=1}^mp(x^{(i)}|y^{(i)};\mu_0,\mu_1,Σ)p(y^{(i)};\phi) \end{aligned} l(ϕ,μ0,μ1,Σ)=logi=1mp(x(i),y(i);ϕ,μ0,μ1,Σ)=logi=1mp(x(i)y(i);μ0,μ1,Σ)p(y(i);ϕ)
通过对上述式子进行最大化求解,我们可以得到
ϕ = 1 m ∑ i = 1 m 1 { y ( i ) = 1 } μ 0 = ∑ i = 1 m 1 { y ( i ) = 0 } x ( i ) ∑ i = 1 m 1 { y ( i ) = 0 } μ 1 = ∑ i = 1 m 1 { y ( i ) = 1 } x ( i ) ∑ i = 1 m 1 { y ( i ) = 1 } Σ = 1 m ∑ i = 1 m ( x ( i ) − μ y ( i ) ) ( x ( i ) − μ y ( i ) ) T \begin{aligned} \phi&=\frac{1}{m}\sum_{i=1}^m1\{y^{(i)}=1\}\\ \mu_0&=\frac{\sum_{i=1}^m1\{y^{(i)}=0\}x^{(i)}}{\sum_{i=1}^m1\{y^{(i)}=0\}}\\ \mu_1&=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}x^{(i)}}{\sum_{i=1}^m1\{y^{(i)}=1\}}\\ Σ&=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T \end{aligned} ϕμ0μ1Σ=m1i=1m1{y(i)=1}=i=1m1{y(i)=0}i=1m1{y(i)=0}x(i)=i=1m1{y(i)=1}i=1m1{y(i)=1}x(i)=m1i=1m(x(i)μy(i))(x(i)μy(i))T

1.3 讨论:GDA与逻辑回归

GDA模型与逻辑回归模型之间存在着一定的关系,如果我们将 p ( y = 1 ∣ x ; ϕ , μ 0 , μ 1 , Σ ) p(y=1|x;\phi,\mu_0,\mu_1,Σ) p(y=1x;ϕ,μ0,μ1,Σ)定义为关于 x x x的函数,则我们可以看到该格式会被表示为
p ( y = 1 ∣ x ; ϕ , μ 0 , μ 1 , Σ ) = 1 1 + e x p ( − θ T x ) p(y=1|x;\phi,\mu_0,\mu_1,Σ)=\frac{1}{1+exp(-\theta^Tx)} p(y=1x;ϕ,μ0,μ1,Σ)=1+exp(θTx)1
其中的 θ \theta θ可以用 ϕ , μ 0 , μ 1 , Σ \phi,\mu_0,\mu_1,Σ ϕ,μ0,μ1,Σ进行表示,这个格式就是逻辑回归的格式。
一般来说,在同一数据集上进行训练时,GDA和逻辑回归会给出不同的决策边界,下面我们将说明如何选择模型。
如果 p ( x ∣ y ) p(x|y) p(xy)为高斯分布,我们可以从GDA模型反推到逻辑回归模型,然而却无法从逻辑回归模型反推到 p ( x ∣ y ) p(x|y) p(xy)为高斯分布,因为在GDA模型中我们进行了更强的假设。因此当我们在GDA中做的模型假设是正确的时,GDA可以得到更好的训练效果。因此在数据集比较小的情况下,我们会通过对训练模型进行更多的假设使其获得更好的训练效果,在这种情况下我们会使用GDA模型。相反,由于逻辑回归做的假设比较少,因此逻辑回归算法有更强的鲁棒性,关于 p ( x ∣ y ) p(x|y) p(xy)存在着多种可能的分布,比如高斯分布,泊松分布等,这些分布都可以反推到逻辑回归中,因此逻辑回归在这些不同的分布可以获得很好的训练效果,但GDA算法当做的假设错误时训练效果较差。
总结:GDA做了更强的建模假设,并且数据效率更高,例如当建模假设是正确的或至少近似正确的时候,就需要较少的训练数据来学习。逻辑回归做出了更弱的假设,并且对模型假设的偏差具有更强的鲁棒性。

2 朴素贝叶斯

在GDA中的输入数据 x x x是连续值,接下来考虑的朴素贝叶斯中的输入数据是离散值,我们使用朴素贝叶斯来进行邮件分类(是否为垃圾邮件)。
我们使用特征向量来表示邮件,首先建立一个词典向量,如果邮件中包含第 i i i个词,则将该位置的元素值置为1,否则为0,因此输入数据 x x x的维度等于词典的单词数量。
如果我们设置的词典中有5000个单词,则输入的数据 x ∈ R 5000 x\in\mathbb{R}^{5000} xR5000,我们需要建立的模型是 p ( x ∣ y ) p(x|y) p(xy),如果我们用多项式分布来建模,则会有 2 5000 2^{5000} 25000个输出结果,这样参数太多了。
为了减少参数量,我们进行了一个很强的假设,在给定 y y y的情况下,特征向量中的每个元素都是独立的,这个假设称为朴素贝叶斯假设,因此可以得到:
p ( x 1 , x 2 , . . . , x 5000 ∣ y ) = p ( x 1 ∣ y ) p ( x 2 ∣ y , x 1 ) . . . p ( x 5000 ∣ y , x 1 , x 2 , . . . ) = p ( x 1 ∣ y ) p ( x 2 ∣ y ) . . . p ( x 5000 ∣ y ) = ∏ i = 1 5000 p ( x i ∣ y ) \begin{aligned} p(x_1,x_2,...,x_{5000}|y)&=p(x_1|y)p(x_2|y,x_1)...p(x_{5000}|y,x_1,x_2,...)\\ &=p(x_1|y)p(x_2|y)...p(x_{5000}|y)\\ &=\prod_{i=1}^{5000}p(x_i|y) \end{aligned} p(x1,x2,...,x5000y)=p(x1y)p(x2y,x1)...p(x5000y,x1,x2,...)=p(x1y)p(x2y)...p(x5000y)=i=15000p(xiy)
虽然朴素贝叶斯假设是一个很强的假设,但该算法仍能实现较好的效果,此时我们需要拟合的参数包括: ϕ i ∣ y = 1 = p ( x i = 1 ∣ y = 1 ) , ϕ i ∣ y = 0 = p ( x i = 1 ∣ y = 0 ) , ϕ y = p ( y = 1 ) \phi_{i|y=1}=p(x_i=1|y=1),\phi_{i|y=0}=p(x_i=1|y=0),\phi_y=p(y=1) ϕiy=1=p(xi=1y=1),ϕiy=0=p(xi=1y=0),ϕy=p(y=1)。与之前一样,给定 m m m个数据样本 { ( x ( i ) , y ( i ) ; i = 1 , 2 , . . . , m } \{(x^{(i)},y^{(i)};i=1,2,...,m\} {(x(i),y(i);i=1,2,...,m},我们可以得到联合似然函数
L ( ϕ y , ϕ i ∣ y = 1 , ϕ i ∣ y = 0 ) = ∏ i = 1 m p ( x ( i ) , y ( i ) ) L(\phi_y,\phi_{i|y=1},\phi_{i|y=0})=\prod_{i=1}^mp(x^{(i)},y^{(i)}) L(ϕy,ϕiy=1,ϕiy=0)=i=1mp(x(i),y(i))
通过最大化似然函数我们可以得到:
ϕ j ∣ y = 1 = ∑ i = 1 m 1 { x j ( i ) = 1 ⋀ y ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 1 } ϕ j ∣ y = 0 = ∑ i = 1 m 1 { x j ( i ) = 1 ⋀ y ( i ) = 0 } ∑ i = 1 m 1 { y ( i ) = 0 } ϕ y = ∑ i = 1 m 1 { y ( i ) = 1 } m \begin{aligned} \phi_{j|y=1}&=\frac{\sum_{i=1}^m1\{x^{(i)}_j=1 \bigwedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}}\\ \phi_{j|y=0}&=\frac{\sum_{i=1}^m1\{x^{(i)}_j=1 \bigwedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}}\\ \phi_y&=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m} \end{aligned} ϕjy=1ϕjy=0ϕy=i=1m1{y(i)=1}i=1m1{xj(i)=1y(i)=1}=i=1m1{y(i)=0}i=1m1{xj(i)=1y(i)=0}=mi=1m1{y(i)=1}
当计算得到模型参数后,预测过程如下所述
p ( y = 1 ∣ x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ) = ( ∏ i = 1 m p ( x i ∣ y = 1 ) ) p ( y = 1 ) ( ∏ i = 1 m p ( x i ∣ y = 1 ) ) p ( y = 1 ) + ( ∏ i = 1 m p ( x i ∣ y = 0 ) ) p ( y = 0 ) \begin{aligned} p(y=1|x)&=\frac{p(x|y=1)p(y=1)}{p(x)}\\ &=\frac{(\prod_{i=1}^mp(x_i|y=1))p(y=1)}{(\prod_{i=1}^mp(x_i|y=1))p(y=1)+(\prod_{i=1}^mp(x_i|y=0))p(y=0)} \end{aligned} p(y=1x)=p(x)p(xy=1)p(y=1)=(i=1mp(xiy=1))p(y=1)+(i=1mp(xiy=0))p(y=0)(i=1mp(xiy=1))p(y=1)
并将计算得到概率最大的一类作为预测结果。
最后,我们考虑输入的特征向量 x x x中的值可能不是二值化,而是存在多个值,即 x i ∈ { 1 , 2 , . . . , k i } x_i\in \{1,2,...,k_i\} xi{1,2,...,ki},我们可以直接将 p ( x i ∣ y ) p(x_i|y) p(xiy)建模为多项式分布而不是伯努利分布。

2.1 Laplace平滑

当我们使用朴素贝叶斯来进行垃圾邮件筛选的时候,如果我们的邮件中接收到一个单词之前没有遇到过,如果该单词出现在我们的词典中的第3500个位置,则
ϕ 3500 ∣ y = 1 = ∑ i = 1 m 1 { x 3500 ( i ) = 1 ⋀ y ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 1 } = 0 ϕ 3500 ∣ y = 0 = ∑ i = 1 m 1 { x 3500 ( i ) = 1 ⋀ y ( i ) = 0 } ∑ i = 1 m 1 { y ( i ) = 0 } = 0 \phi_{3500|y=1}=\frac{\sum_{i=1}^m1\{x^{(i)}_{3500}=1\bigwedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}}=0\\ \phi_{3500|y=0}=\frac{\sum_{i=1}^m1\{x^{(i)}_{3500}=1\bigwedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}}=0 ϕ3500y=1=i=1m1{y(i)=1}i=1m1{x3500(i)=1y(i)=1}=0ϕ3500y=0=i=1m1{y(i)=0}i=1m1{x3500(i)=1y(i)=0}=0
因此
p ( y = 1 ∣ x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ∣ y = 1 ) p ( y = 1 ) + p ( x ∣ y = 0 ) p ( y = 0 ) = ∏ i = 1 n p ( x i ∣ y = 1 ) p ( y = 1 ) ∏ i = 1 n p ( x i ∣ y = 1 ) p ( y = 1 ) + ∏ i = 1 n p ( x ∣ y = 0 ) p ( y = 0 ) = 0 0 \begin{aligned} p(y=1|x)&=\frac{p(x|y=1)p(y=1)}{p(x|y=1)p(y=1)+p(x|y=0)p(y=0)}\\ &=\frac{\prod_{i=1}^np(x_i|y=1)p(y=1)}{\prod_{i=1}^np(x_i|y=1)p(y=1)+\prod_{i=1}^np(x|y=0)p(y=0)}\\ &=\frac{0}{0} \end{aligned} p(y=1x)=p(xy=1)p(y=1)+p(xy=0)p(y=0)p(xy=1)p(y=1)=i=1np(xiy=1)p(y=1)+i=1np(xy=0)p(y=0)i=1np(xiy=1)p(y=1)=00
因为之前没有遇见过所以就将其概率设置为0这样的处理对于模型性能会有一定的影响,为了避免这种情况,我们可以使用Laplace平滑进行处理,下面举例说明Laplace平滑具体处理。
假设某个随机变量的 z ∈ { 1 , 2 , . . . , k } z\in\{1,2,...,k\} z{1,2,...,k},则 ϕ i = p ( z = i ) = ∑ j = 1 m 1 { z ( j ) = i } m \phi_i=p(z=i)=\frac{\sum_{j=1}^m1\{z^{(j)}=i\}}{m} ϕi=p(z=i)=mj=1m1{z(j)=i}经过平滑处理后可以修改为 ϕ i = p ( z = i ) = ∑ j = 1 m 1 { z ( j ) = i } + 1 m + k \phi_i=p(z=i)=\frac{\sum_{j=1}^m1\{z^{(j)}=i\}+1}{m+k} ϕi=p(z=i)=m+kj=1m1{z(j)=i}+1
通过结合Laplace平滑后,朴素贝叶斯分类器的公式修改为
ϕ j ∣ y = 1 = ∑ i = 1 m 1 { x j ( i ) = 1 ⋀ y i = 1 } + 1 ∑ i = 1 m 1 { y ( i ) = 1 } + 2 ϕ j ∣ y = 0 = ∑ i = 1 m 1 { x j ( i ) = 1 ⋀ y i = 0 } + 1 ∑ i = 1 m 1 { y ( i ) = 0 } + 2 \phi_{j|y=1}=\frac{\sum_{i=1}^m1\{x^{(i)}_j=1\bigwedge y^{i}=1\}+1}{\sum_{i=1}^m1\{y^{(i)}=1\}+2}\\ \phi_{j|y=0}=\frac{\sum_{i=1}^m1\{x^{(i)}_j=1\bigwedge y^{i}=0\}+1}{\sum_{i=1}^m1\{y^{(i)}=0\}+2} ϕjy=1=i=1m1{y(i)=1}+2i=1m1{xj(i)=1yi=1}+1ϕjy=0=i=1m1{y(i)=0}+2i=1m1{xj(i)=1yi=0}+1

2.2 用于文本分类的事件模型

在文本分类的特定背景下,朴素贝叶斯可以使用多变量伯努利事件模型。对于多元事件模型,我们采用一种新的特征向量表示方法来表示每个邮件,特征向量 x x x中的元素 x i ∈ { 1 , 2 , . . . , ∣ V ∣ } x_i\in\{1,2,...,|V|\} xi{1,2,...,V},其中的| V V V|代表我们定义的词典的长度,有着 n n n个单词的邮件可以表示为一个向量( x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn),每个邮件的 n n n都可能是不一样的,而 x i = 3500 x_i=3500 xi=3500表示邮件中的第 i i i个单词出现在词典中第3500个位置上。对于多元事件模型的预测,我们同样是计算 p ( y ) p(y) p(y) ∏ i = 1 n p ( x n ∣ y ) \prod_{i=1}^np(x_n|y) i=1np(xny)来进行预测,但此时的 x i ∣ y x_i|y xiy代表的是多项式分布,而不是之前的伯努利分布。
对于这个新模型,我们同样定义参数 ϕ y = p ( y = 1 ) , ϕ i ∣ y = 1 = p ( x j = i ∣ y = 1 ) , ϕ i ∣ y = 0 = p ( x j = i ∣ y = 0 ) \phi_y=p(y=1),\phi_{i|y=1}=p(x_j=i|y=1),\phi_{i|y=0}=p(x_j=i|y=0) ϕy=p(y=1),ϕiy=1=p(xj=iy=1),ϕiy=0=p(xj=iy=0).
如果我们给定数据集 { ( x ( i ) , y ( i ) ) , i = 1 , 2 , . . . , m } \{(x^{(i)},y^{(i)}),i=1,2,...,m\} {(x(i),y(i)),i=1,2,...,m},并且 x ( i ) = ( x 1 ( i ) , x 2 ( i ) , . . . , x n i ( i ) ) x^{(i)}=(x^{(i)}_1,x^{(i)}_2,...,x^{(i)}_{n_i}) x(i)=(x1(i),x2(i),...,xni(i)),其中的 n i n_i ni代表该邮件的长度。其似然函数为
L ( ϕ , ϕ i ∣ y = 1 , ϕ i ∣ y = 0 ) = ∏ i = 1 m p ( x ( i ) , y ( i ) ) = ∏ i = 1 m ∏ j = 1 n i p ( x ( i ) ∣ y ( i ) ) p ( y ( i ) ) = ∏ i = 1 m ( ∏ j = 1 n i p ( x ( i ) ∣ y ( i ) ; ϕ i ∣ y = 1 , ϕ i ∣ y = 0 ) p ( y ( i ) ; ϕ ) \begin{aligned} L(\phi,\phi_{i|y=1},\phi_{i|y=0})&=\prod_{i=1}^mp(x^{(i)},y^{(i)})\\ &=\prod_{i=1}^m\prod_{j=1}^{n_i}p(x^{(i)}|y^{(i)})p(y^{(i)})\\ &=\prod_{i=1}^m(\prod_{j=1}^{n_i}p(x^{(i)}|y^{(i)};\phi_{i|y=1},\phi_{i|y=0})p(y^{(i)};\phi) \end{aligned} L(ϕ,ϕiy=1,ϕiy=0)=i=1mp(x(i),y(i))=i=1mj=1nip(x(i)y(i))p(y(i))=i=1m(j=1nip(x(i)y(i);ϕiy=1,ϕiy=0)p(y(i);ϕ)
使用最大似然函数后可以得到参数值为
ϕ = ∑ i = 1 m 1 { y ( i ) = 1 } m ϕ k ∣ y = 1 = ∑ i = 1 m ∑ j = 1 n i 1 { x j ( i ) = k ⋀ y ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 1 } n i ϕ k ∣ y = 1 = ∑ i = 1 m ∑ j = 1 n i 1 { x j ( i ) = k ⋀ y ( i ) = 0 } ∑ i = 1 m 1 { y ( i ) = 0 } n i \begin{aligned} \phi&=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m}\\ \phi_{k|y=1}&=\frac{\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x^{(i)}_j=k\bigwedge y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}n_i}\\ \phi_{k|y=1}&=\frac{\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x^{(i)}_j=k\bigwedge y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}n_i} \end{aligned} ϕϕky=1ϕky=1=mi=1m1{y(i)=1}=i=1m1{y(i)=1}nii=1mj=1ni1{xj(i)=ky(i)=1}=i=1m1{y(i)=0}nii=1mj=1ni1{xj(i)=ky(i)=0}
结合使用Laplace平滑后,参数计算公式修改为
ϕ = ∑ i = 1 m 1 { y ( i ) = 1 } m ϕ k ∣ y = 1 = ∑ i = 1 m ∑ j = 1 n i 1 { x j ( i ) = k ⋀ y ( i ) = 1 } + 1 ∑ i = 1 m 1 { y ( i ) = 1 } n i + ∣ V ∣ ϕ k ∣ y = 1 = ∑ i = 1 m ∑ j = 1 n i 1 { x j ( i ) = k ⋀ y ( i ) = 0 } + 1 ∑ i = 1 m 1 { y ( i ) = 0 } n i + ∣ V ∣ \begin{aligned} \phi&=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m}\\ \phi_{k|y=1}&=\frac{\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x^{(i)}_j=k\bigwedge y^{(i)}=1\}+1}{\sum_{i=1}^m1\{y^{(i)}=1\}n_i+|V|}\\ \phi_{k|y=1}&=\frac{\sum_{i=1}^m\sum_{j=1}^{n_i}1\{x^{(i)}_j=k\bigwedge y^{(i)}=0\}+1}{\sum_{i=1}^m1\{y^{(i)}=0\}n_i+|V|} \end{aligned} ϕϕky=1ϕky=1=mi=1m1{y(i)=1}=i=1m1{y(i)=1}ni+Vi=1mj=1ni1{xj(i)=ky(i)=1}+1=i=1m1{y(i)=0}ni+Vi=1mj=1ni1{xj(i)=ky(i)=0}+1
虽然朴素贝叶斯分类器比较简单,但可以实现较快的训练速度,因此我们一般可以先使用朴素贝叶斯来训练查看训练结果,结果不错再进行长时间的训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值