SVM算法
SVM需要超平面wx+b来分割数据集(此处以线性可分为例),因此会有一个模型训练过程来找到w和b的值。训练完成之后就可以拿去预测了,根据函数y=wx+b的值来确定样本点x的label,不需要再考虑训练集。对于SVM,是先在训练集上训练一个模型,然后用这个模型直接对测试集进行分类。
SVM算法和KNN算法对比分析
1.KNN分类问题,离哪些点近就归为哪一类,而SVM分类问题则是找决策边界后再把数据进行分开
2.KNN对每个样本都要考虑,而SVM是要去找一个函数把达到样本可分
3.KNN不能处理样本维度太高的东西,SVM处理高纬度数据比较优秀
4.KNN没有训练过程,但是预测过程需要挨个计算每个训练样本和测试样本的距离,当训练集和测试集很大时,预测效率低。SVM有一个训练过程,训练完直接得到超平面函数,根据超平面函数直接判定预测点的label,预测效率很高
SVM算法原理及实现步骤
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, w⋅x+b=0 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
1.寻找最大间隔
既然这样的直线是存在的,那么我们怎样寻找出这样的直线呢?与二维空间类似,超平面的方程也可以写成一下形式