VFDT

  • 因为数据是 Stream 的形式,所以来一条就计算分裂不仅让模型很重,同时信息增益也不确定;然而,堆积很多的数据再计算明显不适用于online learning,所以应该选择一个 临界值,这个值又能够最大程度的表现样本分布,同时又不至于使模型很重,VFDT就是这样的模型,借助了Hoffding bound来解决上述问题。

  • Hoeffding bound可以描述为如下:

110133_tO6U_1399748.png

        使用更为通俗的语言描述的话:有15000个人的集合,要测这15000人的平均身高,那么使用抽样的方法,不需要测试每一个人的身高。随机抽样50人,测得身高180cm,那么霍夫丁不等式人为,这15000人的均身高最低是180-e,如图:

110708_d4Lp_1399748.png

  • 那将上述Hoeffding bound的思想应用于 Decision tree同样,DT的关键是选择分裂点,选择分裂点的方式是用G( Information Gain ),

            如果G(A) - G(any)>0,那么就认为 A 作为当前 node 的分裂点最好。 但是这仅仅是在抽样 dataSet 中成立,要是让其在同样分布无穷大的 DS 中同样成立,只要让 G(A) - G(any) 的最小值是 >0 即可, 

            根据 Hoeffding bound,G最小值为= G(A) - G(any) - e,那么根据上面的 e 公式:

            R是 classLabel的取值范围,若是 discrete attri 则R=log2|class|,这是根据信息论里得来,若是 continuous attri ,R=最大-最小。

            δ:错误率,则置信度=1-δ

            n:就是要的样本数,In other words, in order to make the correct decision with error probability δ, it is sufficient to observe enough examples to make e  smaller than G(A) - G(any)

  • 最后上一张流程图 和 pseudo-code:

112512_hyLl_1399748.png

112738_LI98_1399748.jpg

  • 总结:

            VFDT是一种基于Hoeffding不等式建立决策树的方法,透过不断地将叶节点替换为决策节点而生成,其中每个叶节点都保存有关于属性值的统计信息。

            当一个新样本到达后,在树的每个节点都进行划分测试(判断?),根据不同的属性取值进入不同的分支最终到达树的叶节点。

            在数据到达叶节点后,节点上的统计信息会被更新,同时该节点基于属性的测试值将重新计算。

            http://blog.sina.com.cn/s/blog_6292266201018xjt.html

  • 信息增益” (Information Gain)来衡量一个属性区分以上数据样本的能力。信息增益量越大,这个属性作为一棵树的根节点就能使这棵树更简洁,比如说一棵树可以这么读成,如果风力 弱,就去玩;风力强,再按天气、温度等分情况讨论,此时用风力作为这棵树的根节点就很有价值。如果说,风力弱,再又天气晴朗,就去玩;如果风力强,再又怎 么怎么分情况讨论,这棵树相比就不够简洁了。

转载于:https://my.oschina.net/supersonic/blog/479195

VFDT算法是一种增量式学习算法,可以用于快速构建决策树。与传统的决策树学习算法不同,VFDT算法可以在处理大规模数据集时快速构建决策树,并且能够动态地维护树的结构,使得模型的准确性随着数据的增加而不断提高。 VFDT算法的核心思想是在每个节点上使用统计显著性测试(Statistical Significance Test)来判断分裂是否有意义。具体来说,对于每个节点,算法会计算所有可能的分裂方式的统计显著性,选择最优的分裂方式,将该节点分裂为多个子节点,并继续递归地进行分裂操作。这样,VFDT算法能够动态地生成决策树,同时避免了过拟合问题,提高了算法的效率。 下面是VFDT算法的详细步骤: 1. 初始化根节点。 2. 对于每个样本,算法会从根节点开始,沿着树的路径找到对应的叶子节点,然后将样本添加到该叶子节点中。同时,算法会记录每个叶子节点的统计信息,包括样本数量、类别分布等。 3. 当某个叶子节点的样本数量达到一定的阈值时,算法会对该节点进行分裂操作。具体来说,算法会计算所有可能的分裂方式的统计显著性,选择最优的分裂方式,将该节点分裂为多个子节点,并继续递归地进行分裂操作。 4. 重复步骤2-3,直到满足停止条件。例如,树的深度达到了一定的阈值,或者节点的样本数量小于一定的阈值等。 需要注意的是,VFDT算法的计算复杂度与节点的数量和样本数量成正比。因此,在处理大规模数据集时,算法的运行效率可能会较低。为了解决这个问题,可以使用增量式学习算法的批处理版本,如Hoeffding Tree算法、Streaming Random Forest算法等。这些算法可以在处理大规模数据集时保持较高的效率,同时具有与VFDT算法相同的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值