数据流挖掘机器学习算法——Hoeffding Tree

数据流挖掘机器学习算法——Hoeffding Tree

Hoeffding Tree是为解决数据流分类问题所提出的

数据流

  1. 概念:数据流(data stream)是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。

  2. 特点:
    a. 数据是快速到达的;
    b. 数据的属性纬度很广;
    c. 数据的到达时间是持续的.
    d. 数据流中还存在“概念漂移”、“不平衡“等特性.

  3. 与传统的关系数据模式的区别:
    a. 数据联机到达;
    b. 处理系统无法控制所处理的数据的到达顺序;
    c. 数据可能是无限多的;
    d. 由于数据量的庞大,数据流中的元素被处理后将被抛弃或存档(archive).以后再想获取这些数据将会很困难,除非将数据存储在内存中,但由于内存大小通常远远小于数据流数据的数量,因此实际上通常只能在数据第一次到达时获取数据。

  4. 针对数据流的建模的要求:
    在数据流分类算法的设计中,应该以到来的部分数据为训练集,实现分类模型的训练,并随着后续数据的不断到达来更新原有模型,使该模型更适合数据流环境。

  5. 目前在数据流分类算法上主要存在两方面的问题:
    a. 提高决策树模型精度的同时必定会以空间复杂度为代价,而数据流的数据规模庞大与之相矛盾.
    b. 现实的生产生活所产生的数据流中存在“概念漂移”现象,会造成决策树模型的精度降低.

  6. 为何要选择决策树来做数据流的分类:
    简单的说,选择决策树算法作为数据流的分类算法是因为它构建方便易于实现,并且需要存储
    的信息少,占用的存储空间少,便于分析与可视化。

Hoeffding Tree

Hoeffding树是一种基于决策树学习的数据流分类算法,在处理数据流时,可以保证挖掘效率的同时,达到对数据流一些必要操作的要求。
该算法简单的对数据流中的每个样本检查一次,并逐步生成一颗决策树,而在这些样本更新完决策树之后无需进行存储。 在内存中只需维护决策树信息,因为在决策树的叶结点中存储着决策树扩展所必须的统计信息,并且在处理训练数据集时,可以用决策树中的信息进行预测。
Hoeffding Tree算法的缺点:没有决策树调整方面的设计.

VFDT(Very Fast Decision Tree)

  1. VFDT(very fast decision tree)是基于Hoeffding tree改进的算法和系统,它和Hoeffding tree算法相似之处在于都是根据Hoeffding 不等式来决定决策节点的最佳属性从而建立决策树模型。

  2. VFDT算法采用固定的时间和内存大小来处理数据,以提高了流数据分类算法的时间和空间方面的效率,特别是针对高速数据流。通过Hoeffding 不等式实现从无限的样本中通过有限的样本在一定的置信度以内找到符合条件的决策节点特征属性。

  3. VFDT决策树的生长:样本从根结点开始,根据其属性不断划分遍历直到叶子节点,叶子节点保存其属性值用来判定类别。随着数据流中的样本在决策树的各个节点的遍历,叶子节点的属性统计值不断更新。

  4. VFDT系统解决了Hoeffding tree算法没有提到的实际问题,就是当两个属性的信息熵差不多时,这个时候就会发生两个属性之间的权衡。这是系统需要花费大量的时间和空间,利用更多的样本来决定选择哪个属性为最佳的决策节点的属性,而这显然是浪费的。

  5. VFDT算法相较于Hoeffding Tress算法的改进:
    a. 提供了一个用户定义的阈值τ 用来解决“两个属性的信息熵差不多时的博弈”。当信息熵差值小于某个阈值时,即可判定其为决策节点属性。
    b. 允许设定节点的最小样本个数值nmin,在用户能够承受的置信度下,让用户设定每个节点最小的样本数将有效的减少样本信息熵G的计算而消耗的时间复杂度。
    c. 提供重新扫描数据集和二次抽样的功能,并且在数据流中的样本数减少时,决策树的精度也会无限逼近于读取所有样本建立决策树的精度。

  6. 算法伪代码:
    数据流挖掘机器学习算法——Hoeffding Tree_第1张图片

CVFDT

  1. VFDT 算法假设所分析处理的数据流是平稳分布的,所以应对数据流中概念变化时采用的是单一的决策树模型,这就导致VFDT的决策树模型不能及时反映数据流随时间变化的趋势。
  2. 另外VFDT也没有处理连续值属性的问题。因为在CVFDT 中滑动窗口的引入,过时的样本都被删除,所以 CVFDT 树比 VFDT 树要小很多。 CVFDT根据滑动窗口中的数据流样本来持续检测旧的决策树的有效性从而保证建立模型与概念漂移同步。
  3. CVFDT算法对VFDT算法的改进:
    a. CVFDT算法解决了VFDT算法不能处理数据流中概念漂移的问题。通过在VFDT算法基础上添加滑动窗口使得建立决策树模型的数据流能够不断实现更新,保证在概念漂移的数据流中保持模型的准确率。
    b. 对于每个节点包括根节点都有相应的ID。样本遍历每个节点时不仅会在节点处保存其样本的属性信息,同时窗口中的样本也会保存其遍历过的节点信息。当样本滑出窗口时,该样本所经历过的节点统计值将依次减一。
    c. CVFDT还为每个决策节点设置备选子树,周期性的检测每个决策节点的准确率从而决定替代子树是否替换当前的决策节点,从而也有效的提高了决策树模型的准确率。

参考文献:

  • [1] E. Garcia-Martin, N. Lavesson, H. Grahn, E. Casalicchio and V. Boeva. Hoeffding Trees with nmin
    adaptation. IEEE International Conference on Data Science and Advanced Analytics, 2018.
  • [2] E. Garcia-Martin, N. Lavesson, H. Grahn. Identification of Energy Hotspots: A Case Study of the Very Fast Decision Tree. International Conference on Green, Pervasive, and Cloud Computing, pp.267-281,2017.

你可能感兴趣的:(数据流挖掘之分类算法)