1.SVM和KNN的对比分析
knn,就是物以类聚,人以群分。
SVM算法是类似与地域划分,身处哪个种类的地域就将预测的样本的归为哪一类。
1.
knn没有训练过程,他的基本原理就是找到训练数据集里面离需要预测的样本点距离最近的k个值(距离可以使用比如欧式距离,k的值需要自己调参),然后把这k个点的label做个投票,选出一个label做为预测。对于KNN,没有训练过程。只是将训练数据与训练数据进行距离度量来实现分类。
svm需要超平面wx+b来分割数据集(此处以线性可分为例),因此会有一个模型训练过程来找到w和b的值。训练完成之后就可以拿去预测了,根据函数y=wx+b的值来确定样本点x的label,不需要再考虑训练集。对于SVM,是先在训练集上训练一个模型,然后用这个模型直接对测试集进行分类。
2. 根据第一条,两者效率差别极大。
knn没有训练过程,但是预测过程需要挨个计算每个训练样本和测试样本的距离,当训练集和测试集很大时,预测效率感人。
svm有一个训练过程,训练完直接得到超平面函数,根据超平面函数直接判定预测点的label,预测效率很高(一般我们更关心预测效率)。
3. 两者调参过程不一样。 knn只有一个参数k,而svm的参数更多,在线性不可分的情况下(这种情况更普遍),有松弛变量的系数,有具体的核函数。
2.SVM原理梳理
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
一、支持向量与超平面
二、SVM算法原理
2.1 点到超平面的距离公式
既然这样的直线是存在的,那么我们怎样寻找出这样的直线呢?与二维空间类似,超平面的方程也可以写成一下形式:
(1)
有了超平面的表达式之后之后,我们就可以计算样本点到平面的距离了。假设为样本的中的一个点,其中表示为第个特征变量。那么该点到超平面的距离就可以用如下公式进行计算:
(2)
其中||W||为超平面的范数,常数b类似于直线方程中的截距。
上面的公式可以利用解析几何或高中平面几何知识进行推导,这里不做进一步解释。
2.2 最大间隔的优化模型
2.3 学习的对偶算法
为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量的对偶算法。这样的优点:
-
对偶问题往往更容易求解
-
自然引入核函数,进而推广到非线性分类问题
-
改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。
3.算法讲解视频
学习视频资料
以电影为背景的短视频SVM讲解:【SVM支持向量机】低维空间的混乱 高维空间的秩序_哔哩哔哩_bilibili
白话支持向量机:
【SVM】白话支持向量机,爆笑!算法也能讲出脱口秀的范儿_哔哩哔哩_bilibili
SVM讲解短视频:
什么是 SVM(支持向量机)?【知多少】_哔哩哔哩_bilibili
长视频,深入原理:z【数之道】支持向量机SVM是什么,八分钟直觉理解其本质_哔哩哔哩_bilibili
长视频,含有公式分析:计算机博士通俗讲解SVM支持向量机,我2个小时就会了,学不会你来找我!!_人工智能|深度学习|机器学习算法|支持向量机_哔哩哔哩_bilibili
4.运行