【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

(转载请注明出处:http://blog.csdn.net/buptgshengod)

1.背景

     强烈推荐阅读(http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html)  
       支持向量机SVM(support vector machines)。SVM是一种二值分类器,是近些年比较流行的一种分类算法。
本文,首先要介绍一些基本的知识概念,在下一章将对SVM进行简单地代码实现。

2.基本概念


(1)线性可分

           
       首先介绍一下什么叫线性可分,引用一张上一节的图。线性可分实际上就是可以用一条直线将两种不同的点区分开来。由此我们可以得到线性不可分就是两种点混合在一起不能区分。但是线性不可分的点其实也可以用数学方法区分开来。比如说一个四维的数据集我们可以用一个三维的对象将其分开,这个对象叫做超平面。下图的超平面就是那条蓝线。




(2)支持向量

       支持向量,现在我们知道了超平面的概念,支持向量其实就是距离超平面在最近的向量。以上图为例,就是距离蓝线最近的那些点。方法就是点到线的距离判定。一旦我们找到了这些支持向量,那么我们就可以放大这些向量,只考虑这些对象,用到的是序列最小优化的思想。


(3)拉格朗日乘子法

       对于支持向量的求法,我们需要一定的约束条件。比如说我们设点到超平面的距离是d,我们要求取d>1的点作为约束条件。因为如果没有这个约束条件会使得计算出现误差。
这个公式是我们去点到超平面距离最小的点的集合,且满足
。在存在约束条件情况下求极值的问题,我们用到拉格朗日乘子法(参见百度百科)。


(4)变型

   参照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...)。我们把上面的式子变型为

 约束条件就变成了

上式的参数c使松弛变量,因为我们看到图中一些红点被分到了绿点的范围里,为了考虑到这种问题,引入一个变量来控制。svm的主要任务是计算参数C。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Python支持向量机(Support Vector Machine,SVM)是一种非常常用的机器学习算法,用于分类和回归问题。下面是关于其设计与实现的简要说明: 首先,我们需要导入所需的库,例如`numpy`用于数值计算,`sklearn.svm`用于实现SVM模型。然后,我们可以通过调用`svm.SVC()`创建一个支持向量机分类模型。 接下来,我们需要准备训练集和测试集的数据。通常,我们需要将数据集分为输入特征(X)和目标变量(y)。特征是用于训练模型的属性,而目标变量是我们希望预测的输出。确保数据已经适当地进行了预处理,例如特征缩放。 然后,我们可以使用`fit(X, y)`方法拟合我们的模型,这将根据训练集的特征和目标变量训练模型。之后,我们可以使用`predict(X_test)`方法对测试集的特征进行预测,并得到预测结果。 在实际实施中,我们还可以调整一些参数来优化模型的性能。例如,我们可以调整正则化参数C值,以控制模型对误分类样本的惩罚程度;还可以选择不同的核函数,例如线性核、多项式核或高斯径向基函数(RBF)核,以适应不同的数据分布。 最后,我们可以使用准确率、精确率、召回率等指标来评估我们的模型的性能。这些指标可以通过引入`sklearn.metrics`库实现。 总之,基于PythonSVM算法实现涉及导入相关库、创建模型、准备数据、训练模型、预测及评估模型。这种机器学习算法非常适用于分类和回归问题,尤其对于非线性数据或具有高维特征的数据集效果显著。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值