CS229 Lecture 5

本节讲解了生成学习算法,包括高斯判别分析和朴素贝叶斯方法。高斯判别分析假设特征服从高斯分布,通过最大化似然函数估计参数,用于分类预测。朴素贝叶斯则基于特征条件独立假设,简化了模型复杂度,适用于文本分类等任务。Laplace平滑解决了未观测到的特征导致的概率为零问题。
摘要由CSDN通过智能技术生成

CS229 Lecture 5

本节课重点:

Generative Learning algorithms
Gaussian discriminant analysis

Naive Bayes
Laplace smoothing


如果一个算法目的是学习 p ( y ∣ x ) p(y|x) p(yx)或者直接学习根据 x x x预测数据的标签 { 0 , 1 } \{0,1\} {0,1}。这类学习算法称为判别学习算法( d i s c r i m i n a t i v e    l e a r n i n g    a l g o r i t h m s discriminative\,\,learning\,\, algorithms discriminativelearningalgorithms)

本节课主要涉及的是算法主要是模拟 p ( x ∣ y ) p(x|y) p(xy)基于 p ( y ) p(y) p(y)。此类学习方法称为生成学习算法。其中 x x x是样本特征, y y y是类别标签。生成学习方法主要基于贝叶斯算法。
p ( y = 1 ∣ x ) = p ( x ∣ y = 1 ) p ( y ) p ( y ) p ( x ) = p ( x ∣ y = 1 ) p ( y = 1 ) + p ( x ∣ y = 0 ) p ( y = 0 ) p(y=1|x)=\frac{p(x|y=1)p(y)}{p(y)}\\ p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0) p(y=1x)=p(y)p(xy=1)p(y)p(x)=p(xy=1)p(y=1)+p(xy=0)p(y=0)


生成学习方法的例子:高斯判别分析

假设: x ∈ R n x\in R^n xRn,并且是连续值。且 p ( x ∣ y ) p(x|y) p(xy)是高斯分布。

现有变量 x ∼ N ( u ⃗ , Σ ) x\sim N(\vec u,\Sigma) xN(u ,Σ),其密度函数为:

p ( x ; u , Σ ) = 1 ( 2 π ) 1 / 2 ∣ Σ ∣ 1 / 2 e x p ( − ( x − u ) T Σ − 1 ( x − u ) ) p(x;u,\Sigma)=\frac{1}{(2\pi)^{1/2}|\Sigma|^{1/2}}exp(-(x-u)^T\Sigma^{-1}(x-u)) p(x;u,Σ)=(2π)1/2Σ1/21exp((xu)TΣ1(xu))

其中 u ⃗ \vec u u 是多变量高斯分的均值, Σ \Sigma Σ为协方差矩阵。 Σ = E [ ( x − u ) ( x − u ) T ] \Sigma=E[(x-u)(x-u)^T] Σ=E[(xu)(xu)T]

下图是多变量高斯分布随着 Σ \Sigma Σ变化的轮廓图;
在这里插入图片描述

建模为:

p ( y ) = ϕ y ( 1 − ϕ ) 1 − y p ( x ∣ y = 0 ) = 1 ( 2 π ) 1 / 2 ∣ Σ ∣ 1 / 2 e x p ( − ( x − u 0 ) T Σ − 1 ( x − u 0 ) ) p ( x ∣ y = 0 ) = 1 ( 2 π ) 1 / 2 ∣ Σ ∣ 1 / 2 e x p ( − ( x − u 1 ) T Σ − 1 ( x − u 1 ) ) p(y)=\phi^y(1-\phi)^{1-y}\\ p(x|y=0)=\frac{1}{(2\pi)^{1/2}|\Sigma|^{1/2}}exp(-(x-u_0)^T\Sigma^{-1}(x-u_0))\\ p(x|y=0)=\frac{1}{(2\pi)^{1/2}|\Sigma|^{1/2}}exp(-(x-u_1)^T\Sigma^{-1}(x-u_1)) p(y)=ϕy(1ϕ)1yp(xy=0)=(2π)1/2Σ1/21exp((xu0)TΣ1(xu0))p(xy=0)=(2π)1/2Σ1/21exp((xu1)TΣ1(xu1))

对其求最大似然函数:

L ( ϕ , u 0 , u 1 , Σ ) = l o g ∏ i = 1 m p ( x i , y i ; ϕ , u 0 , u 1 , Σ ) = l o g ∏ i = 1 m p ( x i ∣ y i ; u 0 , u 1 , Σ ) p ( y i ; ϕ ) L(\phi,u_0,u_1,\Sigma)=log\prod_{i=1}^mp(x^{i},y^{i};\phi,u_0,u_1,\Sigma)\\ =log\prod_{i=1}^mp(x^{i}|y^{i};u_0,u_1,\Sigma)p(y^{i};\phi) L(ϕ,u0,u1,Σ)=logi=1mp(xi,yi;ϕ,u0,u1,Σ)=logi=1mp(xiyi;u0,u1,Σ)p(yi;ϕ)

上面的似然也被称为 J o i n t    l i k e l i h o o d Joint \,\,likelihood Jointlikelihood,而前面我们学习到如逻辑回归之类的算法是根据 p ( y ∣ x ) p(y|x) p(yx)来建模,这类方法的似然函数形如 L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) L(θ)=i=1mp(y(i)x(i);θ)称之为 c o n d i t i o n a l    l i k e l i h o o d conditional \,\,likelihood conditionallikelihood ϕ , u 1 , u 2 , Σ \phi,u_1,u_2,\Sigma ϕ,u1,u2,Σ的极大似然估计为:

ϕ = 1 m ∑ i = 1 m 1 { y ( i ) = 1 } \phi=\frac{1}{m}\sum_{i=1}^{m}1\{y^{(i)}=1\} ϕ=m1i=1m1{y(i)=1}
ϕ \phi ϕ其实就是伯努利模型中的概率,这里使用样本中标签为1的样本频率来表示。
u 0 = ∑ i = 1 m 1 { y ( i ) = 0 } x ( i ) ∑ i = 1 m 1 { y ( i ) = 0 } u_0=\frac{\sum_{i=1}^{m}1\{y^{(i)}=0\}x^{(i)}}{\sum_{i=1}^{m}1\{y^{(i)}=0\}} u0=i=1m1{y(i)=0}i=1m1{y(i)=0}x(i)
u 0 u_0 u0其实就是所有 y y y标签为0的一个样本特征的平均
u 1 = ∑ i = 1 m 1 { y ( i ) = 1 } x ( i ) ∑ i = 1 m 1 { y ( i ) = 1 } u_1=\frac{\sum_{i=1}^{m}1\{y^{(i)}=1\}x^{(i)}}{\sum_{i=1}^{m}1\{y^{(i)}=1\}} u1=i=1m1{y(i)=1}i=1m1{y(i)=1}x(i)
Σ = 1 m ∑ i = 1 m ( x ( i ) − u y ( i ) ) ( x ( i ) − u y ( i ) ) T \Sigma = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-u_{y_{(i)}})(x^{(i)}-u_{y_{(i)}})^T Σ=m1i=1m(x(i)uy(i))(x(i)uy(i))T


预测

有了上面对于参数的似然估计后,我们就可以通过他们对新输入的 x x x进行预测。

a r g    m a x y    p ( y ∣ x ) = a r g    m a x y    p ( x ∣ y ) p ( y ) p ( x ) = a r g    m a x y    p ( x ∣ y ) p ( y ) arg\,\,\mathop{max}\limits_{y}\,\,p(y|x) = arg\,\, \mathop{max}\limits_{y} \,\, \frac{p(x|y)p(y)}{p(x)} = arg\,\, \mathop{max}\limits_{y}\,\, p(x|y)p(y) argymaxp(yx)=argymaxp(x)p(xy)p(y)=argymaxp(xy)p(y),因为 x x x y y y是独立的,因此等式成立。

如果说 p ( y ) p(y) p(y)是平均分布的话,那么只需要求 a r g    m a x y    p ( x ∣ y ) arg\,\, \mathop{max}\limits_{y}\,\, p(x|y) argymaxp(xy)


高斯判别分析和逻辑回归之间的联系

在这里插入图片描述

上图可以看作是高斯判别分析与逻辑回归之间的联系, x x x轴上左侧的x和右侧的o分别对应 y = 0 y=0 y=0 y = 1 y=1 y=1,两个高斯曲线为 p ( x ∣ y = 0 ) p(x|y=0) p(xy=0)的概率密度曲线和 p ( x ∣ y = 1 ) p(x|y=1) p(xy=1)的概率密度曲线(这两个高斯曲线是在建模的时候拟合出来的)。现在假设又一个变量 x x x,需要预测其被预测为1的概率,其中黑色曲线就是拟合随着 x x x的变化预测 p ( y = 1 ∣ x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ∣ y = 0 ) p ( y = 0 ) + p ( x ∣ y = 1 ) p ( y = 1 ) p(y=1|x)=\frac{p(x|y=1)p(y=1)}{p(x)}=\frac{p(x|y=1)p(y=1)}{p(x|y=0)p(y=0)+p(x|y=1)p(y=1)} p(y=1x)=p(x)p(xy=1)p(y=1)=p(xy=0)p(y=0)+p(xy=1)p(y=1)p(xy=1)p(y=1),可以看出其大体形状类似与逻辑回归的 s i g m o i d sigmoid sigmoid函数的样子。


使用生成学习算法的好处与坏处

对于 x ∣ y ∼ G u a s s i a n x|y\sim Guassian xyGuassian可以推导出 p ( x ∣ y = 1 ) p(x|y=1) p(xy=1)的后验概率分布是一个逻辑回归。反之是不成立的。同理如果说 x ∣ y = 1 ∼ P o s s i o n ( λ 1 ) x|y=1 \sim Possion(\lambda_1) xy=1Possion(λ1) x ∣ y = 0 ∼ P o s s i o n ( λ 0 ) x|y=0\sim Possion(\lambda_0) xy=0Possion(λ0)也可以推导出 p ( y = 1 ∣ x ) p(y=1|x) p(y=1x)是一个逻辑回归。这也意味 x ∣ y ∼ G u a s s i a n x|y\sim Guassian xyGuassian p ( y = 1 ∣ x ) ∼ l o g i s t i c p(y=1|x)\sim logistic p(y=1x)logistic是一个更强的假设。

联系前面学习过的指数分布族如果 x ∣ y = 1 ∼ E x p    F a m i l y ( η 1 ) x|y=1\sim Exp\,\,Family(\eta_1) xy=1ExpFamily(η1) x ∣ y = 0 ∼ E x p    F a m i l y ( η 0 ) x|y=0\sim Exp\,\,Family(\eta_0) xy=0ExpFamily(η0)同样可以得出 p ( y = 1 ∣ x ) p(y=1|x) p(y=1x)的后验分布是一个逻辑回归。

如果说能大概猜出数据符合高斯分布,那么使用高斯判别分析的假设作出的结果通常要好于逻辑回归。通常高斯分布的假设通常需要的样本数据更少来拟合模型,而逻辑回归相对来说作出的假设更少,需要更多的数据来拟合模型。生成学习算法作出了更强的假设,需要的数据更少。而logistic假设更弱,所以大多数场景均可使用,更为强壮。


朴素贝叶斯

现在需要做一个垃圾邮件分类器 y ∈ { 0 , 1 } y\in\{0,1\} y{0,1},其中0表示正常邮件,而1表示垃圾邮件,如何将一封邮件表示为输入特征 x x x

有一种方法是又一个邮件常用词典,这个词典的大小可能包含上百到上万个词。如 { a    a n    a n t    ⋯ b u y ⋯ c s 229 ⋯   } \{a\,\,an\,\,ant\,\,\cdots buy\cdots cs229\cdots\} {aanantbuycs229}等, x x x可以表示为一个向量 x = [ 1 0 ⋮ 1 ⋮ ] x=\begin{bmatrix}1\\0\\\vdots\\1\\\vdots\end{bmatrix} x=101。我们试图模拟 p ( x ∣ y ) p(x|y) p(xy),假设词典的大小为50000,那么 x x x的可能结果是 2 50000 2^{50000} 250000。如果使用多项式分布来模拟 x x x的输出,那么需要 2 50000 − 1 2^{50000}-1 2500001维参数才行,这个参数太过巨大。

为了使得模拟模型可行,我们需要做一些假设(尽管这个假设听上去可能并不合理,但是在文本实际分类应用中效果还不错)。

A s s u m e : Assume: Assume: 基于 y y y x i s x_is xis是条件独立的。

x i s x_is xis are condition independent given y

p ( x 1 , x 2 , ⋯   , x n ∣ y ) = p ( x 1 ∣ y ) P ( x 2 ∣ y x 1 ) ⋯ p ( x n ∣ x 1 x 2 ⋯ x n − 1 y ) = p ( x 1 ∣ y ) p ( x 2 ∣ y ) ⋯ p ( x n ∣ y ) = ∏ i = 1 n p ( x i ∣ y ) p(x_1,x_2,\cdots,x_n|y)=p(x_1|y)P(x_2|yx_1)\cdots p(x_n|x_1x_2\cdots x_{n-1}y)\\ =p(x_1|y)p(x_2|y)\cdots p(x_n|y)=\prod_{i=1}^np(x_i|y) p(x1,x2,,xny)=p(x1y)P(x2yx1)p(xnx1x2xn1y)=p(x1y)p(x2y)p(xny)=i=1np(xiy)

上述假设意味着知道邮件是否为垃圾邮件,各个词是没有关系的。

上面模型涉及的参数为:
ϕ i ∣ y = 1 = p ( x i ∣ y = 1 ) \phi_{i|y=1}=p(x_i|y=1) ϕiy=1=p(xiy=1)
ϕ i ∣ y = 0 = p ( x i ∣ y = 0 ) \phi_{i|y=0}=p(x_i|y=0) ϕiy=0=p(xiy=0)
ϕ y = p ( y = 1 ) \phi_{y}=p(y=1) ϕy=p(y=1)

可以看到参数都是基于伯努利分布的因为邮件不是垃圾邮件就是正常的。

对于给定训练集 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) ⋯ ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)})\cdots (x^{(m)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2))(x(m),y(m))},这些样本的联结似然函数为:
L ( ϕ y , ϕ i ∣ y = 1 , ϕ i ∣ y = 0 ) = ∏ i = 1 n p ( x ( i ) , y ( i ) ) L(\phi_y,\phi_{i|y=1},\phi_{i|y=0})=\prod_{i=1}^np(x^{(i)},y^{(i)}) L(ϕy,ϕiy=1,ϕiy=0)=i=1np(x(i),y(i))

求解各个参数的最大似然值为:
ϕ i ∣ y = 1 = ∑ i = 1 m 1 { y ( i ) = 1 ∧ x ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 1 } \phi_{i|y=1}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=1\land x^{(i)}=1\}}{\sum_{i=1}^{m}1\{y^{(i)}=1\}} ϕiy=1=i=1m1{y(i)=1}i=1m1{y(i)=1x(i)=1}

ϕ i ∣ y = 0 = ∑ i = 1 m 1 { y ( i ) = 0 ∧ x ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 0 } \phi_{i|y=0}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=0 \land x^{(i)}=1\}}{\sum_{i=1}^{m}1\{y^{(i)}=0\}} ϕiy=0=i=1m1{y(i)=0}i=1m1{y(i)=0x(i)=1}

ϕ y = ∑ 1 { y ( i ) = 1 } m \phi_y=\frac{\sum1\{y^{(i)}=1\}}{m} ϕy=m1{y(i)=1}

当又一个新邮件来了需要预测时使用 p ( y ∣ x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ) = ( ∏ i = 1 n p ( x i ∣ y = 1 ) ) p ( y = 1 ) ( ∏ i = 1 n p ( x i ∣ y = 0 ) ) p ( y = 0 ) + ( ∏ i = 1 n p ( x i ∣ y = 1 ) ) p ( y = 1 ) p(y|x)=\frac{p(x|y=1)p(y=1)}{p(x)}= \frac{(\prod_{i=1}^{n}p(x_i|y=1))p(y=1)}{(\prod_{i=1}^{n}p(x_i|y=0))p(y=0)+(\prod_{i=1}^{n}p(x_i|y=1))p(y=1)} p(yx)=p(x)p(xy=1)p(y=1)=(i=1np(xiy=0))p(y=0)+(i=1np(xiy=1))p(y=1)(i=1np(xiy=1))p(y=1)


Laplace 平滑

假设新发来一封邮件中有一个词 N I P S NIPS NIPS在以往的邮件中邮件见到过,那么使用上面的公式对是否为垃圾邮件进行预测。 p ( y = 1 ∣ x ) = 0 0 p(y=1|x)=\frac{0}{0} p(y=1x)=00,因为 p ( x 3000 ∣ y = 1 ) = 0 p(x_{3000}|y=1)=0 p(x3000y=1)=0 p ( x 3000 ∣ y = 0 ) = 0 p(x_{3000}|y=0)=0 p(x3000y=0)=0(假设NIPS这个词在字典的顺序为3000)。

再如:一个球队连着输了5场球,那么预测下一场它赢的概率 p ( y = 1 ) = 0 5 + 0 = 0 p(y=1)=\frac{0}{5+0}=0 p(y=1)=5+00=0这样预测显然是不合理的。

为了处理这种情况可以使用 L a p l a c e Laplace Laplace平滑, p ( y = 1 ) = 0 + 1 5 + 2 = 1 7 p(y=1)=\frac{0+1}{5+2}=\frac{1}{7} p(y=1)=5+20+1=71

对于 y ∈ { 1 , 2 , ⋯ k } y\in\{1,2,\cdots k\} y{1,2,k}的多项式分布一般来说,给分子加1对分母加k,就可以避免这种因为没见过某种数据就预测其不可能发生的问题。 p ( y = 1 ) = ∑ 1 { y ( i ) = 1 } + 1 m + k p(y=1)=\frac{\sum1\{y^{(i)}=1\}+1}{m+k} p(y=1)=m+k1{y(i)=1}+1

对于伯努利分布来说 ϕ i ∣ y = 1 = ∑ 1 { x ( i ) = 1 , y ( i ) = 1 } + 1 ∑ 1 { y ( i ) = 1 } + 2 \phi_{i|y=1}=\frac{\sum1\{x^{(i)}=1,y^{(i)}=1\}+1}{\sum1\{y^{(i)}=1\}+2} ϕiy=1=1{y(i)=1}+21{x(i)=1,y(i)=1}+1

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值