机器学习:在SVM中使用核函数来构造复杂的非线性决策边界
用核函数衡量相似度
起初,在逻辑回归中如果我们遇到像下图这样看起来较复杂的非线性边界:
显然,只用线性的
θ
0
+
θ
1
x
1
+
θ
2
x
2
\theta_0+\theta_1x_1+\theta_2x_2
θ0+θ1x1+θ2x2无法划分这两个类别的样本,一种做法是向表达式中添加一些更高次的项,比如
x
1
2
,
x
1
x
2
,
x
1
6
x
2
7
x_1^2,x_1x_2,x_1^6x_2^7
x12,x1x2,x16x27等等,再此基础之上进行逻辑回归。
但是,这样的高次式有无限多可能,我们没法直观地判断出到底是 x 1 2 x_1^2 x12更好还是 x 1 x 2 x_1x_2 x1x2更好,在特征值数目更多的情况下这样的情况会更加严重。我们需要一个更有效的构造特征值的方式。
最终,相似度脱颖而出,成为我们构造特征值的上好选择。相似度描述的是两个向量之间的接近程度,有许多种函数都可以实现这个功能。在这里,我们选用的是高斯函数,定义两个向量
x
⃗
\vec{x}
x和
l
⃗
\vec{l}
l之间的相似度为
f
=
similarity
(
x
⃗
,
l
⃗
)
=
exp
(
−
∣
∣
x
⃗
−
l
⃗
∣
∣
2
2
σ
2
)
f=\text{similarity}(\vec{x},\vec{l})=\exp(-\frac{||\vec{x}-\vec{l}||^2}{2\sigma^2})
f=similarity(x,l)=exp(−2σ2∣∣x−l∣∣2)
这样的函数,我们就称为核函数,核函数的函数值随着周围点距离核(也就是
l
⃗
\vec{l}
l)的距离和参数
σ
\sigma
σ而改变。距离核越远,函数值越小,而
σ
\sigma
σ控制核函数的变化速率,
σ
\sigma
σ越大,核函数的变化越平缓,反之越陡峭。
利用相似度构建回归
我们可以看到,通过核函数,我们就可以构造出一个圆形且从圆心向无穷远处递减的区域。如果我们将多个核函数组合在一起,就可以构造出一个复杂的非线性决策边界。那么,如何选取核函数的核呢?
一个简单的做法就是,把所有样本点都作为核,一个样本的特征值就是它与所有样本点的相似度。具体来讲,我们把一个样本向量
x
i
⃗
\vec{x_i}
xi的特征值向量
f
i
⃗
\vec{f_i}
fi定义为
f
i
⃗
=
[
similarity
(
x
i
⃗
,
x
1
⃗
)
similarity
(
x
i
⃗
,
x
2
⃗
)
⋮
similarity
(
x
i
⃗
,
x
m
⃗
)
]
\vec{f_i}= \left[\begin{matrix} \text{similarity}(\vec{x_i},\vec{x_1})\\ \text{similarity}(\vec{x_i},\vec{x_2})\\ \vdots\\ \text{similarity}(\vec{x_i},\vec{x_m})\\ \end{matrix}\right]
fi=⎣⎢⎢⎢⎡similarity(xi,x1)similarity(xi,x2)⋮similarity(xi,xm)⎦⎥⎥⎥⎤
而我们的假设函数
h
θ
h_\theta
hθ则变为
θ
T
f
\theta^Tf
θTf,即
θ
0
f
0
+
θ
1
f
1
+
⋯
+
θ
m
f
m
\theta_0f_0+\theta_1f_1+\cdots+\theta_mf_m
θ0f0+θ1f1+⋯+θmfm
所以我们需要最小化的代价函数
J
(
θ
)
J(\theta)
J(θ)变为
C
∑
i
=
1
m
[
y
(
i
)
cost
1
(
θ
T
f
(
i
)
)
+
(
1
−
y
(
i
)
)
cost
0
(
θ
T
f
(
i
)
)
]
+
1
2
∑
j
=
1
m
θ
j
2
C\sum_{i=1}^m[y^{(i)}\text{cost}_1(\theta^Tf^{(i)})+(1-y^{(i)})\text{cost}_0(\theta^Tf^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2
Ci=1∑m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+21j=1∑mθj2
看起来,似乎逻辑回归一样可以运用核函数。但根据吴恩达所说,核函数搭配逻辑回归的运算速度很慢,现有的许多优化都是针对SVM+核函数的,这两者搭配在一起才能事半功倍。
关于参数
和别的回归类似,我们可以通过控制参数来调整模型的偏差与方差,
C
C
C的作用在上一篇博客已经讲过了,而核函数参数
σ
\sigma
σ的作用可以很容易的观察出来:当
σ
\sigma
σ较小时,核函数非常陡峭,只允许很小的偏差,所以是个低偏差高方差模型,反之是个高偏差低方差模型。
相关文章
- (《机器学习》完整版系列)第6章 支持向量机SVM——6.2 核函数型支持向量机SVM(方法:与基本型比较来学习)
- (《机器学习》完整版系列)第12章 计算学习理论——12.2 学习算法的能力(多项式成本是可以接受的,而指数成本是不可接受的)
- 深度学习机器学习笔试面试题——优化函数
- 机器学习笔记之变分推断(四)随机梯度变分推断(SGVI)
- 大数据与机器学习:实践方法与行业案例.3.5 本章小结
- 机器视觉与深度神经网络—洗去浮华,一窥珠玑
- 机器学习——英文特征提取,中文特征提取
- 后渗透——利用lcx反弹端口获取内网机器远程桌面
- 吴恩达机器学习笔记 —— 8 正则化
- 《机器学习与数据科学(基于R的统计学习方法)》——1.9 数据集
- 机器学习的火爆背后:探索数据和技术的力量
- 《Scala机器学习》一一第2章 数据管道和建模
- 【毕业设计_课程设计】基于机器视觉的害虫种类及数量检测(源码+论文)
- 【毕业设计_课程设计】基于机器学习的情感分类与分析算法设计与实现(源码+论文)
- 自动驾驶轨迹预测20年发展全面回顾(物理方法/机器学习/深度学习/强化学习)
- 机器学习-异常检测算法(一):Isolation Forest
- 【机器学习实战】——常见函数积累
- 机器学习——常用核函数
- 机器学习——支持向量机SVM之线性模型