LSSVM相关教程
基于PSO的LS-SVM特征选择与参数优化算法
基于PSO的LS-SVM特征选择与参数优化算法姚全珠;蔡婕【摘要】针对最小二乘支持向量机特征选择及参数优化问题,提出了一种基于PSO 的LS-SVM特征选择与参数同步优化算法.首先产生若干种群(特征子集),然后用PSO算法对特征及参数进行优化.在UCI标准数据集上进行的仿真实验表明,该算法可有效地找出合适的特征子集及LS-SVM参数,且与基于遗传算法的最小二乘支持向量机算法(GALS-SVM)和传统的LS-SVM算法相比具有较好的分类效果.【期刊名称】《计算机工程与应用》【年(卷),期】2010(046)001【总页数】4页(P134-136,229)【关键词】最小二乘支持向量机;特征选择;参数优化;粒子群算法【作者】姚全珠;蔡婕【作者单位】西安理工大学计算机科学与工程学院,西安,710048;西安理工大学计算机科学与工程学院,西安,710048【正文语种】中文【中图分类】TP301YAO Quan-zhu,CAI Jie.Feature selection and LS-SVM parameters optimization algorithm based on puter Engineering and Applications,2010,46(1):134-136.分类问题是模式识别领域的核心问题,主要包括分类器模型的选择、特征选择及分类器参数优化等问题。
Vapnik在1995年提出一种新型统计学习方法-支持向量机(Support Vector Machines),已成为机器学习界的研究热点,并在很多领域都得到了成功的应用[1]。
近年来,SuyKensJ.A.K提出最小二乘支持向量机方法(Least Squares Support Vector Machines)[2],基于结构风险最小的LS-SVM 为SVM的约简,训练简易,性能良好。
和其它学习算法一样,其性能依赖于学习机的参数。
如何确定最优参数,一直是提高LS-SVM学习和泛化能力的主要研究问题之一。
pylssvm的用法
Pylssvm是Python语言中的一个包,用于实现Least Squares Support Vector Machines (LS-SVM)算法。
LS-SVM是支持向量机(SVM)的一种变体,它通过最小二乘法来求解支持向量机的对偶问题,相比传统的SVM具有更快的训练速度和更好的泛化能力。
以下是pylssvm包的基本用法:
安装:
```bash
pip install pylssvm
```
使用示例:
```python
import numpy as np
from pylssvm import LS_SVM
# 准备训练数据
X = np.array([[0, 0], [1, 1], [1, 0], [0, 1]])
y = np.array([1, 1, -1, -1])
# 创建LS-SVM模型并进行训练
model = LS_SVM()
model.fit(X, y)
# 进行预测
X_test = np.array([[2, 2], [-1, -1]])
predictions = model.predict(X_test)
print(predictions)
```
以上代码演示了如何使用pylssvm包创建LS-SVM模型、进行训练和预测。
你也可以根据自己的数据集和需求,调整参数并进行更复杂的操作。
希望这些信息能够帮助到你!如果你有其他问题,欢迎继续提问。
Libsvm配置教程
Libsvm配置教程一、安装1.下载:小编系统是Windows10 64位,Matlab版本是2016a,Visual Studio版本是2 013,Libsvm版本是Libsvm- 3.22。
Libsvm库下载:.tw/~cjlin /libsvm/详解:/thread-11925-1-1.html。
2.编译:如果你使用的是64位的操作的系统和Matlab,那么不需要进行编译步骤,因为自带软件包中已经包含有64位编译好的版本:libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。
否则,需要自己编译二进制文件。
目的:将libsvm-3.11\matlab中libsvmwrite.c等C++文件编译成 libsvmread.mexw32 等matlab文件,这样就可以在command window中被直接调用了。
首先在Mtlab中进入LIBSVM根目录下的Matlab目录(如C:\libsvm-3.17\matlab),在命令窗口输入:Mex –setup(注意中间有空格!)点击选择C++;命令行输入:make(注意,Matlab或VC版本过低可能会导致编译失败,建议使用最新的版本。
)编译成功后,当前目录下会出现若干个后缀为mexw64(64位系统)或mexw32(32位系统)的文件。
同时,可以看到在当前目录下生成类似下图中的文件。
对应的train.mexw32和predict.mexw32是svmtrain.mexw32和svmpredict.mexw32到这一步,Libsvm安装成功。
3. 重命名(可选,但建议执行)编译完成后,在当前目录下回出现svmtrain.mexw64、svmpredict.mexw64(64位系统)或者svmtrain.mexw32、svmpredict.mexw32(32位系统)这两个文件,把文件名svmtrain 和svmpredict相应改成libsvmtrain和libsvmpredict。
LSSVM相关教程
四种支持向量机用于函数拟合与模式识别的Matlab示例程序陆振波点这里下载:四种支持向量机用于函数拟合与模式识别的Matlab示例程序使用要点:应研学论坛《人工智能与模式识别》版主magic_217之约,写一个关于针对初学者的《四种支持向量机工具箱》的详细使用说明。
同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。
本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。
本文适合没有模式识别基础,而又急于上手的初学者。
作者水平有限,欢迎同行批评指正![1]模式识别基本概念模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。
特别说明的是,本文所谈及的模式识别是指“有师分类”,即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。
正确识别率是反映分类器性能的主要指标。
分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。
试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。
工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。
特征提取就是将一维矢量或二维矩阵转化成一个维数比较低的特征矢量,该特征矢量用于分类器的输入。
关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。
[2]神经网络模式识别神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。
以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。
基于CNN和LSSVM的人脸图像年龄估计方法
给出一个大概的年龄段。文献 [3] 采用仿生特征进行年龄估 计,根据人脸图像预定义了一些不同方向和尺度的 Gabor 滤 波器来提取年龄特征。另一个用于估计人脸图像年龄的代表 性方法是使用衰老模式空间,基本思想是使用分类的个体人 脸图像,为年龄估计构造衰老空间。将测试人脸的年龄标签 通过投影到用于重构人脸图像的子空间进行预测。这类方法 的优点是构造的学习空间可以处理序列中缺少的年龄。 本文提出了一种基于学习的年龄估计方法,使用卷积神 经 网 络(Convolution Neural Network,CNN), 通 过 不 断 的学习来获得能够表示年龄的有效人脸特征。然后,将每个 年龄设置为一类,通过最小二乘支持向量机(Least Squares
信息与电脑 China Computer&Communication
算法语言
Support Vector Machine,LSSVM)对特征进行分类,从而估 计出年龄。在 Morph Album 和 FG-NET 标准数据集上的实验 结果表明,提出的方法具有较高的估计精度。
层组成。第 L1 层为输入层,使用一个 60×60 的二维灰度人 脸图作为输入数据,输入到卷积核大小为 5×5 的第一个卷 积层中。然后,经过一个 a×b 的滤波器映射到一个 h×w 的 特征图中,输出数据的尺寸为 (h-a+1)×(w-b+1)。第 L2 层中, 将特征图进行卷积,卷积后的尺寸为 56×56。使用一个激活 函数来获取特征图。在同一个特征图中,所有神经元共享滤 波器的权值。第 L3 层中,将第 L2 层获得的特征图进行 2×2 的下采样。这使得空间分辨率缩小的同时,特征图的数量保 持不变。 下采样层的作用是对卷积网络输出结果进行 “滤波” 。 这个操作对于局部平移和旋转具有非常高的鲁棒性。第 L4 层 中,将第 L3 层的特征图进行卷积核大小为 7×7 的卷积。第 L5 层同样对第 L4 层输出的特征图进行下采样。第 L6 层由 80 个尺寸为 1×1 的特征图组成。每个单元对应连接到第 L5 层 的每个特征图上。第 L7 层为输出层,与第 L6 层进行全连接, 获得底层特征,包括边缘和纹理。 在训练阶段,利用带年龄标签的人脸图像来进行监督学习。 训练完 CNN 后,就可以从不同层提取特征。本文发现 CNN 层 中的特征维数非常高,比如 层训练的特征高达 5 808 维。出于 效率的考虑,本文使用主成分分析(PCA)来降低特征维数。 假设 Xl=[x1,…,xN] 是从第 l 层中提取的 N 个样本的特征 向量,每个特征的维数为 T。PCA 的目的是找到投影矩阵 P,使用该矩阵将 Xl 投影到新的子空间 Yl,即 Yl=PTXl,其中 Yl=[y1,…,yN] 且特征维数为 t,t < T。P 满足 P=argminPTCP, 其中 P = 1,C 为协方差矩阵, C =
LS SVM中文使用说明
R2008b,R2009a 测试,工具箱中参考命令都以打印字体书写。 LS – SVMlab 主页: http://www.esat.kuleuven.be/sista/lssvmlab/
对单个和多个输出回归和分类的函数都可以使用。训练和模拟可以做到为每个输出 分别通过传递不同的核函数,内核和/或作为列向量正规化参数。执行工具箱中其他核函数 也是简单的。
一个模型的性能依赖于输入数据和输出数据的缩放。一个适当的算法检测,适当的 重新调整重设比例,分类和二进制变量。
2.1.1 分类扩展 调用函数:codelssvm, code, deltablssvm, roc, latentlssvm 演示:Subsection, democlass
所有 CMEX 和/或 C 文件已被删除。求解 线该性系统通过使用 MATLAB 命令“反斜杠” (\)
第一章 引言
在解决非线性分类,函数估计和密度估计问题中,支持向量机是一个很强大的方法,支 持向量机也致使了其核心的新动向,最新发展事基于一般学习方法的。支持向量机应经被引 入统计学习理论和结构风险最小化之中。这些方法中,凸优化问题,解决了一个典型的二次 规划问题。LS-SVM 是标准 SVM 的改进,这样就可以解决线性 kkt 系统的问题了。最小二 乘支持向量机与正规化网络和高斯过程密切相关,但更加重视和利用原始对偶的规范条款解 释。经典的模式识别算法的内核版本如判别分析的内核 Fisher,以非监督学习、循环式网络 扩展和控制之间的链接是可用的。健全性、稀疏性、权重可以被应用到 LS-SVM 上,并具 有三个层次的推理贝叶斯框架已经制定。LS – SVM 像原始对偶那样配方给予核 PCA,核 CCA 和 PLS。对于非常大的规模问题和在线学习,一个固定大小的 LS - SVM 方法被提出, 它基于 Nystrom 在原始空间中支持向量的积极选择和估计的近似值。原始对偶申述的方法 被开发为核心谱聚类,数据可视化,降维和生存分析。
混沌时间序列的LSSVM预测方法
混沌时间序列的LSSVM预测方法莫小琴;李钟慎【摘要】Based on the phase space reconstruction theory,prediction model of chaotic time series using least squares support vector machine (LSSVM)was presented in this paper,and particle swarm optimization (PSO)was used to solve the LSSVM parameter optimization problems.By comparing with the established prediction model of RBF neural net-work,the root mean square error of the prediction model was calculated to evaluate the performance of the model.The re-sults show that the PSO optimized LSSVM prediction model has higher prediction accuracy.%结合相空间重构理论,提出运用最小二乘支持向量机(LSSVM)建立混沌时间序列的预测模型,并用粒子群优化(PSO)解决 LSSVM参数寻优的问题。
通过与 RBF 神经网络构建的预测模型相比较,计算预测模型的均方根误差来评价模型的性能。
结果表明:采用PSO优化的 LSSVM预测模型的预测精度更高。
【期刊名称】《华侨大学学报(自然科学版)》【年(卷),期】2014(000)004【总页数】5页(P373-377)【关键词】混沌时间序列;相空间重构;最小二乘支持向量机;粒子群优化;预测模型【作者】莫小琴;李钟慎【作者单位】华侨大学机电及自动化学院,福建厦门 361021;华侨大学机电及自动化学院,福建厦门 361021【正文语种】中文【中图分类】TP216.1随着混沌理论研究的不断深入,混沌时间序列预测已成为非常重要的一个研究方向,并广泛应用于信号处理、自动控制等领域[1].但混沌系统对初值的极端敏感性使其很难进行精确的预测.相空间重构是混沌时间序列预测的基础,重构效果的好坏直接影响着预测的精度.选用互信息法[2]和Cao提出改进的模糊神经网络(fuzzy neural network,FNN)算法[3]分别对相空间重构参数进行确定,能够实现比较好的重构效果.最小二乘支持向量机(least squares support vector machines,LSSVM)是一种新型的预测方法,拥有强大的学习能力,能很好地解决神经网络结构训练时容易陷入局部极小和过拟合等问题[4-5].但是LSSVM在不同参数作用下,预测性能会有很大的差别.粒子群优化(particle swarm optimization,PSO)是近年来发展比较快的一种简单可行的智能寻优算法,能快速有效地解决如何寻找合适参数的问题[6].因此,本文在结合相空间重构理论的基础上,提出PSO算法优化的LSSVM的混沌时间序列预测模型,分别对一阶Logistic、二阶Henon、三阶Lorenz等3种典型混沌时间序列进行预测,并与RBF神经网络的预测结果[7]进行比较.1 时间序列相空间重构1.1 相空间重构相空间重构提出从高维的相空间中恢复混沌吸引子[8].它的思想是系统中任一个分量的演化进程都是由其他与其相互作用的分量决定的,所以通过分析某一分量的一批时间序列数据,能提取和恢复出原系统的规律.根据Takens定理,当吸引子的分形维数为d时,选择合适的延迟时间τ和嵌入维数m,且满足m≥2d+1,对混沌时间序列{x(t)},t=1,2,…,n进行相空间重构,即对n步后的预测为式(2)中:F(·)为构建的预测模型.由F(x(k-m),x(k-m+1),…,x(k-1))和Y(k)=x(k)组成的样本对,训练并建立LSSVM预测模型,从而完成对混沌时间序列的预测.1.2 重构相空间参数的选取相空间重构吸引子的成败在于延迟时间和嵌入维数的选取,并且这2个参数的选取是互不相关的[9].互信息法是一种有效估计延迟时间的方法.Shaw 提出互信息第一次到达最小时滞时即为延迟时间[10].定义计算延时时间τ的公式为式(3)中:P(xn,xn+τ)为时间序列{xn}和{xn+τ}的联合概率;I(τ)为某一时间序列包含另一时间序列信息的概率,当I(τ)为第一个极小值时,τ的取值就是最佳的延迟时间.CAO方法是对FNN算法改进后提出的一种选择最佳嵌入维数的方法[3].其运算步骤为如下.在d维空间中,每一个相点矢量X(i)都有一个某距离内的最邻近点NNN(i),两者距离为Rd(i),当维数增加到d+1时,两相点的距离发生变化,则在d+1维相空间中的距离为若Rd+1(i)远大于Rd(i),可认为这两点是伪邻近点.CAO方法定义计算嵌入维数的公式为计算所有a2(i,d)的平均值,得到计算m维到m+1维的变化,可得式(7)中:随着m的变化,E1(m)达到饱和,此时,m+1取值就是所求的最佳嵌入维数.采用这2种方法分别确定的3种典型混沌时间序列的延迟时间(τ)以及嵌入维数(m),如表1所示.通过对比重构吸引子的几何形状与原吸引子之间的相似性,以及不同延迟时间所产生的差异性,可以验证这2种方法选取的参数能够达到比较好的重构效果[8].表1 实验参数Tab.1 Experimental parameters混沌系统动力系统λ=4 a=1.4,b=0.3 s=16,b=4,r=45.参数 Logistic混沌系统 Henon混沌系统 Lorenz 92 LSSVM 参数(γ,σ)(90,0.01)(80,0.05)(100,6)τ/s 6 1 11 m 2 3 32 基于LSSVM的回归预测2.1 LSSVM 模型选取延迟时间τ和最优嵌入维数m后,构造样本数据对式(8)中:Xi(i=1,2,…,M)为预测输入数据;yi(i=1,2,…,M)为对应的输出数据.对于一个给定的训练样本数据集(Xi,yi)(i=1,2,…,l),在高维空间中用线性函数拟合样本,可得式(9)中:wT为二次规划问题解的矩阵;φ(·)为非线性映射关系函数;b为常值偏差.时间序列的数据集被非线性映射函数φ(·)由输入空间映射到特征空间,这样就把相应的预测问题转化优化的问题.LSSVM的目标优化函数为约束条件为建立Lagrange函数式(10)~(12)中:ε为指数;a为拉格朗日乘子;γ为正则化参数.根据最优化条件对L(w,b,ε,a)进行求偏导并消去εi和w 后,把优化问题转化为求解下列线性方程组,即式(13)中:Y=[y1,y2,…,yl]T;α=[a1,a2,…,al]T;Γ=[1,1,…,1]T;I为单位阵;Ω 可表示为式(14)中:K(·)为满足Mercer条件的核函数.以最小二乘法求解系数ai和偏差b,可得混沌时间序列的LSSVM预测模型为式(15)中:σ为径向基宽度是一个待定参数.2.2 PSO参数寻优PSO算法[11]起源于对鸟群捕食行为的研究,是一种模拟群体智能行为的优化算法.其基本原理是:每一次迭代,粒子通过跟踪个体极值Pbest和全局极值gbest这2个极值来更新自己的速度和位置;之后根据目标值的大小选择最优参数再次进行训练,直到得到目标训练模型.在找到2个最优解时,粒子根据下式来更新自己的速度和位置,即式(16),(17)中:ω 是惯性权重因子;v为粒子速度;χ 为当前粒子位置;r1,r2 为介于(0,1)之间的随机数;C1,C2 为学习因子,通常取1.5. LSSVM模型正则化参数γ和径向基宽度σ的选取对预测精度有很大的影响[12].文中采用PSO算法来优化LSSVM参数.基本步骤如下:1)随机产生一组{γ,σ}作为粒子的初始位置,读取样本数据;2)进行LSSVM训练,计算训练样本的均方误差作为验证误差;3)以验证误差作为适应值,同时记忆个体与群体对应的最佳适应值的位置,再根据PSO优化方程搜索更好的{γ,σ};4)重复训练与计算误差直到满足结束条件.3 仿真研究把一维Logistic系统、二维Henon系统和三维Lorenz系统3种典型的混沌系统作为研究对象.通过迭代计算得到混沌时间序列,均去掉前3 000个暂态数据,选取后3 000点作为实验数据,对所选数据进行归一化处理,选取合适的延迟时间和嵌入维数,对3种典型的混沌时间序列进行相空间重构.选用其中1 500个作为训练数据,应用相应的测试模型进行学习和预测,后1 500个作为测试数据.在PSO优化模型[13]中,采用的粒子种群数为20,最大迭代次数90,惯性权重为0.9.运行PSO优化模型,不断更新粒子当前的最优位置,分别得到3种混沌时间序列的LSSVM最优参数{γ,σ},结果如表1所示.为了衡量预测模型的有效性和精确度,采用均方误差(RMSE)作为评价整体预测性能的指标,即式(18)中:x(n)是第n个时间序列的实际值;^x(n)是预测值.应用LSSVM预测模型分别对3种典型混沌系统进行预测,表达式与预测结果如下所示.1)考虑Logistic映射迭代表达式为式(19)中:初始值取0.4,当λ=4时,系统处于混沌状态.运用LSSVM预测模型的输出值和真实值的比较(x(n))和预测误差(e),如图1(a)所示.为了便于观察,图1(a),(b)只截取800到950之间的数据预测结果进行展示;图1(c)则截取800到900之间的数据.2)考虑Henon映射迭代表达式式(20)中:取a=1.4,b=0.3,此时系统处于混沌状态.预测结果如图1(b)所示.3)考虑Lorenz映射迭代表达式式(21)中:当s=16,b=4,r=45.92时,系统处于混沌状态.运用LSSVM预测模型的输出值和真实值的比较和预测误差,如图1(c)所示.由输出误差可知:PSO优化的LSSVM模型能够实现对混沌时间序列较精确的预测.图1 不同混沌系统的预测结果Fig.1 Prediction results of different chaotic system仿真实验中所用的参数,如表1所示.通过计算均方误差(^e)作为衡量性能的标准,并与RBF神经网络建立的预测模型的预测结果进行比较.其中:RBF神经网络采用的是二层结构网络,神经元数目等于输入向量的个数,比较结果如表2所示.由表2可知:采用PSO算法优化的LSSVM的预测效果明显优于RBF预测算法. 表2 均方误差的对比结果Tab.2 Compared results of the mean square error^预测模型e系统Logistic系统 Henon系统 Lo renz LSSVM 5.24×10-4 1.12×10-3 1.67×10-3 RBF 5.95×10-3 9.58×10-3 1.16×10-24 结束语结合相空间重构理论建立LSSVM预测模型,利用PSO算法的全局优化和快速收敛的能力,克服了LSSVM预测模型参数选取的随机性,提高了LSSVM预测模型的泛化能力和预测精度.通过对3种典型的混沌时间序列进行预测,并与RBF神经网络建立的预测模型的预测结果进行比较,表明PSO优化的LSSVM预测模型的预测精度更高.参考文献:[1]党建亮.基于支持向量机的混沌序列预测方法研究[D].成都:西南交通大学,2006:12-24.[2]雷绍兰,孙才新,周浪,等.基于改进加权一阶局域预测模型的短期负荷预测方法研究[J].电测与仪表,2006,43(455):5-6.[3] CAO Liang-yue.Practical method for determining the minimum embedding dimension of a scalar time series[J].Physica D:Nonlinear Phenomena,1997,110(1):43-50.[4]朱光兆,何伟.基于支持向量机的混沌时间序列预测分析[J].自动化仪器仪表,2012(1):145-149.[5]往永生,刘卫华,杨利斌,等.基于最小二乘支持向量回归的混沌时间序列预测研究[J].海军航空工程学院学报,2009,24(3):283-288.[6]翟永杰,王子杰,黄宝还,等.基于PSO优化的SMO算法研究及应用[J].华北电力大学学报,2008,35(1):57-61.[7]孙涛,李健,郑豫,等.基于神经网络的混沌时间序列预测[J].成都信息工程学院学报,2008,23(2):126-130.[8]张弦,王宏力.嵌入维数自适应最小二乘支持向量机状态时间序列预测方法[J].航空学报,2007,31(12):672-675.[9]张淑清,贾键,高敏,等.混沌时间序列重构相空间参数选取研究[J].物理学报,2010,59(3):1576-1582.[10]王朝.基于SVM的混沌时间序列预测方法研究[D].保定:河北大学,2012:15-20.[11]陈旭,刘延泉,葛建宏.基于PSO优化的LS-SVM 的混沌时间序列预测[J].仪器仪表用户,2009,16(1):135-136.[12]孙斌,姚海涛.基于PSO优化LSSVM 的短期风速预测[J].电力系统保护与控制,2012,40(5):85-89.[13]朱小明,张慧斌.PSO算法的稳定性分析及算法改进[J].计算机科学,2013,40(3):275-278.。
LS-SVM中文使用说明
kpca, eign
演示:Subsections
计算模型的后验概率和不同层次的推理中超参数的函数是可以用的。通过考虑模型和 超参数的不确定性得到误差线。进行分类,一类可以估算后概率(这也被称为主持输出) (bay_modoutClass)。在贝叶斯框架中使用特征值分解核矩阵。矩阵的大小会随着数据点 的数量而增长。因此,人们需要逼近技术处理大型数据集。众所周知,主要特征值和相应的 特征向量是相关的。因此,,迭代逼近方法,如作为 Nystrom 方法包括在内,这也是高斯过 程中经常使用。输入选择可以通过自动关联的测定(bay_lssvmARD)。对于一个落后的变 量的选择,贝叶斯框架推断的第三个层次对这个问题来说最合适的运用。
2.4 通过固定大小的最小二乘支持矢量机解决大型规模问题
调用函数:demo_fixedsize, AFEm, kentropy; 演示:Subsection , demo_fixedsize, demo_fixedclass
例如喜欢基于最小二乘支持向量机算法的典型内核通常具有记忆功能和算法复杂度为 O(N 2)的计算要求。为绕过这个瓶颈,对大规模的工作方法提出了解决方案。对于大型数据 集,将有利于在原始权空间解决最小二乘问题,这是由于当时未知数向量大小是与特征向量 大小是成比例的,而不是数据点的数量。但是,该特征空间映射是由内核诱导的,而内核又 需要获得非线性,因此,提出了一种固定大小的最小二乘支持向量机的方法。首先,Nystr¨om 方法能够用来估计特征空间的映射。Nystr¨om 近似值,内核主成分分析和密度估计之间的 联系已被讨论。在固定大小的最小二乘支持向量机中,聘请了明确的原始对偶 LS-SVM 的 解释,将它们联系起来。根据二次 Renyi 熵准则选择支持向量机。最后一步,在原始空间 中完成回归,原始空间为求解大规模非线性函数估计和分类问题提供了适当的方法。而固定
matlab中ls-svmlab工具箱使用案例
文章标题:深度探究Matlab中LS-SVMLab工具箱的使用案例在本文中,我将以深度和广度的方式来探讨Matlab中LS-SVMLab工具箱的使用案例。
LS-SVMLab是一个用于支持向量机(SVM)的Matlab工具箱,它具有灵活性、高性能和易用性。
在本文中,我们将通过具体的案例来展示LS-SVMLab的功能和优势,以及其在实际应用中的价值。
一、LS-SVMLab工具箱简介LS-SVMLab是一个用于实现线性支持向量机(LS-SVM)和核支持向量机(KS-SVM)的Matlab工具箱。
它由比利时根特大学的Bart De Moor教授团队开发,提供了一系列的函数和工具,用于支持向量机的建模、训练和预测。
LS-SVMLab具有数学严谨性和代码优化性,适用于各种复杂的数据分析和模式识别任务。
二、LS-SVMLab的使用案例在这个部分,我们将通过一个实际的案例来展示LS-SVMLab的使用。
假设我们有一个包含多个特征和标签的数据集,我们希望利用支持向量机来进行分类和预测。
我们需要加载数据集,并将其分割为训练集和测试集。
接下来,我们可以使用LS-SVMLab提供的函数来构建支持向量机模型,并进行参数优化。
我们可以利用训练好的模型来对测试集进行预测,并评估模型的性能。
具体地,我们可以使用LS-SVMLab中的`svm`函数来构建支持向量机模型,`gridsearch`函数来进行参数优化,以及`svmpredict`函数来进行预测。
在实际操作中,我们可以根据数据集的特点和任务的要求,灵活地调整模型的参数和优化方法。
通过这个案例,我们可以清晰地看到LS-SVMLab在支持向量机建模和应用方面的优势和价值。
三、个人观点和总结在本文中,我们深入探讨了Matlab中LS-SVMLab工具箱的使用案例。
通过具体的案例,我们展示了LS-SVMLab在支持向量机建模和应用中的灵活性和高性能。
在实际应用中,LS-SVMLab可以帮助我们快速、准确地构建支持向量机模型,解决各种复杂的数据分析和模式识别问题。
SVM与LSSVM
4 相关名词解释
维理论: VC 维理论:
为了研究经验风险最小化函数集的学习一致收敛速度和推广性,SLT 定义了一些指标来衡量函数集的性能,其中最重要的就是VC维(VapnikChervonenkis Dimension)。对于一个指示函数(即只有0和1两种取值的函 数)集,如果存在h个样本能够被函数集里的函数按照所有可能的2h种形 式分开,则称函数集能够把h个样本打散,函数集的VC维就是能够打散的 最大样本数目。 所谓 VC 维是对函数类的一种度量,可以简单的理解为问题的复杂程 度,VC 维越高,一个问题就越复杂。正是因为 SVM 关注的是 VC维,后 面我们可以看到,SVM 解决问题的时候,呾样本的维数是无关的(甚至 样本是上万维的都可以,这使得 SVM 径适合用来解决文本分类的问题, 当然,有这样的能力也因为引入了核函数)。
SVM概述 1 SVM概述
LSSVM概述 2 LSSVM概述
Suykens J.A.K提出一种新型支持向量机方法—最小二乘支持 向量机(Least Squares Support Vector Machines,简称LS-SVM)用 于解决模式分类和函数估计问题等。 最小二乘支持向量机方法是采用最小二乘线性系统作为损 失函数,代替传统的支持向量机采用的二次规划方法。 LS-SVM方法简化了计算的复杂性。另外,由于LS-SVM采用 了最小二乘法,因此运算速度明显快于支持向量机的其它版 本。
2 例 如 : ( x 1 , x 2 ) a Φ ( x 1, x 2 ) = ( x 12 , x 2 , x 1 x 2 )
根据泛函的有关理论,只要一种核函数K(xi,xj)满足Mercer条件,它 对应某一变换空间中的内积。因此,在最优分类面中采用适当的内积函数 K(xi,xj)就可以实现某一非线性变换后的线性分类,而计算复杂度却没有 增加。 其中,K是核函数,其种类主要有:
最小残差法加速局部加权LSSVM求解及其应用
最小残差法加速局部加权LSSVM求解及其应用林超;王华杰【摘要】局部加权最小二乘支持向量机回归模型(LocalWeighted Least Squares Support Vector Machines,LW-LSSVM)是一种在线学习模型,该类模型需要根据训练样本权重的调整不断重新进行训练.高效稳定的学习算法是LW-LSSVM模型取得成功应用的关键.分别采用最小残差法(MINRE)、共轭梯度法(CG)、零空间法和Cholesky分解算法求解WL-LSSVM模型.基准数据库上的数值实验表明最小残差法的计算时间最短,具有良好的数值稳定性.随后,应用基于MINRES的WL-LSSVM建立了高炉铁水硅含量的在线预测模型,仿真实验表明与LSSVM相比LW-LSSVM模型具有更高的预报精度和自适应性.【期刊名称】《微型电脑应用》【年(卷),期】2014(030)011【总页数】4页(P8-11)【关键词】LSSVM;局部加权;最小残差法;铁水硅含量【作者】林超;王华杰【作者单位】中国石油大学(华东),网络及教育技术中心,青岛,266580;山东财经大学管理科学与工程学院,济南,250014【正文语种】中文【中图分类】TP18SVM是基于结构风险最小化原则建立的核学习模型[1]。
随后学者们研究了SVM 的多种变形,其中,Suykens等人建立的LS-SVM模型结构最为简单,并获得的广泛应用[2]。
LS-SVM将SVM模型中的不等式约束替换为等式约束,同时,在目标函数中采用具有良好光滑性质的二次损失函数取代SVM模型中的不敏感损失函数。
由于LS-SVM的最优性条件(KKT条件),可以转换为线性系统,无需求解二次规划问题,与SVM相比LS-SVM的求解更为简单、快速,更适合在线应用。
高炉炼铁过程是一个高度复杂的非线性过程,其实质是将铁从铁矿石等含铁化合物中还原出来。
冶炼期间, 炉内将发生复杂的气-固、固-固、固-液相反应,并伴随有高温、高压、多相共存、化学反应与传递现象同时发生等特点。
LS_SVM
LS_SVM基于LS_SVM⼯具箱的阿拉伯数字识别⼀.实验⽬的:这次作业的⽬标是学习⽤MATLAB⾥的⼯具箱函数来实现我们需要的功能。
这次我们使⽤的是LS_SVM(最⼩⼆乘⽀持向量机)⼯具箱,⽤它来实现0~9⼗个阿拉伯数字的分类识别。
⼆.前期准备:(1)将LS_SVM函数库按到MATLAB中。
具体操作有,将解压后的得到的⽂件夹放到MATLAB安装⽂件夹下的toolbox⽂件夹下。
在MATLAB主界⾯File 选项下点Set Path,添加上新存⼊的函数库的路径。
再在Preference选项中更新⼀下⼯具箱,这样在写程序时就能直接调⽤LS_SVM函数库中的函数了。
(2)由于前⾯已经写过基于最⼩距离法的阿拉伯数字识别,所以所有的300张图⽚的特征向量已经提取完毕。
我的程序中特征向量的特征向量为六维。
最后将得到的特征向量存在了⼀个30*6*10的double型数组Feature中。
三.程序实现:通过查阅资料和测试得知,⽤LV_SVM函数库中的trainlssvm()函数和simlssvm()函数,可以实现多类分类。
我们要实现的是10类的分类。
这两个函数的格式如下[alpha,b]=trainlssvm({X,Y,type,gam,sig2,kernel_type,preprocess}); % 训练Yd0=simlssvm({X,Y,type,gam,sig2,kernel_type,preprocess},{alpha,b},Xt); % 分类(1)Trainlssvm函数是训练提供的样本来实现分类或拟合的功能。
参数项中X是训练样本。
为Nxd维矩阵,N为样本个数,d为每个样本的特征向量维数。
该程序中选取每个数字的⼆⼗张图⽚作为训练样本,所以N=200,d=6。
参数Y为Nx1的训练数据输出向量。
我的理解是Y是⽤来表明训练样本类别信息的。
所以该程序中我传⼊的Y是⼀个200X1的矩阵。
⾥⾯放的数是⼆⼗个1,,⼆⼗个2,⼆⼗个3,⼀直到⼆⼗个10。
LS-SVM工具箱说明
最小二乘支持向量机1.6版前言对于以前的版本1.5版的工具箱和更新现有的一些命令我们增加了新功能。
由于许多读者都是熟悉的版本1.5布局,我们试图尽可能少地改变它。
主要的区别加速了一些方法的实现。
这里是一个简要的主要变化:Chapter/solver/function What’s newWhat’s new2. LS-SVMLab toolbox examples LS - SVM的路线图;增添更多的回归和分类的例子;界面更容易,多级分类; 改变执行了健全ls-svm。
3. Matlab functions 回归或分类的可能性只使用一条命令即可,功能验证已经被删除,更快(强劲)训练和(强大)模型选择标准被提供给用户,以防万一,稳健回归不同的函数必须要和与迭代重加权LS – SVM一起使用。
4. LS-SVM solver 所有CMEX和/或C文件已被删除。
求解线该性系统通过使用MATLAB命令“反斜杠”(\)第一章 引言在解决非线性分类,函数估计和密度估计问题中,支持向量机是一个很强大的方法,支持向量机也致使了其核心的新动向,最新发展事基于一般学习方法的。
支持向量机应经被引入统计学习理论和结构风险最小化之中。
这些方法中,凸优化问题,解决了一个典型的二次规划问题。
LS-SVM是标准SVM的改进,这样就可以解决线性kkt系统的问题了。
最小二乘支持向量机与正规化网络和高斯过程密切相关,但更加重视和利用原始对偶的规范条款解释。
经典的模式识别算法的内核版本如判别分析的内核Fisher,以非监督学习、循环式网络扩展和控制之间的链接是可用的。
健全性、稀疏性、权重可以被应用到LS-SVM上,并具有三个层次的推理贝叶斯框架已经制定。
LS – SVM像原始对偶那样配方给予核PCA,核CCA和PLS。
对于非常大的规模问题和在线学习,一个固定大小的LS - SVM方法被提出,它基于Nystrom在原始空间中支持向量的积极选择和估计的近似值。
SVM使用方法总结
一、LIBSVM安装的注意事项1.先下载LIBSVM、python和gnuplot。
2.安装python(下载python2.6,因为python3.0会出现一些不被支持的问题),而LIBSVM和gnuplot不需安装,并且将gnuplot作为LIBSVM的一个子目录。
(这里我已经将二者都整合到了同一个文件夹中了,以方便以后的重新安装,因此,如果我以后安装时,只需安装Python和复制LIBSVM文件夹,然后设置PATH变量即可。
)3.设置python的路径(我的电脑->右键->属性->高级->环境变量->系统变量->path)。
【注】在修改完路径变量后一定要重启机器,否则程序仍不能正常运行。
4.修改代码:(关键是要将各应用程序的路径修改成实际路径)(1)修改easy.py中的代码:# example for windows下面有一些需要的文件相对当前文件easy.py的路径(即相对路径)【注】这里r是raw的缩写,也可以用R,表示后面字符串中的“\”不作为转义字符。
①gnuplot_exe = r"..\gnuplot\bin\pgnuplot.exe"(因为前面已经将gunplot目录作为LIBSVM的一个子目录了)②grid_py = r".\grid.py"③cmd = 'python %s -svmtrain "%s" -gnuplot "%s" "%s"' % (grid_py, svmtrain_exe, gnuplot_exe, scaled_file)【注】③解决如下问题:Traceback (most recent call last):File "easy.py", line 61, in ?c,g,rate = map(float,last_line.split())ValueError: need more than 0 values to unpack(2)修改grid.py中的代码:gnuplot_exe = r"..\gnuplot\bin\gnuplot.exe"5.检查是否成功:首先,运行cmd,将当前目录设为D:\Setup Files\LIBSVM 2.89\tools,也即easy.py 所在的目录。
LSSVM概述学习资料
③ 支持向量是SVM的训练结果,在SVM分类决策中 起决定作用的是支持向量。
SVM 是一种有坚实理论基础的新颖的小样本学习 方法。它基本上不涉及概率测度及大数定律等,因此不 同于现有的统计方法。从本质上看,它避开了从归纳到 演绎的传统过程,实现了高效的从训练样本到预报样本 的“转导推理”(transductive inference) ,大大简化了通常 的分类和回归等问题。
核函数:
核是一个函数K,对所有x,z X ,满足 K(x, z) (x) (z) 这里是从输入空间X 到到特征空间F的映射.
x (x1,...xl) a (x) (1(x),..., n(x)) 将输入空间X映射到一个新的空间F={(x) | x X} 例如: (x1, x2) a (x1, x2) (x12 , x22 , x1x2)
LSSVM概述
2 LSSVM概述
Suykens J.A.K提出一种新型支持向量机方法—最小二乘支持 向量机(Least Squares Support Vector Machines,简称LS-SVM)用 于解决模式分类和函数估计问题等。
最小二乘支持向量机方法是采用最小二乘线性系统作为损 失函数,代替传统的支持向量机采用的二次规划方法。
SVM分类函数形式上类似于一个神经网络,输出是中间节点的线性组合, 每个中间节点对应一个输入样本于一个支持向量机的内积,因此也就叫做支持 向量网络。
4 相关名词解释
VC 维理论:
为了研究经验风险最小化函数集的学习一致收敛速度和推广性,SLT 定义了一些指标来衡量函数集的性能,其中最重要的就是VC维(VapnikChervonenkis Dimension)。对于一个指示函数(即只有0和1两种取值的函 数)集,如果存在h个样本能够被函数集里的函数按照所有可能的2h种形 式分开,则称函数集能够把h个样本打散,函数集的VC维就是能够打散的 最大样本数目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四种支持向量机用于函数拟合与模式识别的Matlab示例程序陆振波点这里下载:四种支持向量机用于函数拟合与模式识别的Matlab示例程序使用要点:应研学论坛《人工智能与模式识别》版主magic_217之约,写一个关于针对初学者的《四种支持向量机工具箱》的详细使用说明。
同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。
本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。
本文适合没有模式识别基础,而又急于上手的初学者。
作者水平有限,欢迎同行批评指正![1]模式识别基本概念模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。
特别说明的是,本文所谈及的模式识别是指“有师分类”,即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。
正确识别率是反映分类器性能的主要指标。
分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。
试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。
工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。
特征提取就是将一维矢量或二维矩阵转化成一个维数比较低的特征矢量,该特征矢量用于分类器的输入。
关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。
[2]神经网络模式识别神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。
以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。
将所有样本中一部分用来训练网络,另外一部分用于测试输出。
通常情况下,正确分类的第I类样本的测试输出并不是[1;0;0]或是[1;-1;-1],而是如[0.1;0;-0.2]的输出。
也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就可以了。
[3]支持向量机的多类分类支持向量机的基本理论是从二类分类问题提出的。
我想绝大部分网友仅着重于理解二类分类问题上了,我当初也是这样,认识事物都有一个过程。
二类分类的基本原理固然重要,我在这里也不再赘述,很多文章和书籍都有提及。
我觉得对于工具箱的使用而言,理解如何实现从二类分类到多类分类的过渡才是最核心的内容。
下面我仅以1-a-r 算法为例,解释如何由二类分类器构造多类分类器。
二类支持向量机分类器的输出为[1,-1],当面对多类情况时,就需要把多类分类器分解成多个二类分类器。
在第一种工具箱LS_SVMlab中,文件Classification_LS_SVMlab.m中实现了三类分类。
训练与测试样本分别为n1、n2,它们是3 x 15的矩阵,即特征矢量是三维,训练与测试样本数目均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,分别对应三类,如下所示:n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];x1 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)];n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];x2 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)];1-a-r算法定义:对于N类问题,构造N个两类分类器,第i个分类器用第i类训练样本作为正的训练样本,将其它类的训练样本作为负的训练样本,此时分类器的判决函数不取符号函数sign,最后的输出是N个两类分类器输出中最大的那一类。
在文件Classification_LS_SVMlab.m的第42行:codefct = 'code_MOC',就是设置由二类到多类编码参数。
当第42行改写成codefct ='code_OneVsAll',再去掉第53行最后的引号,按F5运行该文件,命令窗口输出有:codebook =1 -1 -1-1 1 -1-1 -1 1old_codebook =1 2 3比较上面的old_codebook与codebook输出,注意到对于第i类,将第i类训练样本做为正的训练样本,其它的训练样本作为负的训练样本,这就是1-a-r算法定义。
这样通过设置codefct ='code_OneVsAll'就实现了支持向量机的1-a-r多类算法。
其它多类算法也与之雷同,这里不再赘述。
值得注意的是:对于同一组样本,不同的编码方案得到的训练效果不尽相同,实际中应结合实际数据,选择训练效果最好的编码方案。
[4]核函数及参数选择常用的核函数有:多项式、径向基、Sigmoid型。
对于同一组数据选择不同的核函数,基本上都可以得到相近的训练效果。
所以核函数的选择应该具有任意性。
对训练效果影响最大是相关参数的选择,如:控制对错分样本惩罚的程度的可调参数,以及核函数中的待定参数,这些参数在不同工具箱中的变量名称是不一样的。
这里仍以Classification_LS_SVMlab.m为例,在第38、39行分别设定了gam、sig2的值,这两个参数是第63行trainlssvm 函数的输入参数。
在工具箱文件夹的trainlssvm.m文件的第96、97行有这两个参数的定义:% gam : Regularization parameter% sig2 : Kernel parameter (bandwidth in the case of the 'RBF_kernel')这里gam是控制对错分样本惩罚的程度的可调参数,sig2是径向基核函数的参数。
所以在充分理解基本概念的基础上,将这些概念与工具箱中的函数说明相结合,就可以自如地运用这个工具箱了,因此所以最好的教科书是函数自带的函数说明。
最佳参数选择目前没有十分好的方法,在Regression_LS_SVMlab.m的第46至49行的代码是演示了交叉验证优化参数方法,可这种方法相当费时。
实践中可以采用网格搜索的方法:如gam=0:0.2:1,sig2=0:0.2:1,那么gam与sig2的组合就有6x6=36种,对这36种组合训练支持向量机,然后选择正确识别率最大的一组参数作为最优的gam 与sig2,如果结果均不理想,就需要重新考虑gam与sig2的范围与采样间隔了。
[5]由分类到回归的过渡LS_SVMlab、SVM_SteveGunn这两个工具箱实现了支持向量机的函数拟合功能。
从工具箱的使用角度来看,分类与回归的最大区别是训练目标不同。
回归的训练目标是实际需要拟合的函数值;而分类的训练目标是1,2,…N(分成N类),再通过适当的编码方案将N类分类转换成多个二类分类。
比较文件Regression_LS_SVMlab.m与Classific ation_LS_SVMlab.m的前几行就可以注意到这一点。
另外,分类算法以正确分类率来作为性能指标,在回归算法中通常采用拟合的均方误差(mean square error, MSE)来作为性能指标。
LS-SVM在分类、回归中的实例整理有了LS-SVMlab的matlab软件包,比我之前用libsvm手动去调好用多了(上一篇教程里有讲到让libsvm自动调节参数的功能,那涉及太多工具包,后来也没去试。
希望有同学有时间尝试一下)。
以下以一个实例实验来说明一下用法。
先是LS-SVMlab的各种功能介绍,主要是让初学者快点上手,不需要再走我的弯路,尽快引起你的学习兴趣,不论是做研究还是写作业,能帮上你的忙就是我的最大心愿。
LS-SVMlab1.5bw.tar 一般用法(分类用法)首先下载了LS-SVMlab1.5bw,以及它的使用方法导读LS-SVMlab Toolbox User’s Guide.pdf,免费的,地址是:就得点“toolbox”:下载的LS-SVMlab1.5bw是压缩文件,解压缩,记住路径,如:e:\LS-SVMlab1.5bw。
这个目录下59个文件。
成功一半了。
下来打开matlab(最好6.1以上版本的),current directory的路径设置为e:\LS-SVMlab1.5bw,下来就用拉。
怎么用呢,有的朋友对matlab还不太熟悉,我简单说一下,在matlab打开的窗口中有一个叫command window,在这里面输入命令就可以了。
其中符号%会被matlab识别,后面的文字是说明性的,不会参与程序计算。
ok,开始介绍LS-SVMlab的分类用法在命令窗口(command window)中敲入(注凡是前面带>>说明是你敲进去的,没有的则是系统运行的结果):>> X = 2.*rand(30,2)-1;>> Y = sign(sin(X(:,1))+X(:,2));>> X会出现(有些数据在excel里,可以选定行列,在等号后粘进来)X =0.9003 -0.9695-0.5377 0.49360.2137 -0.1098-0.0280 0.86360.7826 -0.06800.5242 -0.1627.... ....-0.4556 0.7073-0.6024 0.1871敲入>> Y出现Y =-1-11111...1-1以上是编辑一组训练样本,有两个自变量(每个训练样本有两维)和一个因变量(每个训练样本的输出)。
>> gam = 10; %可能是惩罚参数吧,我猜的,谁知道跟贴说一下吧,谢啦。
>> sig2 = 0.2;%RBF核函数的参数>> type = ’classification’;%用于分类,简称c>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’});(这里注意那个'符号好像是中文的引号,要改成英文的',这是那个导读里面的问题)然后自动给出alpha,b的值,拉格朗日乘子alpha是数组,偏置b是单值,是构造的函数里面的参数值。
>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’,’original’});original表示保持数据原始状态不变。