关于参数C的设置
来源:11-4 scikit-learn中的SVM

儒将肚甫
2019-12-23
波波老师您好,不好意思又打扰您了。继续请教您几个问题
首先理解是否正确:上面式子中,x(i)是某一个支持向量、WT是权重参数、b是偏置、y(i)是标签参数。
如果每个训练样本提取了13个特征向量,那x(i)就是13维的,WT就是13维的,y(i)就是13维的(13个要么是-1,要么是1的数字),b是一个数字。对么~?
我的问题是:
- 怎么从一大堆训练样本中找到边界的那个支持向量?也就是,如果我们要确定一根直线的方程 y=kx+b,我们带入的 (x,y)的值必须是支持向量的才有意义对吧,那怎么确定哪个是支持向量(得先定位找到它,才能使用它的数据来定分类超平面啊)?
- 如果我在使用SVC函数的时候,把C设置成了0或者很小的值,也就是硬间隔了(假设我以为我的数据是完全线性可分的),但是我的两类数据实际是线性不可分的!!!(也就是这时候,理论上我是求不出这么一个分类超平面的模型参数的)这时候会发生什么?会报错么?
- 每个支持向量x(i)(对于我做的,是一个13维的向量)会对应一个
对吧,那这个值是怎么确定的?也就是,我最后要求的模型参数,是WT,b 和
这三个对么?
- 如果我这个分类超平面找到了,我用一个测试的数据(一个新的13维向量,在训练集之外的数据)带入到式子中和求出的模型参数一起运算,最终会得到一个“1”或者“-1”,这样就可以实现分类了对吧??可以这样理解么~?
- 最后,我感觉我们平时做SVM的机器学习,我们自己可做的事情好像并不多。我们无非就是,决定从原始的训练样本中提取哪些特征向量、决定决策的严酷度(也就是设置C)??
期待您的回复,谢谢啦!
1回答
-
首先,y(i) 不是 13 维的,是 1 维的。每一个 y(i) 只是一个数字。
1
支持向量不是找到的,而是求出来的。你贴的这页 ppt 是一个最优化问题,这个最优化问题对应了一个解。如你的问题三所说,包含w,b 和 ζ。实际最后的求解结果,我们并不关注支撑向量是谁,而是关注决策平面是谁,即 w 和 b 是谁。
具体这个最优化问题如何求解,背后的数学比较复杂,远远超过这个课程的范畴了。课程中简单提及了两句,主要在 11-2。也可以参考这两个问答:
https://coding.imooc.com/learn/questiondetail/96581.html
https://coding.imooc.com/learn/questiondetail/40275.html
2
如果 C 是很小的值,肯定有解;
如果 C 为 0,可能没有解(线性不可分的情况),这就好比二次方程可能在实数范围里没有解。所以 sklearn 的接口设计,C 不能为 0。
3
对。但是由于我们只对决策边界感兴趣,最终结果我们只取 w 和 b。可以理解成 ζ 只是一个中间的计算结果。
4
对。
5
其实,当我们使用任何框架进行机器学习的时候,做的事情都不多,主要是调参。因为框架本身已经帮助我们把算法封装好了。
因此,当机器学习的基本算法掌握以后,机器学习的一个核心任务,是特征工程。可以参考这里:https://coding.imooc.com/learn/questiondetail/40722.html
继续加油!:)
112019-12-24
相似问题
回答 1
回答 1