基于飞行轨迹的飞机飞行异常检测算法
2018-02-09张浩东
张浩东
(四川大学计算机学院,成都 610065)
0 引言
目前对于航空异常检测的研究多是对于某一特定故障,取相关数据训练之后建模,根据模型检测异常。然而,依据飞行轨迹进行航空异常检测很少有人涉及。针对传统的检测方法,无法应用于一架飞机从起飞到降落整个过程,因为期间的数据项和数据量超出了其算法的范畴。但是,应用于飞行轨迹的检测,我们只需要关心轨迹点的坐标数据,大大减少了数据量,提高了效率。
对于异常轨迹检测的研究中,Lee等人通过计算线段Hausdorff的距离来鉴别异常轨迹[1],Li等人通过人工智能方法训练分类器,以此区别异常轨迹。但是他们都忽视了对于轨迹点方向的研究,轨迹点的方向信息可以反映出当时物体的运动趋势,并且该特征对轨迹的长度不敏感,可以用作一个有效的异常检测方法。并且以保证准确率和提升效率为目的,本文提出双层异常轨迹检测方法:由粗粒度到细粒度。
1 算法描述
如图1所示,在5条轨迹中,明显可以看出轨迹3属于异常轨迹。在航空飞行中,这样偏离正常的轨道说明飞机在这个时间段遇到了异常状况,有可能是内部因素(航空器异常),也有可能是外部因素(天气因素)。总之,在这个时间段内有危险征候,需要加强防范。
当轨迹出现异常的时候,轨迹点之间的夹角也随之发生较大的偏差。因此,方向信息也可以反映出异常情况。在这种情况下,再对异常轨迹进行细粒度划分,如图1中的p0p1、p1p2和p2p3三个子轨迹,以减少不必要的数据分析,提高效率,具体再对子轨迹进行高精度异常分析,提高准确率。
图1 轨迹示意图
1.1 特征提取
轨迹一般由一个二维的点集合来表示:
方便提取方向向量,对轨迹点进行横坐标和纵坐标分解,我们可以把轨迹表示为:
1.2 粗粒度划分
首先,定义粗粒度和细粒度分别为pipi+jb和pipi+b(j>1),b是一个基本长度单位。用L表示粗粒度轨迹,用l表示粒度轨迹。
根据上一步中提取的方向特征,对轨迹进行粗粒度的异常检测,如果θiθi+1<0则表示轨迹在点i处进行了大角度的方向变化,很有可能是异常情况。以此,将轨迹点i作为细粒度划分起始点,进一步检测异常情况。这样就减少了对不必要的一段数据进行细粒度检测,于是提升了检测效率。
1.3 细粒度划分
在此,我们根据上一步粗粒度检测出的异常子轨迹进行在划分,并进行高精度异常检测,确保准确率。
为了方便计算,因为粗粒度轨迹和细粒度轨迹的角距离一般很小而且可以认为它们是平行的,所以我们选择忽略角距离,也不会引起误差。
于是,我们只需考虑以最小基本单位b为细粒度划分单位,将检测出的粗粒度轨迹进行划分。再根据粗粒度的异常判别方法进行细粒度的异常判别。
2 算法伪代码
3 实验分析
实验采用西南片区500架航班中的FOQA(飞行品质监控)作为实验数据,在其中的50架航班中参入异常数据,异常数据是由离散数据(飞机起落架放下、升起等)和连续数据(飞机速度等)组成的异构数据,足以组成传统检测方法和本文方法的测试数据。
传统检测方法我们使用神经网络算法作为实验对比,取其中250架正常航班数据作为其训练集,其余250架含有异常数据的航班数据作为测试集。
表1
图2 神经网络(右)和本文算法(左)实验效果图
可以看出当实验数据量足够大的时候,神经网络算法已经无法保持检测准确率在90%以上,相对于本文算法来说较低,并且花费时间也远远超过本文算法。所以从准确率和效率来看,本文算法对大量数据的航空异常检测是有效的。
4 结语
在航空异常检测中,本文提出的算法从传统异常检测的缺点入手,解决了数据量大对检测的影响,并且提升了准确率和效率。在关于轨迹研究发面提出了新的思路,用以解决航空器的轨迹异常,利用双层粒度检测方法在去除不必要的数据分析的同时确保了对异常情况的准确检测。
[1]J.G.Lee,J.Han,X.Li.Trajectory Outlier Detection:A Partition-and-Detect Framework.Washington:Computer Society,2008.
[2]X.Li,J.Han,S.Kim.ROAM:Rule-Based and Motif-Based Anomaly Dection in Massive Moving Object Data Sets.SIAM Press,2007.
[3]刘良旭,乔少杰,刘宾.V基于R-Tree的高效异常轨迹检测算法.软件学报,2009,24:26-35.
[4]朱明.数据挖掘[M].合肥:中国科学技术大学出版社,2002.