一种基于车联网的大数据分析方法

文档序号:6515950阅读:329来源:国知局
一种基于车联网的大数据分析方法
【专利摘要】本发明实施例公开了一种基于车联网的大数据分析方法,需要将输入的数据记录完全拆分成属性列表的形式,并进行一次排序,并产生产生根节点的分裂,通过循环分裂完成属性表的完全分裂,并生成一颗完整的决策树,提取树结构,并生成相应的模式规则。通过本发明可以从海量的车辆的数据中,进行分析处理,当接收到用户的搜索请求时,可快速分析出客户需要的数据和数据的组合,从而给用户提供决策辅助。
【专利说明】一种基于车联网的大数据分析方法
【技术领域】
[0001]本发明涉及一种数据分析搜索方法,尤其涉及一种基于车联网的大数据分析方法。
【背景技术】
[0002]随着汽车保有量的持续增加,消费者对汽车安全需求增加,车主对安全的需求不仅是车辆本身的安全可靠性,还体现在了那些能通过电子安全产品或服务技术提供更多安全保障的辅助驾驶系统,这种需求的扩张带动了市场对汽车安全检测需求逐渐膨胀。
[0003]目前现有技术的车联网品如安吉星、sync等,主要是集中的车载终端上,为车主提供的服务存在局限性,各服务环节没有联网或是联网而未能有机的整合,因而导致一系列问题:当汽车故障时,车主只能依靠4S店的救援、维修;由于汽车故障现场数据的丢失,增加了 4S店维修成本。保险公司因为没有精确的数据,被骗保现象时有发生,损失巨大;而有良好驾驶习惯的车主并没有获得客观的保费优费等。
[0004]构成车联网的每辆车每秒可以产生多达100条数据,数以千万计的汽车成年累月将形成海量大数据库,将车联网与大数据结合,可将车联网数据形成巨大的“数据宝库”,可以此为基础,开发出价值巨大的商业化应用,而目前市场上未有车联网大数据智能分析相
关广品。

【发明内容】

[0005]本发明实施例所要解决的技术问题在于,提供一种基于车联网的大数据分析方法。可对车辆大数据进行分析及快速搜索。
[0006]为了解决上述技术问题,本发明实施例提供了一种基于车联网的大数据分析方法,包括以下步骤:
对采集到的关于车辆的状态数据集拆分成属性表,通过SPRINT算法对连续值属性表进行排序,并从所述属性表中执行计算Gini值任务并寻找分裂点,将具有相同属性名的属性表附着在相应的节点上并打上相应节点的标记,并分发到同一个Reduce进行处理;将包含有相应Gini值及分裂点的属性表通过Reduce比较Gini值的大小,使用最小Gini值的属性作为最佳分裂属性,将对应的分裂点分裂到同一个节点的属性列表的记录Id写入哈希表,再将属性列表进行输出,并将根节点输入HDFS文件中;
通过Reduce根据属性的特点构造不同的直方图,并通过对已排序的连续值属性表或者分类属性表的扫描,实时的更新直方图,计算相应的分裂Gini指数,从而找到当前节点的当前属性的最佳分裂点,将输出的信息都放入HDFS文件中;
将不同节点上的属性表进行分发,将当前节点的所有属性表通过Reduce处理,并识别当前节点是否为叶节点,对非叶节点进行循环过滤,并将当前节点作为叶节点信息写入HDFS文件中。
[0007]进一步地,所述车辆的状态数据集通过获取车载终端获取车辆的OBD数据生成。[0008]更进一步地,所述OBD数据还包括胎压、定位数据。
[0009]进一步地,所述属性表包括以下形式:〈〈0,Ai, AC, Vj>,〈idj,Cj>> ;其中0表示所有的属性表附着在根节点上,Ai表示训练集的第i的属性,AC表示属性的类别,idj表示每条属性表记录在整个数据集中的记录索引,Cj表示这条属性表记录的类属性的值。
[0010]更进一步地,所述分发到同一个Reduce进行处理是定义Patitioner,并且要定义key的将具有不同的Ai的中间键值对分发到不同的reducer。
[0011]更进一步地,所述分发到同一个Reduce进行处理将输出键值表示为〈〈0,Ai, AC,Vj>,〈idj, Cj, Gini, Split〉〉;其中Gini表示相应属性表的Gini值,Split表示分裂点。
[0012]进一步地,所述识别当前节点是否为叶节点通过以下步骤识别为叶节点:
当前节点的所有属性表属于同一类;
当前节点所含属性表数量小于预先设定的阀值;
当所有的属性表都被分裂到同一个节点;
当前节点的属性表分裂到两个子节点中。
[0013]实施本发明实施例,具有如下有益效果:通过本发明可以从海量的车辆的数据中,进行分析处理,当接收到用户的搜索请求时,可快速分析出客户需要的数据和数据的组合,从而给用户提供决策辅助。
[0014]
【具体实施方式】
[0015]
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明作进一步地详细描述。
[0016]本发明根据实际应该用中,数据量庞大等特点,采用基于Hadoop (分布式系统平台,具有极强的分布式存储和计算的能力)的MIIS (Mult1-level Inverted IndexStructure)倒排索引结构、AMPS (Align and Merge Placement Strategy)倒排索引及副本放置策略和PforDelta压缩为基础系统平台。
[0017]MIIS倒排索引结构,基本思想是将倒排索引文件的主要内容分块存放在数据节点中,在名称节点中存放关键词和块位置信息的映射,以及某一时间段的文档集合与其倒排索引所在数据块位置信息的映射,倒排索引块存储在集群中的各个数据节点上并维护着存放倒排索引的数据块集合的状态信息。
[0018]倒排索引分布式构建算法的基本思想是:首先,对文档集合进行分块操作,将分好的块存放在HDFS文件系统中;然后利用Map操作对每个文档块生成倒排索引文件,利用Reduce操作对所有的倒排索引文件进行合并,生成该文档集的倒排索引;最后,倒排索引按照AMPS放置策略被分块写入到HDFS文件系统中,同时更新数据节点上的辅助块信息索引,并向名称节点发送相应数据更新名称节点上的辅助查询索引和辅助删除索引。整个构建过程中的数据读取和存放都是在HDFS文件系统中运行,
利用MapReduce能够快速地为大量文档块分布式构建倒排索引,并且按照AMPS放置策略来放置倒排索引文件,同时以MIIS倒排索引结构组织倒排索引文件,为查询和批量更新操作奠定了基础。
[0019]Hadoop主要有HDFS文件系统和MapReduce编程模型两个主要部分组成。[0020]HDFS (Hadoop分布式文件系统)文件系统架构是采用管理者-工作者(Master-Slave)的结构,也就是一个名称节点(Master)和多个的数据节点(Slave)。
[0021]MapReduce也是采用管理者-工作者(Master-Slave)的模式。Hadoop把一个作业(job)分成很多个小任务(task)来执行,这其中包括两种任务:Map任务和Reduce任务。
[0022]本发明采用SPRINT算法将采集到的车载终端的OBD数据集进行处理,分三个阶段执行分析处理,其中第一阶段主要用来产生已排序的属性表,产生根节点的分裂。第二阶段主要用来执行循环的分裂过程,完成属性表的完全分裂,生成一颗完整的决策树。第三阶段主要用来提取树结构,并生成相应的模式规则。
[0023]第一阶段:在这个阶段,需要将输入的数据记录完全拆分成属性列表的形式,并进行一次排序。在这个过程中,准备好附属所有在NodeO上的所有属性列表,进行相应计算,计算每张属性表的Gini值、分裂点,然后进行综合比较,实现首次分裂。然后我将相应的属性表附着在NodeOO和NodeOl上。为第二阶段的循环做好准备。第一阶段需要执行两个Job来完成。
[0024]Jobl 的 map 过程:
这个过程对OBD数据集进行拆分,并完全生成属性列表,用来表征所有的数据集。将训练集拆分为M份,对于每一份训练集,具有相同的属性个数n。这一过程由InputFormat(输入格式)来实现,它负责解析和生成map()的输入键值对。对于map()方法,输入为数据集的每条记录,通过定义相应的规则,将输出表示为:<〈0,Ai,AC,Vj>,〈idj,Cj>>。0表示所有的属性表附着在根节点上,Ai表示训练集的第i的属性,AC表示属性的类别(分类还是连续值),idj表示每条属性表记录在整个数据集中的记录索引,Cj表示这条属性表记录的类属性的值。具有相同属性名的<〈0,Ai,AC,Vj>,〈idj,Cj>>被分发到相同的reduce,并在到达reduce之前根据key定义的compareTo ()执行排序。它被称为中间键值对。中间键值对集合分割成的数量和reduce的数量是相等的,在这里也就是和属性的数量相等的。相同的属性会被映射到相应的reducer中进行处理。本次运算中,定义Patitioner,并且要定义key的将具有不同的Ai的中间键值对分发到不同的reducer。
[0025]Jobl 的 Reduce 过程:
当Reduce接收到所有的属性表时,MapReduce已经执行了排序。Reduce主要的任务
是:
①计算每张属性表的最佳分裂点,相应的Gini值。以便利用这些信息获取最佳分裂属性。
[0026]②将属性表的Gini值、分裂点等结果附着在属性表上进行输出
在这个Reduce过程中,为了将Gini值和分裂点等信息附着在属性表上。这个过程reduce 的输出键值对可表示成(〈〈O, Ai, AC, Vj>,〈idj, Cj, Gini, Split〉〉)。
[0027]Gini表不相应属性表的Gini值,split表不分裂点。显然的,由于这里输出的属性列表都是附着在节点NodeO上,直接使用0标记当前节点。而在之后的循环中,将0改为当前树节点的标号。
[0028]Job2 的 map 过程:
这个阶段的输入为Jobl的输出,即包含有相应的Gini值和分裂点的所有的属性列表。这里的map不需要做特殊的操作,由于现在只存在一个节点,即根节点,所以只需要将所有的属性表分发到一个reduce中,以便执行分裂过程。这里,将Job的Reduce个数设为1,即只使用一个Reduce来达到目的。
[0029]Job2 的 Reduce 过程:
此过程的Reduce将主要用来进行分裂。对于前面map的输出,即该Reduce的输入,都包含有相应的Gini值及分裂点。Reduce通过比较Gini值的大小,会使用具有最小Gini值的属性作为分裂属性。在确定最佳分裂属性之后,通过引入哈希表这一数据结构。确定最佳分裂属性之后,对于这个分裂属性,采用对应的分裂点,将分裂到同一个节点的属性列表的记录Id写入哈希表。这样,使用哈希表,对于非分裂属性的属性表,通过扫描记录Id是否包含在哈希表中,决定将其分裂到NodeOO还是NodeOl中。实际上,通过这一Reduce过程,已经得到了附着在NodeOO和NodeOl上的所有属性列表——输入HDFS文件中。输出时,除了输出属性列表,我们还要输出根节点的性质,即:非叶节点,分裂属性,分裂点。这些值已经能完整标记决策树的根节点。在这里,使用Reduce的多文件输出功能,将根节点的信息写入指定的文件中。这样,当分裂结束,才能寻找生成的树。
[0030]第二阶段:第一阶段准备了 NodeOl和NodeOO的所有属性表,输出了节点0的信息到指定的表示树的文件中。那么在第二阶段,需要定义一个节点分裂的迭代,直到所有的节点分裂完成。同样的,迭代的每一个过程,都需要2个Job来完成。需要注意的是,在第二阶段Job3的输出作为job4的输入,而job4的输出又作为job3的输入,由此产生循环。当所有的属性列表分裂完成,实际上被分配到相应的叶节点时,循环停止,进入第三阶段。
[0031]Job3 的 map 过程:
Map的功能主要用来实现属性表的映射。
[0032]Map总是从HDFS的文件中读取数据。那么,Map必须使用读取的信息生成之前定义的属性表的结构,以便利用和第一阶段使用的Patitioner相同的Partitioner实现不同节点的不同属性名的属性表的分发。这个阶段完全采用并行策略。除此之外,Map不做其他处理。
[0033]Job3 中的 reduce 过程:
通过使用Job3的Map的分发规则进行处理后而得到中间键值对到达reducer之后,一个Redeuce接收到同一个节点的具有相同属性名的属性表。同样的,连续值属性也已经经过了排序。那么,就像第一阶段Jobl的reducer —样,这里的reducer会根据属性的特点,即属于数值型还是分类型,构造不同的直方图。
[0034]通过对已排序的连续值属性表或者分类属性表的扫描,实时的更新直方图,计算相应的分裂Gini指数,从而找到当前节点的当前属性的最佳分裂点。由于输出的信息都放入文件中,这阶段Reduce的输出可用任何简单的格式,但是需要完全包含以下信息(<0,Ai,AC,Vj, idj, Cj, Gini, Split))o 这于第一阶段 Job2 中 Reduce 的输出既有相同的特点。
[0035]Job4 的 map 过程:
Job4中Map从HDFS文件中接受到Job3中Reduce的输出后,同样的执行分发。但是,这里与Job3中Map不同的是:只对附着在不同节点上的属性表进行分发,而不考虑是否它们具有相同的属性名。为了达到这样的目的,同时也可以提高算法的效率,降低数据结构的复杂度,只需简单的将输入的属性列表的当前节点设置为key,而将其他所有信息放入value中。这样,所有处于同一节点的不同属性的属性列表(附带有对应属性的分裂Gini值、分裂点等信息)将被分发到同一 Reducer。这个Map输出的中间键值对的格式表示为:(〈〈Node〉,〈Ai, AC, Vj, idj, Cj, Gini, Split〉〉)。这里的 Node 表示当前节点。
[0036]Job4 的 reduce 过程:
这个过程除了用来执行对当前节点包含的属性列表的分裂,还用来对属性表进行过滤。当当前节点的所有属性表进入Reduce,并且都包含了不同属性的最佳分裂点和Gini值时。首先应该判断的是:当前节点是否为叶节点。如果当前节点是属于叶节点,那么当前节点的所有属性表就不进行分裂,即不进入下次循环,这就是对属性表的过滤。同时,要将当前节点作为叶节点的信息写入指定的表示树的文件中。
[0037]当一个节点被认为是叶节点,那么一定存在着以下的情况:
①当前节点的所有属性表属于同一类。
[0038]②当前节点所含属性表数量小于我们预先设定的阀值。
[0039]③当所有的属性表都被分裂到同一个节点。这种情况是由于分裂点位于具有连续值属性中相同的值的属性表记录的中间,并且这个值是属性中的最大值或者最小值。
[0040]④当前节点的属性表分裂到两个子节点中。但是,附着在这两个子节点上的属性表数目都小于我们预先设定的阀值。并且,这两个子节点上的所有属性表中包含的最多的类相等。
[0041]如果当前节点出现上面四种情况中的一种,那么当前节点立即被认为是叶节点。如果当前节点没有出现上述情况中的任意一种,那么当前节点被立即认为是非叶节点。
[0042]如果当前节点被认定是非叶节点,分裂将继续进行。同样的比较各属性的分裂Gini指标,找到最佳分裂属性,分裂点,将属性表附着在相应的子节点上,将当前节点的信息作为非叶节点写入表示树的文件中。
[0043]循环的终止:
当所有的属性列表的分裂完成,即树的构造完成。这时,程序会出现两个特点:
1)所有的属性表被过滤,不会有任何属性表进入Job3中。
[0044]2)在当前树的层中,所有的节点都是叶节点,没有非叶节点的存在。
[0045]所以,可以利用上述两种情况中的任意一种结束循环。本实施例中,我们采用第二种方法,即判断是否存在非叶节点来结束循环。
[0046]第三阶段:当第二阶段完成,所有的属性列表都已被分配到相应的叶节点中,这时候,树的构造已经完成。由于MapReduce的输出直接被写入分布式系统的文件中,所以第三阶段的任务则是从这些reduce文件中获得树的构造。在第一阶段的Job2和第二阶段的Job4中,输出当前节点的信息到HDFS中预先指定的表示树的文件中。整个过程中,是通过设计一些特殊的输出信息来表现一颗树。
[0047]I)当通过判断,发现当前节点是叶节点,那么向文件中写入的格式为:〈〈@_Node,节点标记>,〈isleaf,叶节点上最多的类〉〉
2)当通过判断,发现点钱节点是非叶节点时,我们向文件中写入的格式为:《@@@Node,节点标记>,〈noleaf,分裂属性,分裂点>> 显然,使用所有的这些节点的信息,可以很容易的从文件中提取出树结构,因为所有的关于树的信息都得到了。树的所有节点,包括叶节点和非叶节点都使用“@_Node”标注。非叶节点使用“ no I eaf ”,而叶节点使用“ i s I eaf ”。非叶节点上包含了分裂属性和分裂点的信息,而叶节点上包含了最大类属性的值,这样,一棵树被构造完成。
[0048]当响应用户发出的查询关键词请求时,在名称节点上通过辅助查询索引找到该关键词的块列表信息,接着JobTracker建立一个查询工作,向TaskTracker发起多个Map任务和一个Reduce任务,通过map任务对索引块进行查询,将查询结果传入reduce任务节点进行合并,最后返回给用户最终的查询结果。
[0049]以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种基于车联网的大数据分析方法,其特征在于,包括以下步骤: 对采集到的关于车辆的状态数据集拆分成属性表,通过SPRINT算法对连续值属性表进行排序,并从所述属性表中执行计算Gini值任务并寻找分裂点,将具有相同属性名的属性表附着在相应的节点上并打上相应节点的标记,并分发到同一个Reduce进行处理; 将包含有相应Gini值及分裂点的属性表通过Reduce比较Gini值的大小,使用最小Gini值的属性作为最佳分裂属性,将对应的分裂点分裂到同一个节点的属性列表的记录Id写入哈希表,再将属性列表进行输出,并将根节点输入HDFS文件中; 通过Reduce根据属性的特点构造不同的直方图,并通过对已排序的连续值属性表或者分类属性表的扫描,实时的更新直方图,计算相应的分裂Gini指数,从而找到当前节点的当前属性的最佳分裂点,将输出的信息都放入HDFS文件中; 将不同节点上的属性表进行分发,将当前节点的所有属性表通过Reduce处理,并识别当前节点是否为叶节点,对非叶节点进行循环过滤,并将当前节点作为叶节点信息写入HDFS文件中。
2.根据权利要求1所述的基于车联网的大数据分析方法,其特征在于,所述车辆的状态数据集通过获取车载终端获取车辆的OBD数据生成。
3.根据权利要求2所述的基于车联网的大数据分析方法,其特征在于,所述OBD数据还包括胎压、定位数据。
4.根据权利要求1所述的基于车联网的大数据分析方法,其特征在于,所述属性表包括以下形式:〈〈0,Ai, AC, Vj>, <idj, Cj? ;其中0表示所有的属性表附着在根节点上,Ai表示训练集的第i的属性,AC表示属性的类别,idj表示每条属性表记录在整个数据集中的记录索引,Cj表示这条属性表记录的类属性的值。
5.根据权利要求4所述的基于车联网的大数据分析方法,其特征在于,所述分发到同一个Reduce进行处理是定义Patitioner,并且要定义key的将具有不同的Ai的中间键值对分发到不同的reducer。
6.根据权利要求4所述的基于车联网的大数据分析方法,其特征在于,所述分发到同一个Reduce进行处理将输出键值表示为?0, Ai, AC, Vj>, <idj, Cj, Gini,Split〉〉;其中Gini表示相应属性表的Gini值,Split表示分裂点。
7.根据权利要求1所述的基于车联网的大数据分析方法,其特征在于,所述识别当前节点是否为叶节点通过以下步骤识别为叶节点: 当前节点的所有属性表属于同一类; 当前节点所含属性表数量小于预先设定的阀值; 当所有的属性表都被分裂到同一个节点; 当前节点的属性表分裂到两个子节点中。
【文档编号】G06F17/30GK103577555SQ201310494123
【公开日】2014年2月12日 申请日期:2013年10月21日 优先权日:2013年10月21日
【发明者】杨格 申请人:汕头大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1