线性可分
线性可分时,代价函数为:
当时,约束(s.t.):
当时,约束(s.t.):
当C设定的非常大,前后两项都除以C(缩放公式,不会改变最小化的结果!),以上表述可以转化为:
事实上这就转化为一个带约束的二次规划问题。二次规划问题的推导,课程中未有涉及。主要讲解了会产生大间隔的原因。讲解原理,讲解使用。忽略推导,不过二次规划问题如果要说估计也超过了这个课程设定的目标了。好吧,然后后面告知应该去使用现成的SVM软件模块来实现。(吴大师已经很用心的把这个课程整理成像我这样的白痴也能听懂,实属不易啊)
课程列了两个C(或称)的设定情况。如果C设定的恰巧没有那么大,将能对异常数据不敏感并实现最大分割(通常我们期望的模型是如此的)。如果C设定的过大,那么SVM将对异常数据十分敏感,而判定边界将最大切分所有样本。
【the mathematics behind large margin classification(optional)】
这一章主要从代价函数的几何意义出发推导,为何最小化代价函数能实现最大分隔。相对比较简单,就不摘录了。主要用到向量相乘的几何表达。
线性不可分
线性不可分问题,svm引入高斯kernel(还有其他常见的核函数,不过高斯是最最常使用的)。优化函数如下:
note:使用高斯核函数前,需要进行特征值归一化,保证不同维度的特征高斯得分的一致性。
将每个正负样本都设定成landmark,用高斯函数围绕这个landmark画个圈圈(圈圈的大小,高度是训练出来的)。现在来了个一个新的数据X,要预测,让每个小高斯函数评估到x的距离进行打分。合计分数就是x的分类。真的感觉好像KNN,而且是全体样本对x的距离评分的KNN。
【svm对线性不可分采用升维操作,是这样的么,我有点不敢相信这么简单?我的印象中不是在一个曲面上切入一个hyperplane么?后期有比较核对再来补充评说。】
可选的核函数还有:Polynomial Kernel;String kernel,chi-square kernel,histogram intersection kernel,….
使用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个分类器,预测时选择得分最高得那个预测。不再赘述了。
【观后感:吴大师课程通俗易懂,而且对应用中的注意事项解说的更到位。(偏实用)】