Stanford大学机器学习公开课(六):朴素贝叶斯多项式模型、神经网络、SVM初步
(一)朴素贝叶斯多项式事件模型
在上篇笔记中,那个最基本的NB模型被称为多元伯努利事件模型(Multivariate Bernoulli Event Model,以下简称 NB-MBEM)。该模型有多种扩展,一种是在上一篇笔记中已经提到的每个分量的多值化,即将p(xi|y)由伯努利分布扩展到多项式分布;还有一种在上一篇笔记中也已经提到,即将连续变量值离散化。本文将要介绍一种与多元伯努利事件模型有较大区别的NB模型,即多项式事件模型(Multinomial Event Model,一下简称NB-MBEM)。
首先 ,NB-MEM改变了特征向量的表示方法。在 NB-MBEM中,特征向量的每个分量代表词典中该index上的词语是否在文本中出现过,其取值范围为{0,1},特征向量的长度为词典的大小。而在 NB-MEM中,特征向量中的每个分量的值是文本中处于该分量的位置的词语在词典中的索引,其取值范围是{1,2,...,|V|},|V|是词典的大小,特征向量的长度为相应样例文本中词语的数目。
形式化表示为:
m个训练样本表示为:{x(i),y(i);i=1,...,m}
x(i)=(x1(i),x2(i),...,xni(i))
表示第i个样本中,共有ni个词,每个词在字典的编号xj(i)。
举例来说,在NB-MBEM中,一篇文档的特征向量可能如下所示:
其在NB-MEM中的向量表示则如下所示:
在NB-MEM中,假设文本的生成过程如下:
1、确定文本的类别,比如是否为垃圾文本、是财经类还是教育类;
2、遍历文本的各个位置,以相同的多项式分布生成各个词语,生成词语时相互独立。
由上面的生成过程可知,NB-MEM假设文本类别服从多项式分布或伯努利分布,而词典中所有的词语服从多项式分布。生成过程还可如下解释,即现在类别所服从的多项式分布中选取类别,然后遍历整个文本,在词语所服从的多项式分布中选取词语,放在文本中相应的位置上。
于是,NB-MEM的参数如下所示:
与以前的式子相比,分母多了个ni,分子由0/1变成了k。
对于式子
分子的意思是对所有标签为1的邮件求和,即只考虑垃圾邮件,之后对垃圾邮件中的所有词求和,它加起来应该是词k出现在垃圾邮件中的次数。
换句话说,分子实际上就是对训练集合中的所有垃圾邮件中词k出现的次数进行求和。
分母的含义是对训练样本集合进行求和,如果其中的一个样本是垃圾邮件(y=1),那么就把它的长度加起来,所以分母的含义是训练集合中所有垃圾邮件的总长。
所以这个比值的含义就是在所有垃圾邮件中,词k所占的比例。
Y=1是垃圾邮件。
那么,
那么
注意这个公式与朴素贝叶斯的不同在于这里针对整体样本求的φk|y=1
,而朴素贝叶斯里面针对每个特征求的φxj=1|y=1
,而且这里的特征值维度是参差不齐的。
(二)神经网络
之前介绍的无论是感知器算法还是逻辑回归还是刚才所介绍的朴素贝叶斯模型(朴素贝叶斯算法是前置假设是多项式分布的多项式模型,所以也属于逻辑回归模型),其最终结果反映在数据上都是一条直线或一个超平面,但如果数据并不是线性可分的话,这些模型的性能会变差。针对该问题,涌现出很多对非线性可分数据进行分类的算法,神经网络是其中最早出现的一种。
对于逻辑回归模型,可以将其表示为下图所示:
其中,xi是输入的特征向量的各个分量,sigmoid是计算单元,output是函数输出。sigmoid计算单元有参数θ,其函数形式为:
其中,a1,a2,a3是中间单元的输出。可以看到,该图所示的神经网络有四个参数,分别为四个sigmoid单元的参数。这些参数之间的关系如下式所述:
学习这些参数需要用到成本函数比如:
这是第一次视频里就提到的二次成本函数(quadratic cost function),可以使用梯度下降方法最小化成本函数来求得参数,在神经网络中的梯度下降算法有一个专门的名称叫做反向传播算法。
这是第一次视频里就提到的二次成本函数(quadratic cost function),可以使用梯度下降方法最小化成本函数来求得参数,在神经网络中的梯度下降算法有一个专门的名称叫做反向传播算法。
在上面那个神经网络的样例图中,与输入直接相连的称为隐藏层(hidden
layer),与输出直接项链的称为输出层(output
layer)。神经网络算法的一大特点就在于不知道隐藏层计算的东西的意义,另一个特点在于神经网络有比较多的局部最优值,可以通过多次随机设定初始值然后运行梯度下降算法获得最优值。
接着,展示了两个神经网络实现的应用的视频。一个是Hammerton数字识别应用,对手写的数字进行识别,该应用的作者是Yann
LeCun,他以字符识别与卷积神经网络而著名。另外一个应用则是NETtalk神经网络,使用神经网络来阅读文本,作者是Terry
J.Sejnowski。
(三)支持向量机之函数间隔与几何间隔
要理解支持向量机(support Vector
Machine),必须先了解函数间隔与几何间隔。一下假设数据集是线性可分的。
首先变换一下符号,类别y可取值由{0,1}变为{-1,1},假设函数g为:
而目标函数h也由:
变为:
其中,公式15中x,θ εRn+1
,且x0=1。而在公式16中,x,ω εRn
,b取代了公式15中x0的作用。
由公式16,我们得知,ω,b可以唯一的确定一个超平面。
一个点(x(i),y(i))到由ω,b决定的超平面的函数间隔是:
超平面与整个训练集合的函数间隔是:
公式17还有一个性质,即对于正确分类的数据点,函数间隔不小于0。
函数间隔的问题在于只要成倍增大ω,b,就能使函数间隔变大。为了解决这个问题,就有了几何间隔的定义,几何间隔定义如下:
即在||ω||=1条件下函数间隔最小值。
それでも私の大好きな人