支持向量机优缺点
- 格式:docx
- 大小:13.58 KB
- 文档页数:1
机器学习算法的优缺点比较机器学习是一种通过计算机算法构建模型并利用数据进行自动化学习的方法。
它已经在各个领域展现出巨大的潜力,包括自然语言处理、图像识别、医疗诊断等。
然而,每种机器学习算法都有其优点和缺点。
在本文中,我们将重点讨论几种常见的机器学习算法,并比较它们的优点和缺点。
一、支持向量机(Support Vector Machine,SVM)支持向量机是一种监督学习算法,其主要优点包括:1. 高效的非线性分类器:支持向量机可以有效地进行非线性分类,通过使用不同的核函数,可以将数据映射到高维空间,使得在低维空间中不可分的数据变得可分。
2. 抗噪声能力强:支持向量机在处理包含噪声的数据时表现出色,它通过最大化边界来提高对噪声的鲁棒性。
3. 可以处理高维数据:支持向量机在高维数据集上表现良好,可以处理成千上万个维度的数据,例如图像识别中的像素数据。
然而,支持向量机也有一些缺点:1. 对于大规模数据集训练时间较长:当训练数据集非常大时,支持向量机的训练时间可能会变得很长。
2. 参数选择挑战:支持向量机有多个参数需要调整,包括核函数的选择和正则化参数的设置,这对于初学者来说可能是一个挑战。
二、决策树(Decision Tree)决策树是一种基于树形结构的机器学习算法,其主要优点包括:1. 可解释性强:决策树提供了对决策过程的清晰解释,可以轻松理解算法是如何根据特征进行判断的。
2. 可处理不完整数据:决策树可以处理含有缺失数据的数据集,而其他算法可能需要对缺失值进行填充或删除。
3. 对异常值不敏感:决策树对异常值不敏感,因为它是基于特征来进行分割的,而不是依赖于全部数据。
决策树也有一些缺点:1. 容易过拟合:决策树在处理复杂数据时容易过拟合,这意味着模型在训练数据上表现良好,但在新数据上的泛化能力较差。
2. 对连续性特征处理相对较差:决策树更适用于离散型特征的处理,对于连续性特征的处理相对较差。
三、神经网络(Neural Network)神经网络是一类模拟人脑神经元网络的机器学习算法,其主要优点包括:1. 能够处理非线性问题:神经网络可以用于处理非线性关系的问题,并且在许多任务上表现出色,如图像识别和自然语言处理。
机器学习--⽀持向量机(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()输出结果:。
机器学习中的支持向量机算法及其应用随着人工智能技术的不断发展,机器学习算法成为了AI领域的重要组成部分。
而支持向量机算法则是机器学习中的一种重要算法,被广泛应用于分类、回归和异常检测等领域。
本文将对支持向量机算法进行介绍,并探讨其在实际应用中的优势和局限性。
一、支持向量机算法的定义和原理支持向量机是一种用于二分类、多分类和回归的监督学习算法。
其主要思想是将数据集映射到高维空间中,找到一个最优超平面来划分不同的类别。
其中,“支持向量”指的是距离分类超平面最近的样本点,而“超平面”则可以理解为一个线性分类器,将数据集划分为不同的类别。
具体来说,支持向量机算法可以通过以下步骤实现:1.将输入数据集从低维空间映射到高维空间,使得不同类别的数据可以更好地分离,即寻找一个核函数来实现数据的映射。
2.在高维空间中寻找一个最优超平面,使得两个分类的数据集距离该超平面的距离最大化,即寻找一个能够最大程度区分不同类别数据的分类超平面。
3.预测新数据时,将其映射到高维空间中,并按照超平面的位置将其划分为不同的类别。
二、支持向量机算法的应用支持向量机算法广泛应用于分类、回归和异常检测等领域。
以下将分别介绍其应用:1.分类在分类问题中,支持向量机算法主要用于将数据点分为两类或多类。
例如,在人脸识别方面,支持向量机算法可以通过数据集中已知的脸部图像和非脸部图像来训练模型,然后使用该模型来识别新的脸部图像。
2.回归在回归问题中,支持向量机算法主要用于将数据点拟合到一个连续的函数中。
例如,在预测股票价格方面,支持向量机算法可以通过历史股票价格数据来训练模型,并预测未来股票价格的趋势。
3.异常检测在异常检测中,支持向量机算法可以用于发现不同于正常行为模式的模式。
例如,在信用卡欺诈检测方面,支持向量机算法可以通过已知的欺诈案例数据集来训练模型,然后使用该模型来检测新的欺诈行为。
三、支持向量机算法的优势和局限性支持向量机算法具有以下几个优势:1.对于高维空间的处理能力较强。
支持向量机与神经网络算法的对比分析支持向量机(Support Vector Machine,SVM)和神经网络(Neural Network,NN)是两种常用的机器学习算法,它们在解决分类和回归问题上都具有较强的应用能力。
本文将从原理、优缺点、适用场景和实际应用等方面进行对比分析,以帮助读者更好地理解和选择适合自己需求的算法。
一、原理对比1、支持向量机(SVM)原理支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。
简单来说,SVM的目标是找到一个最佳的超平面,将不同类别的样本分开,并且使得两个类别之间的间隔最大化。
当数据线性不可分时,可以通过核函数方法将数据映射到高维空间,实现非线性分类。
2、神经网络原理神经网络是一种模仿人脑神经元网络结构设计的一种算法。
它由输入层、隐层和输出层构成,每一层中包含多个神经元单元。
神经网络通过不断调整连接权值和偏置,学习输入数据的特征,并将学到的知识用于分类和预测。
二、优缺点对比优点:SVM可以有效处理高维数据,且对于小样本数量的数据依然表现稳定,泛化能力强。
通过核函数可以处理非线性分类问题,具有较好的灵活性和泛化能力。
缺点:在大规模数据集上训练的速度较慢,需要耗费大量的计算资源。
对参数的选择和核函数的调整较为敏感,需要谨慎选择。
优点:神经网络可以通过不断迭代学习特征,适用于复杂的非线性问题。
对于大规模数据集和高维数据具有较好的处理能力。
缺点:神经网络结构较为复杂,需要大量的训练数据和时间。
神经网络的训练需要大量的计算资源,对参数的选择和网络结构的设计要求较高。
三、适用场景对比SVM适用于小样本、高维度的数据集,特别擅长处理二分类问题。
在文本分类、图像识别、生物信息学等领域有着广泛的应用。
神经网络适用于大规模数据集和复杂的非线性问题。
在语音识别、自然语言处理、图像识别等领域有着广泛的应用。
四、实际应用对比在文本分类领域,SVM常被用于垃圾邮件过滤、情感分析等任务中。
机器学习中的支持向量机原理及应用机器学习是一门以数据为基础,以预测或决策为目标的学科。
支持向量机是机器学习中的一种常见算法,它强调的是模型的泛化能力,独立于任何给定的输入样本集,且泛化误差尽可能小。
1. 支持向量机原理支持向量机是一种监督学习算法。
以二分类问题为例,其原理可以简单用“最大间隔超平面”来描述。
对于一个n维的特征空间,我们的目标就是要找到一个超平面,使得这个超平面将两个类别间的样本完全分开,并且对未知数据的分类能力最强。
如何定义“最大间隔”呢?我们首先在超平面两侧分别找到最靠近超平面的两个点,称之为支持向量点;这些支持向量点到超平面的距离和就是所谓的“间隔”。
在寻找最大间隔超平面时,我们的目标就是最大化这个间隔值。
同时,由于数据存在噪声、不可分等问题,我们需要一个优化目标,使其能够让分类错误率低。
这个目标在支持向量机算法中被形式化为一种“软”约束条件,用惩罚系数调整误差的大小。
2. 支持向量机应用支持向量机算法在实际应用中具有广泛的应用范围:分类,回归,异常检测等任务都可以使用它来完成。
2.1 分类在分类任务中,支持向量机常用于二分类问题,在高维数据分析中有很好的表现。
举个例子,我们可以使用支持向量机算法来判别肿瘤组织是恶性还是良性。
在这种情况下,我们使用一些之前的数据来生成一个分类器,然后根据这个分类器来对新病人进行分类。
2.2 回归在回归任务中,支持向量机可用于非线性回归和多变量回归等问题。
举个例子,我们可以使用支持向量机算法来预测一辆车的油耗量。
在这种情况下,我们使用一些之前的数据来生成一个回归器,然后根据这个回归器来对新的车辆进行预测。
2.3 异常检测异常检测是指在数据中找到异常值或离群点。
支持向量机也可以用于这种任务。
学习算法在训练数据中学习正常的模式,然后将这些模式应用于测试数据,从而发现异常点。
举个例子,我们可以使用支持向量机算法来检测网站服务器的攻击行为。
3. 支持向量机优缺点支持向量机的优点在于:(1)在高维空间上表现出很好的泛化能力(2)对于数据错误或噪声具有较好的容错能力(3)支持向量机算法在样本量较少的情况下也能够有效应用支持向量机的缺点在于:(1)支持向量机算法在计算量上比较大,对大数据量处理较为困难(2)支持向量机算法对于非线性问题的处理需要经过核函数的处理,核函数的选择对结果产生较大的影响。
支持向量机与神经网络的比较与优劣分析在机器学习领域,支持向量机(Support Vector Machine,SVM)和神经网络(Neural Network)是两种常见且广泛应用的算法。
它们都有着自己独特的特点和优势,但也存在一些局限性。
本文将对这两种算法进行比较与优劣分析。
一、支持向量机支持向量机是一种监督学习算法,主要用于分类和回归问题。
其核心思想是找到一个最优的超平面,将不同类别的样本分开。
SVM通过构建一个决策边界,使得不同类别的样本与该边界的距离最大化,从而实现分类。
SVM的优势在于:1. 可以处理高维数据集:SVM通过将数据映射到高维空间,将非线性问题转化为线性问题,从而提高了分类的准确性。
2. 泛化能力强:SVM通过最大化边界来选择最优的超平面,使得对未知数据的分类效果更好,具有较强的泛化能力。
3. 可以处理小样本问题:SVM的决策边界只与支持向量相关,而不依赖于整个数据集,因此对于小样本问题,SVM表现出较好的性能。
然而,SVM也存在一些不足之处:1. 计算复杂度高:SVM的训练时间复杂度为O(n^2),当数据量较大时,计算时间会显著增加。
2. 对参数和核函数选择敏感:SVM的性能很大程度上取决于参数和核函数的选择,需要进行大量的调参工作。
3. 不适用于大规模数据集:由于计算复杂度高,SVM在处理大规模数据集时效率较低。
二、神经网络神经网络是一种模仿生物神经系统的计算模型,由多个神经元(节点)组成的网络。
神经网络通过学习输入数据的特征和模式,进行分类和预测。
神经网络的优势在于:1. 可以处理非线性问题:神经网络通过多层隐藏层的组合,可以学习到复杂的非线性关系,适用于处理非线性问题。
2. 自适应性强:神经网络可以通过反向传播算法不断调整权重和偏置,从而提高模型的准确性和泛化能力。
3. 并行计算能力强:神经网络的计算过程可以并行处理,适用于大规模并行计算的场景。
然而,神经网络也存在一些不足之处:1. 容易过拟合:神经网络的参数较多,模型复杂度较高,容易在训练集上过拟合,对未知数据的泛化能力较差。
支持向量机算法的优缺点有哪些在当今数据驱动的时代,机器学习算法成为了从海量数据中挖掘有价值信息的重要工具。
支持向量机(Support Vector Machine,简称SVM)算法作为一种经典的机器学习算法,在诸多领域都有着广泛的应用。
然而,就像任何事物都有两面性一样,SVM 算法也有其独特的优点和不可忽视的缺点。
一、支持向量机算法的优点1、在高维空间中表现出色SVM 算法的一个显著优点是在处理高维数据时具有良好的性能。
在现实生活中,很多数据的特征维度非常高,例如图像识别、文本分类等领域。
SVM 算法通过使用核函数,将数据映射到高维空间中,从而能够有效地处理复杂的非线性分类问题。
这种在高维空间中进行分类的能力,使得 SVM 在处理具有大量特征的数据集时,能够找到最优的分类超平面。
2、泛化能力强SVM 算法追求的是结构风险最小化,而不仅仅是经验风险最小化。
这意味着它不仅关注在训练数据上的表现,更注重在新的、未见过的数据上的预测能力。
通过寻找具有最大间隔的分类超平面,SVM 能够有效地避免过拟合问题,从而具有较强的泛化能力,能够在不同的数据集上取得较为稳定的性能。
3、对小样本数据有效在实际应用中,很多情况下我们可能只有相对较少的样本数据。
SVM 算法在小样本情况下仍然能够有效地进行学习和分类。
这是因为它的决策边界主要由支持向量决定,而不是依赖于所有的数据点。
因此,即使样本数量较少,只要这些样本具有代表性,SVM 仍然能够构建出较为准确的分类模型。
4、理论基础扎实SVM 算法具有坚实的数学理论基础,其背后的优化理论和统计学原理为算法的性能和可靠性提供了有力的保障。
这种理论上的严谨性使得 SVM 算法在实际应用中更容易被理解和解释,也为算法的改进和优化提供了明确的方向。
5、可以处理非线性问题通过引入核函数,SVM 可以将输入空间中的非线性问题转化为高维特征空间中的线性问题,从而实现非线性分类。
常见的核函数如多项式核函数、高斯核函数等,为处理不同类型的非线性数据提供了灵活的选择。
支持向量机算法在数据分类中的应用论文素材支持向量机算法在数据分类中的应用引言:数据分类是机器学习领域中的一个重要问题,其目标是根据已有的数据样本,将新的未知数据样本自动归类。
支持向量机(Support Vector Machine,SVM)作为一种有效的分类方法,已经在许多领域得到广泛应用。
本文将探讨支持向量机算法在数据分类中的应用,并论述其优点和局限性。
1. 支持向量机算法简介1.1 支持向量机原理支持向量机是一种二分类模型,其基本思想是找到一个超平面,将样本空间分为两个不同类别区域。
该超平面由距离最近的一些样本点所确定,这些样本点被称为支持向量。
支持向量机通过求解一个凸二次规划问题,得到一个最优超平面。
1.2 支持向量机的数学模型在支持向量机中,给定一组训练样本集合{(x1, y1), (x2, y2), ..., (xn, yn)},其中xi表示输入样本,yi表示对应的输出标签,yi∈{-1, +1}。
支持向量机的目标是找到一个超平面W·X + b = 0,使得对于所有样本(x, y),满足y(W·X + b) ≥ 1,并且最小化||W||。
2. 支持向量机在数据分类中的应用2.1 文本分类支持向量机在文本分类中得到了广泛的应用。
通过将文本转化为向量表示,可以利用支持向量机算法实现自动的文本分类。
例如,在垃圾邮件过滤中,支持向量机可以根据已有的标记样本,将新的邮件自动分类为垃圾邮件或非垃圾邮件。
2.2 图像识别支持向量机在图像识别领域也有重要应用。
通过提取图像的特征向量,可以使用支持向量机算法来实现图像的分类和识别。
例如,支持向量机可以用于人脸识别,根据训练好的模型,将新的人脸图像自动分类为已知的人脸。
2.3 生物信息学支持向量机在生物信息学中也有广泛的应用。
例如,在蛋白质分类中,可以使用支持向量机算法来预测蛋白质的功能类型。
通过将蛋白质的特征向量作为输入,支持向量机可以学习和分类不同类型的蛋白质。
如何使用支持向量机解决多分类问题支持向量机(Support Vector Machine,简称SVM)是一种常用的机器学习算法,广泛应用于多分类问题的解决中。
本文将介绍如何使用支持向量机解决多分类问题,并探讨其原理和应用。
一、支持向量机的原理支持向量机是一种基于统计学习理论的监督学习方法,可以用于二分类和多分类问题。
其核心思想是将数据映射到高维空间,并在该空间中找到一个最优的超平面,将不同类别的样本分隔开。
支持向量机的原理可以简单概括为以下几个步骤:1. 数据预处理:对原始数据进行特征提取和预处理,如归一化、标准化等操作,以便更好地应用支持向量机算法。
2. 特征映射:将数据映射到高维空间,以便在该空间中更好地进行分类。
常用的映射方法有多项式核函数、高斯核函数等。
3. 寻找最优超平面:在高维空间中,寻找一个最优的超平面,使得不同类别的样本点尽可能远离该超平面,并且使得分类边界最大化。
4. 分类预测:利用找到的最优超平面对新的样本进行分类预测。
二、支持向量机在多分类问题中的应用支持向量机在多分类问题中的应用主要有两种方法:一对一(One-vs-One)和一对其余(One-vs-Rest)。
1. 一对一方法:该方法将多分类问题转化为多个二分类问题。
对于N个类别的问题,需要构建N*(N-1)/2个二分类器。
每个二分类器都用来区分两个类别,最后通过投票或加权投票的方式确定最终的分类结果。
2. 一对其余方法:该方法将多分类问题转化为N个二分类问题。
对于每个类别,构建一个二分类器,将该类别作为正例,其他类别作为负例。
最后通过投票或加权投票的方式确定最终的分类结果。
三、支持向量机的优缺点支持向量机作为一种经典的机器学习算法,具有以下优点:1. 可以有效处理高维特征空间中的数据,适用于复杂的多分类问题。
2. 在训练过程中,只使用了一部分支持向量,大大减少了存储和计算的开销。
3. 通过引入核函数,可以将非线性问题转化为线性问题,提高了分类的准确性。
SVM有如下主要几个特点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
(4)SVM 是一种有坚实理论基础的新颖的小样本学习方法。
它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。
从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
(5)SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。
这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
两个不足:
(1) SVM算法对大规模训练样本难以实施
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。
针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法
(2) 用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。
可以通过多个二类支持向量机的组合来解决。
主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。
主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。
如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。