线性可分

线性可分时,代价函数为:

minθCi=1m[y(i)cost1(θ(T)x(i))+(1y(i))cost0(θ(T)x(i))+12i=1nθj2]

y(i)=1时,约束(s.t.):θ(T)x(i)1
y(i)=0时,约束(s.t.):θ(T)x(i)1
Machine Learning|吴恩达 (7)-SVM(支持向量机)
当C设定的非常大,前后两项都除以C(缩放公式,不会改变最小化的结果!),以上表述可以转化为:
minθ12λθTθ

subjectto:y(i)cost1(θ(T)x(i))1

事实上这就转化为一个带约束的二次规划问题。二次规划问题的推导,课程中未有涉及。主要讲解了会产生大间隔的原因。讲解原理,讲解使用。忽略推导,不过二次规划问题如果要说估计也超过了这个课程设定的目标了。好吧,然后后面告知应该去使用现成的SVM软件模块来实现。(吴大师已经很用心的把这个课程整理成像我这样的白痴也能听懂,实属不易啊)
Machine Learning|吴恩达 (7)-SVM(支持向量机)
课程列了两个C(或称1λ)的设定情况。如果C设定的恰巧没有那么大,将能对异常数据不敏感并实现最大分割(通常我们期望的模型是如此的)。如果C设定的过大,那么SVM将对异常数据十分敏感,而判定边界将最大切分所有样本。
【the mathematics behind large margin classification(optional)】
这一章主要从代价函数的几何意义出发推导,为何最小化代价函数能实现最大分隔。相对比较简单,就不摘录了。主要用到向量相乘的几何表达。
xθ=p||θ||,pxθ

线性不可分

线性不可分问题,svm引入高斯kernel(还有其他常见的核函数,不过高斯是最最常使用的)。优化函数如下:

minθCi=1my(i)cost1(θ(T)f(i))+(1y(i))cost0(θ(T)f(i))+12i=1nθj2

Machine Learning|吴恩达 (7)-SVM(支持向量机)
note:使用高斯核函数前,需要进行特征值归一化,保证不同维度的特征高斯得分的一致性。
将每个正负样本都设定成landmark,用高斯函数围绕这个landmark画个圈圈(圈圈的大小σ,高度μ是训练出来的)。现在来了个一个新的数据X,要预测,让每个小高斯函数评估到x的距离进行打分。合计分数就是x的分类。真的感觉好像KNN,而且是全体样本对x的距离评分的KNN。
【svm对线性不可分采用升维操作,是这样的么,我有点不敢相信这么简单?我的印象中不是在一个曲面上切入一个hyperplane么?后期有比较核对再来补充评说。】
可选的核函数还有:Polynomial Kernel;String kernel,chi-square kernel,histogram intersection kernel,….

使用SVM

Machine Learning|吴恩达 (7)-SVM(支持向量机)
这一章我觉蛮重要的,关于使用。

特征量n 样本量m 使用建议
n>>m(eg. n=10000) (m=10~1000) 使用逻辑回归,或SVM-Linear
n small(eg. n=1~1000) m intermediate(m=10~10000) SVM-Gaussian
n small(eg. n=1~1000) m large(m=50000+) 增加特征量,使用逻辑回归,或SVM-Linear

神经网络可能能适用于以上所有情况,但训练比较慢。【我的感觉是神经网络不适用样本量较小的情况,比如你只有10个样本训练网络,那能请你不要出来开玩笑了好么。】

多分类问题

使用ONE-VS-ALL方法,参考逻辑回归多分类问题。k个分类则训练k个分类器,预测时选择得分最高得那个预测。不再赘述了。
【观后感:吴大师课程通俗易懂,而且对应用中的注意事项解说的更到位。(偏实用)】

相关文章: