机器学习笔记(七)支持向量机

Support vector machine(支持向量机 SVM)

1、推导:

(1)对于逻辑回归,cost函数为:

① 当 y = 1时,即 θTx >> 0时 ,cost = - log(1 / (1 + e-z)) ,图像如下:

用新的代价函数产生新的曲线:cost1(z)

② 当 y = 0时,即 θTx << 0时 ,cost = - log(1 - 1 / (1 + e-z)) ,图像如下:

用新的代价函数产生新的曲线:cost0(z)

 

(2)产生新的目标函数:

 

(3)模型修改:

 

2、Large margin intuition(大间距分类器):

(1)问题简写:min C * A + B

当 C 比较大时,理想的结果会使得左边的求和式子 A 趋近0,使得问题转化为 min B,即:

 

(2)SVM决策边界:

下图的分类问题,有很多种划分方法,但是下面举例的两种分法显然不够科学。

 利用SVM,可以实现最大间距的分类(蓝色线条为决策边界)。

 缺陷:若C特别大,易受到奇异点影响;

 

(3)数学原理:

① Vector inner product(向量內积):

② 简化SVM问题:设置 θ0 = 0(决策边界必须经过原点), n = 2

③ 问题转化:

 

3、Kernels(核函数):

(1)问题背景:

在进行非线性分类时,使用高次项作为特征变量计算量大,需要更好的方法来构造特征变量。

 

(2)相似度:

手动取标记点 l(1),l(2),l(3),度量样本x与标记点之间的相似度:

举例与第一个标记点之间的核函数相似度公式(这里采用了高斯核函数):

如果 x ≈ l(1): f1 ≈ exp(- 0 / 2σ²) = 1;

如果 x is far from l(1) : f1 ≈ exp(- large_number² / 2σ²) ≈ 0;

同理,获得f2,f3

 

(3)高斯核函数的参数σ:

大σ:特征变量 f 较平稳,高偏差,低方差;

小σ:特征变量 f 较陡,低偏差,高方差。

 

(4)问题转化:

y = 1  when  θ0 + θ1f+ θ2f2 + θ3f3 ≥ 0     

y = 0  when  θ0 + θ1f+ θ2f2 + θ3f<0         

 

(5)应用举例:

假设 θ0 = -0.5,θ1 = 1,θ2 = 1,θ3 = 0;

取靠近 l(1)的某一个样本,可以得出 f1 ≈ 1,f2 ≈ 0,f3 ≈ 0. 计算结果得出 0.5 > 0,y = 1.

取靠近 l(2)的某一个样本,可以得出 f1 ≈ 0,f2 ≈ 1,f3 ≈ 0. 计算结果得出 0.5 > 0,y = 1.

取靠近 l(3)的某一个样本,可以得出 f1 ≈ 0,f2 ≈ 0,f3 ≈ 1. 计算结果得出 -0.5 < 0,y = 0.

通过大量样本,可以得出决策边界:靠近 l(1) 和 l(2) 的样本更可能取1,靠近 l(3) 的样本更可能取0.

 

(6)SVM with Kernels:

① 直接把样本点作为标记点,如 l(1) = x(1) ,l(2) = x(2),...,l(m) = x(m)

② 对于训练集 (x(i), y(i)):

f1(i) = similarity(x(i), l(1));

f2(i) = similarity(x(i), l(2));

...

fm(i) = similarity(x(i), l(m));

获得特征变量 f(m+1 维特征向量);

③ 预测:

predict y = 1 if θTf ≥ 0;

predict y = 0 if θTf < 0;

④ 训练:(注:求和变量 n 实际等于 m )

⑤ 参数 C 的选择:

C太大(即 lambda 太小):低偏差,高方差;

C太小(即 lambda 太大):高偏差,低方差;

 

4、SVM的使用:

(1)使用SVM软件包求解 θ :liblinear、libsvm .

(2)自主操作:

① 设置参数C.

② 选择核函数计算特征量(没有核函数即为线性核函数).

选择的核函数必须满足Mercer's Theorem(默塞尔定理).

除了线性核函数和高斯核函数,还有满足默塞尔定理的核函数有:

多项式核函数: k(x, l) = (xTl + constant)degree 其中constant、degree是参数; 

字符串核函数、卡房核函数、直方图交叉核函数等.

③ 对于大小差距很大的特征量,需要进行归一化处理.

 

5、逻辑回归 vs 支持向量机:

当 n 对与训练集大小来说较大时(例如,n = 10000,m = 10~1000),使用逻辑回归或者线性核函数SVM;

当 n 较小,而 m 大小适中时(例如,n = 1~1000,m = 10~10000),使用高斯核函数SVM;

当 n 较小,m较大时(例如,n = 1~1000,m = 50000+),新增更多特征,再使用逻辑回归或者线性核函数SVM.

 

posted @ 2019-10-25 14:58  橙同学的学习笔记  阅读(737)  评论(0编辑  收藏  举报