改进Alpha Shapes和快速凸壳算法的SVM故障诊断
2023-07-27宋仁旺杨磊余百千石慧董增寿
宋仁旺,杨磊,余百千,石慧,董增寿
(太原科技大学电子信息工程学院,山西太原 030024)
0 前言
基于统计学理论的SVM(Support Vector Machine,SVM)主要针对小样本数据进行故障诊断,但是复杂的装备无时无刻不产生大规模的数据,所以采用聚类之后构造类簇凸壳超平面的方法处理大规模数据成为主流方法,其中构造凸壳超平面是其中重要的一环[1]。
点集的凸壳问题在计算几何中是最基本的问题,也有许多学者称此为点集的凸包,它是指在平面点集中,由点集中若干个边沿数据点连接成的凸多边形包含平面点集上的所有数据点,这个凸多边形就称点集的凸壳[2-6]。CHAND和KAPUR[7]最早在1970年提出求凸多边形的卷包裹法,经过众多学者的努力,现在已经出现多种求点集凸壳的经典算法,如GRAHAM[8]于1972提出格雷厄姆扫描算法,EDDY[9]于1977年提出快速凸包壳算法,此外还有学者提出实时算法、快速算法和Z3-8算法[10]等。
求取点集的凸壳问题在模式识别、图像处理、地理测绘等领域中有广泛的应用[11],但是各种经典算法一直存在算法复杂度较高的问题,因此众多学者一直致力于降低凸壳算法的时间复杂度。如刘凯等人[12]提出一种简单易于实现的改进Graham扫描算法,该算法首先对数据点横坐标和纵坐标进行扫面,分别提取纵横坐标上的极限点,再求纵坐标和横坐标极限点的交集,把交集作为Graham扫描算法的对象,从而降低算法复杂度。此方法对数据点分布密集十分有效,但是如果数据点分布较稀疏,则达不到预期效果。樊广佺提出八方向极值快速凸壳算法,该算法是对快速凸壳算法的改进[13]。通过8个方向的极值点构造一个接近凸壳的原始子凸壳,以达到快速获得凸壳的目的,但是此方法没有进行数据的预处理。
综上可知,经典的构造凸壳超平面的算法存在着算法复杂度较高的问题,这对要求快速、高效的检测和隔离装备故障的影响十分显著。由于凸壳超平面的顶点一定是数据集的边界点,所以可以通过提取数据集的边界点,去除点集内部对构造凸壳超平面无用的数据点,降低算法复杂度。Alpha Shapes算法可用于提取数据集轮廓,但该算法的复杂度过高,所以本文作者对Alpha Shapes算法进行简化和改进,首先结合数据排列隐含的信息,然后从X轴的极大值开始,只提取数据集的外围轮廓线。简化和改进后的算法可以快速有效地提取数据集的边界数据点,接着以边界数据点为对象结合改进的快速凸壳算法构造点集的凸壳超平面,进而缩短故障诊断的时间。
即文中算法的主要程序分两步进行:(1)使用简化和改进后的Alpha Shapes算法对原始点集进行预处理,以获取点集少量边界数据点;(2)结合改进的快速凸壳算法构造凸壳超平面,最后把凸壳超平面的顶点作为数据集送入SVM中进行模式识别。
1 相关定义
为更加清晰地说明文中提出的算法,首先对文中算法涉及的专用名词局部密度进行解释。
对于点集中的任意一个数据点的局部密度定义如公式(1):
(1)
其中:x=dij-dc,dij为欧氏距离:
(2)
(3)
当dij≤dc时,x≤0,则f(x)=1;当dij>dc时,x>0,则f(x)=0。dc是所求密度区域的半径,一般需要自行设定。
因此任意数据点的局部密度等价于以对象为圆心,以dc为半径的圆内的数据点个数。
2 Alpha Shapes算法
Alpha Shapes算法是一个提取点集轮廓的算法,其基本思想可以理解为通过一个圆在数据集的边缘或内部滚动来获取数据集的轮廓线,通过设置圆的半径参数的大小间接设置获取点集边缘的精度,当半径设置得过大时,得到的点集边缘偏凸,当半径偏小时,得到的点集边缘偏凹。因此Alpha Shapes算法可以直观地获取一个无序点集的轮廓,并且获得的轮廓是一个多边形且此多边形由数据集和参数唯一确定。
2.1 算法边界线判断条件
若点集X中有n个数据点,则此数据集共可形成[1+2+…+(n-1)]条线段,Alpha Shapes算法通过以下步骤判断哪些线段是边界点。
首先,以参数a为半径,在数据集X中任取2个距离小于2a数据点,过这2个数据点和半径a作圆,若圆内无其他数据点,即认为这2个数据点为边界数据点,则2个数据点的连线就是边界线段。例如:已知数据点p1(x1,y1)、p2(x2,y2),圆的半径为a,则求圆心c(x,y)的公式为
(4)
求取圆心之后,判断2个点是否为边界,就看由这2个点形成的圆内是否有其他的数据点,即等价于判断:(1)若其他数据点到圆心p3的距离都大于或等于a值,则p1、p2为边界点。(2)若其他数据点到圆心p3的距离小于a值,则p1、p2为非边界点。
2.2 简化和改进后的Alpha Shapes
文中对Alpha Shapes算法进行简化和改进,使其适用于文中算法并降低算法的复杂度。以图1所示点集为例,简化和改进后的Alpha Shapes算法具体步骤如下:
图1 提取点集轮廓示意
(1)对点集X进行排序,筛选出横轴极大值点p1。
(2)从点p1开始,根据公式(2)计算距离p1小于2a的点,构成子集s1,在s1中任取一点p0,利用圆心公式(4)求出圆心c。
(3)在点集s1中依次求出(除p0、p1)所有点到圆心c的距离L。