[0029] 一种基于车载诊断系统数据的路况分析预警方法,首先通过读取车辆上安装的OBD样本数据来获取车辆行驶的数据(速率、行驶方向、加速度、位置等),监听异常行为(急刹车、急速行驶等),然后上传到云端数据分析中心利用多种深度学习算法分析并学习用户的驾驶行为,对样本数据进行多次建模和评估,以判断当前道路的拥塞状况、是否容易产生急刹车等危险行为。在获取并分析了足够多的数据之后,系统会根据用户的驾驶行为二次建模,告知用户当前路况,在易堵车的路段和事故高发路段提前警示用户,从而大幅度降低堵车概率和事故发生概率。
[0030] 如图1所示,一种基于车载诊断系统数据的路况分析预警方法,具体包括如下步骤:
[0031] 步骤一、将用户个人信息与车辆信息录入云端数据分析中心,每个用户建立一个数据库,并设置密码;通过车辆上强制安装的汽车诊断第二代系统(OBD2,the Second On—Board Diagnostics)接口,按照汽车诊断第二代系统协议读取车辆数据后,将车辆数据上传至云端数据分析中心中对应该车辆用户的数据库。
[0032] 步骤二、云端数据分析中心利用深度学习算法分析步骤一中得到的车辆数据并建立分类模型,如图2所示:
[0033] 1、对不平衡数据集进行处理,使用欠采样使数据集达到平衡。避免出现正常数据比例过大,异常数据比例过小的现象。
[0034] 2、对车载数据集建立分类模型,辅助路况分析与行为分析。将数据贴上正常与异常两个标签,然后按相同比例分为两部分:去除标签的数据集和保留标签数据集。
[0035] 采用基于k-means算法与高斯混合模型相结合的异常检测机制对无标签数据集进行聚类分析,采用基于k-means算法的异常检测机制对有标签数据集进行同样聚类分析。从汽车诊断第二代系统接口上收集到的数据视为一系列的向量,代表高维空间的一系列特征点。K-means算法对特征点进行分簇,分为异常和正常两簇。对于单个数据点的车辆行驶状态,观察它相对于哪个簇中心的欧几里得距离更近,然后比较其他数据点到簇中心的距离方差,即可判断该点是异常状态还是正常状态。无标签的数据集还需要在后期加入高斯混合模型来计算计算数据被分在不同类中的概率,进而实现数据点的细分类,获得更为精确的结果,避免过拟合的产生。
[0036] 3、对实时数据集建立路况预测模型,为预警提供技术支持。使用车辆行驶中出现的异常数据点来刻画道路的整体状态,利用自编码器进行异常信息的检测,并且用BP算法进行模型训练。自编码器中的模型有压缩数据和恢复数据的作用,压缩和恢复主要针对隐藏层中的特征数据。被提取出的特征数据将经过sigmoid函数,以实现车辆数据的离散化,进而满足了K-means算法的使用条件。通过BP神经网络赋予每个属性权值,以克服传统K-means算法各属性等权的缺点。自编码器对驾驶员驾驶习惯的再次建模可以给所有用户匹配个性化路况预警,有针对性地改良不良驾驶习惯,大幅度提高个性智能化预警的水平。
[0037] 步骤三、云端数据分析中心将步骤二中分析完成的数据存储至对应车辆用户的数据库中,并将分析结果发送至用户移动端,查看时需输入步骤一中设置的密码,确保数据安全性。移动端根据数据告知用户当前路况,提示危险路段和拥塞路段,同时纠正用户不良驾驶行为,实现实时预测。
[0038] 步骤四、建立度量指标。量化模型的性能,检验模型的正确性、稳定性和可依赖性,进而辅助后续的改进。
[0039] 采用将带标签的数据去除标签后重新投入路况分析模型,将结果与原标签数据对比,验证模型的准确性。
[0040] 或是使用聚类结果的簇划分。令簇划分为:C={C1,C2,...,Ck},定义dcen(Ci,Cj)=dist(μi,μj),avg(C)代表簇内样本间的平均距离,dcen(Ci,Cj)对应于簇Ci和簇Cj的质心距离,dist()用于计算两个样本之间的距离,μ代表簇的质心。采用DBI指数对K-means的聚类结果进行内部评价见式(1):
[0041]
[0042] DBI指数越小,聚类结果越好。通过收集用户体反馈数据或者其他途径得到了比较权威的参考模型,就可以考虑性能度量的“外部指标”了:设现有数据集D={x1,x2,......xm},簇划分C={c1,c2,........ck},参考模型簇划分C*={c*1,c*2,......c*s},令λ与λ*分别表示C和C*对应的簇标记向量。考虑所有样本对在两个组划分中的归属情况分为类别a、b、c、d见式⑵:
[0043] a=|SS|,SS={(xi,xj)|λi=λj,λi*=λj*,i<j}
[0044] b=|SD|,SD={(xi,xj)|λi=λj,λi*≠λj*,i<j}
[0045] c=|DS|,DS={(xi,xj)|λi≠λj,λi*=λj*,i<j}
[0046] d=|DD|,DD={(xi,xj)|λi≠λj,λi*≠λj*,i<j} ⑵;
[0047] 然后采用Rand指数 评价模型,m为总类别数,评价结果在0~1之间,结果越高说明聚类效果准确性越高。
[0048] 通常用于检测正常类的简单模型将会检测出超过99%的准确率,所以不能用简单的准确率作为评估指标,而是采用F2系数评估方法,引入精确率和召回率两个指标。在机器学习领域当中的python模块Sklearn的资料中显示:理想的系统兼具高精确率与高召回率,在返回大量结果的同时,所有结果的标签也都是正确的。
[0049] 精确率P被定义为:正类判定为正类的数量TP除以正类判定为正类的数量加上负类判定为正类的数量FP的总和
[0050] 召回率R被定义为:正类判定为正类的数量TP除以正类判定为正类的数量加上正类判定为负类的数量Fn的总和,
[0051] 由于正类判定为负类的后果会比负类判定为正类的后果更加严重,因此高召回率,意味着误将负类判定为正类的概率会增加;同时,为避免负类判定为正类的概率太大,使用F2分数 它兼顾精确率与召回率评估,更加重视召回率。同时报告混淆矩阵,研究错误的分布情况。