本周主要学习SVM
在SVM中对cost function作如下等效变化(即将log函数替换成折线)
Cost的下标分别表示y所对应的值。
上面将普通逻辑回归中的log函数变形后得到的曲线如下:
区别:
If y=1, we want θTx≥1 (not just ≥0)
If y=0, we want θTx≤−1 (not just ≤0)
和引入正则项同理,当C取非常大的值时,我们希望如下蓝色圈住的部分接近于0,即使得A=0
但是要如何使A=0呢?参考上面的折线图,我们可以知道要使得A=0,则需要满足:
此时即等价于
在推导公式之前需要回顾一下向量内积的概念。
已知SVM的优化目标是:
为了方便理解,令 θ0=0 ,特征数n=2,则有
其中,||θ||为向量θ的长度或称为θ的范数。
如果将 θTx(i) 看成是经过原点(因为θ0=0) 的两个向量相乘,如下图:
则 θTx(i) 等价于向量 x(i) 在向量θ上的投影 p(i) 与θ的范数||θ||相乘,即
故SVM优化目标变为
直观的理解 p(i)||θ|| 的意义。
假设θ0=0,下面展示了一个小间距决策边界的例子。(绿色为决策边界)
首先解释一下为什么θ向量会垂直于决策边界。
因为θ的斜率是 θ2θ1 ,决策边界表达式为 θTx=0 ,即 θ1x1+θ2x2=0 ,斜率为 θ2θ1 ,所以θ向量会垂直于决策边界。
看第一个例子(x1)
假如决策边界最开始如下图
将 x1 投影到θ向量,得到 p1 ,可以看到 p1 值很小。SVM的优化目标是 min12||θ||2 ,但是还需要满足 |p(i)||θ|||≥1 ,而又因为 p1 值很小,所以||θ||值就需要较大才行,显然这与优化目标背道而驰,所以还有优化的空间。
x2 同理,不再赘述。
此时 p1 值明显增大,||θ||变小,达到优化目的。
之前课程中已经提到过通过使用多项式来解决非线性拟合问题,如下图所示
同时定义核函数(核函数很多种,这里使用的是高斯核函数Gaussion Kernels)为
这里的核函数 fi 可以理解成相似度,即点x与标记点l如果很相近则预判为1,反之为0.
由高斯核函数的表达式也可以很好的理解:
另外高斯核函数中有一个参数 δ2 ,它对于结果的影响如下面几个图所示
可知 δ2 越小,图像越窄,下降的速度也就越快。
首先还是假设选取三个landmarks,并且分类的方法是:
假设θ向量已知为 θ0=−0.5,θ1=1,θ2=1,θ3=0
下面看第一个点的分类情况:
此时 x≈l(1),故f1=1 ,同理因为远离其余两个landmarks,所以 f2=0,f3=0 。
所以带入计算公式有
故该点y=1
继续看下图新添的两个x坐标点
和如上同样的分析后可以知道,绿色的点有y=1,青色的点是y=0
按照上面的计算方法,在计算了大量点后可以得到如下的边界
注意原来cost函数中的x变成了f。
另外上式中右边的正则项可以变成 ∑nj=1θ2j=θTθ ,还可以继续变形
∑nj=1θ2j=θTθ=θTMθ ,其中矩阵M取决于你所使用的核函数。
需要注意,上述那些SVM的计算技巧应用到别的算法,如逻辑回归中,会变得非常慢,所以一般不将核函数以及标记点等方法用在逻辑回归中。
1.C
前面提到过的 C=1λ ,C对bias和variance的影响如下:
C太大,相当于λ太小,会产生高方差,低偏差;
C太小,相当于λ太大,会产生高偏差,低方差。
2. δ2
δ2 大,则特征 fi 变化较缓慢,可能会产生高偏差,低方差;
δ2 小,则特征 fi 变化不平滑,可能会产生高方差,低偏差。
SVM和逻辑回归的选择问题
什么时候该用逻辑回归?什么时候该用SVM?
①如果n相对于m来说很大,则应该使用逻辑回归或者线性核函数(无核)的SVM。
m较小时,使用线性分类器效果就挺不错了,并且也没有足够的数据去拟合出复杂的非线性分类器。
②如果n很小,m中等大小,则应该使用高斯核函数SVM。
③如果n很小,m很大,则高斯核函数的SVM运行会很慢。这时候应该创建更多的特征变量,然后再使用逻辑回归或者线性核函数(无核)的SVM。
对于以上这些情况,神经网络很可能做得很好,但是训练会比较慢。实际上SVM的优化问题是一种凸优化问题,好的SVM优化软件包总是能找到全局最小值或者是接近全局最小的值。