机器学习笔记5——朴素贝叶斯算法

在上一讲中,我们了解到了朴素贝叶斯以及laplace平滑。这一小节中,我们将要改进朴素贝叶斯算法。原有的朴素贝叶斯中的特征值 xi 是只取0和1两个值,现在要对朴素贝叶斯进行一般化,以适应于特征值取值范围为 {1,2,...,k} 这种情况。

一般化过程中,对 p(xi|y) 的建模不再是简单的伯努力而是多项式分布。事实上,即使原始的输入特征是连续的值,也可以将它离散化,将它们分为几组离散值,然后再使用朴素贝叶斯算法。

就以最开始的预测房屋价格这个问题举例,如果输入特征 xi 代表房屋面积,那么就可以将连续的值离散化为如下样式:


因此,如果房屋面积为890平方英尺,我们可以将对应的特征值 xi 设为3。之后就可以使用朴素贝叶斯算法。当连续的特征值并没有用多元正态分布进行良好的建模时,就可以通过对特征离散化然后使用朴素贝叶斯算法,这种方法也可以得到好的分类器结果。

针对文本分类的事件模型

上一节讲述了生成学习算法,下面将结束对这一算法的讨论并且介绍一种针对文本分类的模型。前面讲到的朴素贝叶斯算法在很多分类的问题上有良好的表现,那么对于文本分类问题,有一个与其相关的模型的表现效果会更好。

在文本分类的特定语境下,朴素贝叶斯被称作多变量伯努力事件模型(换个称呼而已)。在这一模型中,我们假设电子邮件的生成方式:无论是垃圾邮件发送者还是非垃圾邮件发送者向你发送下一封邮件,这封邮件都是随机决定的(根据类先验概率 p(y) )。其次,邮件的发送者决定邮件中是否包含某个单词 i ,且每个单词出现在邮件中的概率是独立的。根据概率p(xi=1|y)=ϕi|y得到,一封邮件最终的概率为 p(y)ni=1p(xi|y)

此处我们提出一个不同的模型,被称作多项式事件模型。为了描述这一模型,我们会用不同的符号来代表邮件的一些特征。 xi 代表邮件中的第 i 个单词。因此,xi是一个整数且取值范围为 {1,...,|V|} ,此处的 |V| 代表了字典的长度。一封包含 n 个单词的邮件可以用长度为n的向量 (x1,x2,...,xn) 表示;此处的 n 针对不同的邮件有不同的值。举个例子,如果一封邮件以“A NIPS …,”开头,那么x1=1(字典中的第一个单词是“a”), x2=35000 (如果“nips”在字典中处于第35000个位置)。

在多项式事件模型中,我们假设一封邮件的生成方式是通过一个随机的过程,垃圾邮件还是非垃圾邮件一开始是随机确定好了的(取决于 p(y) )。然后,邮件中的第一个单词 x1 从多项式分布中选取生成,第二个单词 x2 与第一个单词相互独立,但都从多项式分布中选取,接下来的 x3 x4 的选取也是如此,直到所有的 n 个单词都生成成功。因此,一封邮件整体的概率为p(y)ni=1p(xi|y)。这个等式与之前讲的多变量伯努力事件模型得到的概率更是相似,但是公式的含义是完全不一样的。尤其是 xi|y 现在是多项式,而不是伯努力分布。

在我们的心模型中参数 ϕy=p(y) p(xj=k|y=1) ϕi|y=0=p(xj=k|y=0) 。我们之前假设了 p(xj|y) 对所有的 j 值的概率相同(邮件中生成的单词无论位置如何,都不影响后续的概率计算)。

如果给出如下训练集{(x(i),y(i));i=1,...,m},其中 x(i)=(x(i)1,x(i)2,...,x(i)ni) (其中, ni 是在第 i 个训练样本中的单词总数),关于参数的似然估计的等式如下:


分别对参数进行最大似然估计,等式分别如下:


当估计参数ϕk|y=0 ϕk|y=1 时,如果我们使用Laplace平滑方法,那么会在等式的分子上+1,分母上+ |V| ,然后更改后的等式如下所示:


尽管朴素贝叶斯算法不一定是最好的分类算法,但它的效果经常出乎意料的好。而且执行起来也非常的简单好操作,不得不说是一个非常好的可以尝试使用的算法。

支持向量机

这一小节我们开始讲支持向量机(SVM)学习算法。很多人认为支持向量机是最好的“现有的“监督学习算法,实际上它也确实是最好的。为了更好的理解SVM,我们需要先讨论关于间隔的概念以及将数据大间距分离的理念。然后,我们会继续讨论间隔分类器的优化问题,这会引出另一话题——拉格朗日对偶性。我们同样会讨论到关键点,通过为SVM提供一种方式使得在高维度的特征空间(比如无线维度)中仍有良好的表现。最后,我们会以SMO算法结束,这一算法为SVM提供了一种有效的实现方法。

1.间隔

这一小节中会给出关于间隔以及对预测结果的”信心“的想法。这些想法会在第三小节中形式化。

在逻辑回归中,对概率 p(y=1|x;θ) 进行建模得到 hθ(x)=g(θTx) 。如果有 hθ(x)0.5 ,就有预测结果为1,也可以这样说,当且仅当 θTx0 时,预测的结果就是1。

假设有这样一组值为整数的训练样本 (y=1) θTx 值越大,假设 hθ(x)=p(y=1|x;w,b) 的值也越大,因此预测的结果为1的”信心“也越大。所以我们也可以这样理解,如果 θTx0 ,就认为预测结果为1非常靠谱。同样的,如果 θTx0 ,我们认为逻辑回归的预测值为0是非常值得相信的。

假设给定一组数据集,如果存在 θ 值使得 θTx(i)0 等式成立且总有结论 y(i)=1 θTx(i)0 等式成立且总有结论 y(i)=0 ,那么这一组训练数据可以得到很好的匹配,因为对所有的训练样本进行分类都很有理论依据。后续会对这一观点进行格式化,并且期间用到了函数间隔的概念。

接下来看这样的一幅图,图中“X”代表正向的训练样本,“O”代表负向的训练样本,同样存在着决策边界(这条直线来自等式 θTx=0 ,也可以叫做分离超平面),还有三个点A,B,C。


点A与决策边界的距离很远,如果想对在点A处的 y 值进行预测,从图中看上去预测y=1应该很靠谱。相反,点C与决策边界很近,尽管这一点落在 y=1 的一侧,但稍微改动决策边界,预测结果就很可能变成 y=0 。因此,预测点C得到的结果要比预测点A更靠谱。点B介于两者之间。总之,如果一个点离超平面越远,预测的结果值越可靠。

再次假设给定一组数据集,如果想要找到合适的决策边界使得所有训练样本的预测值都可靠且正确。后续我们会将这一理念形式化,并且会用到几何间隔这一理念。

2.符号

为了更容易理解SVM,我们现在需要介绍关于分类的一个新符号。

接下来就以二分类问题的线性分类器举例,输入特征 x ,对应值y。与之前的定义有所不同,此时 y 的取值范围为y{1,1},而且,参数也不再是向量 θ ,而是使用参数 w,b ,然后分类器就用如下公式表示:


此处,如果 z0 ,那么 g(z)=1 ,其他情况,则有 g(z)=1 。关于参数的定义,我们不再让 x0=1 成为输入特征向量中新的维度,而是用参数 b 代替θ0 ,参数 w 代替[θ1...θn]T。从上述的众多定义可以知道,分类器的预测结果除了1就是-1。

3.函数间隔与几何间隔

这一小节主要讲对函数间隔以及几何间隔符号的形式化。给定一个训练样本 (x(i),y(i)) ,定义以 (w,b) 为参数,训练样本 i 函数间隔


如果y(i)=1,那么想让函数间隔的值变大,就需要使 wTx+b 的值为正数且值较大;相反的,如果 y(i)=1 ,想让函数间隔的值变大,就需要使 wTx+b 的值为负数且值较大。而且,如果 y(i)(wTx+b)>0 ,那么我们对这个训练样本的预测就是正确的。因此,函数间隔大,就代表预测的结果正确且可靠。

对于上述的线性分类器,存在一个问题影响预测的可靠性。给定函数 g ,如果用参数2w,2b代替 w,b ,得到 g(wTx+b)=g(2wTx+2b) ,当然这完全不会改变 hw,b(x) 。因此函数 g hw,b(x)的值只取决于 wTx+b 的符号而不考虑它的数量级。然而,将 (w,b) 替换为 (2w,2b) 也会导致函数间隔与2相乘。因此,可以对参数项 w,b 进行改动,使得即使函数间隔扩大无数倍也不会造成任何实际性的影响。直观的(???),可以利用归一化条件比如说 ||w||2=1 。我们可以用 (w/||w||2,b/||w||2) 代替参数 w,b
给定一组训练集 S={(x(i),y(i));i=1,...,m} ,我们都可以定义一个以 (w,b) 为参数的函数间隔,是每一个训练样本的函数间隔的最小值之和。可以用如下形式表示:


接下来我们讨论一下几何间隔


图中显示了决策边界以及向量 w 向量w与超平面互相垂直。在A处的点代表了某一训练样本的输入特征 x(i) ,对应着 y(i)=1 。该点距离决策边界的距离为 γ(i) ,以线段AB表示。

我们如何得到 γ(i) 的值呢?
w/||w|| 代表了与向量 w 相同方向的单位长度的向量。因为点A处代表x(i),因此点B可以用 x(i)γ(i)×w/||w|| 代表,但是这一点依赖于决策边界。所有在决策边界上的点都满足等式 wTx+b=0 ,因此



将等式更一般化,我们定义以 w,b 为参数,针对每个训练样 (x(i),y(i)) 的几何间隔如下


如果 ||w||=1 ,那么函数间隔与几何间隔相等——这两种间隔之间存在这样的联系。而且,调整参数对几何间隔不会产生影响。举个例子,如果用 2w,2b 代替 w,b ,几何间隔不会发生改变。因为这一特性,当尝试着对训练数据匹配参数 w,b ,我们可以随意调整参数 w 的比例,也不会造成实质性的改变。举个例子,设定||w||=1,或者 |w1|=5 ,或者 |w1+b|+|w2|=2 ,或者任意对参数 w,b 的调节。

最后,给定一组训练集 S={(x(i),y(i));i=1,...,m} ,同样可以针对训练集定义一个以 (w,b) 为参数的几何间隔,是所有训练样本的几何间隔的最小值之和。等式如下:


你可能感兴趣的:(机器学习,机器学习,支持向量机)