[W7]支持向量机SVM

SVM支持向量机

支持向量机是一种监督学习算法,有时比现有算法更加简洁高效。
回顾一下逻辑回归的代价函数

%e9%80%bb%e8%be%91%e5%9b%9e%e5%bd%92%e4%bb%a3%e4%bb%b7%e5%87%bd%e6%95%b0%e5%b1%95%e5%bc%80
注意展开后的第一项
%e5%b1%95%e5%bc%80%e5%90%8e%e7%ac%ac%e4%b8%80%e9%a1%b9
当 θTx远远大于1的时候,此项接近于0
当 θTx远远小于1的时候,我们可以用一条直线来替代sigmoid曲线,最终图形如下
%e4%bc%98%e5%8c%96%e7%ac%ac%e4%b8%80%e9%a1%b9
对于第二项,我们的标尺是-1
小于等于-1的时候是0,大于等于-1的时候是一条直线,如下图
%e4%bc%98%e5%8c%96%e7%ac%ac%e4%ba%8c%e9%a1%b9

KernelsI

Kernels 允许我们在SVM上创建复杂的,非线性的算法
给出一个x,可以通过计算其与地标l1,l2,l3的相似度来选取是否增加为新的特征域
例如,高斯kernel如下

%e9%ab%98%e6%96%afkernel
当x与l接近时,fi ≈ 1
当与l远离时,fi ≈ 0

Kernels II

有了高斯Kernels,我们就知道了kernels算法,那么我们的优化目标就可以用下面公式来表达了

kernels%e4%bc%98%e5%8c%96%e7%9b%ae%e6%a0%87

Kernels与高斯Kernel

如果直接使用svm,那么我们就说使用了线性Kernel,除了线性Kernel,我们还可以使用高斯Kernel,同样见上面的博客。

高斯Kernel的意义

使用高斯Kernel可以扩增我们的特征数量,选取几个参照点,计算每一项对其的高斯数值,就可以达到扩展特征的目的,使我们的训练更准确。

选择SVM的参数

选择C(C=1/λ)
1.C很大,我们有高方差,低偏差
2.C很小,我们有高偏差,低方差
选择σ^2
1.很大的情况,fi变量非常平滑,导致高偏差低方差
2.很小的时候,fi变得不那么平滑,导致高方差低偏差

使用SVM

现在已经有很多现成的库来实现SVM了,比如 ‘liblinear’ 和’libsvm’,当我们使用的时候我们需要做一些选择
1.选择C
2.选择kernel方法
3.无kernel——会产生标准的线性分辨算法
4.高斯kernel需要选择σ^2
5.在n很小m很大的时候做选择

逻辑回归vsSVM

如果n很大,使用逻辑回归
如果n很小m很大,使用逻辑回归
如果n很小m适中,使用高斯Kernel的SVM

u3coding

A software developer

Leave a Comment

Your email address will not be published. Required fields are marked *

*