Eclat算法
與fp-growth 和apriori算法不同,Eclat算法加入了倒排的思想,具體就是將事務數據中的項作為key,每個項對應的事務ID作為value。
原輸入數據為
tid | item |
---|---|
1 | A,B |
2 | B,C |
3 | A,C |
4 | A,B,C |
轉換后為:
item | tids |
---|---|
A | 1,3,4 |
B | 1,2,4 |
C | 2,3,4 |
通過轉換后的倒排表可以加快頻繁集生成速度。 其算法思想是 由頻繁k項集求交集,生成候選k+1項集 。對候選k+1項集做裁剪,生成頻繁k+1項集,再求交集生成候選k+2項集。如此迭代,直到項集歸一。 根據上述數據的情況,具體計算過程為
算法過程:
1.計算頻繁1項集,結果為:
item | freq |
---|---|
A | 3 |
B | 3 |
C | 3 |
2.由頻繁1項集生成頻繁2項集
item | freq |
---|---|
A,B | 2 |
A,C | 2 |
B,C | 2 |
3.由頻繁2項集生成頻繁3項集
item | freq |
---|---|
A,B,C | 1 |
頻繁k項集生成頻繁k+1項集的過程與由1項集生成2項集的過程完全一致。
這里有個隱含的條件是,兩個頻繁k項集生成k+1項集時,前k-1項是一致的,A,B+A,C==>A,B,C
Eclat算法實現[編輯]
eclat的核心思想就是倒排,這種數據處理方式很適合用關系型數據表示和實現。 具體可參考用關系型數據結構實現Eclat算法——Hiv
轉載自:http://zh.wikipedia.org/wiki/%E5%85%B3%E8%81%94%E5%BC%8F%E8%A7%84%E5%88%99