3.23 freqpatA : 頻出アイテム集合の列挙

書式

$obj$.freqpatA($minsup$) $\rightarrow $ $zdd$

  $minsup$ : integer

説明

ZDDオブジェクト$obj$から最小サポート$minsup$以上出現する頻出アイテム集合を全て列挙し、そのZDDオブジェクト$zdd$を返す。

同様の関数にlcmがあるが、これはファイルからトランザクションデータを読み込み LCMアルゴリズムにより頻出アイテム集合を列挙するため、本関数に比べて非常に高速である。 しかしながら、アイテム名として整数を用いる必要があり、またアイテム順序についても注意が必要であるため、 さほど効率性が求められないのであれば、本関数を使えばよい。

例1: 基本例

> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> d=ZDD::itemset("d")
> t=a*b*c + a*b + a + b*c*d + a
> t.show
 a b c + a b + 2 a + b c d

# t=a*b*c + a*b + a + b*c*d + aにおいて、
# アイテム集合abは第1,2項の2回出現している。
# アイテム集合aは第1,2,3,5項の4回出現している。
> t.freqpatA(2).show
 a b + a + b c + b + c + 1

# 極大アイテム集合(他のアイテム集合に包含されないアイテム集合)
# 上記頻出アイテム集合のうち、aはabに包含され、bとcはbcに包含され、
# 1は他の全てのアイテム集合に包含されていると考えるため、a,b,1は出力されない。
> t.freqpatM(2).show
 a b + b c

# 飽和アイテム集合(出現集合が同じアイテム集合族の中で極大のアイテム集合)
# 上記頻出アイテム集合のうち、bcとcのいずれも第1,4項に出現している。
# すなわち出現集合が同じアイテム集合族である。
# そしてそのなかで極大なbcのみが出力される。
# その他に列挙された飽和集合は全て異なる出現集合を持つ。
> t.freqpatC(2).show
 a b + a + b c + b + 1

# 最小サポートを3にして実行する。
> t.freqpatA(3).show
 a + b + 1
> t.freqpatM(3).show
 a + b
> t.freqpatC(3).show
 a + b + 1

関連

freqpatM : 頻出極大アイテム集合の列挙

freqpatC : 頻出飽和アイテム集合の列挙

lcm : LCM over ZDD