Coursera机器学习week7 笔记

Support Vector Machines(支持向量机)

Optimization objective

与逻辑回归和神经网络相比,支持向量机,或者简称 SVM。在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

这是逻辑回归里的,右边是S型激励函数,我们用z表示θTx

但y = 1 和 y = 0 时的函数图如下:

在逻辑回归中使用SVM如下:

然后最小化这个目标函数,得到 SVM 学习到的参数 C。

Large Margin Intuition

人们有时将支持向量机看作是大间距分类器。在这一部分,我将介绍其中的含义,这有助于我们直观理解 SVM 模型的假设是什么样的。

这是我的支持向量机模型的代价函数,在左边这里我画出了关于 z 的代价函数 cost1(z),此函数用于正样本,而在右边这里我画出了关于 z 的代价函数 cost0(z),横轴表示 z,现在让我们考虑一下,最小化这些代价函数的必要条件是什么。

支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求θTx>0,我们需要的是比 0 值大很多,比如大于等于 1,我也想这个比 0 小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子。

如果 C 非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。因此,让我们尝试在代价项的第一项为 0 的情形下理解该优化问题。比如我们可以
把 C 设置成了非常大的常数,这将给我们一些关于支持向量机模型的直观感受。

这将遵从以下的约束:θTx(i) >= 1,如果 y (i)是等于 1 的,θTx(i)<=-1,如果样本 i是一个负样本,这样当你求解这个优化问题的时候,当你最小化这个关于变量θ的函数的时候,你会得到一个非常有趣的决策边界。

存在一条直线把正负样本分开。当然有多条不同的直线,可以把正样本和负样本完全分开。

比如,这就是一个决策边界可以把正样本和负样本分开。但是多多少少这个看起来并不是非常自然是么?
中间黑线有更大的距离,这个距离叫做间距 (margin),这样就可以最优的边界了。

当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。

因此支持向量机有时被称为大间距分类器,而这其实是求解上一页幻灯片上优化问题的结果。

回顾 C=1/λ,因此:
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差。
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差。

The mathematics behind large margin classi?cation (optional)

下图是关于內积的标示图:

根据毕达哥拉斯定理:,这是向量μ的长度,它是一个实数。

接下来将会使用这些关于向量内积的性质试图来理解支持向量机中的目标函数。

这就是我们先前给出的支持向量机模型中的目标函数。为了讲解方便,我做一点简化,仅仅是为了让目标函数更容易被分析。

我接下来忽略掉截距,令θ0 = 0,这样更容易画示意图。我将特征数 n 置为 2,因此我们仅有两个特征 x1和 x2,现在 我们来看一下目标函数,支持向量机的优化目标函数。当我
们仅有两个特征,即 n=2 时,这个式子可以写作:

我们只有两个参数θ1 和θ2。你可能注意到括号里面的这一项是向量θ的范数,或者说是向量θ的长度。我的意思是如果我们将向量θ写出来,那么我刚刚画红线的这一项就是向量θ的长度或范数。这里我们用的是之前学过的向量范数的定义事实上这就等于向量θ的长度。

因此在我们接下来的推导中去掉θ0 不会有影响这意味着我们的目标函数是等于½||θ||2。因此支持向量机做的全部事情就是极小化参数向量θ范数的平方或者说长度的平方。

Kernels I

可以用高级数的多项式模型来解决无法用直线进行分隔的分类问题:

给定一个训练实例x,我们利用x的各个特征与我们预先选定的地标(landmarks) l(1),l(2),l(3)的近似程度来选取新的特征 f1,f2,f3

其中

使用内核的规则如下:

这里是一个高斯核函数(Gaussian Kernel)。 注:这个函数与正态分布没什么实际上的关系,只是看上去像而已。

例如:

Kernels II

我们通常是根据训练集的数量选择地标的数量,即如果训练集中有 m 个实例,则我们选取 m 个地标,并且令: l(1)=x(1),l(2)=x(2),...,l(m)=x(m)。这样做的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即:

下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设为:

给定 x,计算新特征 f,当 θTf>=0 时,预测 y=1,否则反之。 相应地修改代价函数为:

在具体实施过程中,我们还需要对最后的归一化项进行些微调整,在计算时,我们用 θTMθ 代替 θTθ,其中 M 是根据我们选择的核函数而不同的一个矩阵。这样做的原因是为了简化计算。

另外,支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel), 当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,可以采用这种不带核函数的支持向量机。

下面是支持向量机的两个参数 C 和 σ 的影响:
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差
σ 较大时,导致高方差
σ 较小时,导致高偏差

Using an SVM

在高斯核函数之外我们还有其他一些选择,如:
多项式核函数(Polynomial Kernel)
字符串核函数(String kernel)
卡方核函数( chi-square kernel)
直方图交集核函数(histogram intersection kernel)

多类分类问题 :

假设我们利用之前介绍的一对多方法来解决一个多类分类问题。如果一共有 k 个类,则我们需要 k 个模型,以及 k 个参数向量 θ。我们同样也可以训练 k 个支持向量机来解决多类
分类问题。但是大多数支持向量机软件包都有内置的多类分类功能,我们只要直接使用即可。

尽管你不去写你自己的 SVM(支持向量机)的优化软件,但是你也需要做几件事:
1、是提出参数 C 的选择。我们在之前的视频中讨论过误差/方差在这方面的性质。

2、你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:我们选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性
核的 SVM(支持向量机),这就意味这他使用了不带有核函数的 SVM(支持向量机)。

下面是一些普遍使用的准则:

n 为特征数,m 为训练样本数。

(1)如果相较于 m 而言,n 要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果 n 较小,而且 m 大小中等,例如 n 在 1-1000 之间,而 m 在 10-10000 之间,使用高斯核函数的支持向量机。
(3)如果 n 较小,而 m 较大,例如 n 在 1-1000 之间,而 m 大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向
量机。

原文地址:https://www.cnblogs.com/xingkongyihao/p/8436875.html

时间: 2024-11-09 07:42:38

Coursera机器学习week7 笔记的相关文章

Coursera机器学习week10 笔记

Large scale machine learning Learning with large datasets 如果我们有一个低方差的模型,增加数据集的规模可以帮助你获得更好的结果.我们应该怎样应对一个有 100 万条记录的训练集? 以线性回归模型为例,每一次梯度下降迭代,我们都需要计算训练集的误差的平方和,如果我们的学习算法需要有 20 次迭代,这便已经是非常大的计算代价. 首先应该做的事是去检查一个这么大规模的训练集是否真的必要,也许我们只用 1000 个训练集也能获得较好的效果,我们可

Coursera机器学习week11 笔记

Application example:Photo OCR Problem description and pipeline 图像文字识别应用所作的事是,从一张给定的图片中识别文字.这比从一份扫描文档中识别文字要复杂的多. 为了完成这样的工作,需要采取如下步骤: 1. 文字侦测(Text detection)——将图片上的文字与其他环境对象分离开来 2. 字符切分(Character segmentation)——将文字分割成一个个单一的字符 3. 字符分类(Character classifi

coursera机器学习技法笔记(15)——Matrix Factorization

15 Matrix Factorization 15.1 Linear Network Hypothesis 将类别数据转换成向量数据,然后以每个样本的向量数据作为输入,评分数据作为输出,利用3层神经网络进行特征萃取. 由于向量特征数据大量稀疏,因此中间层的tanh函数并不会起什么作用,可以直接换成线性模型,即Linear Network. 将第1/2层网络的权重设为VT,第2/3层网络权重设为W,则该模型可以表述为: h(x)=WTVx 如果x是一个只有1个元素为1的向量,则该式可以写成: h

coursera机器学习技法笔记(13-14)——deep learning &amp; RBFNetwork

13 Deep Learning 13.1 Deep Neural Network 将神经网络的层数增大,即称为深度学习.深度学习一般在输入数据为row data的时候使用,因为这些数据很难人为构造出合适的特征.深度学习一般面临如下挑战: (1)神经网络结构的决定:一般只能通过人的主观领域知识来决定神经网络结构,例如图像识别中的convolutional NNet,即认为相邻的像素才有必要连接到下一层的同一神经元. (2)模型复杂度:由于高层神经网络会有很多变量,因此显然会提高模型复杂度.但是一

coursera机器学习技法笔记(12)——Neural Network

12 Neural Network 12.1 Motivation 在神经网络的节点上使用感知机,那我们可以把神经网络看作是通过不同感知机以及常数的线性组合得到一个新的特征,将新的特征加上一个常数再进行线性组合得到结果.其原理和aggregation类似,但是在神经网络中进行了多层级的aggregation. 从生物的角度来说神经网络模拟了人脑神经网络. 12.2 Neural Network Hypothesis 如果神经元节点都用线性回归的话,那么无论怎么组合最终都是个线性回归,模型的能力没

coursera机器学习技法笔记(9-11)——decision tree &amp; Random forest &amp; GBDT

9 Decision Tree 9.1 Decision Tree Hypothesis 本节主要讲述了决策树的两种解释,一种是决策树是由叶子节点和路径组成的,当选择叶子节点对应的路径时采用对应的叶子节点结果:另一种观点是由分叉的树递归组成,当选择某一分支时将采用分支对应的子树的演算法结果. 决策树的优点在于可解释性强,高效.缺点是理论保证不足,并且算法多样. 9.2 Decision Tree Algoithm 决策树主要有4个关键部分: (1)分支分成几支? (2)该怎么分支? (3)什么时

coursera机器学习技法笔记(7-8)——blending and bagging &amp; Adaptive Boosting

7 Blending and Bagging 7.1 Motivation of Affregation 之前都是通过特征转换达到更好的分类目的,而有另一种思路就是将多个模型的分数线性组合起来以期得到更好的效果.它们的权重应为x的函数,这样能包含投票.取最大等多种情况. 7.2 Uniform Blending 本节从理论上探讨了blend的可行性: G(x)=1T∑Tt=1gt(x) 则: avg((gt?f)2)=avg((gt?G2))+(G?f)2 可以看出,任选一个g_t其误差期望是大

Coursera机器学习week4 笔记

Neural Networks: Representation Non-linear hypotheses 我们之前学到的,无论是线性回归还是逻辑回归都有一个缺点,当特征太多时,计算负荷会非常的大. 如下: 只有x1和x2,但运用多次项进行预测时,我们的方程可以很好的预测.使用非线性的多项式能够帮助我们建立更好的分类模型. 例如我们有很多的特征,100个变量,用这100个特征构建一个非线性的多项式模型,结果将是非常大的特征组合,即使我们只才有两两特征的组合(x1x2+x1x3+x1x4+...+

Coursera机器学习week7 编程作业

gaussianKernel.m sim = exp(-sum((x1-x2).^2)/(sigma.^2*2)); dataset3Params.m steps = [0.01,0.03,0.1,0.3,1,3,10,30]; minError = Inf; minC = Inf; minSigma = Inf; for i = 1:length(steps) for j = 1:length(steps) currC = steps(i); currSigma = steps(j); mod