夏杰, 徐继伟, 荆瑞俊
(西北工业大学 计算机学院, 陕西 西安 710072)
工业污染预测能够及时预测工业污染物的变化,污染监督部门根据预测结果对工业污染源和企业进行监管,有效防止污染事故的发生。污染预测方法根据工业污染源的污染因子排放量和现有状态变化,对污染因子的变化趋势进行建模,从而准确预测污染物的变化趋势。目前,较为经典和常用的污染预测方法包括人工神经网络预测法、灰色系统理论模型和支持向量机预测方法等。
人工神经网络可以很好地表示工业污染中的非线性关系,但缺乏对预测结果的检验,可能导致局部逼近而整体系统缺乏完备性,推广应用相对较少[1]。灰色理论系统模型形式简单,能反应事物的发展趋势,但是对变化幅度较大的数据进行预测时,预测效果较差。支持向量机具有直观的几何形式、很好的数学模型和良好的泛化能力,它解决了模型选择与过学习、欠学习和非线性问题,也避免了局部最优解,解决了维数灾难的问题,人为设定参数较少[2],已经成为预测应用领域的研究热点。
支持向量机是一种建立在统计学习理论上的新机器学习方法,它在处理小样本分类、非线性分类和高维模式识别方面具有很多独特的优点。支持向量机的基本原理是通过某种事先选择的非线性映射,将输入向量映射到一个高维空间,在这个空间中构造最优超平面,将尽可能多的2类数据点正确地分开,同时使分开的2类数据点距离分类面最远[3]。
图1 支持向量机空间映射图
增量学习的主要任务是在增量样本加入时,有效利用历史训练结果,尽量避免样本的重复训练,得到比较准确的分类结果。支持向量机不断将新数据加入到训练集,通过在线调整模型参数,实现预测模型的不断优化,提高模型的适应能力。如果新增样本带有原样本集不包含的分类信息,则学习后的SV集必然发生变化,以体现新信息的加入。
传统支持向量机增量学习问题描述如下[4]:
1) 前提条件:存在历史数据集A,增量样本集B,并假定这2个数据集满足条件A∩B=φ,ψ1和SVA1分别为数据集A上的初始SVM分类器以及对应的支持向量(SV)集。
2) 学习目标:寻找基于样本集合A∪B上最终的SVM分类器ψ和对应的支持向量(SV)集SVA。
目前,国内外已提出多种支持向量机增量式算法[5-6]。Cauwenberghs给出了一种增量减量式算法,用于解决增加或删除一个训练样本对SVM和拉格朗日系数的影响问题,并通过实验证明了该方法的有效性。Ralaivola也给出了一种增量式算法,该方法基于高斯核的局部特性,只需对学习机器输出影响最大的拉格朗日系数进行更新,从而减少计算的复杂度。在各种支持向量机增量式算法中,比较有代表性的是曾文华等提出的支持向量机增量学习算法[7]。
1)KKT条件
设α=[α1,α2,…,αl]为对偶问题的最优解,使每个样本X都能够满足优化问题的KKT条件如下:
αi=0⟹yif(Xi)≥1
0<αi (1) αi=C⟹yif(Xi)≤1 式中:支持向量为非零的αi。由函数f(X)=h,可知分类面为f(X)=0,分类间隔的边界为f(X)=±1,支持向量为分类间隔的边界上的样本。 定理1 对样本集进行训练得到SVM分类器,α为Lagrange乘子。α=0对应的样本分布在分类器分类间隔之外,0≤α≤C对应的样本分布在分类间隔之上,α=C对应的样本分布在分类间隔之内,公式表示如下: αi=0⟹|f(Xi)|≥1 0<αi (2) αi=C⟹|f(Xi)|≤1 2)增量学习后支持向量变化分析 在分类问题中,支持向量最终确定分类函数的性质,也就是说,支持向量决定的分类函数与样本集的最终分类函数一样。根据这个原理,在分类问题的训练过程中,只需要找到支持向量的分类函数。在训练样本集中,支持向量集所占的比例一般较小。 定理2f(X)为SVM分类决策函数,{xi,yi}为新增样本。满足KKT 条件的新增样本将不会改变支持向量集。违背KKT 条件的新增样本将使支持向量集发生变化。违背KKT 条件的样本分为3类: ① 位于分类间隔中,与本类在分类边界同侧,被原分类器正确分类的样本,满足0≤yif(xi)<1; ② 位于分类间隔中,与本类在分类边界异侧,被原分类器错误分类的样本, 满足-1≤yif(xi)≤0; ③位于分类间隔外,与本类在分类间隔异侧,被原分类器错误分类的样本,满足yif(Xi)<-1。 定理3 新增样本违背KKT条件,则原样本集中非支持向量可能转化为支持向量。 传统的SVM增量学习算法只是将历史样本集和增量样本集混合起来进行训练。曾文华等人提出新的训练算法,将违背KKT条件的样本和SV集共同训练,以更好地体现出样本的分布状态对训练学习结果的影响。该算法首先分别对历史样本和新增样本进行训练得到分类器ψ1、ψ2和支持向量集SVA1、SVA2,然后在历史样本中找出违背ψ2的KKT条件的样本,将其加入到SV1、SV2中一起训练,以得到最终的分类器。该算法分类精度提高和训练速度均得到了提高。 基于曾文华等人提出的支持向量机增量学习方法,本文提出一种改进的支持向量机增量学习方法,通过改进后的算法能对工业废气污染进行准确预测。改进的增量算法是在原有增量算法的基础上,根据KKT条件对新增的数据样本进行SVM分类。 改进的支持向量机增量学习方法将违背KKT条件的新增样本按以下方法进行分类: 1)若新增样本B为恰好都在分类面上的支持向量,则将新增样本B归为分类间隔上样本。 2)若新增样本B都在分类面的边缘内,则将新增样本B归为分类间隔内样本。 3)如不符合上述2种分类情况,新增样本B的每个数据样本点的αi都按照定理1分为分类器分类间隔外、分类间隔内和分类间隔上3种样本,直到增量样本B训练完为止。 假设新增样本为Bi,I=1,2,…,n。改进的支持向量机增量算法的算法步骤如下: 1) 首先检验新增样本B1是否违背SVM分类函数的KKT条件,如果没有违背,则新增样本根据KKT条件进行SVM分类。 2) 如果新增样本B1违背样本SVM的KKT条件,则按照本文2.1节中给出的改进增量算法对违背KKT条件的新增样本分类方法进行分类。 ① 判断新增样本B1是否为恰好都在分类面上的支持向量:如果是,则将新增样本B1归为分类间隔上样本;否则按下一步进行判断。 ② 判断新增样本B1是否都在分类面的边缘内或原分类有误:如果是,则将新增样本B1归为分类间隔内样本;否则按下一步进行判断。 ③ 根据公式(2),将新增样本B1中每个数据样本点的αi分为分类器分类间隔外、分类间隔内和分类间隔上3种样本,直到增量样本B1训练完为止。 3) 加入增量训练样本B2,将上次训练样本得到的分类间隔内样本集加入到B2,得到一个新的增量样本B,令B1=B。 4) 重复以上步骤,直到N个增量样本B1~Bn都训练结束。 为验证改进的支持向量机增量学习方法的有效性,利用Matlab工具和机器学习UCI数据库进行仿真实验。UCI数据集的说明指出了数据的属性和类别,用户可以用自己的数据挖掘方法将UCI数据集分类,将结果与数据说明的结果对比,从而证明自己算法的正确性。 在本节实验中,首先使用Matlab的dlmread读取UCI数据;然后,利用UCI数据集中的数据进行Matlab仿真实验;最后,将改进SVM增量学习方法与传统SVM学习算法进行了比较。在UCI数据库选取的数据中,{xi,yi}为增量样本集中的样本数据,yi为预测的目标值,xi=(xi1,xi2,…,xi8)为8维输入特征值,即影响预测目标值的关键特征变量值。通过Matlab仿真,改进SVM增量学习方法与传统SVM学习算法对比,结果如表1所示。 表1 改进SVM增量学习方法与传统SVM学习算法对比 通过对比发现,本文改进后的SVM增量学习方法与传统SVM学习算法相比,减少了训练时间,也提高了精度。 论文将某种有害气体的浓度作为污染预测的目标值,根据对污染源环境参数进行分析处理,首先确定影响预测目标值的主要特征变量,如气压,温度,风速,数据采集时间等,然后将这些关键特征变量作为预测模型的输入值。假定{xi,yi}为增量样本集B中的样本数据,yi为预测的目标值,xi=(xi1,xi2,…,xin)为输入特征值,即关键特征变量值。 基于上一节提出的改进支持向量机增量学习方法的污染预测系统的实现流程如下: 1) 初始化预测模型。 2) 等待增量样本集B。 3) 如果新增样本符合SVM分类函数的KKT条件,则按定理1分类,即对样本集B进行训练得到SVM分类器。 4) 按照上节给出的方法,对违背SVM分类函数KKT条件的增量样本集B进行分类:a.如果新增样本B为恰好都在分类面上的支持向量,则将新增样本B归为分类间隔上样本;b.如果新增样本B都在分类面的边缘内或其原分类有误,则将新增样本B归为分类间隔内样本;c.根据公式(2),将新增样本B中每个数据样本点的αi分为分类器分类间隔外、分类间隔内和分类间隔上样本。 5) 将下一个新增训练样本加入到上次训练样本得到的分类间隔内样本集中,得到一个新的增量样本B,返回流程2)。 经过一段时间训练后,即可以得到该气体的污染预测模型。输入的特征向量值经过模型的计算的到预测目标值,然后将预测目标的实际值,与相应输入一起作为新的训练样本B,利用新样本B对预测模型进行调整,并计算该模型的预测精度。 实验使用的SO2数据集来源于NASA的气象资料数据。将SO2浓度作为样本集的预测目标值,输入9维预测模型的特征向量:每日的平均气温和气温差、平均气压和气压差、平均风速以及相邻两日的平均气温差和气压差、数据的采集时间和每日的SO2浓度值。 在Matlab7.0环境下测试,SVM模型采用径向基(RBF)核函数。RBF核函数均适用,具有较宽的收敛域,是较为理想的分类依据函数。 核函数的参数和误差惩罚因子C是影响支持向量机性能的关键因素。本文实验中利用SVM模式识别与回归的软件包LIBSVM来确定参数,使用支持向量机库中的工具“grid.py”对参数进行优选,该工具是采用网格遍历法,由gnuplot生成的搜索结果显示出最小错误率时的参数。 本文实验中SVM模型的RBF核函数参数取值如下:核宽度σ取值为 0.6,容量因子C取值为1,允许误差ε取值为 0.01。建立好预测模型后,对7个月内的SO2数据进行预测。原算法和改进后算法的仿真实验预测结果分别如图2和图3所示。 图2 原算法预测结果 图3 改进后算法预测结果 在图2中和图3中,虚线为预测值,实线为实测值。通过仿真实验预测图可以看出,改进后的支持向量机增量算法的预测准确度与原算法相比有较大提高,能较好地用于污染预测。 本文针对工业污染预测问题,采支持向量机与增量学习结合的方法进行污染预测。对SVM增量学习方法进行改进,通过仿真实验说明,改进后的算法在精度和训练速度上均有所提高。将改进后SVM增量学习方法用于有害气体的浓度预测,通过实验仿真结果说明本文算法能够用于污染预测,且预测较准确。 参考文献: [1] Zhou Xiujie, Su Xiaohong, Yuan Meiying. Forecast of Air Pollution Index Based on BP Neuralnetwork[J]. Journal of Harbin Institute of Technology, 2004, 35(5):583-585 [2] 张学工. 关于统计学习理论与支持向量机[J]. 自动化学报, 2000, 26(1): 32-42 Zhang Xuegong. Introduction to Statistical Learning Theory And Support Verctor Machines[J]. Acta Automatica Sinica, 2000, 26(1):32-42 (in Chinese) [3] Chen Zhenyu, Li Jianping. Least Squares Support Vector Machine[C]∥International Conference on Computational Intelligence and Security, 2006(1):176-179 [4] 李凯, 黄厚宽. 支持向量机增量学习算法研究[J]. 北方交通大学学报, 2003, 27(5): 34-37 Li Kai,Huang Houkuan. Research on Incremental Learning Algorithm of Support Vector Machine[J]. Journal of Northern Jiaotong University, 2003, 27(5): 34-37 (in Chinese) [5] Cauwenberghs G, Poggio T. Incremental and Decremental Support Vector Machine Learning[J]. Advances in Neural Information Processing Systems, 2001, 13 [6] Ralaivola L, Florence d′Alché-Buc. Incremental Support Vector Machine Learning: A Local Approach[J]. ICANN 2001: 322-330 [7] 曾文华,马健. 一种新的支持向量机增量学习算法[J]. 厦门大学学报, 2002,41(6): 687-691 Zeng Wenhua, Ma Jian. A Novel Approach to Incremental SVM Learning Algorithm[J]. Journal of Xiamen University, 2002,41(6): 687-691 (in Chinese)2 改进的支持向量机增量学习方法
2.1 改进的支持向量机增量学习的分类方法
2.2 改进的支持向量机增量算法步骤
2.3 改进的支持向量机增量算法实验
3 改进SVM增量学习方法的污染预测仿真实验
4 结 论