斯坦福机器学习笔记六

来源:互联网 发布:数据分析师证书初级 编辑:程序博客网 时间:2024/05/17 01:30

支持向量机

与逻辑回归和神经网络相比,支持向量机(SVM)在学习复杂的非线性方程时会提供一种更为清晰、更为强大的方式。

1、支持向量机的代价函数

从逻辑回归的代价函数来推导支持向量机的代价函数,已知逻辑回归的代价函数如下:

J( θ )=1mmi=1[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

由于参数 1/m 不影响代价函数大小的比较,这里只看 Cost 函数:

Cost = (  logh θ (x)+(1y)log(1h θ (x)))

=  log11+e θ TX(1y)log(111+e θ TX)

当y=1时,这时需要  θ TX0 ,Cost 函数中的第二项为 0,Cost=   log11+e θ TX

当y=0时,这时需要  θ TX0,Cost 函数中的第一项为 0,Cost=   log(111+e θ TX)   

z= θ TX 和 Cost 函数的曲线如下:

这里写图片描述

图中的黑线是逻辑回归 Cost 函数的曲线,在此基础上修改曲线得到支持向量机的 Cost 函数。

如左图所示,使用两条直线来近似黑线,两条直线的拐点是z=1这一点,标记为 Cost1(z);右图也是使用两条直线来近似黑线,两条直线的拐点是z=-1这一点,标记为 Cost0(z),由此得到粉线是支持向量机的 Cost 函数的曲线。可以看出粉色的线与黑色的线非常类似,却更简洁,所以它可以做和逻辑回归中类似的事情,也能在计算上有很大的优势。不需要考虑粉色线函数表达形式,这里只是讲解它近似的思想。

因此我们得到支持向量机的代价函数:

minθCmi=1[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12nj=1θ2j

这里的参数 C 没有明确的定义,可以把它考虑成 1⁄λ ,它和 1⁄λ 扮演相同的角色。因此,它的选择也和 1⁄λ 类似。当 C 值过大时,会导致过拟合的问题,使支持向量机达不到更好的效果。当 C 选值比较合适时,它可以忽略掉一些异常点的影响 得到更好的决策界。甚至当数据不是线性可分的时候,支持向量机也可以给出好的结果。

和逻辑回归的输出概率不同,当最小化代价函数得到参数θ 时,支持向量机是使用θ 来直接预测y的值是1还是0。当θ^T X 大于等于0时,假设函数会预测y=1。

这里写图片描述

支持向量机也被称为大间距分类器,为了获得更大的间距,这里使用假设函数预测 y 等于 1 还是 0 的决策边界不再是  θ TX=0,而是进行了进一步的优化。

这里写图片描述

这是 Cost 函数的图像,我们可以直观的看到,当 z≥1 时,Cost1(z)=0;当z≤-1 时,Cost0(z)=0

因此这里改变假设函数为:

这里写图片描述

这样,最后的到的决策边界会有大一点的间距,会比较有趣。

2、核函数

为了选取更好的更合适的特征向量,引入了核函数,这里采用的是高斯核函数。新的特征向量为:

f1=similarity(x,l(1))=e(xl(1)22σ2)

其中 xl(1)2=nj=1(xjl(1)j)2,为训练样本 X 中的所有特征与 l 之间的距离和。l 是标记点,这里直接将所有的训练样本选为标记点。

这里写图片描述

如果训练样本与标记点的距离近似为0,新的特征 f=e0=1
如果训练样本与标记点的距离比较远,新的特征 f=e=0

上式中的  σ 2 的值决定了随着x的改变 f 值改变的速率。

这里写图片描述

由上图可以看到,当  σ 2 较大时,等高线的圆会变得比较发散,f值的改变速率会变慢,导致高方差、过拟合。当  σ 2 较小时,等高线的圆会变得比较密集,会导致高偏差、欠拟合。

这里给出了使用核函数构造新的特征向量后的假设函数 和代价函数:

这里写图片描述
minθCmi=1[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+12n=mj=1θ2j

如果我们使用高斯核函数,那么在使用之前必须要进行归一化。

支持向量机也可以不使用核函数,不使用核函数又称为线性核函数。除了高斯核函数之外,也可以使用别的核函数,例如:多项式核函数、字符串核函数等,这些核函数需要满足Mercer’s定理,才能被支持向量机的优化软件正确处理。

如何选择是使用逻辑回归、高斯核函数的支持向量机还是线性核函数的支持向量机呢?

  • 当训练集的特征数 n 远远大于训练样本数 m 时,训练集的数据不够支持我们训练一个复杂的非线性模型,应该选用逻辑回归模型或者线性核函数的支持向量机。
  • 如果特征数 n 较小,训练样本数 m 大小适中,则使用高斯核函数的支持向量机。
  • 如果特征数 n 较小,训练样本数 m 较大,应该增加更多的特征,然后使用逻辑回归或者线性核函数的支持向量机。

神经网络在以上的三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因是它的代价函数是凸函数,不存在局部最小值。

2 0