支持向量机二-机器学习(machine learning)笔记(Andrew Ng)

支持向量机

核函数一

为了使用SVM构造复杂的非线性分类器,我们使用核(kernel)这个概念。
我们先从一个非线性分类案例入手:
这里写图片描述
我们使用f1,f2,f3…来表示特征x1,x2,x1x2…,得到theta0+theta1f1+theta2f2+theta3x3+…
这里写图片描述
l是x对应的标记。在坐标轴上取三个x,对应三个l,构造特征f1,f2,f3,我们将相似度函数similarity()成为核函数,在这里,我们使用了高斯核函数。
这里写图片描述
我们来看看这个核函数做了什么:当x与标记l很接近的时候,构造出的特征f约等于1;当x与标记l差的很多的时候,构造出的特征f约等于0。
这些特征衡量的是x与l之间的相似度。
这里写图片描述
举个例子,当l为[3;5]的时候,从核函数的图像可以看出,当x1=3,x2=5时,核函数的值达到顶峰,相似度为1。
我们改变高斯核函数中σ^2的值,σ^2越小,核函数改变的速度越快,越大越慢。
这里写图片描述
最后我们来看一看核函数和标记点是如何对给定x值预测y值起作用的。
在图中,我们先取红色的点x,然后发现它离l1近,l2,l3远,那么算的 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 = 0.5 ,大于等于0,预测y=1。
再取蓝色的点,算 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 = 0.5 ,小于0,预测y=0。
最后我们根据参数theta的值,得到图中坐标轴上图中的决策边界。在红色圈内,预测y=1,在圈外预测y=0。这样我们就可以通过标记点和核函数来得到新的特征,从而训练出一个非线性的分类器。

核函数二

怎么选取标记点

直接将训练样本作为标记点
这里写图片描述
这样我们可以得到m个标记点(m为样本点数量),然后我们可以得到m个特征:
这里写图片描述
对于每一个训练样本,我们可以得到m个特征组成该样本的特征向量。可以知道,该向量中,有某一维度等于1,即图中红色笔记。
接下来我们得到了一系列特征f,要完成假设: θ f >= 0 的条件下,y预测为1,那么我们需要知道参数theta,这就是我们要训练的内容。

如何选择参数C

C(=1/λ)
选择较大的C,意味着选择较小的λ,即不使用正则化,此时我们会得到高方差低偏差(过拟合)。
选择较小的C,意味着选择较大的λ,此时我们会得到高偏差低方差的模型(欠拟合)。
σ^2
选择较大的σ^2,特征f变化的很缓慢,高偏差低方差。
这里写图片描述
选择较小的σ^2,特征f变化的很剧烈,高方差低偏差。
这里写图片描述

使用SVM

推荐使用SVM软件包去实现(liblinear、libsvm…)训练参数θ。
需要详细说明的是:

  • 参数C的选择
  • 核函数的选择

如:线性核函数(即不使用核函数)或者高斯核函数
特征数n,样本数m
当n很大,m很小时,为了避免过拟合,我们会使用线性核函数。
当n很小,m很大时,我们会使用高斯核函数来拟合复杂的非线性决策边界。

高斯核函数
这里写图片描述

在使用高斯核函数之前需要进行特征的缩放,比如房价预测,x1是房子大小1000feet^2,x2是房间个数,1-5个房间。那么我们在计算的时候,x1-f1会很大,而x2-f2会很小。所以需要特征的缩放。

其他核函数的选择
并不是所有的相似函数都是有效的核函数,必须满足默塞尔定理。
其他的核函数是非常非常少被用到的。
选择:
多项式核函数:

  • ( x T l + c o n s t a n t ) d e g r e e
  • x和l都是严格的非负数

字符串核函数

  • 输入是文本字符串

卡方核函数
直方相交核函数

多类别分类
这里写图片描述
很多SVM包已经内置了多类别分类函数。
另外,我们可以使用一对多方法。即训练K个SVM,每个SVM将第i个类别从其他类别中分辨出来。
逻辑回归vs支持向量机

  • 当n相对于m很大的时候,使用逻辑回归(或者线性核函数的SVM)。
  • 如果n很小,m适中,使用带高斯核函数的SVM。
  • 如果n很小,m很大,带高斯核函数的SVM运行非常慢,我们会尝试创造或加入更多的特征,然后使用逻辑回归或者带线性核函数的SVM

神经网络比上面这些设置的效果要好,但是训练速度慢。

猜你喜欢

转载自blog.csdn.net/sinat_25721683/article/details/81700931
今日推荐