网易公开课,第5课
notes,http://cs229.stanford.edu/notes/cs229-notes2.pdf算法
学习算法有两种,一种是前面一直看到的,直接对p(y|x; θ)进行建模,好比前面说的线性回归或逻辑回归,这种称为判别学习算法(discriminative learning algorithms) 学习
另一种思路,就是这里要谈的,称为生成学习算法(generative learning algorithms),区别在于不会直接对p(y|x; θ)进行建模,而是对p(x|y) (and p(y))进行建模,而后用bayes定理算出p(y|x)
不像判别方法,给定x就能经过训练的模型算出结果
好比逻辑回归中,经过 优化
而生成学习算法的思路是这样的,因为须要对p(x|y)进行建模,x是连续的,但对于分类问题y是离散的,好比取值0或1
咱们作的是,分别对每种y的状况进行建模,好比判断垃圾邮件,那么分别对垃圾和正常邮件进行建模,获得
p(x|y = 0) models 和 p(x|y = 1) models
而p(y) (called the class priors)每每是比较容易算出的
当来一个新的x时,须要计算每一个y的p(y|x),而且取几率最大的那个y
这里因为只须要比较大小,p(x)对于你们都是同样的,不须要算orm
因此对于任意生成学习算法,关键就是要学习出
p(x|y = 0) models 和 p(x|y = 1) models视频
Gaussian discriminant analysisblog
首先学习的一个生成算法就是GDA,高斯判别分析
不解为什么生成算法要叫判别。。。get
多项高斯分布
对于这个算法,首先要假设p(x|y)符合多项高斯分布(multivariate normal distribution),区别于通常的高斯分布,参数μ是一维的,而多项高斯分布参数是n维的
其中, ,mean vector,是个n维的向量
,covariance matrix,是个n×n的矩阵
关于这个分布,课件里面讲的很详细,还有不少图,参考课件吧
其实只要知道这个分布也是一个bell-shape curve,μ会影响bell的位置(平移)
而covariance matrix会影响bell的高矮,扁圆的形状it
The Gaussian Discriminant Analysis model
继续讲这个模型
前面说了对于生成学习算法,关键就是要找出p(x|y = 0),p(x|y = 1)和p(y)
好理解吗,y取值0或1,必定是伯努利分布,而p(x|y)根据前面假设必定是符合多项高斯分布,因此有
如今问题是要根据训练集,学习出 io
怎么学?最大似然估计function
这里和判别学习算法不一样,
判别学习算法,对p(y|x; θ)进行建模,因此称为conditional似然估计
而生成学习算法,是对于p(x|y)*p(y),即p(x,y)进行建模,因此称为joint似然估计
使用最优化算法计算maximizing ℓ,获得参数以下(计算过程略去)
虽然没有写计算过程,可是获得的这个结果是reasonable的
φ就是y=1的几率,算出的结果就是在训练集中y=1的比例
μ0,μ1,结果是训练集中y=0(或y=1)时x的均值,都很合理
计算出这些参数,咱们就获得p(x|y = 0),p(x|y = 1)和p(y),而后可使用上面的方法就行预测
Discussion: GDA and logistic regression
这里有个颇有趣的结论
We just argued that if p(x|y) is multivariate gaussian (with shared ), then p(y|x) necessarily follows a logistic function. The converse, however, is not true;
当p(x|y)知足multivariate gaussian的时候,p(y|x)必定是logistic function,但反之不成立。
使用视频中的截图,更容易理解
图中,叉表示y=0的点,圈表示y=1的点
因此对于y=0和y=1分别建模,就获得两边的两个bell-shaped的高斯曲线
这时若是要画出p(y=1|x),就获得中间的sigmod曲线
越靠左y=1的几率越小,越靠右y=1的几率越接近1,在中间两个曲线交界的地方,y=1的几率为0.5
很是形象的说明为何p(y|x)会是一个logistic function
更酷的是,这个结论能够推广到任何指数族分布,即任何广义线性模型的分布
那么这里产生的问题就是,咱们为何须要GDA,直接使用逻辑回归不能够吗?
二者区别在于,
GDA比逻辑回归作出更强的假设,由于前面的结论是不可逆的
因此当数据p(x|y)确实或近似符合高斯分布时,GDA更有效,而且须要更少的训练数据就能够达到很好的效果
可是在实际中,其实你很难肯定这点,
这时逻辑回归有更好的鲁棒性,好比若是p(x|y)符合泊松分布,而你误认为符合高斯分布,而使用GDA,那么效果就会不太好
而逻辑回归,对数据作出的假设比较少,只要p(x|y)指数族分布,都会有比较好的效果,固然逻辑回归须要的训练数据也是比较多的
这里其实就是一个balance 模型假设强弱和训练数据量之间的权衡 若是你明确知道符合高斯分布,那么用比较少的训练数据,使用GDA就很好 若是不肯定,就使用逻辑回归,用比较多的训练数据