一种基于蝙蝠算法的光谱变量选择方法与流程

文档序号:11106939阅读:583来源:国知局
一种基于蝙蝠算法的光谱变量选择方法与制造工艺

本发明属于分析化学领域的无损分析技术,具体涉及一种基于蝙蝠算法的光谱变量选择方法。



背景技术:

光谱分析技术如紫外光谱、红外光谱、拉曼光谱、近红外光谱等具有分析速度快、灵敏度高等优势,已广泛地应用于石油、农业、医药、化工、环境和生物等许多领域。但是复杂样品的光谱存在噪声、背景以及信号重叠等问题,因此须借助于化学计量学方法才能进行定性定量分析。常规的建模方法是对所有的光谱数据都进行建模,但是光谱数据一般存在成百上千的变量,且并不是所有变量都能提供有用信息,故而会影响预测模型的质量,导致其预测能力下降,因此,需要在建模之前进行变量选择。

传统的变量选择方法主要包括基于智能优化算法的方法以及基于统计学的方法。前者主要有模拟退火算法、遗传算法、蚁群算法、粒子群算法、人工鱼群算法等,尽管模拟退火算法和遗传算法具有相当强的搜索能力,但它们也存在需要大量参数、较长搜索时间以及容易陷入局部最优等缺陷。后者主要有无信息变量消除法(Uninformative Variable Elimination,UVE)、蒙特卡罗-无信息变量消除法(Monte Carlo-Uninformative Variable Elimination,MC-UVE)、随机检验-偏最小二乘法(Randomization Test-Partial Least Square,RT-PLS)等。无信息变量消除法采用留一法交叉验证来获取变量稳定性值,该过程除需多次反复运算外,还需引入与原始光谱所包含变量数目相等的随机噪声变量,所以当数据集数目较大时,该方法存在计算效率低,耗时长等缺点。因此,还需要进一步发展高效准确的变量选择方法。

蝙蝠算法(BA)是剑桥大学Xin-she Yang教授于2010年提出的元启发式优化算法,其具有理论方法简单、设置参数少、编码实现易的特点,算法通过模拟蝙蝠的觅食以及回声定位行为,改变频率、响度和脉冲发射率,进行最佳解的搜索,直到目标达到或停止条件得到满足。蝙蝠算法在工业上常用于连续优化问题,然光谱数据都是离散的数据点,因而传统连续优化的蝙蝠算法无法直接应用于光谱变量选择。本发明对蝙蝠算法进行离散化,并应用于光谱数据的变量选择,用偏最小二乘回归(PLS)建立模型,从而提出了一种基于蝙蝠算法的光谱变量选择方法。既简化了模型,又提高了模型的预测精度。



技术实现要素:

本发明的目的是针对上述存在的问题,对蝙蝠算法进行离散化,并应用于光谱数据的变量选择,用PLS对所选择的变量建立模型,从而达到简化模型及改善模型预测能力的目的。

为实现本发明所提供的技术方案包括以下步骤:

1)采集一定数目样品的光谱,用常规方法测定样品中被测成分的含量;采用一定的分组方式,将数据集划分为训练集和预测集。

2)将训练集的整个光谱范围划分为若干个子区间,蝙蝠个体用一串二进制码表示,对应子区间的选择与否用“1”与“0”表示。

3)利用公式(1)和(2)将蝙蝠个体位置进行离散化。

其中,t表示迭代次数,k表示维数,vi表示速度,xi表示蝙蝠的位置。

4)对蝙蝠算法的初始化参数进行优化,依次优化迭代次数、响度以及脉冲频率、蝙蝠数目。

首先对迭代次数进行优化。固定蝙蝠数目、响度和频度,迭代次数从1变化到500,间隔为10,计算不同迭代次数下的预测均方根误差。预测均方根误差最小值对应的迭代次数为最佳迭代次数。

其次对响度和频度进行优化。迭代次数采用最佳值,蝙蝠数目固定为某个值,响度和频度分别从0.1变化到0.9,间隔为0.1,采用两个循环,计算不同响度和频度下的预测均方根误差。预测均方根误差最小值对应的响度和频度为最佳响度和频度。

最后对蝙蝠数目进行优化。迭代次数、响度、频度采用最佳值,蝙蝠数目从10变化到40,间隔为5,计算不同蝙蝠数目下的预测均方根误差。预测均方根误差最小值对应的蝙蝠数目为最佳蝙蝠数目。

5)利用优化好的参数,采用蝙蝠算法进行变量区间选择,输出最佳的光谱子区间组合。

6)利用所选择的变量区间,建立PLS模型,将预测集中相应的被选择的变量区间代入PLS模型中,进行预测。

本发明提出的Bat-PLS方法既简化了模型,又有效地改善了模型的预测能力,进而提高了模型的预测精度。

附图说明

图1是柴油近红外数据的光谱图

图2是柴油近红外数据的预测均方根误差随迭代次数变化图

图3是柴油近红外数据的蝙蝠数目优化图

图4是柴油近红外数据蝙蝠算法变量选择方法保留的波长点分布图

图5是小麦近红外数据的光谱图

图6是小麦近红外数据的预测均方根误差随迭代次数变化图

图7是小麦近红外数据的蝙蝠数目优化图

图8是小麦近红外数据蝙蝠算法变量选择方法保留的波长点分布图

图9是血液近红外数据的光谱图

图10是血液近红外数据的预测均方根误差随迭代次数变化图

图11是血液近红外数据的蝙蝠数目优化图

图12是血液近红外数据蝙蝠算法变量选择方法保留的波长点分布图

图13是三元调和油近红外数据的光谱图

图14是三元调和油近红外数据的预测均方根误差随迭代次数变化图

图15是三元调和油近红外数据的蝙蝠数目优化图

图16是三元调和油近红外数据蝙蝠算法变量选择方法保留的波长点分布图

具体实施方式

为更好地理解本发明,下面结合实施例对本发明做进一步地详细说明,但是本发明要求保护的范围并不局限于实施例所表示的范围。

实施例1:

本实施例应用于近红外光谱分析,对柴油密度进行测定。具体步骤如下:

1)采集263个柴油密度的近红外光谱数据,波长范围为750-1550nm,包括401个波长点,采用网站(http://www.eigenvector.com/Data/SWRI)上对数据集的划分,将142个样品用作训练集,剩余121个样品用作预测集。图1显示了该数据的近红外光谱。

2)将训练集中的401个波长点每10个波长点划分为1个子区间,共分为40个子区间,最后一个点忽略,蝙蝠个体用40个二进制码表示,对应子区间的选择与否用“1”与“0”表示。

3)利用公式(1)和(2)将蝙蝠个体位置进行离散化。

其中,t表示迭代次数,k表示维数,vi表示速度,xi表示蝙蝠的位置。

4)对蝙蝠算法的初始化参数进行优化,依次优化迭代次数、响度以及脉冲频率、蝙蝠数目。

首先对迭代次数进行优化。固定蝙蝠数为30,响度、频度均固定为0.5,迭代次数从1变化到500,间隔为10,计算不同迭代次数下的预测均方根误差。图2显示了预测均方根误差随着迭代次数的变化,从图中可以看出,起初随着迭代次数的增加,预测均方根误差总体是减小的,当迭代次数大于20之后,随着迭代次数的增加,预测均方根误差值趋于平稳,因此,取25为最佳迭代次数。

其次对响度和频度进行优化。迭代次数采用最佳值25,蝙蝠数目固定为30,响度和频度从0.1变化到0.9,间隔为0.1,采用两个循环,计算不同响度和频度下的预测均方根误差。预测均方根误差最小值对应的响度和频度分别为0.3,0.5。因此最佳响度、频度分别为0.3,0.5。

最后对蝙蝠数目进行优化。迭代次数采用最佳值25,响度和频度分别采用最佳值0.3,0.5,蝙蝠数目从10变化到40,间隔为5,计算不同迭代次数下的预测均方根误差。图3是柴油近红外数据的蝙蝠数目优化图,从图中可以看出,预测均方根误差最小值对应的蝙蝠数目为20。因此最佳蝙蝠数目为20。

5)利用优化好的参数:最佳迭代次数为25,最佳响度和频度分别为0.3和0.5,最佳蝙蝠数目为20。采用蝙蝠算法进行变量区间选择,输出最佳的光谱子区间组合。

6)利用所选择的变量区间(如图4所示),建立PLS模型,将预测集中相应的被选择的变量区间代入PLS模型中,进行预测。

表1显示了柴油近红外数据采用不同建模方法的预测结果。从表中可以看出,仅由PLS单一建模的预测均方根误差值最高,UVE-PLS、MC-UVE-PLS以及RT-PLS算法优化结果相差不大,Bat-PLS预测均方根误差值最小,相关系数最大。因此,蝙蝠算法变量选择要优于其他变量选择方法。

表1 柴油近红外数据采用不同建模方法的预测结果

实施例2:

本实施例应用于近红外光谱分析,对小麦组分含量进行测定。具体步骤如下:

1)采集231个小麦样品的近红外光谱数据,波长范围400-2498nm,采样间隔为2nm,共1050个波长点,根据网上(http//www.graincanada.gc.ca/Quality/Wheat/classes-e.htmo)对数据集的划分,775个样品用作训练集,剩余107个样品用作预测集。图5显示了该数据的近红外光谱图。

2)将训练集中的1050个波长点按每10个波长点划分为1个子区间,共分为105个子区间,蝙蝠个体用105个二进制码表示,对应子区间的选择与否用“1”与“0”表示。

3)利用公式(1)和(2)将蝙蝠个体位置进行离散化。

其中,t表示迭代次数,k表示维数,vi表示速度,xi表示蝙蝠的位置。

4)对蝙蝠算法的初始化参数进行优化,依次优化迭代次数、响度以及脉冲频率、蝙蝠数目。

首先对迭代次数进行优化。固定蝙蝠数为30,响度、频度均固定为0.5,迭代次数从1变化到500,间隔为10,计算不同迭代次数下的预测均方根误差。图6显示了预测均方根误差随着迭代次数的变化,从图中可以看出,随着迭代次数的增加,预测均方根误差值是不断减小的,但是由于迭代次数的限制,当迭代次数为500的时候仍然没有达到最小值,又由于实验设备的限制,取500为最佳迭代次数。

其次对响度和频度进行优化。迭代次数采用最佳值500,蝙蝠数目固定为30,响度和频度从0.1变化到0.9,间隔为0.1,采用两个循环,计算不同响度和频度下的预测均方根误差。预测均方根误差最小值对应的响度和频度分别为0.3,0.4。因此最佳响度、频度分别为0.3,0.4。

最后对蝙蝠数目进行优化。迭代次数采用最佳值500,响度和频度分别采用最佳值0.3,0.4,蝙蝠数目从10变化到40,间隔为5,计算不同迭代次数下的预测均方根误差。图7是近红外数据的蝙蝠数目优化图,从图中可以看出,预测均方根误差最小值对应的蝙蝠数目为15。因此最佳蝙蝠数目为15。

5)利用优化好的参数:最佳迭代次数为500,最佳响度和频度分别为0.3和0.4,最佳蝙蝠数目为15。采用蝙蝠算法进行变量区间选择,输出最佳的光谱子区间组合。

6)利用所选择的变量区间(如图8所示),建立PLS模型,将预测集中相应的被选择的变量区间代入PLS模型中,进行预测。

表2显示了小麦近红外数据的采用不同建模方法的预测结果。从表中可以看出,仅由PLS单一建模的效果最差,UVE-PLS、MC-UVE-PLS以及RT-PLS算法相较于PLS的优化结果好了一倍,这三种方法中,RT-PLS建模的效果相对来说差点,但Bat-PLS预测均方根误差值最小,相关系数最大。因此,蝙蝠算法变量选择要优于其他变量选择方法。

表2 小麦近红外数据的采用不同建模方法的预测结果

实施例3:

本实施例应用于近红外光谱分析,对血液中血红蛋白含量进行测定。具体步骤如下:

1)采集231个血液中血红蛋白含量的近红外光谱数据,波长范围1100-2498nm,采样间隔为2nm,包括701个波长点,光谱采用NIR systems spectrometer model 6500光谱仪测定,根据网站(http://www.idrc-chambersburg.org/shootout2010.html)上对数据集的划分,将143个样品用作训练集,剩余47个样品用作预测集。图9显示了该数据的近红外光谱图。

2)将训练集中的701个波长点按每10个波长点划分为1个子区间,共分为70个子区间,最后一个点忽略,蝙蝠个体用70个二进制码表示,对应子区间的选择与否用“1”与“0”表示。

3)利用公式(1)和(2)将蝙蝠个体位置进行离散化。

其中,t表示迭代次数,k表示维数,vi表示速度,xi表示蝙蝠的位置。

4)对蝙蝠算法的初始化参数进行优化,依次优化迭代次数、响度以及脉冲频率、蝙蝠数目。

首先对迭代次数进行优化。固定蝙蝠数为30,响度、频度均固定为0.5,迭代次数从1变化到500,间隔为10,计算不同迭代次数下的预测均方根误差。图10显示了预测均方根误差随着迭代次数的变化,从图中可以看出,随着迭代次数的增加,预测均方根误差是阶段性减小的,当迭代次数为170左右时,预测均方根误差值趋于平稳,因此,取170为最佳迭代次数。

其次对响度和频度进行优化。迭代次数采用最佳值170,固定蝙蝠数目为30,响度和频度从0.1变化到0.9,间隔为0.1,采用两个循环,计算不同响度和频度下的预测均方根误差。预测均方根误差最小值对应的响度和频度分别为0.4,0.1。因此最佳响度、频度分别为0.4,0.1。

最后对蝙蝠数目进行优化。迭代次数采用最佳值170,响度和频度分别采用最佳值0.4,0.1,蝙蝠数目从10变化到40,间隔为5,计算不同迭代次数下的预测均方根误差。图11是血液近红外数据的蝙蝠数目优化图,从图中可以看出,预测均方根误差最小值对应的蝙蝠数目为25。因此最佳蝙蝠数目为25。

5)利用优化好的参数:最佳迭代次数为170,最佳响度和频度分别为0.4和0.1,最佳蝙蝠数目为25。采用蝙蝠算法进行变量区间选择,输出最佳的光谱子区间组合。

6)利用所选择的变量区间(如图12所示),建立PLS模型,将预测集中相应的被选择的变量区间代入PLS模型中,进行预测。

表3显示了血液近红外数据采用不同建模方法的预测结果。从表中可以看出,UVE+PLS方法所得的预测均方根误差值最大,PLS、MC-UVE+PLS以及RT+PLS算法的预测均方根误差值稍小一点,Bat-PLS预测均方根误差值最小,相关系数最大。因此,蝙蝠算法变量选择要优于其他变量选择方法。

表3 血液近红外数据采用不同建模方法的预测结果

实施例4:

本实施例应用于近红外光谱分析,对三元调和油组分含量进行测定。具体的步骤如下:

1)配置含有大豆油、香油与稻米油的三元调和油样品50个,其中稻米油、大豆油的浓度范围为0.05~2.5,间隔为0.05。使用近红外分光光度计(TJ270-60,天津市拓普仪器有限公司)进行NIR数据测量,波长范围为800~2500nm,采样间隔为1nm,共1701个波长点。采用KS方法对数据集进行划分,将33个样品用作训练集,剩余17个样品用作预测集。图13显示了三元调和油近红外数据的光谱图。

2)将训练集中的1701个波长点按每10个波长点划分为1个子区间,共分为170个子区间,最后一个点忽略,蝙蝠个体用170个二进制码表示,对应子区间的选择与否用“1”与“0”表示。

3)利用公式(1)和(2)将蝙蝠个体位置进行离散化。

其中,t表示迭代次数,k表示维数,v1表示速度,x1表示蝙蝠的位置。

4)对蝙蝠算法的初始化参数进行优化,依次优化迭代次数、响度以及脉冲频率、蝙蝠数目。

首先对迭代次数进行优化。固定蝙蝠数为30,响度、频度均固定为0.5,迭代次数从1变化到500,间隔为10,计算不同迭代次数下的预测均方根误差。图14显示了预测均方根误差随着迭代次数的变化,从图中可以看出,随着迭代次数的增加,预测均方根误差是不断减小的,迭代次数将近500时达到最小值,由于实验设备的限制,因此取500为最优迭代次数。

其次对响度和频度进行优化。迭代次数采用最佳值500,固定蝙蝠数目为30,响度和频度从0.1变化到0.9,间隔为0.1,采用两个循环,计算不同响度和频度下的预测均方根误差。预测均方根误差最小值对应的响度和频度分别为0.2,0.3。因此最佳响度、频度分别为0.2,0.3。

最后对蝙蝠数目进行优化。迭代次数采用最佳值500,响度和频度分别采用最佳值0.2,0.3,蝙蝠数目从10变化到40,间隔为5,计算不同迭代次数下的预测均方根误差。图15是三元调和油近红外数据的蝙蝠数目优化图,从图中可以看出,预测均方根误差最小值对应的蝙蝠数目为30。因此最佳蝙蝠数目为30。

5)利用优化好的参数:最佳迭代次数为500,最佳响度和频度分别为0.2和0.3,最佳蝙蝠数目为30。采用蝙蝠算法进行变量区间选择,输出最佳的光谱子区间组合。

6)利用所选择的变量区间(如图16所示),建立PLS模型,将预测集被选择的相应变量区间代入PLS模型中,进行预测。

表4显示了三元调和油近红外数据采用不同建模方法的预测结果。从表4可以看出,除了Bat-PLS算法所得的预测均方根误差值明显小一些,PLS、UVE-PLS、MC-UVE-PLS以及RT-PLS算法所得预测均方根误差值相差并不太大。因此,蝙蝠算法变量选择要优于其他变量选择方法。

表4 三元调和油近红外数据采用不同建模方法的预测结果

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1