机器学习补充系列国际权威的学术组织the IEEE International Conference on Data Mining (ICDM,国际数据哇局会议) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART,它们在数据挖掘领域都产生了极为深远的影响,这里对他们做一个简单介绍,仅作为对Ng机器学习教程的补充。
由于k-Means、SVM、EM、kNN、Naive Bayes在Ng的系列教程中都有涉及,所以此系列教程只涉及决策树算法C4.5、关联规则算法Apriori、网页排名算法PageRank、集成学习算法AdaBoost(Adaptive Boosting,自适应推进)、分类与回归树算法CART(Classification and Regression Trees);另外会加上对神经网络的BP算法介绍,后续也会考虑介绍遗传算法等内容。
1)FP_Growth算法核心概念
2)实例演示FP_Tree的构造
3)挖掘FP_Tree
4)另一个例子
1)FP_Growth算法核心概念
FP_Growth(FrequentPattern,频繁模式)算法是对Apriori算法的补充,是为了克服Apriori算法生成大量候选项集和多次扫描数据库的缺点。FP_Gwoth算法是一种不生成候选项集从而寻找频繁项集的算法,主要基于树结构:包含一棵FP_Tree和一个项头表,项头表中的每一项通过一个结点链指向它在树中出现的位置需要注意的是项头表需要按照支持度递减排序,在FP_Tree(有后缀的也称条件FP_Tree)中高支持度的节点只能是低支持度节点的祖先节点。这样一来可以保证尽可能的共用祖先节点,更重要的是保证正确性。FP_Tree基本结构如下所示:
//FP-tree的存储结构 typedef struct CSNode{ int count;//次数 CSNode *parent,*firstchild,*nextsibling;//父节点,孩子节点,兄弟节点 CSNode *pre,*next;//相同商品的前驱、后继节点,将相同商品的节点连接起来,根节点的直接孩子节点的这两个指针都 |