斯坦福机器学习笔记六
支持向量机
与逻辑回归和神经网络相比,支持向量机(SVM)在学习复杂的非线性方程时会提供一种更为清晰、更为强大的方式。
1、支持向量机的代价函数
从逻辑回归的代价函数来推导支持向量机的代价函数,已知逻辑回归的代价函数如下:
J( θ )=−1m∑mi=1[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
由于参数 1/m 不影响代价函数大小的比较,这里只看 Cost 函数:
Cost =
−(y logh θ (x)+(1−y)log(1−h θ (x))) =
−y log11+e− θ TX−(1−y)log(1−11+e− θ TX)
当y=1时,这时需要
当y=0时,这时需要
图中的黑线是逻辑回归 Cost 函数的曲线,在此基础上修改曲线得到支持向量机的 Cost 函数。
如左图所示,使用两条直线来近似黑线,两条直线的拐点是z=1这一点,标记为
因此我们得到支持向量机的代价函数:
minθC∑mi=1[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+12∑nj=1θ2j
这里的参数 C 没有明确的定义,可以把它考虑成 1⁄λ ,它和 1⁄λ 扮演相同的角色。因此,它的选择也和 1⁄λ 类似。当 C 值过大时,会导致过拟合的问题,使支持向量机达不到更好的效果。当 C 选值比较合适时,它可以忽略掉一些异常点的影响 得到更好的决策界。甚至当数据不是线性可分的时候,支持向量机也可以给出好的结果。
和逻辑回归的输出概率不同,当最小化代价函数得到参数θ 时,支持向量机是使用θ 来直接预测y的值是1还是0。当θ^T X 大于等于0时,假设函数会预测y=1。
支持向量机也被称为大间距分类器,为了获得更大的间距,这里使用假设函数预测 y 等于 1 还是 0 的决策边界不再是
这是 Cost 函数的图像,我们可以直观的看到,当 z≥1 时,
因此这里改变假设函数为:
这样,最后的到的决策边界会有大一点的间距,会比较有趣。
2、核函数
为了选取更好的更合适的特征向量,引入了核函数,这里采用的是高斯核函数。新的特征向量为:
f1=similarity(x,l(1))=e(−∥x−l(1)∥22σ2)
其中
如果训练样本与标记点的距离近似为0,新的特征
如果训练样本与标记点的距离比较远,新的特征
上式中的
由上图可以看到,当
这里给出了使用核函数构造新的特征向量后的假设函数 和代价函数:
minθC∑mi=1[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+12∑n=mj=1θ2j
如果我们使用高斯核函数,那么在使用之前必须要进行归一化。
支持向量机也可以不使用核函数,不使用核函数又称为线性核函数。除了高斯核函数之外,也可以使用别的核函数,例如:多项式核函数、字符串核函数等,这些核函数需要满足Mercer’s定理,才能被支持向量机的优化软件正确处理。
如何选择是使用逻辑回归、高斯核函数的支持向量机还是线性核函数的支持向量机呢?
- 当训练集的特征数 n 远远大于训练样本数 m 时,训练集的数据不够支持我们训练一个复杂的非线性模型,应该选用逻辑回归模型或者线性核函数的支持向量机。
- 如果特征数 n 较小,训练样本数 m 大小适中,则使用高斯核函数的支持向量机。
- 如果特征数 n 较小,训练样本数 m 较大,应该增加更多的特征,然后使用逻辑回归或者线性核函数的支持向量机。
神经网络在以上的三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因是它的代价函数是凸函数,不存在局部最小值。