APP下载

数据挖掘技术在控制器局域网总线中的应用研究

2014-09-24程文静臧丽萍

无线互联科技 2014年7期
关键词:字节日志报文

程文静 臧丽萍

摘要:提出了数据挖掘技术在汽车控制器局域网(CAN)总线通信数据中的应用。汽车中的各种电子控制系统通过CAN总线相互连接通信,其中产生的大量报文被存储在日志文件中。首先对CAN总线日志文件的中大量通信数据做预处理,再扩展使用关联分析、分类及聚类分析等方法对处理过的数据进行挖掘,从而找到各条报文之间及报文内部各位或字节之间可能存在的新规律或者关系,为进一步研究CAN总线系统连接的各个控制系统之间的通信提供了帮助。

关键词:控制器局域网总线;报文;数据挖掘Application of Data mining in Controller Area Network System

Cheng Wen-JingLiu Yan-Mei(Department of Computer Science and Application,

Zhengzhou Institute of Aeronautical Industry Management,Zhengzhou 450000,China)

Abstract:This report presents application of data mining in the controller area networks(CAN) bus of real automotive systems. A set of analysis tools are applied in the experiment. The association rules are utilized to describe the relationship between different message IDs, classification method to find important bits or bytes from content of each message and clustering method to check whether these bits or bytes are important or not. Because of the lack of domain experts in the CAN bus field, the results do not refer to semantic meaning about message IDs and messages from different devices, but they only focus on interesting relationship or rules between different messages.

Key words:CAN bus; message;data mining;association rules;classification; clustering汽车包含一系列电子控制单元,它们通过控制器局域网(CAN)总线系统彼此相连接并通信,通信数据包则可以记录在相应的日志文件中。本实验使用的源数据为模拟汽车CAN总线系统中获取的四个子网日志文件。为了研究这些通信,不只可以用传统的统计学方法来分析这些文件,还可以考虑用一些经典的数据挖掘方法来寻找重要的新规律或者特征。目前,数据挖掘工作大概被分为两类:一是预测性的工作,另一种是描述性的工作。在本文中,涉及的是后者。描述性的工作的目的在于发现潜在的令人感兴趣的模式,比如关联度,趋势,聚类等等。为了实现描述性的功能,本实验使用了关联规则来发现不同报文标示符(ID)之间的关系,分类方法用来寻找每条报文中重要的位或字节,聚类方法用来检测找到的位或字节重要的准确度。鉴于实验中缺乏CAN总线领域的专业知识,实验结果不讨论报文和其ID的实际含义,而只关注报文之间及报文内部的位(字节)之间的关系。本文以舒适性(Comfort)子网中的数据为例说明我们的实验。

1CAN总线及数据挖掘的基本介绍

1.1 CAN总线

CAN是控制器局域网络(Controller Area Network)的简称,是国际上应用最广泛的现场总线之一[1]。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。在协议的各个版本中,报文通信无论采用哪种帧格式,都有四种不同的帧类型:數据帧、远程帧、错误帧和过载帧。在此研究的是CAN总线日志文件中记录的数据帧,它由数据域和其他的6个控制位组成。由于实验研究的是对数据域的数据挖掘,因此在研究过程中,报文的结构被精简为:报文标识符(ID)和报文内容数据(Data)。

1.2 数据挖掘

数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘的任务主要有关联分析、聚类分析、分类分析等[2]。关联分析是寻找数据中频繁一起出现的项集模式。在本实验中,研究的是哪些报文ID经常同时出现。分类是首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。在本实验中,报文ID被作为类别标志,报文数据项的8个字节或者64个位被作为属性进行分类。事实上,在此并不训练分类模型来做预测,而只是借用信息增益(Information Gain)的概念在建造决定树分类模型的过程中来选择最优的属性来和其他属性做区分。而聚类分析是根据“各聚集内部数据对象间的相似度最大化,而各聚集对象间相似度最小化”的基本聚类分析原则,将聚类分析的数据对象划分为若干组,因此一个组中数据对象间的相似度要比不同组数据对象间的相似度要大[3]。

2实验

2.1 实验原理

鉴于CAN总线日志文件中的原始数据包含了大量其他信息,所以为了方便分析和数据挖掘,首先要对文件数据进行预处理,也就是从中抽取出报文ID和报文内容。图1显示了从原始数据中抽取出两列可测量数据的基本思想:

接下来寻找数据中有用的规律。首先考虑不同报文ID之间可能存在的关联规则。受经典的关联分析方法启发,可以用“超市购物篮”问题来描述本实验中的问题,即把数据集分别放入不同的“篮子”中,进一步说,把报文ID看做“单品”放入不同的“购物篮”,每一个购物篮就是一组。那么不同ID之间的关系分析就像超市购物篮中不同单品之间关系的分析了。对数据的分组在此采用两种形式:按照固定的报文ID号分组或者固定的时间间隔分组。针对前者,把出现频率最高的ID号作为分割线,每两个该ID之间出现的报文ID被分在一组;针对后者,每0.1秒之内出现的所有报文ID被分在一组。

下一步工作是寻找报文数据中重要的位或者字节。如果可以根据一个或者一些位(字节)的不同值来区分某部分或全部报文ID,就认为这些位(字节)是重要的。传统统计学方法可以很容易地为一个报文ID找到重要的位或字节。但是对日志文件中大量的报文ID却并不适用。为此采用决策树分类的信息增益方法来实现这个想法[4]。“信息增益”是用来衡量一个属性区分以上数据样本的能力。每个位(字节)被作为一个属性,其对应的报文ID号为最终的类别。

最后进行聚类分析的工作,目的是为了验证上一步的结果。一方面根据已找到的重要的位(字节)把数据记录分组,另一方面根据所有的位(字节)对数据记录分组。鉴于总线方面专业知识的缺乏,单纯的分析结果本身没有意义,但是在此可以通过比较两个结果集合的相似度来验证重要位(字节)的准确度。

2.2 运行环境和工具

对数据预处理的工作由Java编写程序实现。然后选择Spss Clementine[5]作为数据挖掘工具,对处理过的数据进行分析。Clementine是一个数据挖掘工具平台,它有着更好的图形用户界面,能够高效地进行数据统计和分析。

2.3 实验步骤

⑴数据预处理:预处理的目的是把原始日志文件中杂乱的数据转化为可处理的数据。如上文所述,抽取出每条报文的ID号和8字节的数据内容,把8字节再转化位64位,选择出现频率最高的ID号531作为标记把整个数据集分组以及按时间间隔0.1秒把数据集分组。

⑵数据挖掘:针对上一步中根据两种方式得到的数据集分组进行关联规则分析。在Clementine上运用apriori算法,得到两组结果。图2显示了按0.1秒时间间隔分组的实验结果。

接下来根据报文记录中的8个字节和64个位分别建立决策树模型,通过寻找能把报文ID进行最细化分类的最小属性集合,得到的位(字节)即为重要的位(字节)。图3展示了寻找重要字节的实验结果。

最后進行聚类分析。随着日志文件的增大,报文ID的数量也随之增加,因此在建立决策树模型的过程中最终的类别标记也会随之增加,就会需要越来越多的的位或者字节来区分报文内容,最终会覆盖所有的位或者字节。在这样的情况下聚类分析就没有意义了。因此在本实验中只把报文记录分入五个聚类。图4展示了根据重要字节聚类以及根据所有字节聚类分析的比较。

2.4 实验结果

对关联分析,通常用支持度和信任度来描述结果。本实验只查看了支持度高于10%和信任度高于50%的结果,一共有43条关联记录。如结果记录35B->531,470,373,3E1表示在所有的分组中,这五个ID同时出现的概率超过10%,而当ID35B出现的时候,531、470、373和3E1同时出现的概率高于50%。用户可以根据自己的需求得到不同支持度和信任度的报文ID。

对分类分析,根据模型计算,报文中的第1、2、4、5、6字节和第1、2、3、4、5、6、7、8、11、16、17、18、19、20、25、42位比较重要。

对聚类分析,按照上一步骤选择的五个重要字节一共可以把3386条记录分入五个聚类;按照所有的字节一共可以把3555条记录分入五个聚类,所以得到按字节聚类的准确率为3386/3555=95.25%。通过类似的分析可以得到按位聚类的准确率为1158/3495=33.13%。此结果说明,本实验通过建模分析选择的重要字节准确性较高,而选择的重要位意义不大。

3结论

本文展示了如何运用数据挖掘技术从原始的CAN总线日志文件中寻找规律的过程。首先通过编写预处理功能来转化数据格式,然后把一些经典的数据挖掘算法扩展到实验中,运用关联规则、分类分析和聚类分析找到不同的报文ID之间的关系以及不同的位(字节)对报文的重要性影响,最后对实验结果根据不同需求做出总结评估。对今后的工作可以有如下两方面的改进:一是使用更复杂的数据挖掘方法,比如对动态的数据集进行实时分析或者根据时间序列寻找文件中的序列模式;二是可以在了解总线专业知识的基础上对实验结果做出具有实际意义的解释。

[参考文献]

[1]Robert Bosch GmbH.CAN Specification Version 2.0[Z].1991. http://download.csdn.net/download/lc841004/920494.

[2]J.Han,M.Kamber.Data Mining: Concepts and Techniques[M]. San Francisco:Morgan Kaufmann Publishers,2001:20-25.

[3]I.H.Witten,E.Frank.Data Mining: Practical Machine Learning Tools and Technique(2nd Edition.)[M].San Francisco:Morgan Kaufmann Publishers,2007:112-120.

[4]P.N.Tan,M.Steinbach,V.Kumar.数据挖掘导论[M].北京:人民邮电出版社,2006:32-39.P.N.Tan,M.Steinbach,V.Kumar.Introduction to Data Mining[M].Beijing:Posts&Telecom Press,2006:32-39.

[5]The Predictive Analytics Company. Spss Clementine 11.1 for Windows[Z].2007.http://download.csdn.net/download/open_567/1239185.

猜你喜欢

字节日志报文
基于J1939 协议多包报文的时序研究及应用
一名老党员的工作日志
No.8 字节跳动将推出独立出口电商APP
CTCS-2级报文数据管理需求分析和实现
扶贫日志
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
游学日志
简谈MC7字节码
ATS与列车通信报文分析