支持向量机训练算法的实验比较

合集下载

svm实验报告总结

svm实验报告总结

svm实验报告总结SVM实验报告总结支持向量机(SVM)是一种常用的机器学习算法,它在模式识别、分类、回归等领域有着广泛的应用。

本文将对SVM算法进行实验,旨在探究SVM算法的原理、应用和优缺点。

一、实验原理SVM的基本思想是将低维度的数据映射到高维度的空间中,从而使数据在高维空间中更容易被线性分隔。

SVM算法的核心是支持向量,这些支持向量是距离分类决策边界最近的数据点。

SVM通过找到这些支持向量来建立分类器,从而实现数据分类。

二、实验步骤1. 数据预处理本实验使用的数据集是Iris花卉数据集,该数据集包含了三种不同种类的花朵,每种花朵有四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度。

首先需要将数据集划分为训练集和测试集,以便在训练模型时进行验证。

2. 模型训练本实验使用Python中的sklearn库来构建SVM分类器。

首先需要选择SVM的核函数,有线性核函数、多项式核函数、径向基核函数等。

在本实验中,我们选择径向基核函数作为SVM的核函数。

接着需要设置SVM的参数,包括C值和gamma值。

C值是惩罚系数,用于平衡模型的分类精度和泛化能力;gamma值是径向基函数的系数,用于控制支持向量的影响范围。

3. 模型评估本实验使用准确率和混淆矩阵来评估模型的性能。

准确率是指模型在测试集上的分类精度,而混淆矩阵则可以用来分析模型在不同类别上的分类情况。

三、实验结果本实验使用径向基核函数的SVM分类器在Iris数据集上进行了实验。

实验结果表明,SVM分类器的准确率达到了97.78%,同时在混淆矩阵中也可以看出模型在不同花朵种类上的分类情况。

实验结果表明,SVM分类器在分类问题上有着较好的表现。

四、实验总结SVM算法是一种常用的机器学习算法,它在模式识别、分类、回归等领域有着广泛的应用。

本实验通过对Iris数据集的实验,探究了SVM算法的原理、应用和优缺点。

实验结果表明,在SVM算法中,径向基核函数是一种比较适用的核函数,在设置SVM参数时需要平衡模型的分类精度和泛化能力。

机器学习SVM(支持向量机)实验报告

机器学习SVM(支持向量机)实验报告

实验报告实验名称:机器学习:线性支持向量机算法实现学员: 张麻子学号: *********** 培养类型:硕士年级:专业:所属学院:计算机学院指导教员:****** 职称:副教授实验室:实验日期:ﻬ一、实验目得与要求实验目得:验证SVM(支持向量机)机器学习算法学习情况要求:自主完成。

二、实验内容与原理支持向量机(Support Vector Machine,SVM)得基本模型就是在特征空间上找到最佳得分离超平面使得训练集上正负样本间隔最大。

SVM就是用来解决二分类问题得有监督学习算法。

通过引入了核方法之后SVM也可以用来解决非线性问题。

但本次实验只针对线性二分类问题。

SVM算法分割原则:最小间距最大化,即找距离分割超平面最近得有效点距离超平面距离与最大。

对于线性问题:假设存在超平面可最优分割样本集为两类,则样本集到超平面距离为:需压求取:由于该问题为对偶问题,可变换为:可用拉格朗日乘数法求解。

但由于本实验中得数据集不可以完美得分为两类,即存在躁点。

可引入正则化参数C,用来调节模型得复杂度与训练误差。

作出对应得拉格朗日乘式:对应得KKT条件为:故得出需求解得对偶问题:本次实验使用python编译器,编写程序,数据集共有270个案例,挑选其中70%作为训练数据,剩下30%作为测试数据。

进行了两个实验,一个就是取C值为1,直接进行SVM训练;另外一个就是利用交叉验证方法,求取在前面情况下得最优C值.三、实验器材实验环境:windows7操作系统+python编译器。

四、实验数据(关键源码附后)实验数据:来自UCI机器学习数据库,以Heart Disease数据集为例。

五、操作方法与实验步骤1、选取C=1,训练比例7:3,利用python库sklearn下得SVM()函数进行训练,后对测试集进行测试;2、选取训练比例7:3,C=np、linspace(0、0001,1,30)}。

利用交叉验证方法求出C值得最优解。

svm实验报告总结

svm实验报告总结

SVM实验报告1. 背景支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,广泛应用于分类问题,特别是二分类问题。

SVM的基本思想是通过找到一个最优超平面,将不同类别的样本分开。

该算法在模式识别、图像分割、文本分类等领域都有较好的性能。

2. 分析2.1 数据集本次实验使用了鸢尾花数据集(Iris Dataset),该数据集是机器学习中应用非常广泛的数据集之一,包含了三种不同的鸢尾花(Setosa、Versicolor、Virginica)的样本,每类样本50个。

2.2 SVM算法SVM算法的核心在于寻找一个最优的超平面,使得不同类别的样本点到超平面的距离最大化。

其决策函数可以表示为:f(x)=sign(w T x+b)其中,w是超平面的法向量,b是超平面的截距。

SVM算法通过构建拉格朗日函数并求解对偶问题,可以得到超平面的参数。

2.3 实验步骤本次实验的具体步骤如下:1.加载数据集:使用机器学习库中的函数加载鸢尾花数据集。

2.数据预处理:对数据进行标准化处理,以便提高模型的训练效果。

3.划分训练集和测试集:将数据集划分为训练集和测试集,用于模型的训练和评估。

4.训练模型:使用训练集对SVM模型进行训练。

5.模型评估:使用测试集对训练好的模型进行评估。

6.结果分析:根据评估结果对模型进行分析,并提出相应的建议。

3. 结果经过实验,得到了以下结果:1.样本标准化前的准确率为82%,样本标准化后的准确率提升到96%。

2.在训练集上的准确率高于测试集,表明模型存在轻微的过拟合。

3.SVM模型在鸢尾花数据集上表现良好,能够对三种鸢尾花进行有效分类。

4. 建议根据实验结果,可以针对模型的性能提出以下建议:1.考虑增加更多的训练样本,以减小模型的过拟合现象。

2.尝试调整超参数,如正则化参数C和核函数参数等,以提高模型的泛化能力。

3.可以尝试使用其他优化算法,如随机梯度下降法等,以加快模型的训练速度。

支持向量机与神经网络算法的对比分析

支持向量机与神经网络算法的对比分析

支持向量机与神经网络算法的对比分析【摘要】支持向量机(SVM)和神经网络算法是常用的机器学习方法,都在分类和回归问题中发挥着重要作用。

本文通过对比分析支持向量机和神经网络算法的基本原理、性能比较以及适用场景,探讨它们的优缺点及应用范围。

支持向量机以间隔最大化为目标,对线性和非线性数据都有良好的效果;神经网络算法则通过模拟神经元之间的信号传递实现学习和预测。

两者在不同场景下各有优势,在选择时需要根据具体问题的特点来决定。

未来研究可探索SVM和神经网络的融合及优化算法,以提高模型的性能和泛化能力。

支持向量机和神经网络算法在机器学习领域有着广泛的应用前景,研究和使用价值巨大。

【关键词】支持向量机、神经网络算法、对比分析、性能比较、适用场景、选择、研究背景、研究意义、研究目的、基本原理、未来研究方向、总结评价1. 引言1.1 研究背景支持向量机(Support Vector Machine,SVM)和神经网络算法(Neural Network)作为机器学习领域中常用的模型之一,在解决分类和回归问题中展现出了良好的性能。

针对不同类型的数据集,支持向量机和神经网络算法都有其独特的优势和适用性。

在实际应用中,选择合适的模型对于提高预测准确率和降低误差具有重要意义。

支持向量机是一种监督学习模型,其基本原理是利用训练数据集中的支持向量来构建超平面,实现对数据的分类。

通过找到最大间隔超平面,支持向量机可以有效处理线性可分和线性不可分的数据集。

相比于其他分类算法,支持向持机具有较好的泛化性能和对高维数据的适应能力。

神经网络算法是一种模拟人脑神经元网络构建的模型,其基本原理是通过多层神经元之间的连接和激活函数来实现对数据的学习和分类。

神经网络算法在处理非线性可分问题时具有一定优势,对于图像识别、自然语言处理等复杂任务也表现出良好的性能。

本研究将从支持向量机和神经网络算法的基本原理、性能比较、适用场景以及对比分析等方面入手,探讨两者在机器学习任务中的优缺点,为选择合适的模型提供参考依据。

机器学习中的支持向量机与朴素贝叶斯算法比较

机器学习中的支持向量机与朴素贝叶斯算法比较

机器学习中的支持向量机与朴素贝叶斯算法比较支持向量机(Support Vector Machines,SVM)和朴素贝叶斯(Naive Bayes)算法都是机器学习中常用的分类算法,但它们在原理、应用领域、假设和实现方面有很大的差异。

接下来将对这两个算法进行详细的比较。

1.原理:SVM是一种监督学习模型,其基本原理是找到一个超平面来最大化不同类别之间的间隔,以达到最佳分类效果。

SVM可以通过使用不同的核函数来灵活处理不同类型的数据。

朴素贝叶斯算法则基于贝叶斯定理,利用属性之间的条件独立性假设进行分类。

它假设所有属性对于给定类别的出现都是独立的,从而简化了计算问题。

朴素贝叶斯通过计算每个类别的概率,并选择具有最高概率的类别进行分类。

2.应用领域:SVM广泛应用于文本分类、图像识别、生物信息学等领域。

它在处理高维数据和非线性数据上具有优势,可以通过核函数将低维数据映射到高维空间进行分类。

朴素贝叶斯算法在文本分类、垃圾邮件过滤、情感分析等领域有广泛的应用。

由于它的简单性和效率,朴素贝叶斯算法在处理大规模数据集时表现出色。

3.假设:SVM假设数据是线性可分的,即存在一个超平面可以完美地将不同类别的数据分开。

对于线性不可分的数据,SVM可以通过引入松弛变量来容忍一定的错误。

朴素贝叶斯算法假设所有属性之间是条件独立的。

这是一个强假设,通常在实际应用中不成立。

然而,在实践中,朴素贝叶斯算法通常能够产生良好的分类结果,尤其是在属性之间存在较弱依赖关系时。

4.实现:SVM的实现包括选择核函数、优化超参数和求解最优化问题。

常用的核函数有线性核、多项式核和高斯核。

对于大规模数据集,通常使用支持向量机进行分类。

朴素贝叶斯算法的实现相对简单,主要计算类别的概率和属性条件概率。

可以使用最大似然估计或贝叶斯估计来计算这些概率。

朴素贝叶斯算法常用于处理文本数据,特别是在大规模数据集上表现良好。

5.优缺点:SVM的优点包括能够处理高维数据、非线性数据和大规模数据集,具有较强的泛化能力。

支持向量机与其他机器学习算法的比较

支持向量机与其他机器学习算法的比较

支持向量机与其他机器学习算法的比较支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,它在分类和回归问题中表现出色。

然而,与其他机器学习算法相比,SVM具有其独特的优势和限制。

本文将对支持向量机与其他机器学习算法进行比较,探讨它们的异同点。

首先,SVM在处理线性可分和线性不可分问题方面表现出色。

对于线性可分问题,SVM通过找到一个最优的超平面,将两类样本分隔开来。

而对于线性不可分问题,SVM通过使用核函数将样本映射到高维空间中,从而找到一个能够将样本分隔开的超平面。

相比之下,其他机器学习算法如逻辑回归和朴素贝叶斯等在处理线性不可分问题时表现较差。

其次,SVM在处理小样本数据集时具有较好的泛化能力。

由于SVM通过最大化分类间隔来寻找最优超平面,它对于样本数量较少的情况下仍能取得良好的分类效果。

而其他机器学习算法如决策树和随机森林等在处理小样本数据集时容易过拟合,导致泛化能力不足。

另外,SVM对异常值的鲁棒性较强。

异常值是指与其他样本明显不同的样本点,它们可能会对模型的训练和预测产生较大的干扰。

SVM通过支持向量的概念来确定最优超平面,这些支持向量是离超平面最近的样本点。

因此,异常值对SVM的影响较小。

相比之下,其他机器学习算法如K近邻和神经网络等对异常值较为敏感。

然而,SVM也存在一些限制。

首先,SVM在处理大规模数据集时计算复杂度较高。

由于SVM需要解决一个凸优化问题,它的计算复杂度随着样本数量的增加而增加。

相比之下,其他机器学习算法如朴素贝叶斯和K近邻等计算复杂度较低,适用于处理大规模数据集。

其次,SVM对于非线性问题的处理依赖于核函数的选择。

核函数是SVM中用于将样本映射到高维空间的函数,不同的核函数会导致不同的分类效果。

因此,选择合适的核函数对SVM的性能至关重要。

而其他机器学习算法如决策树和神经网络等对非线性问题的处理更加灵活,不需要依赖于核函数。

机器学习--支持向量机(SVM)算法的原理及优缺点

机器学习--支持向量机(SVM)算法的原理及优缺点

机器学习--⽀持向量机(SVM)算法的原理及优缺点⼀、⽀持向量机(SVM)算法的原理 ⽀持向量机(Support Vector Machine,常简称为SVM)是⼀种监督式学习的⽅法,可⼴泛地应⽤于统计分类以及回归分析。

它是将向量映射到⼀个更⾼维的空间⾥,在这个空间⾥建⽴有⼀个最⼤间隔超平⾯。

在分开数据的超平⾯的两边建有两个互相平⾏的超平⾯,分隔超平⾯使两个平⾏超平⾯的距离最⼤化。

假定平⾏超平⾯间的距离或差距越⼤,分类器的总误差越⼩。

1.⽀持向量机的基本思想 对于线性可分的任务,找到⼀个具有最⼤间隔超平⾯,如图所⽰, (1)⽀持向量机的基本型为: (2)软间隔的优化⽬标: 其中,0-1函数为错分样本的个数。

(3)核⽅法: 其中为特征映射函数。

2、实验⼀般步骤: (1)导⼊数据; (2)数据归⼀化; (3)执⾏svm寻找最优的超平⾯; (4)绘制分类超平⾯核⽀持向量; (5)利⽤多项式特征在⾼维空间中执⾏线性svm (6)选择合适的核函数,执⾏⾮线性svm; 3、算法优缺点: 算法优点: (1)使⽤核函数可以向⾼维空间进⾏映射 (2)使⽤核函数可以解决⾮线性的分类 (3)分类思想很简单,就是将样本与决策⾯的间隔最⼤化 (4)分类效果较好 算法缺点: (1)SVM算法对⼤规模训练样本难以实施 (2)⽤SVM解决多分类问题存在困难 (3)对缺失数据敏感,对参数和核函数的选择敏感 ⼆、数学推导过程 对于线性可分的⽀持向量机求解问题实际上可转化为⼀个带约束条件的最优化求解问题: 推理过程: 结果: 对于线性不可分的⽀持向量机求解问题实际上可转化为⼀个带约束条件的soft-margin最优化求解问题:三、代码实现1、线性svmimport numpy as npfrom sklearn.datasets import load_irisimport matplotlib.pyplot as pltfrom sklearn.preprocessing import StandardScalerfrom sklearn.svm import LinearSVCfrom matplotlib.colors import ListedColormapimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1))x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)w = model.coef_[0]b = model.intercept_[0]plot_x = np.linspace(axis[0],axis[1],200)up_y = -w[0]/w[1]*plot_x - b/w[1] + 1/w[1]down_y = -w[0]/w[1]*plot_x - b/w[1] - 1/w[1]up_index = (up_y>=axis[2]) & (up_y<=axis[3])down_index = (down_y>=axis[2]) & (down_y<=axis[3])plt.plot(plot_x[up_index],up_y[up_index],c='black')plt.plot(plot_x[down_index],down_y[down_index],c='black')warnings.filterwarnings("ignore")data = load_iris()x = data.datay = data.targetx = x[y<2,:2]y = y[y<2]scaler = StandardScaler()scaler.fit(x)x = scaler.transform(x)svc = LinearSVC(C=1e9)svc.fit(x,y)plot_decision_boundary(svc,axis=[-3,3,-3,3])plt.scatter(x[y==0,0],x[y==0,1],c='r')plt.scatter(x[y==1,0],x[y==1,1],c='b')plt.show()输出结果:2、⾮线性-多项式特征import numpy as npfrom sklearn import datasetsimport matplotlib.pyplot as pltfrom sklearn.preprocessing import PolynomialFeatures,StandardScaler from sklearn.svm import LinearSVCfrom sklearn.pipeline import Pipelinefrom matplotlib.colors import ListedColormapimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1), np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1) )x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)def PolynomialSVC(degree,C=1.0):return Pipeline([('poly',PolynomialFeatures(degree=degree)),('std_scaler',StandardScaler()),('linearSVC',LinearSVC(C=1e9))])warnings.filterwarnings("ignore")poly_svc = PolynomialSVC(degree=3)X,y = datasets.make_moons(noise=0.15,random_state=666)poly_svc.fit(X,y)plot_decision_boundary(poly_svc,axis=[-1.5,2.5,-1.0,1.5])plt.scatter(X[y==0,0],X[y==0,1],c='red')plt.scatter(X[y==1,0],X[y==1,1],c='blue')plt.show()输出结果:3、⾮线性-核⽅法from sklearn.preprocessing import StandardScalerfrom sklearn.svm import SVCfrom sklearn.pipeline import Pipelinefrom sklearn import datasetsfrom matplotlib.colors import ListedColormapimport numpy as npimport matplotlib.pyplot as pltimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1), np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1) )x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)def RBFKernelSVC(gamma=1.0):return Pipeline([('std_scaler',StandardScaler()),('svc',SVC(kernel='rbf',gamma=gamma))])warnings.filterwarnings("ignore")X,y = datasets.make_moons(noise=0.15,random_state=666)svc = RBFKernelSVC(gamma=100)svc.fit(X,y)plot_decision_boundary(svc,axis=[-1.5,2.5,-1.0,1.5])plt.scatter(X[y==0,0],X[y==0,1],c='red')plt.scatter(X[y==1,0],X[y==1,1],c='blue')plt.show()输出结果:。

机器学习中的支持向量机算法研究与比较

机器学习中的支持向量机算法研究与比较

机器学习中的支持向量机算法研究与比较引言随着人工智能技术的快速发展,机器学习作为其中的重要分支,逐渐成为了解决复杂问题的有力工具。

在众多机器学习算法中,支持向量机(Support Vector Machine,SVM)因其在分类和回归问题上的优秀表现而备受关注。

本文将对支持向量机算法进行研究与比较,探讨其在机器学习中的应用。

一、支持向量机算法原理简介支持向量机是一种监督学习算法,其基本原理是通过在特征空间中寻找一个最优超平面,将不同类别的样本分隔开。

支持向量机的核心思想是最大化分类边界与最小化分类误差,以实现高效的分类效果。

1.1 线性支持向量机线性支持向量机是支持向量机的基础形式,其通过一个超平面将不同类别的样本分开。

在特征空间中,我们可以将超平面表示为wx+b=0,其中w是法向量,b 是截距。

线性支持向量机的目标是找到一个最优超平面,使得不同类别的样本点到超平面的距离最大化。

1.2 非线性支持向量机然而,现实中的数据往往不是线性可分的,这就需要使用非线性支持向量机来处理这些问题。

非线性支持向量机通过引入核函数,将原始特征映射到高维特征空间中,从而使得数据在高维空间中线性可分。

常用的核函数有线性核、多项式核和径向基核等。

二、支持向量机算法的优势支持向量机算法在机器学习中具有以下几个优势:2.1 鲁棒性支持向量机算法对于训练数据中的噪声和异常点具有较好的鲁棒性。

由于其基于最大间隔原则进行分类,使得支持向量机对于训练数据中的噪声不敏感,能够有效地避免过拟合问题。

2.2 高维空间处理能力支持向量机通过引入核函数,将原始特征映射到高维特征空间中,从而使得数据在高维空间中线性可分。

这使得支持向量机能够处理高维特征空间中的复杂问题,如文本分类、图像识别等。

2.3 泛化能力强支持向量机通过最大化分类边界,使得其具有较好的泛化能力。

在训练完成后,支持向量机能够对未知样本进行准确的分类,具有较低的错误率。

三、支持向量机算法的应用支持向量机算法在机器学习领域有着广泛的应用,涵盖了多个领域。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

支持向量机训练算法的实验比较姬水旺,姬旺田(陕西移动通信有限责任公司,陕西西安710082)摘 要:S VM是基于统计学习理论的结构风险最小化原则的,它将最大分界面分类器思想和基于核的方法结合在一起,表现出了很好的泛化能力。

并对目前的三种主流算法S VM light,Bsvm与SvmFu在人脸检测、M NIST和USPS手写数字识别等应用中进行了系统比较。

关键词:统计学习理论;支持向量机;训练算法中图法分类号:TP30116 文献标识码:A 文章编号:100123695(2004)1120018203 Experimental C omparison of Support Vector Machine Training Alg orithmsJ I Shui2wang,J I Wang2tian(Shanxi Mobile Communication Co.,LTD,Xi’an Shanxi710082,China)Abstract:Support vector learning alg orithm is based on structural risk minimization principle.It combines tw o remarkable ideas:maxi2 mum margin classifiers and im plicit feature spaces defined by kernel function.Presents a com prehensive com paris on of three mainstream learning alg orithms:S VM light,Bsvm,and SvmFu using face detection,M NIST,and USPS hand2written digit recognition applications.K ey w ords:S tatistical Learning T heory;Support Vector Machine;T raining Alg orithms1 引言支持向量机(Support Vector Machine)是贝尔实验室研究人员V.Vapnik等人[30]在对统计学习理论三十多年的研究基础之上发展起来的一种全新的机器学习算法,也是统计学习理论第一次对实际应用产生重大影响。

S VM是基于统计学习理论的结构风险最小化原则的,它将最大分界面分类器思想和基于核的方法结合在一起,表现出了很好的泛化能力。

由于S VM 方法有统计学习理论作为其坚实的数学基础,并且可以很好地克服维数灾难和过拟合等传统算法所不可规避的问题,所以受到了越来越多的研究人员的关注。

近年来,关于S VM方法的研究,包括算法本身的改进和算法的实际应用,都陆续提了出来。

但是,到目前为止,还没有看到有关支持向量算法总体评价和系统比较的工作,大多数研究人员只是用特定的训练和测试数据对自己的算法进行评价。

由于支持向量机的参数与特定的问题以及特定的训练数据有很大的关系,要对它们进行统一的理论分析还非常困难,本文试从实验的角度对目前具有代表性的算法和训练数据进行比较,希望这些比较所得出的经验结论能对今后的研究和应用工作有指导意义。

本文所用的比较算法主要有S VM light[14],Bsvm[12]和SvmFu[25],它们分别由美国C ornell University的Thorsten Joachims教授,National T aiwan U2 niversity的Chih2Jen Lin教授和美国麻省理工学院Ryan Rifkin博士编写的,在实验的过程中,笔者对算法进行了修改。

由于这些算法有很大的相似之处,而且训练支持向量机是一个凸函数的优化过程,存在全局唯一的最优解,训练得到的模型不依赖于具体的算法实现,因此,本文在实验过程中不对具体的算法做不必要的区别。

实验所采用的训练和测试数据也是目前非常有代表性的,它们大部分由国内外研究人员提供。

2 比较所用数据简介本文所用的人脸检测数据是从美国麻省理工学院生物和计算学习中心[31](Center for Biological and C omputational Lear2 ning)得到的,这些数据是CBC L研究人员在波士顿和剑桥等地收集的,每个训练样本是一个由19×19=361个像素组成的图像,我们用一个361维的向量来代表每一个图像,每一个分量代表对应的像素值。

用于训练的样本共有6977个,其中有2429个是人脸,其余4548个是非人脸;在测试样本集中共有24045个样本,包含472个人脸和23573个非人脸。

这是一个两类分类问题。

图1是训练样本中部分人脸的图像。

图1 人脸检测数据中部分人脸的图像M NIST手写数字识别数据是由美国AT&T的Y ann LeCun 博士收集的[32],每个样本是0~9中的一个数字,用28×28= 784维的向量表示。

在训练集中有60000个样本,测试集中有10000个样本。

图2是训练样本中前100个样本的图像。

USPS手写识别数据是由美国麻省理工学院和贝尔实验室的研究人员共同从U.S.P ostal Service收集的[33],每个样本是0~9中的一个数字,用16×16=256维的向量中的各个分量表示所对应像素的灰度值。

训练集中共有7291个样本,测试集中有2007个样本。

图3是训练集中部分样本的图像。

・81・计算机应用研究2004年收稿日期:2003206220;修返日期:20032112123 人脸检测数据的分析比较由文献[14,21]可知,S VM训练过程中的大部分时间花在了核函数的计算上,我们在实验过程中采用了缓冲核函数的方法。

除特殊说明外,本文的所有仿真实验中缓冲区的大小统一取40M B。

对于缓冲的替换策略,我们依照文献[14]中的做法,采用Least Recently Used的方法,将最长时间没有使用过的值替换出去,以便为最近计算出的值让出缓冲空间。

由于规范化参数C对最后的分类结果有很大的影响,因此,我们在实验过程中不断调整C的值,以期达到最佳效果。

表1列出了核函数为径向基函数时S VM在人脸检测中的仿真结果。

表1中的T ime是训练所用的时间,Accuracy是测试精度,NumS V为支持向量的个数,Num BS V是α值为边界值C的支持向量的个数。

表1 核函数K(x,y)=exp(-0.013‖x-y‖2)时对应于不同C值的实验结果C T ime(s)Accuracy NumS V Num BS V116197.81%(23518/24045)7665941011698.29%(23633/24045)449475011398.31%(23638/24045)439010011498.31%(23638/24045)4350200/10011398.38%(23656/24045)4350500/10011598.31%(23638/24045)435050011798.27%(23638/24045)4280100012198.23%(23638/24045)4170 在调整参数C的过程中,我们发现当C逐渐增大时,训练所需时间有增加的趋势;当C大于100时,测试精度有所下降,此结果符合文献[12]中得出的结论,即随着C的增加,测试精度首先增高,超过一定值以后,精度开始下降。

同时,随着C 的增加,支持向量的个数严格减少,处于边界值的支持向量的个数迅速减少,直到为0。

在训练样本中,我们注意到人脸和非人脸两类样本的数目相差近两倍(2429/4548),样本的不平衡可能使分类面偏离最佳位置,于是我们在C=100时,给人脸和非人脸两类样本赋予不同的惩罚系数,结果显示此策略可以提高预测精度。

于是我们建议在各类样本数目不平衡的情况下,对于样本较少的类别施加较大的错分惩罚系数,惩罚系数的大小应该与各类样本数成反比。

为了验证上述结论,我们进一步增大错分惩罚系数的比例,结果显示如果这个比例过大则会适得其反,矫枉过正,造成精度进一步下降。

为了验证缓冲部分核函数值对于训练速度的影响,我们在C=100处不断调整缓冲区的大小。

表2列出了缓冲区在0M B (没有缓冲核函数)~100M B之间变化时所对应的训练时间。

从表2可以看出,缓冲策略对提高训练算法的速度有非常重要的影响,当缓冲区的大小大于40M B时,训练时间下降得比较缓慢,这表明核函数的计算已经不再成为阻碍算法快速收敛的障碍,其他部分的计算时间占据了算法运行的大部分时间,此时如果继续增大缓冲区,将不会进一步加快算法的速度。

表2 缓冲区在0M B~100M B之间变化时所对应的训练时间Cache(M B)0151020304050100T ime(s)340484663521901621421141071014 MNIST数据的分析比较M NIST手写数字识别数据共有60000个训练样本和10000个测试样本。

由于此数据数量大,维数高(784维),为了避免训练时间过长,我们将缓冲区增加到80M B。

表3是在核函数为径向基函数时得到的实验结果。

表3 核函数K(x,y)=exp(-0.013‖x-y‖2)时M NIST数据的实验结果C T ime(m)Accuracy NumS V Error Rate(%)105596.10%(9610/10000)12174 3.90505897.38%(9738/10000)9917 2.621006197.60%(9760/10000)9517 2.405006497.59%(9759/10000)9415 2.4110006797.56%(9756/10000)9399 2.44 由表3可知,当C取100时,测试精度达到最高,进一步增加参数C值,则会使错分率增大,训练时间增加。

因此,如何在训练前决定C的值是一个非常重要的问题。

然而,得到C 的最佳值是很困难的,C的取值和特定的问题有很大的关系,目前还没有一个一般意义下的方法指导我们去选择C的初值,一般的做法是用实验的方法试凑。

由表3还可以看出,随着C的增大,支持向量的个数严格减少。

5 USPS数据的分析比较USPS是一个十类数据分类问题,训练集中有7291个样本,测试集中有2007个样本。

B.Sch¨o lkopf等人[27]用USPS数据对基于径向基函数的S VM和R BF网络进行了比较,具体的做法是,他们在文献[27]中构造了三个分类器:①传统的R BF 网络,即用聚类的方法选中心,误差反向传播方法训练输出层的权值;②用支持向量作为R BF的中心,然后再用误差反向传播方法训练输出层的权值;③S VM分类器。

相关文档
最新文档