3. 函数间隔 VS 几何间隔
4. 最大间隔化
5. 硬间隔SVM的算法描述
6. 支持向量
7. 硬间隔SVM例题
8. 对偶问题
9. 线性支持向量机的算法(根据对偶问题得到的)
10. 使用对偶解题例题
支持向量机(Support vector machine)
=====================================
一、概述
SVM是一种小样本学习方法。
少数支持向量决定了最终结果,对异常值不敏感, 这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒性”
SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值
有优秀的泛化能力。
1. 支持向量机(Support vector machine, SVM)解释:
(1)支持向量(support vector):支持或支撑平面上把两类类别划分开来的超平面的向量点。
(2)“机”(机器,machine):“机”实质上是一个算法。在机器学习领域,常把一些算法看做是一个机器,如分类机(当然,也叫做分类器),而支持向量机本身便是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。
2. SVM三宝:
(1)间隔(margin):用于建模
(2)对偶(duality):用于模型求解
(3)核技巧(kernel trick):将非线性问题转化为线性问题
3. SVM的三个重要的算法:
(1)Hard-margin SVM 线性可分的SVM
(2)Soft-margin SVM 线性不可分的SVM
(3)Kernel SVM (Nonlinear SVM) 非线性
二、硬间隔SVM(Linearly separable patterns – Hard-margin SVM)
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上的训练样本点叫支持向量
中间线上的叫支持向量机
在决定分离超平面时只有支持向量起作用;其他的点不影响求解
若移动支持向量将改变所求的解;但若在间隔边界以外移动其他实例点,甚至去掉这些点,则解释不好改变的。
由于支持向量在确定分离超平面中起决定性作用,故这种分类模型称支持向量机。
支持向量的个数一般很少,所有支持向量机由很少的“重要的”训练样本确定。
跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。
也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。
面试准备
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。