1.1. lcm Linear time Closed itemset Miner

実装の詳細は lcmのオリジナル解説ページ を参照されたい。

パラメータ

type= : 型=str , 必須

列挙するアイテム集合のタイプ(F|C|M)、及び出力形式を文字列として指定する。
アイテム集合のタイプとして以下の3つから一つを選ぶ。

* F:頻出アイテム集合
* C:飽和アイテム集合
* M:極大アイテム集合

また出力形式として以下の組み合わせで指定する。

* f:アイテム集合の後ろに出現件数を出力する。
* Q:アイテム集合の前に出現件数を出力する。
* I:アイテム集合の次の行に出現集合(出現するトランザクション行番号)を出力する。
* t:トランザクションデータベースを転置する(アイテムiはi番目のトランザクションとなり、j番目のトランザクションはアイテムjとなる)。
* A:w=でプラスとマイナスのトランザクションの重みを指定した場合、プラス/マイナスそれぞれの件数とその比を出力する。
* P:positive-closed itemset mining
* R:output redundant items for rule mining (usually, redundant items are removed, to be minimal, in the case of rule mining)
* i:do not output itemset to the output file (only rules)
* s:output confidence and item frequency by absolute values

i= : 型=str , 必須

トランザクションファイル名を指定する。

o= : 型=str , 必須

出力ファイル名を指定する。

sup= : 型=<class 'int'> , 必須

最小サポートを指定する。

U= : 型=<class 'int'> , 任意(default=上限なし)

最大サポートを指定する。

K= : 型=<class 'int'> , 任意(default=制限なし)

頻出な上位のアイテム集合のみ出力する

l= : 型=<class 'int'> , 任意(default=制限なし)

アイム集合のサイズの下限値を指定する。

u= : 型=<class 'int'> , 任意(default=制限なし)

アイム集合のサイズの上限値を指定する。

w= : 型=str , 任意(default=全トランザクションの重みは等しいものとする)

トランザクションの重みファイル名を指定する。

a= : 型=float(0以上1以下) , 任意(default=制限なし)

相関ルールマイニングを実施しconfidenceの下限値を与える。

A= : 型=float(0以上1以下) , 任意(default=制限なし)

相関ルールマイニングを実施しconfidenceの上限値を与える。

r= : 型=float(0以上1以下) , 任意(default=制限なし)

相関ルールマイニングを実施しrelational confidenceの下限値を与える。

R= : 型=float(0以上1以下) , 任意(default=制限なし)

相関ルールマイニングを実施しrelational confidenceの上限値を与える。

item= : 型=int , 任意(default=)

指定した番号のアイテムに関する相関ルールを出力する。

so= : 型=str , 任意(default=ファイル出力しない)

標準出力の内容を指定のファイルに出力する。

separator= : 型=str , 任意(default=スペース)

出力時のアイテムの区切り文字を指定する。

利用例

入力データの準備

 1with open('dat1.tra','w') as f:
 2  f.write(
 3'''2 4
 43 4 5
 50 1 3 5
 61 3 5
 70 1 3 4
 80 1 3 4 5
 9''')
10
11with open('weight.txt','w') as f:
12  f.write(
13'''-1
141
15-1
161
171
18-1
19''')

基本例

頻出アイテム集合( F )の列挙。 type=f を指定すると出現件数を出力する。 type=_ を含めることでメッセージを表示しなくなる。 出力結果の各行が頻出アイテム集合を表しており、末尾の括弧内の数字が出現件数を表している。 一行目には空のアイテム集合が出力されている。

 1from nysol.take.extcore import lcm
 2lcm(type="Ff_",sup=3,i="dat1.tra",o="result.txt")
 3### result.txt の内容
 4# (6)
 5# 3 (5)
 6# 1 (4)
 7# 1 3 (4)
 8# 4 (4)
 9# 4 3 (3)
10# 5 (4)
11# 5 3 (4)
12# 5 1 (3)
13# 5 1 3 (3)
14# 0 (3)
15# 0 1 (3)
16# 0 1 3 (3)
17# 0 3 (3)

飽和集合の列挙

type=C を指定することで、頻出飽和アイテム集合を列挙する。

 1from nysol.take.extcore import lcm
 2lcm(type="Cf_",sup=3,i="dat1.tra",o="result.txt")
 3### result.txt の内容
 4# (6)
 5# 3 (5)
 6# 1 3 (4)
 7# 4 (4)
 8# 4 3 (3)
 9# 5 3 (4)
10# 5 1 3 (3)
11# 0 3 1 (3)

極大集合の列挙

type=M を指定することで、頻出極大アイテム集合を列挙する。

1from nysol.take.extcore import lcm
2lcm(type="Mf_",sup=3,i="dat1.tra",o="result.txt")
3### result.txt の内容
4# 4 3 (3)
5# 5 1 3 (3)
6# 0 3 1 (3)

アイテム集合サイズを制限

l=3 でアイテム集合のサイズを3以上に限定する。

1from nysol.take.extcore import lcm
2lcm(type="Mf_",sup=3,l=3,i="dat1.tra",o="result.txt")
3### result.txt の内容
4# 5 1 3 (3)
5# 0 3 1 (3)

出現集合の出力

type=I を加えることで、アイテム集合の下に出現集合が出力される。 アイテム集合 {5,1,3} はトランザクションデータ( dat1.tra )の2,3,5行目に出現している(先頭行は0行目と数える}。

1from nysol.take.extcore import lcm
2lcm(type="FfI_",sup=3,l=3,i="dat1.tra",o="result.txt")
3### result.txt の内容
4# 5 1 3 (3)
5# 2 3 5
6# 0 1 3 (3)
7# 2 4 5

データベースの転置

type=t を加えることでトランザクションデータベースを転置してから実行する。 トランザクション集合 {4,2,5} はアイテム {0,1,3} に出現する(先頭行は0行目と数える}。

1from nysol.take.extcore import lcm
2lcm(type="FftI_",sup=3,l=3,i="dat1.tra",o="result.txt")
3### result.txt の内容
4# 4 2 5 (3)
5# 0 1 3
6# 3 2 5 (3)
7# 1 3 5

上位k番目の出現件数

K=4 で頻出上位4番目の出現件数を出力する。 「基本例」での結果から、頻出上位4番目のルールは 1 3 (4) であり、その出現件数 4 が出力されている。

1from nysol.take.extcore import lcm
2lcm(type="Ff",K=4,sup=1,i="dat1.tra",so="topk.txt")
3### topk.txt の内容
4# 4

トランザクション重みの利用

w= を指定すると、指定されたトランザクションの重みで件数をカウントする。 type=A を加えることで、マイナス重みとプラス重みの件数情報が表示される。 アイテム 3 は、1,2,3,4,5行目に含まれ、その重み合計は1(=1-1+1+1-1)となる (プラス重み件数3件、マイナス重み件数2件、プラス率は3/5=0.6)。 同様にアイテム集合{4,3}は1,4,5行目に含まれ、その重み合計は1(=1+1-1)となる (プラス重み件数2件、マイナス重み件数1件、プラス率は2/3=0.6666)。

1from nysol.take.extcore import lcm
2lcm(type="FfA_",sup=1,w="weight.txt",i="dat1.tra",o="result.txt")
3### result.txt の内容
4# 3 (1) (3,2,0.6)
5# 4 3 (1) (2,1,0.6666)

関連メソッド