机器学习公开课笔记(7):支持向量机

支持向量机(Support Vector Machine, SVM)

考虑logistic回归,对于$y=1$的数据,我们希望其$h_\theta(x) \approx 1$,相应的$\theta^Tx \gg 0$; 对于$y=0$的数据,我们希望$h_\theta(x) \approx 0$,相应的$\theta^Tx \ll 0$。每个数据点的代价为: $$-\left[y\log(h_\theta(x))+(1-y)\log(1-h\theta(x))\right]$$当$y=1$时其代价$cost_1(z)=-\log(\frac{1}{1+e^{-z}})$;当$y=0$时其代价$cost_0(z)=-\log(1-\frac{1}{1+e^{-z}})$,分别如图1左右所示。

图1 当$y=1$和$y=0$单个数据点的代价随$z$的变化

logistic回归的假设为$$\min\limits_\theta \frac{1}{m}\left[\sum\limits_{i=1}^{m}y^{(i)}(-\log(h_\theta(x^{(i)}))) + (1-y^{(i)})(-\log(1-h_\theta(x^{(i)})))\right] + \frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_{j}^2$$通过去掉$\frac{1}{m}$并且将$A+\lambda B$的形式变为$CA+B$的形式,可以得到SVM的假设为$$\min\limits_\theta C\left[\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tx^{(i)}) + (1-y^{(i)})cost_0(\theta^Tx^{(i)})\right] + \frac{1}{2}\sum\limits_{j=1}^{n}\theta_{j}^2$$

最大间隔(Large Margin Intuition)

对于$y=1$的数据,我们希望$\theta^Tx \ge 1$而不仅仅是$\ge 0$; 对于$y=0$的数据,我们希望$h_\theta(x) \leq -1$而不仅仅是$< 0$。当C很大时,由于$CA+B$要取最小值,因此$A\approx 0$,从而SVM最大化间隔问题变为\begin{align*}&\min\limits_\theta\frac{1}{2}\sum\limits_{j=1}^{n}\theta_j^{2}\\ &s.t.\quad\begin{cases}\theta^{T}x^{(i)}\geq 1 \quad y^{(i)}=1\\\theta^{T}x^{(i)}\leq -1 \quad y^{(i)}=0\end{cases}\end{align*}

图2 支持向量机最优超平面和最大Margin(两条虚线之间的距离),支撑向量指的是位于两条虚线上的点(在高维空间中,每个点可以看作是从原点出发的向量,所以这些点也称为向量)

参数C表示对错误的容忍程度,C值越大表示越不能容忍错误分类,容易出现过拟合现象(如图3所示).


图3 参数C对分类的影响,C越大越不能容忍错误分类;反之能够接受少量错误分类.

Kernel

对于低维空间中线性不可分的情况,可以通过增加高阶多项式项将其映射到高维空间,使得在高维空间中通过一个超平面可分(如图4所示)。Kernel解决如何选择合适的高维特征问题,对于任意低维数据点x,定义它与低维空间中预先选定的标记点$l^{(i)}$(landmarks)之间的相似性为$$f_i=similarity(x, l^{(i)})=exp\left(-\frac{||x-l^{(i)}||^2}{2\sigma^2}\right)$$这样当有k个landmarks时,我们将得到k个新的特征$f_i$,这样就将低维空间的点x投射为高维(k维)空间中一个点。如果x距离$l^{(i)}$非常近,即$x\approx l^{(i)}$, 则相似性$f_i\approx 1$; 否则如果x距离$l^{(i)}$非常远,则相似性$f_i\approx 0$。接下来一个问题是如何选择landmarks,一种做法是选择所有的m个样本点作为landmarks,这样对于具有n个特征的数据点$x^{(i)}$,通过计算$f_i$,将得到一个具有m维空间的数据点$f^{(i)}$。


图4 通过kernel函数将低维线性不可分数据投射到高维空间从而使得线性可分.

SVM with kernels

假设(Hypothesis):给定数据点$x$,计算新的特征$f$。当$\theta^Tf \geq 0$时,预测$y=1$;反之,预测$y=0$。

训练(Training):$$\min\limits_\theta C\left[\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tf^{(i)}) + (1-y^{(i)})cost_0(\theta^Tf^{(i)})\right] + \frac{1}{2}\sum\limits_{j=1}^{n}\theta_{j}^2$$

参数C($\approx\frac{1}{\lambda}$)的影响:

  • large C: low bias, high variance
  • small C: high bias, low variance

参数$\sigma^2$的影响:

  • large $\sigma^2$:high bias, low variance ($f_i$ vary more smoothly)
  • small $\sigma^2$:low bias, high variance ($f_i$ vary less smoothly)

支持向量机实践

实际应用中不会要求自己实现SVM,更多是调用线程的库例如liblinear,libsvm等来求解。需要指定参数C和kernel函数。

Linear kernel: 不指定kernel,即“No kernel”,也称为“linear kernel”(用于特征n较大,同时example数m较小时).

Gaussian kernel: $f_i=exp\left(-\frac{||x-l^{(i)}||^2}{2\sigma^2}\right)$,其中$l^{(i)}=x^{(i)}$,需要指定参数$\sigma^2$(用于n较小,m较大时)。注意在使用Gaussian kernel之前需要对数据进行feature scaling.

其他常见的kernel包括

  • Polynomal kernel:$k(x, l) = (\alpha x^Tl+c)^{d}$,其中可调节参数包括坡度$\alpha$,常量$c$和多项式度$d$
  • string kernel: 对字符串直接进行变换,不需要将字符串数值化,具体公式见wikipedia:string kernel
  • chi-square kernel:$k(x, y)=1-\sum\limits_{k=1}^{n}\frac{(x_k-y_k)^2}{\frac{1}{2}(x_k+y_k)}$
  • histogram intersection kernel:$k(x, y) = \sum\limits_{k=1}^{n}\min(x_k, y_k)$

多元分类:采用one-vs-all的方法,对于k个分类,需要训练k个svm.

logistic回归和SVM

当n较大时($n\geq m$, n=10000, m = 1000),使用logistic回归或者SVM(with linear kernel)

当n较小,m中等时(n=10-1000, m = 10-100000),使用SVM(with Gaussian kernel)

当n较小, m较大时(n=1-1000, m = 500000),增加新的特征,然后适用logistic回归或者SVM(with linear kernel)

神经网络在各类n, m情况下都工作的很好,缺陷是训练速度比较慢

参考文献

[1] Andrew Ng Coursera 公开课第七周

[2] Kernel Functions for Machine Learning Applications. http://crsouza.com/2010/03/kernel-functions-for-machine-learning-applications/#chisquare

[3] Wikipedia: string kernel. https://en.wikipedia.org/wiki/String_kernel

[4] Hofmann T, Schölkopf B, Smola A J. Kernel methods in machine learning[J]. The annals of statistics, 2008: 1171-1220.

时间: 2024-08-27 20:48:20

机器学习公开课笔记(7):支持向量机的相关文章

Andrew Ng机器学习公开课笔记 -- Mixtures of Gaussians and the EM algorithm

网易公开课,第12,13课 notes,7a, 7b,8 从这章开始,介绍无监督的算法 对于无监督,当然首先想到k means, 最典型也最简单,有需要直接看7a的讲义   Mixtures of Gaussians 如果要理解Mixtures of Gaussians,那先回去复习一下Gaussians Discriminant Analysis,高斯判别分析 首先高斯判别分析是生成算法, 所以不会直接拟合p(y|x), 而是拟合p(x|y)p(y), 即p(x,y) p(y)符合伯努力分布,

Andrew Ng机器学习公开课笔记&ndash;Reinforcement Learning and Control

网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比如下棋或直升机自动驾驶 无法确切知道,下一步怎么样是正确的,因为这是一个连续和序列化的决策,比如直到最终直升机crash或下棋输了,你才知道之前的选择是不好的,但中间那么多步决策,到底是哪部分出了问题,可见这是个比较复杂的问题 强化学习,基本思路就是,既然不知道怎样是正确的,那就随便try,然后根据

Andrew Ng机器学习公开课笔记&ndash;Independent Components Analysis

网易公开课,第15课 notes,11 参考, PCA本质是旋转找到新的基(basis),即坐标轴,并且新的基的维数大大降低 ICA也是找到新的基,但是目的是完全不一样的,而且ICA是不会降维的 对于ICA,最经典的问题,"鸡尾酒会"问题 在鸡尾酒会,上很多人同时在说话,还有背景音乐,如果我们放若干个话筒进行声音采集 是否可以从采集到的数据中,分离出每个人独立的声音 假设有n个不同的人,m个时间采集点,一般会用和人数一样多的话筒,也是n个 is an n-dimensional vec

Andrew Ng机器学习公开课笔记&ndash;Principal Components Analysis (PCA)

网易公开课,第14课 notes,10 之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的 这里介绍的是另外一种降维的方法,Principal Components Analysis (PCA), 比Factor Analysis更为直接,计算也简单些 主成分分析基于, 在现实中,对于高维的数据,其中有很多维都是扰动噪音,或有些维是冗余的,对描述数据特征没有作用 比如我们在描述汽车速度的时候,用不同的单位mph or kph作为两维,其实只需要其中一维即可

Andrew Ng机器学习公开课笔记 -- 学习理论

网易公开课,第9课 notes,http://cs229.stanford.edu/notes/cs229-notes4.pdf 这章要讨论的问题是,如何去评价和选择学习算法 Bias/variance tradeoff 还是用这组图,学习算法追求的是generalization error(对未知数据的预测误差),而不是training error(只是对训练集) 最左边,underfit,我们说这种学习算法有较大的bias Informally, we define the bias of

机器学习公开课笔记(6):应用机器学习的建议

应用机器学习的建议 1. 评估学习算法 在实际中应用学习算法时,如何评估一个学习算法的好坏?进一步地,如果学习的算法的效果不太好,如何改进学习算法?例如,对于一个简单的线性拟合模型,改进算法效果的策略包括: 采用更多的训练实例训练模型 采用更小的特征集合 增加额外的特征 尝试高次项拟合($x_1^2$, $x_2^2$, $x_3^3$, $\ldots$) 增加惩罚项系数$\lambda$ 减小惩罚项系数$\lambda$ 机器学习算法诊断(ML diagnostic)负责发现学习算法中存在的

机器学习公开课笔记(5):神经网络(Neural Network)——学习

这一章可能是Andrew Ng讲得最不清楚的一章,为什么这么说呢?这一章主要讲后向传播(Backpropagration, BP)算法,Ng花了一大半的时间在讲如何计算误差项$\delta$,如何计算$\Delta$的矩阵,以及如何用Matlab去实现后向传播,然而最关键的问题——为什么要这么计算?前面计算的这些量到底代表着什么,Ng基本没有讲解,也没有给出数学的推导的例子.所以这次内容我不打算照着公开课的内容去写,在查阅了许多资料后,我想先从一个简单的神经网络的梯度推导入手,理解后向传播算法的

机器学习公开课笔记(8):k-means聚类和PCA降维

K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis) 管理计算机集群(Organize Computer Clusters) 天文学数据分析(Astronomical Data Analysis) K-Means算法属于非监督式学习的一种,算法的输入是:训练数据集$\{x^{(1)},x^{(2)},\ldots, x^{(m)}\}$(其中$x^

机器学习公开课笔记(4):神经网络(Neural Network)——表示

动机(Motivation) 对于非线性分类问题,如果用多元线性回归进行分类,需要构造许多高次项,导致特征特多学习参数过多,从而复杂度太高. 神经网络(Neural Network) 一个简单的神经网络如下图所示,每一个圆圈表示一个神经元,每个神经元接收上一层神经元的输出作为其输入,同时其输出信号到下一层,其中每一层的第一个神经元称为bias unit,它是额外加入的其值为1,通常用+1表示,下图用虚线画出. 符号说明: $a_i^{(j)}$表示第j层网络的第i个神经元,例如下图$a_1^{(