斯坦福机器学习公开课--整理笔记(…

时间:2021-02-10 14:16:23
本节课内容是:朴素贝叶斯的更多模型、神经网络入门、支持向量机

一、朴素贝叶斯
在上一课中提到,对于一个新样本,由贝叶斯方法得到的模型可以做出如下推断
斯坦福机器学习公开课--整理笔记(…
而贝叶斯的最终目的,就是在P(y=1|x)和 P(y=0|x)两者中,选值大的一方作为label就行
而在本节课的开头,先介绍了此方法的两种变化
变化一:
在上式中Xi的取值只有0和1两种,那么让Xi取多个值,即Xi∈{1,2,…,k},则上式中会发生如下变化:p(x|y) = ∏ p(xi|y),此时p(xi|y)变成多项式分布,而不是伯努利分布。
变化二:
将邮件的表示改一下,改成一个(xi1, xi2, ......, xini),这个的意思表示:第i封邮件,一共有ni个词,其中xij,表示这个第i封邮件中,第j个词对应的数字,数字是一个索引,指向词典中的xij个词,比如词典一共50000个词,那么xi20=300则表示邮件中第20个词是词典里面的第300个词。
此时生成模型的联合概率p(xy)为:(p(y|x)=p(xy)/p(x),因此我们主要是求的p(xy),p(x)可由之前内容得到)
斯坦福机器学习公开课--整理笔记(…
其中有多个参数,求得极大似然结果如下:

斯坦福机器学习公开课--整理笔记(…
如第一个Φk|y=1,分子表示,所有 垃圾邮件中,词k出现的次数,分母表示,所有垃圾邮件的词数总和。因此整个公式表示,表示在训练集中,如果一封邮件是垃圾邮件,词k出现的概率。
类似的,对参数进行拉普拉斯平滑,则有:
斯坦福机器学习公开课--整理笔记(…
V是词典的总词数。可以看到,这种方法并不关心词k出现在哪个位置,仅仅是关心它出现的次数。一般来说,这种方法比上面的未变化的贝叶斯方法要好,具体原因有待探究,实验表现更优秀。

另外,在讲完这一部分的Q&A中,提到了极大似然估计的方法, 简单来说就是列出似然性公式,然后找到使这个公式最大化的值即可。

二、神经网络
在前面的章节中,主要讲的是线性分类,以逻辑回归为例,不管是用梯度下降还是牛顿方法,目的都是找到一条直线,进行例如“值小于0.5预测0,大于0.5预测1”这种类型的划分。而非线性分类,就是当数据不能被一条直线分开,需要一种算法,学习非线性的分界线。

讲到这里,Andrew好像又发现自己漏讲了一个知识点,又回顾了一下:
根据广义线性模型(GLM)的知识,对于一个样本的输出值y值,仅有0,1两项,那么你可以假设它服从于伯努利分布,然后根据广义线性模型的一个固定流程,就可以得出该样本的模型——那就是逻辑回归模型。由此得到一个推论:如果x|y=1 ~ ExpFamily(η1),x|y=0 ~ ExpFamily (η0)  那么p(y=1|x)是logistic函数。
由于朴素贝叶斯也是满足这样的模型,即它也属于指数函数族,因此它得到的也是逻辑回归模型,即线性模型。

而神经网络,就是非线性模型的一个体现 。一个神经网络由多个单元组成
以之前提到的 sigmoid函数为例,假设输入特征为x0~x3,那么对应的单元即是以此为输入,然后输出为hθ(x),此函数即为一个sigmoid函数,如下图
斯坦福机器学习公开课--整理笔记(…
多个这样的sigmoid函数拼在一起,即为一个神经网络
斯坦福机器学习公开课--整理笔记(…
我们 得到的最终hθ(x),就是我们需要的非线性分界线
此模型中的参数为:
斯坦福机器学习公开课--整理笔记(…
接下来只需使用梯度下降的方法,使之前提到的损失函数J(θ)最小,即可优化这些参数。实际上,在神经网路中,梯度下降有另一个专门的称呼——反向传播。

三、支持向量机(SVM)
这里虽然标题是SVM,但Andrew实际讲的是另一种。SVM是一种非线性分类器,但这里先讲一种应用了SVM思想的线性分类器,之后的课程中再慢慢拓展到SVM

在开始新内容之前,Andrew先修改了一下自己用的符号,之前在讨论logistic回归时,使用的很多符号并不能用在支持向量机上面,正好这里对比一下两者:
斯坦福机器学习公开课--整理笔记(…
另外,之前在使用式:hθ(x)=g(θTx)时,假设x0=1且x为n+1维向量
现在改为:hw.b(x)=g(wTx+b),其中b相当于是之前的θ0,w相当于原来的θ向量除去θ0之后的值。因此新版的w,x均是n维向量,不像logistic回归里面,都是n+1维。
把b单独拿出来的目的 ,就是为了引出支持向量机

首先,从直观的角度感受一下我们一直强调的分类效果:如果θTx>>0,相当确定的预测y=1;如果θTx<<0,相当确定的预测y=0。也就是说,从可信度考虑,我们不仅需要分类器能分类,而且对分类结果的可信度我们也要求越高越好。因此有了函数间隔等概念。

一个超平面(w,b)和某个特定训练样本(x(i),y(i))对应的函数间隔定义为:
斯坦福机器学习公开课--整理笔记(…
这个就相当于是一个能体现距离的量,如果y(i)=1,为了获得较大的函数间隔,需要令wTx(i)+b >> 0;这个概念符合我们上面提到的对于分类直观感受
那么一个超平面(w,b)和整个训练集的函数间隔定义为:
斯坦福机器学习公开课--整理笔记(…
即这个样本集中,离这个超平面最近的 那一个样本对应函数间隔。自然地,对于同一个训练集,不同的超平面有不同的函数间隔。那么我们的分类,可以直观理解为,我们要找到一个超平面,使得样本离它的距离最远。

值得注意的是,我们可以对参数w和b同时放大/缩小任意相同的倍数,虽然不会影响分类的结果,但是函数间距的值却会发生变化,因此一般会把w、b正规化,比如令||w||=1等。

类似的,几何距离定义为:一个训练样本对应的点到由超平面确定的分隔线的距离。然后经过一系列推导,对于一个样本(xi,yi),它相对于(w,b)的几何间隔为:
斯坦福机器学习公开课--整理笔记(…

而对于一个训练集,它的几何间隔就可以类似地定义为,所有样本中间隔最小的那个几何间隔。另外有结论:如果||w||=1,函数间隔等于几何间隔。更一般的,几何间隔等于函数间隔除以||w||。

至此,我们就可以把之前直观感受上的最大间隔分类器,写成书面化语言了: 斯坦福机器学习公开课--整理笔记(…
找到一组(w,b),即一个超平面,使得对应的几何间隔最大,因为在上式中||w||=1,所以也相当于函数间隔最大。