Data-Mining
最大和關閉頻率——包括答案
我想找出最大頻繁項集和閉合頻繁項集。
- 頻繁項集如果它沒有任何頻繁的超集,則它是最大的。
- 頻繁項集 X ∈ F 是閉的,如果它沒有相同頻率的超集
所以我統計了每個項目集的出現次數。
{A} = 4 ; {B} = 2 ; {C} = 5 ; {D} = 4 ; {E} = 6 {A,B} = 1; {A,C} = 3; {A,D} = 3; {A,E} = 4; {B,C} = 2; {B,D} = 0; {B,E} = 2; {C,D} = 3; {C,E} = 5; {D,E} = 3 {A,B,C} = 1; {A,B,D} = 0; {A,B,E} = 1; {A,C,D} = 2; {A,C,E} = 3; {A,D,E} = 3; {B,C,D} = 0; {B,C,E} = 2; {C,D,E} = 3 {A,B,C,D} = 0; {A,B,C,E} = 1; {B,C,D,E} = 0
Min_Support 設置為// 很重要。感謝 steffen 提醒。
最大= _?
是否關閉=?
我在這個來源中找到了一個稍微擴展的定義(其中包括一個很好的解釋)。這是一個更可靠(已發布)的來源:CHARM:Mohammed J. Zaki 和 Ching-jui Hsiao 的封閉項集挖掘的有效算法。
根據這個來源:
- 如果項集的直接超集都沒有與項集相同的支持,則項集是閉合的
- 一個項目集是最大頻繁的,如果它的直接超集都不是頻繁的
一些備註:
- 有必要設置一個min_support(支持 = 包含感興趣的子集的項目集的數量除以所有項目集的數量),它定義了哪個項目集是頻繁的。如果一個項集的支持度 >= min_support,則它是頻繁的。
- 關於算法,當試圖找到最大頻繁項集和閉合項集時,只考慮具有 min_support 的項集。
- 封閉定義中的重要方面是,是否存在具有更多支持的直接超集並不重要,只有具有完全相同支持的直接超集才重要。
- 最大頻繁 => 關閉 => 頻繁,但反之則不然。
應用到 OP 的例子
筆記:
- 沒有檢查支持計數
- 假設 min_support=0.5。如果 min_support_count >= 3 則滿足
{A} = 4; 由於 {A,E} 未關閉 {B} = 2; 不頻繁 => 忽略 {C} = 5 ; 由於 {C,E} 而未關閉 {D} = 4 ; 由於 {D,E} 而沒有關閉,但由於例如 {A,D} 而不是最大的 {E} = 6 ; 封閉,但不是最大的,例如 {D,E} {A,B} = 1; 不頻繁 => 忽略 {A,C} = 3; 由於 {A,C,E} 而未關閉 {A,D} = 3; 由於 {A,D,E} 未關閉 {A,E} = 4; 關閉,但由於 {A,D,E} 而不是最大值 {B,C} = 2; 不頻繁 => 忽略 {B,D} = 0; 不頻繁 => 忽略 {B,E} = 2; 不頻繁 => 忽略 {C,D} = 3; 由於 {C,D,E} 而未關閉 {C,E} = 5; 閉合,但由於 {C,D,E} 而不是最大值 {D,E} = 4; 關閉,但由於 {A,D,E} 而不是最大值 {A,B,C} = 1; 不頻繁 => 忽略 {A,B,D} = 0; 不頻繁 => 忽略 {A,B,E} = 1; 不頻繁 => 忽略 {A,C,D} = 2; 不頻繁 => 忽略 {A,C,E} = 3; 最大頻率 {A,D,E} = 3; 最大頻率 {B,C,D} = 0; 不頻繁 => 忽略 {B,C,E} = 2; 不頻繁 => 忽略 {C,D,E} = 3; 最大頻率 {A,B,C,D} = 0; 不頻繁 => 忽略 {A,B,C,E} = 1; 不頻繁 => 忽略 {B,C,D,E} = 0; 不頻繁 => 忽略