机器学习---第七讲支持向量机
来源:互联网 发布:sql表字段设置默认值 编辑:程序博客网 时间:2024/06/10 00:31
【1.支持向量机SVM】
1)回忆逻辑回归
2)构建新的代价函数
3)构建支持向量机
替换成cost1(z)和cost0(z)
删去常量m,不会影响最小值
逻辑回归:A+λB
设置不同的λ值,达到最小化J的效果(λ大,给B很大权重)
支持向量机:CA+B(C小,给B很大权重)
4)假设函数
支持向量机会直接预测假设函数为1还是0
【2.大间距分类器 Large Margin Classifier】
1)代价函数
2)C的取值
C的取值应该在分类是否犯错和margin的大小上做一个平衡。e.g如下图所示,我们可以把绿线、粉线、蓝线或者黑线中的任意一条线当做decision boundary,但是哪一条最好呢?
绿色、粉色、蓝色这三类boundary离数据非常近,我们再加进去几个数据点,很有可能这个boundary就不能很好的进行分类了。
黑色的decision boundary距离两个类都相对较远,我们希望获得的就是这样的一个decision boundary。
margin:黑色的决策界 和训练样本之间有更大的最短距离。
[小结]
对于一个数据集x,margin就是这个数据及所有点的margin中离hyperplane最近的距离,SVM的目的就是找到最大margin的hyperplane。
C越大,就越不能容忍误分类,哪怕margin变得很小也在所不惜;C越小,就越看重margin是否大,哪怕分错数据也无所谓。
【3.核函数Kernel】
1)非线性决策边界:x的幂次项
构造多项式特征变量:通过加入高阶项,可以得到更多特征变量
2)非线性决策边界:核函数
通过计算输入原始向量与landmark之间的相似度来计算核值f
高斯核函数:
特征变量f1:X与第一个标记点的远近程度
x和l越相似,f越接近于1;
x与l相差越远,f越接近于0;
3)引入核函数
引入核函数后,几何上来说更直观的表示是否应该归为该类。
- 通过训练数据集呢,我们得到了一组θ值(θ0,θ1,θ2,θ3)=(-0.5,1,1,0)以及三个点(l1,l2,l3)
- 对于每个test数据集中的点,首先计算它到(l1,l2,l3)各自的相似度:核函数的值(f1,f2,f3),然后带入多项式θ0f0+θ1f1+…+θnfn计算,当该式>=0时,预测结果为类内点(正样本,y=1);else预测为负样本,y=0。
红色:训练样本接近l(1),所以f1≈1,而f2≈0,f3≈0
靠近l(1)、l(2)的都被判为1;远离的都被判为0
4)landmark的选取和θ的求解
选择m个训练数据,并取这m个训练数据为m个landmark(l)点(不考虑证样本还是负样本)
5)Kernels的SVM过程
- 在SVM的训练中,将Gaussian Kernel带入cost function,通过最小化该函数可得到参数θ,并根据该参数θ进行预测:若θTf >=1,predict y = 1;else predict y = 0;
- 与之前讲过的cost function的区别在于用kernel f 代替了x。
6)代价函数中的C和σ2
由于C=1/λ,所以
C大,λ小,overfit,产生low bias,high variance
C小,λ大,underfit,产生high bias,low variance
对于方差σ2,和正态分布中的定义一样,
σ2大,x-f 图像较为扁平;underfit,产生high bias,low variance
σ2小,x-f 图像较为窄尖; overfit,产生low bias,high variance
过拟合即只有一小部分范围内的x享有较大f,或者说x的覆盖面太窄了,所以应当增大σ2。
7)SVM的使用
要进行SVM学习,有两类:
l 一种是No kernel(linear kernel),hθ(x)=g(θ0x0+θ1x1+…+θnxn),predicty=1 if θTx >= 0;
l 另一种是使用kernel f(比如Gaussian Kernel),hθ(x)=g(θ0f0+θ1f1+…+θnfn),这里需要选择方差参数σ2
【算法的选择】
n表示feature个数,m表示training example个数。
①logistic regression/linear kernel的SVM
特征数相对于训练集较大,如n=10000,m=10~1000
原因:1.线性函数就可以工作得不错;2.没有过多的数据拟合复杂的非线性函数
②Gaussian Kernel的SVM
n小,m不大不小,如n=1~1000,m=10~10000
③增加更多的feature+ logisticregression/linear kernel的SVM
n很小,m很大,如n=1~1000,m>50000
原因:1.模型简单即可解决;2.如果还用Gaussian kernel会导致很慢
神经网络可以解决以上任何问题,但是速度是一个很大的问题。
- 机器学习---第七讲支持向量机
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第8讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- Stanford机器学习---第八讲. 支持向量机SVM
- 【机器学习】支持向量机(SVM)浅讲
- Stanford机器学习---第八讲. 支持向量机SVM
- Vulkan规范:第九章 9.7
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。错误写法以及正确写法。
- ES6解构赋值
- codeforces Educational Codeforces Round 32 E. Maximum Subsequence
- 关于缓存
- 机器学习---第七讲支持向量机
- 定时器 cron 参数示例
- 23种设计模式
- 编译器 代码对齐(VC6.0、eclipse、codeblocks)
- 171120之内部类
- SSH和SSM两个框架的浅显的区别(一)
- SVN的学习之路六(冲突解决)
- js将json自动转html表格实例
- JavaScript HTML DOM 元素(节点)