❶ 车联网数据分析(一):用户出行行为分析
“数据 - 数字时代的石油”
“数据是新的石油”
在网络上、媒体上我们经常看到有人这样宣扬。
问题是: 我们能够像提炼石油一样从数据中提炼出价值来吗?
笔者多年从事汽车及出行领域的信息技术(IT)及产品研发,在这里就车联网数据分析的一些实践做个分享,看看能够从这些数据“石油”中提炼点什么,抛砖引玉。
下面的分析是针对单个车辆的车联网数据进行分析,而不是群体车辆的行为分析。
笔者计划从下面几个方面进行探讨(具体的会根据实际情况和各方面的反馈来调整):
- 用户出行行为分析
- 用户驾驶行为分析
- 燃油车车辆动态行为分析
- 电动车电池及充放电行为分析
- 能耗分析
本篇分享一下用户出行行为的分析过程。
先看看车联网数据到底有多大,各家OEM和后装解决方案的数据采集信号、采集频率都不同,也没有行业统一标准。这里举一个例子,让大家粗略感受一下。
- 假设数据采集频率为1 Hz(所有信号每秒采样1次),家用汽车平均每天使用2个小时(燃油车引擎启动就开始采集数据),一年就采集了365 * 2 * 3600 = 2.628 * 106次。
- 如果每次采集的数据量为10 KB,那么,一辆车一年就产生大约26.3 GB 的数据。
- 一年一百万辆装备有车联网的车将会产生26.3 GB * 106= 26.3 PB。(2018年中国有6家OEM年销量过百万)。
- 丰田、大众、雷诺日产2018年全球销量均超过1000万。假设这几家OEM在未来数年内销量均保持这一水平,并且从今年开始实现100%新车车联网,每辆车平均寿命6年,那么6年后这些OEM存量车联网的车就是6000万,每家OEM每年将新增数据:26.3 GB * 60,000,000 = 1578 PB = 1.578 EB/年.
这么大的数据量,采集、传输、存储,如果以现在的技术和市场价格,成本是十分惊人的。所以,笔者大胆猜测,大多数OEM和物流公司在实际运营中都会降低采样频率,或者减少采样信号,或者以事件驱动,而不是以固定频率采样数据,以节省成本,尽管,技术上没有问题。
对上述目标的分析,笔者使用的车联网数据集来自于一辆车联网实验性乘用轿车。数据源本身就是脱敏的,去除了位置信息、用户信息、车辆等静态信息,只有车辆的动态数据。时间跨度为:2017年6月至8月。
采样频率高于1Hz,也就是平均每秒钟采样不止一次。原则上,采样频率越高越好,这样保留了高频信息,可以更加深刻地分析车辆的动态行为。
这几年热得一塌糊涂的无人驾驶,主要传感器的采样频率都不低于10 Hz。为什么采样频率要求这么高呢?比如,在高速公路上以120公里/小时的时速行驶,那么每秒钟行驶的距离是:120000/3600 = 33.3 米/秒。也就是说,在0.1秒的时间里(对应10 Hz),车辆已经行驶了3.33 米,这个距离足以将车辆驶离车道并酿成事故。
有了原始车联网数据(通常以CSV文件格式保存),笔者要对它进行预处理,为后续的数据探索、可视化,以及模型分析准备原料。
笔者使用的工具全程都是 R语言。
如何处理?要不忘初心、牢记使命:本部分数据分析的目的是 – 用户出行行为分析 。
基于该目的,我们所需要的数据项其实很少,只需要下面三项数据就可以了(是不是太简单了点?是的,就是这么简单。就像,都是小麦,光面条就可以做出很多种,更不要说各种面包,还有数不清的 mpling了):
- 时间戳– 每条记录发生的日期和时间
- 里程表
- 引擎转速– 判断车辆状态
如果有明确的、可靠的信号用于判断车辆状态,那么不建议使用“引擎转速”了。笔者认为这完全取决于实际的数据质量和内容。如果各位大神有更好的解决方案,欢迎分享和交流哦。
把其他的数据项暂时摈弃,只保留这三项,现在可以进行下一步了。
如果上述数据中,不同信号的采集频率不一样,那么,合并(或者叫融合,信号之间的融合)数据是非常重要的一步。合并可以发生在清洗、整理、聚合中间,或之前、之后的某个时间,具体要根据实际数据的情况来决定,很难一概而论。
首先了解选择的数据集的summary信息,可以快速知道哪些字段有数据缺失,有多少缺失。如果有缺失值,需要分析这些数据对我们的分析目的会有什么影响。如果没有什么影响,就删掉它们。
其次,时间戳是以字符串的形式存储的,包括日期和时间,笔者用的数据集精确到毫秒。这样不利于后续的计算和分析。需要把它转化成便于计算和分析的数据。毫秒的精度对我们分析用户出行行为来说没有意义,所以,由时间戳生成年、月、日、时、分、秒,这样,后续可以按照这些时间尺度进行聚合。
最后,按秒对数据进行聚合。选择的数据集高于1Hz的采样频率,但是实际原始数据往往不会100%严格按照相同的采样频率生成数据,有时1秒内有多条记录,有时会有缺失,看起来不是完全连续的。如果是车速等数据,聚合时采用平均值。里程数据是个累计值,所以取每秒内的最后一个数值,为了计算简单,都用平均值也可以,因为1秒内里程数据很难有大的变化。
经过这些步骤后,数据就规整了很多,可以进行下一步了。
将数据分割成一个个单独的驾驶行程,这样可以方便后面的出行行为分析了。
如何判断一个驾驶行程的开始和结束呢?
对于燃油车,一般来说,发动机启动后,才开始采集车联网数据,所以,没有数据就可以假定为车子是熄火的。这里用的数据就是燃油车的数据。
对于纯电动车(BEV),充电的全过程都会采集数据。
对于插电混动(PHEV)车,判断的依据要更加复杂一些,这个问题以后再讨论。
需要注意的是,真实数据通常不可能是理想的,每一步都要仔细检查,如果有疑问,或者不合理,找出那些引起可疑的数据,仔细分析原因,再根据发现的原因进行调整。这是一个不断试验、不断迭代的过程。
完成技术上的分割后,需要合并、过滤,得到相对合理的“有意义的”驾驶行程,在这个示例中,笔者得到了142次驾驶行程。也就是说,从2017年6月至8月的时间里,开了142次车。
处理完这些之后,我们就可以下锅做菜了,看看能不能做出点有意思的东东来吧。
分析的过程通常是由浅入深、由全局到局部。
如果数据足够多,建议先从大的时间尺度开始,比如从年开始,到月、日、小时,再到单个驾驶行程。最后,看看这些驾驶行程之间的关系,行程和各个时间维度之间的关系。一步步深挖。
首先,对整个数据集要有一个总体的认识,这个可以通过统计下面表格中的指标来完成。列出来的指标只是用于示例,具体需要统计哪些值应该根据分析的目的、业务场景、实际的原始数据集等。还是那句话:具体情况,具体分析。
其次,我们看一看该用户每月驾驶(出行)的频次,和旅行的总里程(公里数)。如图1所示,7月份开车的次数和行驶总里程最多,差不多是6月和8月的两倍。
从每月开车的次数来看,7月份开了70次左右,6月份半个月就有接近40次,而8月份仅有34次开车记录。那我们很想知道 8 月份的开车次数为什么减少了那么多呢?
统计一下每天驾驶的次数,如图2所示。结果有些让人意外,6月份从14日至24日(11天),7月份从10至29日(共18天,中间缺了2天),8月份从5至12日,27至31日(总共13天),其他的日期没有车联网数据。接近一半的日期里没有车联网数据。
是什么原因导致的呢?是那些天用户完全没有开车吗?还是由于某种原因,数据没有传输上来呢?
回答这个问题并不难。
我们还是从查看原始数据着手,里程表是不断递增的。比对最后一条记录的里程表和第一条记录的里程表数据得知,两者的差值是5646公里。回想前面表格里统计的“总驾驶里程”为2666公里,这说明在那些缺失数据的日期里,车辆仍然驾驶了接近3000 公里。
这也提醒分析人员,如果再对这批数据按月份进行分析,已经失去了意义。
因为这批原始数据来自于一辆车联网实验性的乘用轿车,我们不能要求太高。但是对我们实践我们的研究方法依然有效。
再前进一步,从日期的角度看看用户驾驶/出行的特征。如图3所示,共统计了三个指标的分布:
1. 左上– 每天驾驶次数的分布,中值是3次,最多有7次。说明该用户开车比较频繁。
2. 右上– 每天行驶距离的分布,中值是63公里左右,最多一天行驶261公里。
3. 左下和右下两张图– 每天驾驶时长的分布,中值在90分钟处,说明该用户每天大约开车一个半小时。用频率图从另一个角度可以看到驾驶时长的分布特征。
在实际工作的时候,分析人员根据实际情况选择该用什么样的图表来更好地展现。
现在分析 单次驾驶的行为特征 。先从最简单的统计特征,单次驾驶距离和驾驶时长,入手。如图4所示,
- 该用户开车的距离多数在10公里以内,或者在30-50公里范围内。
- 每次开车多数分布在5-15分钟内,或者在30-60分钟内。
无论是距离还是时间长度都有两个峰值,是不是有某种背后的原因? 又一次把笔者的胃口吊起来了。
下面我们看一看单次驾驶距离的散点图,如图5所示,每一次驾驶的距离在图中表示为一个小圆点,从6月14日开始的第一次驾驶到8月31日记录的第142次驾驶,总共142个点。
根据前面的距离分布图(图4)得到的启示,我们从下图中可以观察到几个特征:
1. 有一个超过200公里的行程,鹤立鸡群。其余的都没有超过100公里的。
2. 在15公里以下有很多点行驶距离十分接近。
3. 在30-50公里也有很多点的行驶距离十分接近。
我们似乎找到了前述疑问的答案,但是咱们既然是做数据分析,就要显得更加“科学”和“客观”,让数据来说话,而不是凭肉眼观察和猜测,否则,怎么显示出分析师的“逼格”来呢?
如何让数据说话呢? 聚类分析 是个好的工具,尤其是这里只有一个变量,K均值的方法就可以了,简单易行。
一开始,我们并不能确切地知道(假装不知道,这样才能“客观”)该分成几个聚类簇,一个做法是:从K = 1 到n(n 的取值要足够大,以保证最佳簇个数不大于n)都做一次聚类分析,然后比较各个K值下的 Betweens/TSS (簇之间的总平方和 / 总离差平方和),该比值越大,聚类效果越好。一般来说,K值越大,该比值也会越大。极端的情况是,比如,有100个点,分成100个聚类簇,这样当然没有意义。所以这里需要一个主观判断,通常在比值差不多的情况下,应该选择最小的K值作为最佳聚类簇。
在这个例子中,我取n = 10,因为直觉告诉我,最多3或4个聚类簇就够了,在此基础上放宽一到两倍作为n的取值应该足够了。
直觉会告诉我们可能有几个聚类,但是不要完全相信直觉(否则,就不“客观”了),还是应该让数据说话。
这里多啰嗦几句:在做数据分析的时候,直觉很重要,但是笔者建议更多地应该把直觉当成线索、孕育新的想法,就像是侦探破案一样。如果有一些小伙伴一起探索、探讨就更好了,可以时不时地问问:“元芳,你怎么看?”。
好了,把K从1到10循环做聚类分析,将这10个K值对应的Betweens/TSS显示在图上,如图6所示。可以清楚地看到,K = 3 和 K = 4 时,结果非常接近,但是比 K = 2 时显著改善,所以,笔者选定 K = 3 作为最佳聚类簇。
按照K = 3做聚类分析,重新绘制图5:单次驾驶的距离– 散点图,同时用不同的颜色区别聚类簇,如图7所示。
从图中,可以清晰地看出簇1(红色)只有一个点,就是那个单次驾驶距离最大的那个点,超过200公里,再一次鲜艳地鹤立鸡群。
既然簇1(红色)只有一个点,明显是一个特例,就不再深挖了(真相是挖不下去了)。
下面对簇2和簇3分别作进一步的分析。
对簇2(绿色)的驾驶次数,分别按照一天24小时、星期、单次驾驶距离,和单次驾驶时长,作频率分布图,如图8所示。从图中可以观察到下面几个特点:
1. 大部分驾驶行为发生在下午至晚上,以下午3点至5点最多。
2. 周日至周六都有,但是以周二最少。 又是一个线索,不是吗? 值得进一步深挖。限于篇幅,就不再赘述了(累了,歇歇吧)。
3. 驾驶距离大部分不超过10公里。
4. 开车时间大部分不超过20分钟。
好像是一个生活比较有规律的人啊。
同样,对簇3(蓝色)也做同样的分析,如图9所示,仔细观察这些分布图,可以发现下面几个特点:
1. 驾驶的时间十分有规律,大部分发生在早上10 - 11点,和晚上7 - 9点。
2. 周一至周5特别显著,周日完全没有。
3. 驾驶距离大部分出现在30 - 36公里之间。
4. 开车时间大约在30 - 60分钟之间。
从这些特征不难推测,簇3反映的是工作日上下班的驾驶行为。而家里到公司的距离大约30多公里,单程需要开车30分钟至1小时。交通状况还是不错的哦。
平均来看,上班时间大约早上10点,下班时间晚上8点。是不是和某一类熟悉的人群的特征比较吻合啊?有一种似曾相识的感觉。
结合簇2的特征,工作之余,主要在方圆10公里的范围内活动。簇1告诉我们,3个月内仅有一次远门。哈哈,形象更加丰满啦!
一不小心又自嗨了,初当程序员时的毛病,这么多年还是没有完全改掉。别忘了,这3个月里还有一半的日子没有数据呢。
至此,要演示的用户出行行为的分析告一段落了。笔者用到的数据仅有三项:
- 时间戳
- 里程表
- 引擎转速(仅用于推算车辆状态)。
如果辅之以更多的、“相关的”数据字段,我们可以做更加深入的、多个角度的分析。
在这个过程中,如何提出问题、从数据中发现线索、不放弃任何一个疑点,然后像个侦探一样,一步一步地挖掘。坦率地说,这个感觉真的不错。
后续,笔者还会就车联网数据在其他方面的分析,进一步分享,敬请期待!
❷ 大数据和云计算,在汽车自动驾驶技术里的作用是什么
数据和云计算,在汽车自动驾驶技术里的作用是什么?可以基于路况、车辆性能、驾驶员操作习惯等因素,提供节能减排、降低驾驶疲劳的驾驶方案。自动驾驶借助汽车上的激光传感器和GPS,车辆通过相对先进的算法进行自我定位。
在道路上行驶是一个处理大量数据并做出决策的过程,而自动驾驶汽车则使用各种传感器来“观察”道路。这个过程也会产生大量的数据,平均1.5小时左右的驾驶时间会产生4TB的数据。在车辆方面,显然不适合处理和储存如此巨大的工作量。所以最好的办法就是使用云计算和云存储来支持自动驾驶汽车。
❸ 交通事故大数据分析 哪些道路最危险,哪些时候易发生事故
12月2日是第九个122“全国交通安全日”,今年的主题是“知危险会避险安全文明出行”。省公安厅交通管理局对2020年前三季度全省道路交通事故进行了数据分析,请广大驾驶人从事故中吸取教训。
加大宣传引导力度,提醒佩戴头盔,减少事故伤亡
(一)什么时间容易发生交通事故:下午和前半夜的14-22时事故起数和死亡人数分别占总数的44.3%和41.3%,呈高位运行状态。其中,18至19时发生事故最多,19至20时死亡人数最多。
(二)什么道路上交通事故较多:在前三季度全省交通事故总数和死亡人数中,高速公路占总数1.45%、5.59%;国道占总数的9.3%、13.7%;省道占总数的16.6%、23.7%;城市区道路占35.1%、20.1%;农村地区道路(含县、乡和其他道路)占总数的37.6%、36.8%。农村地区事故情况同比去年有所下降,但事故占比仍为前三季度事故总量最高。
(三)哪些违法行为最易引发交通事故:驾驶车辆操作不规范妨碍安全的行为、未按规定让行、无证驾驶、酒后驾驶、逆行、超速行驶、违反交通信号是引发我省道路交通事故的主要原因。上述七项主要违法行为引发的事故和导致的死亡人数,分别占总数的72.9%、73.6%。其中,驾驶车辆操作不规范妨碍安全的行为占事故总数最大,占总数的31.2%、未按规定让行占总数的14.8%、酒后驾驶(含醉酒)占总数的6.8%、无证驾驶占总数的6.4%、逆行占总数的5.2%、超速行驶占总数的4.5%、违反交通信号占总数的4.1%。
(四)什么样的交通事故后果最严重:高速公路单起事故死亡率最高,是全省平均数的3.84倍。超速行驶致人死亡率最高,是全省平均数的1.85倍
(五)哪个驾龄段的驾驶人最易发生交通事故:6至10年驾龄驾驶人引发事故起数和死亡人数占比最大,其次是11至15年驾龄驾驶人、3年以下驾龄驾驶人。20年以上驾龄驾驶人最少。
(六)什么的车型发生交通事故最多:小型客车肇事起数和死亡人数占比最高。私用车辆事故起数和死亡人数占比最大,发生事故数量和死亡人数分别占总数的80.2%、64.68%。其次是驾驶重型货车、驾驶电动自行车、驾驶摩托车。重型货车单起事故死亡率最高。
(七)哪些道路今年发生交通事故多,需要避险绕行:京沪高速青县段159公里至178公里处、长深高速唐山西外环950公里至969公里处、大广高速威县段1683公里至1702公里处、国道京环线霸州境内58公里至67公里处、国道京广线任丘县境内151公里至160公里处、国道岐银线沧县境内61公里至70公里处、国道青石线宁晋境内595公里至604公里,国道京环线高碑店境内97公里至106公里、省道保沧线高阳境内54公里至63公里、省道晋州连接线8公里至17公里。
当前,交通安全形势十分严峻,随着冬季恶劣天气的到来,也将进入全年事故多发高发期。今年“全国交通安全日”的主题是“知危险会避险”,意在提醒所有交通参与者,主动了解不同的出行方式可能面临的安全风险,科学掌握防范事故的知识和技能,善于自我防护,有效规避危险。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。