1. 预知识:
线性模型:在样本空间中寻找一个超平面, 将不同类别的样本分开.
-Q:将训练样本分开的超平面可能有很多, 哪一个好呢?
-A:应选择”正中间”, 容忍性好, 鲁棒性高, 泛化能力最强.
2. Hard-margin SVM
****输入空间:****欧几里德空间或离散集(Euclidean space or discrete set)
****输出空间:****欧几里得空间或希尔伯特空间(Euclidean space or Hilbert space)内积空间
****假设:****输入空间的实例可以映射到特征空间中的特征向量。(一对一)。学习是在特征空间中进行的
训练数据集:
****目标:****找到一个超平面 wx + b = 0 (w,b为参数)
****思路:****间隔最大(maximum margin)
线性支持向量机SVM:
3. 函数间隔 VS 几何间隔
确信度(confidence):|w x + b|
****正确性(correctness):****w x + b与y符号相同时,表示预测正确,相反w x + b与y符号相反时,表示预测错误,则正确的可以写成 y ( w x + b )
因此结合确信度和正确性 可以得到:y ( w x + b )
(1)函数间隔
给定训练数据集T,平面(w,b)
目前可以得到这样的结果。
但是,如果将w变为2w,b变成2b,超平面不会发生变化,但是函数间隔变化了
因此:我们选择使用||w|| ( w的二范数)
从而引出几何间隔
(2)几何间隔
4. 最大间隔化
****基本思想:****求解能正确划分训练数据集,且geometric margin 最大的分离超平面(唯一)
间隔最大化又称硬间隔最大化(Maximum Hard-margin)
直观解释****:****对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也即,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应对未知的新实例有很好的分类预测能力。
****如何求该超平面?****几何间隔最大化(最优化)
(每个样本的几何间隔至少是r)
我们令 r=1
(实质是一个凸二次规划)
5. 硬间隔SVM的算法描述
输入:训练集T
输出:最大间隔超平面w* x + b
得到最大间隔超平面和决策函数
6. 支持向量
****支持向量:****离超平面最近的点,即满足不等式取等的时候
长带的宽度:H1和H2的距离叫间隔margin
H1和H2称作间隔的边界
H1和H2上的训练样本点叫支持向量
中间线上的叫支持向量机
在决定分离超平面时只有支持向量起作用;其他的点不影响求解
若移动支持向量将改变所求的解;但若在间隔边界以外移动其他实例点,甚至去掉这些点,则解释不好改变的。
由于支持向量在确定分离超平面中起决定性作用,故这种分类模型称支持向量机。
支持向量的个数一般很少,所有支持向量机由很少的“重要的”训练样本确定。
7. 硬间隔SVM例题
由于当训练集比较大时,手动解法很复杂,因此我们引入对偶问题
8. 对偶问题
原始问题—>对偶问题
****目的:****方便解决问题和方便引入核函数(非线性分类变为线性分类)
如何进行对偶理论不再此讲解
原始问题:
对于每一个约束,引入一个拉格朗日参数a,因此问题转化为:
对于求解对偶问题,我们调换min和max,因此得到了原始问题的对偶问题:
求解对偶问题
求解对偶问题,就是要解w,b,a
先求拉格朗日函数的最小问题----求导
求出对w和b的导数之后,可以解出w以及关系
将求出来的两项带入拉格朗日函数中,
因此问题进一步得到转化
(2)接下来求a,求最大
由于max中有一个负号,我们将其取出,就变成了min最小化问题,如下
至此我们就完成了原问题到对偶问题的转化
可以看出,原问题是对w,b求解,对偶问题是对a求解,求出a就可以算出w,但是b怎末求呢?给出如下定理,可以直接使用:
并且w* 和b*都是唯一的
因此,求出了w*和b*就可以求出分离超平面和决策函数
此处可以看出,超平面和决策函数都是由内积决定的(后面会讲)
9. 线性支持向量机的算法(根据对偶问题得到的)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
![](https://img-blog.csdnimg.cn/img_convert/88137d1d6fc5955eded6d94a717e375b.jpeg)
最后
分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可获取
❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-Tp7WSBzt-1713346815517)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
![](https://img-blog.csdnimg.cn/img_convert/88137d1d6fc5955eded6d94a717e375b.jpeg)
最后
分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可获取
❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。