.freqpatA(
)
: integer
ZDDオブジェクト
から最小サポート
以上出現する頻出アイテム集合を全て列挙し、そのZDDオブジェクト
を返す。
同様の関数にlcmがあるが、これはファイルからトランザクションデータを読み込み LCMアルゴリズムにより頻出アイテム集合を列挙するため、本関数に比べて非常に高速である。 しかしながら、アイテム名として整数を用いる必要があり、またアイテム順序についても注意が必要であるため、 さほど効率性が求められないのであれば、本関数を使えばよい。
> 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