最小二乘支持向量机分类器

  • 1.支持向量机分类
  • 2.最小二乘支持向量机用于分类任务
  • 3.最小二乘支持向量机用于回归
  • 4.LSSVM分析
  • 5.LSSVM的Python实现

在这篇文章中,我们讨论支持向量机(SVM)分类器的最小二乘版本。由于公式中的相等类型约束。解是由解一组线性方程得出的。而不是经典的支持向量机的二次规划。
本文针对两类分类问题,提出了支持向量机的最小二乘模型。对于函数估计问题,支持向量解释边缘回归。在(Saunders et al., 1998)中,它考虑了等式类型的约束,而不是经典的支持向量机方法中的不等式。在这里,我们也考虑了在最小二乘意义下的公式分类问题的等式约束。因此,求解直接遵循求解一组线性方程,而不是二次规划。在经典的支持向量机中,许多支持值为零(非零值对应于支持向量),而在最小二乘支持向量机中,支持值与误差成正比。

1.支持向量机分类

给定N个点的训练集
,Xk是第K个输入模式,Yk是第K个输出模式,支持向量机方法旨在构建一种分类器:

αk 是正常量,b是实常量,对于

有下列选择:


构建如下分类器:
假定

这个式子等同于


是非线性函数,它映射输入空间到更高维空间。
然而,这个函数不是显式构造的。为了有违反(3)的可能性,在这个高维空间中不存在一个分离的超平面时,引入了这样的变量


根据结构风险最小化原则,将优化问题公式化,使风险界最小化:

它满足(4)。同时通过引入拉格朗日乘数

,我们构建了拉格朗日方程

通过计算

获得拉格朗日点的解。
一个解是:

它会影响下面这个二次规划问题的答案:

比如:


这是由默瑟定理提出的。需要注意的是,对于两层神经支持向量机,Mercer‘s ’条件仅支持K和theta 的特定参数值。
通过解决

设计分类器(1),它满足(9)中的条件。为了确定决定决策面,没有计算w和ф(x)。
因为矩阵与这个二次规划问题不是无限期的,(11)的解决方案将是全局的。
并且,超平面(3)满足
,VC-维度h满足:

[ . ]表示整数部分和r是包含点的半径最小的球中φ(x1)、…φ(xN)。通过定义拉格朗日函数就可以找到这个球


q表示球心,
是正拉格朗日变量。
与(5)中发现与

等同的球心相似的方式,从

找到拉格朗日变量,其中

根据(10),Q2也可以表示为

最后,通过求解(11)并从(14)中计算(12)来选择一个VC维最小的支持向量机。

2.最小二乘支持向量机用于分类任务

(1)优化目标
这里我们将最小二乘版本引入SVM分类器,将分类问题表述为:

它满足平等的限制:

(2)拉格朗日乘子法

定义拉格朗日函数:

其中 aK 是拉格朗日乘数的等式约束,现在可以是正的或负的)。
(3)求解最优化条件
约束优化:

(4)求解对偶问题
上式可以直接写成以下一组线性方程的解(Fletcher, 1987):



Mercer’s 的条件可以再次应用到矩阵

其中,

因此,分类器(1)是通过求解线性方程组(20)(21)而不是二次规划得到的。如RBF核的σ等核的参数可根据(12)进行优化选择。支持值 αk 与数据点(18)的误差成比例,而在(14)的情况下,大多数值等于零。因此,在最小二乘情况下,人们更愿意说一个支持值谱。
LLSVM通过求解上述线性方程组,得到优化变量a aa和b bb的值,这种求解方式比求解QP问题更加简便。
最小二乘支持向量机求解时,计算成本低,并且没有许多局部最小值,是一个凸优化问题的解决方案。
并且泛化性能较好。
(5)与标准SVM的区别

a. 使用等式约束,而不是不等式约束;
b. 由于对每个样本点采用了等式约束,因此对松弛向量不施加任何约束,这也是LSSVM丢失稀疏性的重要原因;
c. 通过解决等式约束以及最小二乘问题,使得问题得到进一步简化。

3.最小二乘支持向量机用于回归

4.LSSVM分析

特性:
1) 同样是对原始对偶问题进行求解,但是通过求解一个线性方程组(优化目标中的线性约束导致的)来代替SVM中的QP问题(简化求解过程),对于高维输入空间中的分类以及回归任务同样适用;
2) 实质上是求解线性矩阵方程的过程,与高斯过程(Gaussian processes),正则化网络(regularization networks)和费雪判别分析(Fisher discriminant analysis)的核版本相结合;
3) 使用了稀疏近似(用来克服使用该算法时的弊端)与稳健回归(稳健统计);
4) 使用了贝叶斯推断(Bayesian inference);
5) 可以拓展到非监督学习中:核主成分分析(kernel PCA)或密度聚类;
6) 可以拓展到递归神经网络中。
缺点:
(1)解决分类任务时,全部训练样本都会被作为支持向量来看待,这就会导致其丧失SVM原有的稀疏性质,但是还可以通过对训练集进行基于支持度的“减枝”(pruning)处理来达到稀疏化的目的,这一步也可以看做是一种稀疏近似(sparse approximate)操作。
(2)

5.LSSVM的Python实现

//
from numpy import *def loadDataSet(filename):'''导入数据input: filename:文件名output:dataMat(list)样本特征labelMat(list)样本标签'''dataMat = []labelMat = []fr = open(filename)for line in fr.readlines():lineArr = line.strip().split('\t')dataMat.append([float(lineArr[0]),float(lineArr[1])])labelMat.append(float(lineArr[2]))return dataMat,labelMatdef kernelTrans(X,A,kTup):'''数据集中每一个数据向量与数据A的核函数值input: X--特征数据集A--输入向量kTup--核函数参量定义output: K--数据集中每一个数据向量与A的核函数值组成的矩阵'''X = mat(X)m,n = shape(X)K = mat(zeros((m,1)))if kTup[0] == 'lin':K = X * A.Telif kTup[0] == 'rbf':for j in range(m):deltaRow = X[j,:] - AK[j] = deltaRow * deltaRow.TK = exp(K/(-1 * kTup[1] ** 2))else: raise NameError('Houston We Have a Problem -- That Kernel is not recognized')return Kclass optStruct:def __init__(self,dataMatIn,classLabels,C,kTup):self.X = dataMatInself.labelMat = classLabelsself.C = Cself.m = shape(dataMatIn)[0]self.alphas = mat(zeros((self.m,1)))self.b = 0self.K = mat(zeros((self.m,self.m)))  #特征数据集合中向量两两核函数值组成的矩阵,[i,j]表示第i个向量与第j个向量的核函数值for i in range(self.m):self.K[:,i] = kernelTrans(self.X, self.X[i,:], kTup)def leastSquares(dataMatIn,classLabels,C,kTup):'''最小二乘法求解alpha序列input:dataMatIn(list):特征数据集classLabels(list):分类标签集C(float):参数,(松弛变量,允许有些数据点可以处于分隔面的错误一侧)kTup(string): 核函数类型和参数选择 output:b(float):w.T*x+b=y中的balphas(mat):alphas序列      '''oS = optStruct(mat(dataMatIn),mat(classLabels).transpose(),C,kTup)##1.参数设置unit = mat(ones((oS.m,1)))  #[1,1,...,1].TI = eye(oS.m)zero = mat(zeros((1,1)))upmat = hstack((zero,unit.T))downmat = hstack((unit,oS.K + I/float(C)))##2.方程求解completemat = vstack((upmat,downmat))  #lssvm中求解方程的左边矩阵rightmat = vstack((zero,oS.labelMat))    # lssvm中求解方程的右边矩阵b_alpha = completemat.I * rightmatoS.b = b_alpha[0,0]for i in range(oS.m):oS.alphas[i,0] = b_alpha[i+1,0]return oS.alphas,oS.b,oS.Kdef predict(alphas,b,dataMat,testVec):'''预测结果input:alphas(mat):Lagrange乘子序列b(float):分隔超平面的偏置dataMat()output:sign(float(predict_value))(int):预测样本的类别'''Kx = kernelTrans(dataMat,testVec,kTup)   #可以对alphas进行稀疏处理找到更准确的值predict_value =  Kx.T * alphas + b
#    print('预测值为:%f'%predict_value)
#    print('分类结果为:%f'%sign(float(predict_value)))return sign(float(predict_value))if __name__ == '__main__':##1.导入数据print('-----------------------------1.Load Data-------------------------------')dataMat,labelMat = loadDataSet('testSetRBF.txt')C = 0.6k1 = 0.3kernel = 'rbf'kTup = (kernel,k1)##2.训练模型print('----------------------------2.Train Model------------------------------')alphas,b,K = leastSquares(dataMat,labelMat,C,kTup)##3.计算训练误差print('----------------------------3.Calculate Train Error--------------------')error = 0.0for i in range(len(dataMat)):test = predict(alphas,b,dataMat,dataMat[i])if test != float(labelMat[i]):error +=1.0errorRate = error/len(dataMat)print('---------------训练误差为:%f-------------------'%errorRate)

参考:
文章
源码
博客

最小二乘支持向量机分类器(LSSVM)及Python实现相关推荐

  1. 用MATLAB实现偏最小二乘支持向量机(LS-SVM)的总结

    求gam和gim,这两个是关键参数 clc clear all%% 导入数据S_Data=xlsread('C:\Users\yxz\Desktop\TrainDatatotal\aloneChang ...

  2. 最小二乘支持向量机(LSSVM)简述

    最小二乘支持向量机简述 前言:偶然间看过July的<支持向量机通俗导论>,受益良多,出于兴趣又看了一些LSSVM(最小二乘支持向量机)的相关文献,在这儿随便贴一点. 正文:首先,关于支持向 ...

  3. 最小二乘支持向量机(lssvm)回归预测(matlab)

    一.LS-SVMlab工具箱下载 获取地址为:http://www.esat.kuleuven.be/sista/lssvmlab 二.添加工具箱路径 下载工具箱后,将其添加到MATLAB的工作搜索路 ...

  4. 基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习附Matlab代码

    ​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)

  6. 最小二乘支持向量机的分析与改进及Python实现

    WLSSVM最小二乘支持向量机 1. LSSVM的简单理解 2. WLSSVM 3. WLSSVM的Python实现 1. LSSVM的简单理解 LSSVM通过训练数据学习回归方程,将自变量映射到更高 ...

  7. 【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码

    1 内容介绍 在信息爆炸的新时代,由于全球科技与经济迅猛发展,数据充斥在各行各业,数据的结构也变得多样化.其中对于数据的分类最常见,伴随着数据分类的同时出现两大处理难点,一个是非均衡问题,另一个就是高 ...

  8. 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】

    ⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...

  9. 【LSSVM回归预测】人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】

    ⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...

  10. 【lssvm预测】基于天鹰算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

    1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...

最新文章

  1. Kali Linux下运行Sniffjoke出错的解决
  2. MySQL(mysql 5.7)用户密码的管理
  3. C++标准库类模板(stack)和 队列(queue)
  4. Android开发 ----------怎样真机调试?
  5. 关于Android中Service的手动、自动以及其在特殊条件下的重启
  6. uni-app启动微信开发者工具
  7. linux下面的安卓模拟器genymotion运行taptap游戏-还没弄完
  8. java word 转换 图片_怎样把手机上的图片转换成word?
  9. ORACLE 实现 ID 自增
  10. QML笔记-自定义控件的2种点击方式(推荐第二种)
  11. 路科验证示例_角度形式验证示例
  12. Scott Mitchell 的ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息
  13. Java面试准备(一)
  14. seekbar 的用法
  15. 10000小时定律:成为大牛的秘密是什么?
  16. 小学生获奖作品html,小学生优秀绘画作品图片展示
  17. 用python的requests获取B站评论
  18. 黑提葡萄水果宣传文案模版,水果店文案黑提葡萄
  19. 【Java的反射机制】
  20. linux slub分配器,Vi Linux内存 之 Slub分配器(六)

热门文章

  1. 物流管理源代码java_基于jsp的物流管理-JavaEE实现物流管理 - java项目源码
  2. linux iozone测试工具,iozone命令 – 进行linux下的硬盘性能测试
  3. java——编程案例
  4. 陈俊龙:从深度强化学习到宽度强化学习—结构,算法,机遇及挑战
  5. Flash的破解版按装
  6. android studio创建和安装虚拟机
  7. 【记录】数控程序的指令代码---标准G代码与标准M代码
  8. Java 进制转换 代码
  9. ubuntu系统下如何查看opencv版本
  10. 阿里云盘 Mac客户端(附福利兑换码)