[发明专利]用主成分分析与支持向量机的重介悬浮液煤泥含量测定法无效
| 申请号: | 200910088990.8 | 申请日: | 2009-07-17 |
| 公开(公告)号: | CN101608994A | 公开(公告)日: | 2009-12-23 |
| 发明(设计)人: | 曹丽;孙武峰;王焕钢;陆耿;徐文立 | 申请(专利权)人: | 清华大学 |
| 主分类号: | G01N9/26 | 分类号: | G01N9/26;G01N9/36;G06N1/00;G06N3/12 |
| 代理公司: | 北京众合诚成知识产权代理有限公司 | 代理人: | 朱 琨 |
| 地址: | 100084北*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | 用主成分分析与支持向量机的重介悬浮液煤泥含量测定法属于煤泥含量工业自动检测方法。其特征在于利用主成分分析方法构造多个主成分,以便对重介悬浮液静态沉降过程中高维压差数据进行降维处理,进行主成分提取后便形成训练样本;再用ε型支持向量回归机建立煤泥含量测量模型,在建模过程中,用基本遗传算法实现对支持向量机最优参数的选择。本发明测量煤泥含量的误差为±4%。 | ||
| 搜索关键词: | 成分 分析 支持 向量 悬浮液 含量 测定法 | ||
【主权项】:
1、用主成分分析与支持向量机的重介悬浮液煤泥含量测定法,其特征在于,依次含有以下步骤:步骤1:构造一个重介悬浮液煤泥含量测定系统在重介悬浮液主回路上构造一个重介悬浮液旁路管,在管壁的上、下部位依次分别安装第一电动阀门和第二电动阀门,在所述管壁上安装一套压差传感器,其中,压差传感器的第一感应面在所述管壁上部,位于距离所述第一电动阀门10cm~40cm处,压差传感器的第二感应面距离所述第二电动阀门至少50cm,所述第一、第二感应面的垂直距离为7cm~40cm,所述第一电动阀门以及第二电动阀门的控制信号分别与一台控制计算机的两个信号输出端相连,所述压差传感器第一感应面与第二感应面的输出电压经过一个减法电路后,把压差的电压信号经过数据采集设备输入所述控制计算机,所述重介悬浮液煤泥含量测定法在所述控制计算机中依次按以下步骤实现;步骤2:训练阶段步骤2.1:在设备承受能力内,在不低于正常工况下,所述控制计算机通过所述一套压差传感器测量在所述第一电动阀门、第二电动阀门均关闭后形成的沉降过程,采集重介悬浮液对应于不同密度与不同煤泥含量下的压差数据,采样间隔为5秒钟,采样点数为60,得到m组样本数据,m≥12,形成m×60维的矩阵Fm×60,其中,行代表时间序列,列代表样本组序号,同时,对每次沉降过程,通过取样化验方法得到对应的重介悬浮液煤泥含量值,用Y1×m=[y1,y2,…,ym]表示,其中,ym表示第m组样本所对应的煤泥含量化验值,步骤2.2:提取主成分形成训练样本,步骤如下,步骤2.2.1:对所述矩阵Fm×60的每一列fi,求压差的均值μi,μ i = 1 m Σ j = 1 m f ji , ]]> i=1,2,…,60,fji为fi的第j个元素,步骤2.2.2:对所述矩阵Fm×60的每一列fi,求压差的方差βi,β i = 1 m Σ j = 1 m ( f ji - μ i ) 2 , ]]> 步骤2.2.3:对所述据矩阵Fm×60的每一列fi,作如下标准化处理,f ‾ i = f i - μ i β i , ]]> 得到标准化后的矩阵Fm×60=[f1,f2,…,f60],步骤2.2.4:求所述矩阵Fm×60的协方差矩阵G60×60,其各元素的计算方法如下,g kh = 1 m - 1 Σ j = 1 m f ‾ jk · f ‾ jh , ]]> k=1,2,…,60,h=1,2,…,60,其中,gkh为G60×60的第k行第h列元素,步骤2.2.5:使用Householder变换对所述协方差矩阵G60×60进行特征值分解,G60×60·a60×1=λ·a60×1,λ为特征值,λ1≥λ2≥…≥λ60,a为特征向量,a1,a2,…,a60,选择与前四个最大特征值对应的特征向量a1、a2、a3、a4形成矩阵A60×4=[a1,a2,a3,a4],步骤2.2.6:按下式计算所述样本数据的主成分,Bm×4=Fm×60×A60×4,得到训练样本矩阵X4×m,X4×m=(Bm×4)T,T为转置符号,在X4×m中,列代表训练样本组序号,行代表主成分序号,步骤2.3:训练样本归一化把所述训练样本矩阵X4×m的每一行归一化到[0,1]:X ‾ 4 × m = x ‾ 1 x ‾ 2 x ‾ 3 x ‾ 4 , ]]>X 4 × m = x 1 x 2 x 3 x 4 , ]]> 其中,xl=(xl-bxl)kxlkxl=1/(max(xl)-min(xl)),bxl=min(xl),l=1,2,3,4,把所述煤泥含量化验值Y1×m=[y1,y2,…,ym]归一化到[0,1]:Y1×m=[y1,y2,…,ym],其中,yj=(yj-by)ky,ky=1/(max(Y1×m)-min(Y1×m)),by=min(Y1×m),j=1,2,…,m,步骤2.4:把训练样本随机等分成T份,T=3~m,T为整数,步骤2.5:对用于训练支持向量机的LIBSVM软件进行初始化支持向量机类型:选择ε-SVR(ε型支持向量回归机,用于函数拟合,其中ε为回归精度参数),核函数选择:选择高斯径向基核函数,高斯径向基核函数参数:σ2,回归精度参数:ε,惩罚参数:C,在训练误差与模型复杂度之间进行折中,LIBSVM软件运行停止准则:为软件内部某一变量变化的最小值,定为0.00001,当达到此值时,所述软件停止运行,步骤2.6:用基本遗传算法选择所述LIBSVM软件所需的最优参数σ2、ε、C步骤2.6.1:确定参数范围与编码方式编码方式:所述参数σ2、ε、C均用10位二进制编码,一组参数[σ2、ε、C]的总编码长度为30,编码的顺序依次为σ2、ε和C,各参数σ2、ε、C的范围,用一个矩阵bounds表示:bounds = 0.01 100 0.0001 0.1 0.1 100 , ]]> 其中,所述矩阵bounds的第一行表示参数σ2范围:[0.01,100],第二行表示参数ε的范围:[0.0001,0.1],第三行表示参数C的范围:[0.1,100],同时存储向量scale,表示为,scale = 100 - 0.01 2 10 - 1 0.1 - 0.0001 2 10 - 1 100 - 0.1 2 10 - 1 , ]]> 步骤2.6.2:基本遗传算法初始化种群大小N=100,种群是指100组所述参数[σ2、ε、C]形成的集合,其中每一组参数称为种群的一个个体,遗传算法终止迭代次数Zend=300,遗传算法当前迭代次数Z=0,交叉概率Pc=0.8,所述个体以0.8的概率进行交叉运算:所述种群中的两个所述个体相互交换部分元素,变异概率Pm=0.05,所述个体以0.05的概率进行变异运算:所述种群中的个体(二进制串)在某些位置取反值,即0变成1,1变成0,步骤2.6.3:产生初始种群,形成所述N组参数随机生成元素为0或1的参数矩阵PN×30,该矩阵PN×30的行表示所述一组参数的二进制编码,步骤2.6.4:对所述矩阵PN×30的每一行ps(s=1,2,…,N),按以下步骤计算适应度,步骤2.6.4.1:按下述公式计算所述每一行ps对应的一组参数[σs2、εs、Cs],σ s 2 = [ 2 9 × q 1 ( 1 ) + 2 8 × q 1 ( 2 ) + · · · + 2 0 × q 1 ( 10 ) ] × scale ( 1 ) + bounds ( 1 , 1 ) , ]]> εs=[29×q2(1)+28×q2(2)+…+20×q2(10)]×scale(2)+bounds(2,1),Cs=[29×q3(1)+28×q3(2)+…+20×q3(10)]×scale(3)+bounds(3,1),其中q1、q2、q3均为1×10维向量,分别存储所述每一行ps对应的一组参数σs2、εs、Cs的二进制编码串,q1(1)为所述向量q1的第1个元素,以下类推,scale(1)为所述向量scale的第1个元素,以下类推,bounds(1,1)为所述矩阵bounds第1行第1列之元素,以下类推,步骤2.6.4.2:交叉验证,计算所述每一行ps对应的适应度,用hs表示,在把训练样本随机等分成T份的条件下,每次从T份训练样本中取出一份作为测试样本,用余下的T-1份训练样本训练所述LIBSVM软件,然后对测试样本进行测试,共进行T次“训练-测试”过程,步骤如下,步骤2.6.4.2.1:令t=1,第一次取出第一份训练样本作为测试样本,步骤2.6.4.2.2:把所述每一行ps对应的参数值σs2、εs、Cs输入LIBSVM软件,对所述T-1份训练样本进行训练,留出第t份训练样本做测试,步骤2.6.4.2.3:训练结束后,得到一组训练样本的贡献系数α和一个偏置系数d,其中,若α=0,则表示与该α对应的训练样本对煤泥含量测量模型没有贡献,可以忽略,而那些贡献系数不为零的训练样本则称为支持向量,步骤2.6.4.2.4:按下式得到一个煤泥含量测量模型,y * = 1 ky [ Σ j * = 1 ms α j * exp ( - Σ l = 1 4 ( kx l ) 2 ( x l * - x l j * ) 2 σ 2 ) + d ] + by ]]> 其中,j*为所述支持向量的序号,ms为所述支持向量的个数,xl*为输入变量的第l个主成分,
为第j*个支持向量的第l个主成分,步骤2.6.4.2.5:把所述第t份样本代入步骤2.6.4.2.4的测量模型中进行测试,保存相对应的测试值,步骤2.6.4.2.6令t=t+1,重复步骤2.6.4.2.2~2.6.4.2.5直到t>T,步骤2.6.4.2.7按下式计算所述每一行ps的适应度值hs,RMSE = 1 m Σ j = 1 m ( y j - y j * ) 2 ]]>
其中,yj为第j组训练样本所对应的煤泥含量化验值,yj*为第j组训练样本对应的煤泥含量测试值,s=1,2,3,…,100,步骤2.6.5:把h1~h100中的最大值hmax存储,如果hmax>0.12转步骤2.6.11,否则转步骤2.6.6,步骤2.6.6:若遗传算法当前迭代运行次数Z>Zend,转步骤2.6.11,否则转步骤2.6.7,步骤2.6.7:对所述种群PN×30实施选择运算,步骤如下,步骤2.6.7.1:构建一个元素全为零的矩阵PNN×30,用于存储新一代种群,其中下标N=100,步骤2.6.7.2:按下式计算所述矩阵PN×30每一行ps的相对适应度hs,h ‾ s = h s / Σ s * = 1 100 h s * , ]]> s=1,2,…,s*,…,N,步骤2.6.7.3:把步骤2.6.7.2中计算得到的相对适应度hs,按由小到大顺序进行排序,得到一个适应度递增的序列,hx1≤hx2≤hx3≤…≤hxN,将所述矩阵PN×30的各行按上述递增序列的排列顺序进行调整,使得第s行的个体所对应的适应度值为hxs,调整后的矩阵为PN×30,步骤2.6.7.4:构造一个种群选择向量U,其中,第s个元素us计算公式为,u s = Σ s * = 1 s h ‾ x s * , ]]> 所述各个元素us递增式地把区间(0,1]分成如下N个小区间,(0,u1],(u1,u2],…,(us-1,us],…,(uN-1,uN]步骤2.6.7.5:按以下步骤选择新一代种群,步骤2.6.7.5.1:将步骤2.6.7.3中所述矩阵PN×30的最后一行赋给PNN×30的第一行,以保留最优个体,步骤2.6.7.5.2:其余的N-1行的选择方法如下,随机生成一个(0,1)之间的实数v1,设v1落在所述区间(us-1,us]中,则把所述矩阵PN×30的第s行选入新一代种群,重复此步骤,直到选择完N-1行为止,并将这N-1行依次赋给PNN×30的第2~N行,使得在新种群中适应度大的个体得到加强,适应度小的个体得到削弱,步骤2.6.8:对步骤2.6.7.5得到的所述新种群PNN×30实施交叉运算,步骤如下,步骤2.6.8.1设所述矩阵PNN×30的第s、s+1行分别为pns、pns+1,步骤2.6.8.2:令s=3,从所述矩阵PNN×30的第3、4两行开始实施交叉运算,步骤2.6.8.3:随机生成一个(0,1)之间的实数v2,如果v2<Pc,转步骤2.6.8.4,实施交叉运算,否则转步骤2.6.8.5,步骤2.6.8.4:对所述矩阵PNN×30第s、s+1两行做交叉运算,方法如下,从所述行向量pns的各个元素的位置序号1,2,…,30中随机抽取六个序号形成递增向量[r1,r2,r3,r4,r5,r6],将所述矩阵PNN×30的两行pns、pns+1的第r1~r2个元素对换、第r3~r4个元素对换、第r5~r6个元素对换,步骤2.6.8.5:s=s+2,重复步骤2.3.8.3~2.3.8.4直到s>N-1,交叉运算结束,步骤2.6.9:对所述种群PNN×30实施变异运算,步骤如下,步骤2.6.9.1:令s=2,第1个个体不参加变异运算,以保留最优个体,步骤2.6.9.2:随机生成一个(0,1)之间的实数v3,如果v3<Pm,转步骤2.6.9.3,否则转步骤2.6.9.4,步骤2.6.9.3:对所述矩阵PNN×30的第s行pns进行变异运算,方法如下,从所述行向量pns的各个元素的位置序列1,2,…,30中随机抽取三个序号形成递增向量[r1*,r2*,r3*],将pns的第r1*、r2*、r3*个元素分别取反值,即0变为1,1变为0,步骤2.6.9.4:s=s+1,重复步骤2.6.9.2~2.6.9.3直到s>N,变异运算结束,步骤2.6.10:以变异运算后的种群为当前种群,将PNN×30赋给PN×30,遗传算法完成一次迭代,Z=Z+1,转步骤2.6.4,步骤2.6.11:遗传算法结束,以步骤2.6.7.5中所述矩阵PNN×30的第一行为最优个体,对其解码得到一组最优参数[σ2,ε,C],解码方法同步骤2.6.4.1,步骤2.7:在最优参数σ2,ε,C条件下,利用所述LIBSVM软件对所有训练样本进行训练,得到如下测量模型,y * = 1 ky [ Σ j * = 1 ms α j * exp ( - Σ l = 1 4 ( kx l ) 2 ( x l * - x l j * ) 2 σ 2 ) + d ] + by , ]]> 步骤2.8:保存测量模型,依次保存以下参数,保存步骤2.2.3中样本数据标准化时所确定的样本均值与方差:μi、βi,保存步骤2.2.5中的矩阵:A60×4,保存步骤2.3中所确定的归一化变换系数:kxl、bxl,ky、by,保存步骤2.6.11中基本遗传算法所确定的支持向量机最优参数:σ2,ε,C,保存步骤2.7中LIBSVM训练后所确定的支持向量及其对应的系数,支持向量:x1,x2,…,xms,对应系数:α1,α2,…αms,d,其中ms为支持向量的个数,
为一个4×1维的列向量,
为一个非零实数,j*=1,2,…,ms;步骤3:测量阶段步骤3.1:读取测量模型读取训练部分所存储的样本均值与方差:μi、βi,读取训练部分所存储的矩阵:A60×4,读取训练部分所存储的归一化变换系数:kxl、bxl,ky、by,读取训练部分所存储的支持向量机最优参数:σ2,ε,C,读取训练部分所存储的支持向量及对应系数,x1,x2,…,xms,α1,α2,…αms,d,其中ms为支持向量的个数,步骤3.2:按步骤2.1所述方法得到待测重介悬浮液的一组压差数据,记为f1×60*,步骤3.3:计算主成分步骤3.3.1:对所述压差数据f1×60*的每一个元素做如下预处理,f ‾ i * = ( f i * - a i ) / β i , ]]> 处理之后的数据为f1×60*,步骤3.3.2:对所述压差数据f1×60*按下式计算其主成分,B 1 × 4 * = f ‾ 1 × 60 * × A 60 × 4 , ]]> 步骤3.3.3:形成输入变量为,X 4 × 1 * = ( B 1 × 4 * ) T = x 1 * x 2 * x 3 * x 4 * , ]]> 步骤3.4:计算煤泥含量将输入变量代入如下的煤泥含量测量模型中,y * = 1 ky [ Σ j * = 1 ms α j * exp ( - Σ l = 1 4 ( kx l ) 2 ( x l * - x l j * ) 2 σ 2 ) + d ] + by , ]]> 即可以计算出煤泥含量,步骤3.5:结果存储与显示,步骤3.6:如果需要继续测量,转步骤3.2,否则,测量结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910088990.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种治疗耳内流脓的外用中药
- 下一篇:纯中药消毒治疗液





