Hash 树的结构清晰、查找快,在挖关联规则的时候挺有用。是在大型事务数据时,用 Hash 树可以显著减少内存占用,速度也提上来了不少。比如 Apriori 算法里,候选项集的支持度统计那块,用 Hash 树来优化,真的是省心不少。
Hash 树的建立其实也不复杂,就是一层层哈希下去,把数据分桶。你可以设定hash 函数
,根据事务中的项来分配到不同节点。每层节点还可以继续哈希下去,直到数据不多为止。嗯,说白了,就是让大集合分得更细一点,好查好算。
在实际用的时候,比如你在跑关联规则挖掘,用 Apriori 算法生成k 项候选集
,这时候用 Hash 树来存候选项,效率会高多。尤其当数据集大、候选项也多的时候,这种结构能帮你过滤掉不少无效组合。
如果你还不熟,可以看看这个资料挺靠谱的:关联规则支持度计算与 Hash Tree 优化,里面讲得比较细。还有一些相关文章像关联规则和多层关联规则,也蛮值得看看。
建议你试试看在项目里用一下,比如商品购物篮、网页点击序列这种场景,蛮合适的。如果你用的是Python
,配合pandas
或mlxtend
的 Apriori 工具,用 Hash 树做下预会更快一些。