2.3. mtra2gc トランザクションからの類似度グラフ生成¶
2アイテムの共起情報によって類似度を定義し、ある閾値より高い類似度を持つアイテム間に枝を張ることで一般グラフを生成する。 内部的に2アイテムの共起情報の取得については、 Takeのコアメソッドsspc を用いている。
no=
で指定する節点データの出力形式は、 リスト 2.17 に示される通りである。
node
は item=
で指定したアイテム項目、
frequency
は アイテムの出現頻度、 total
は全トランザクション数、
そして、 support
は 出現確率(出現頻度/全トランザクション数)を表す。
1a,0.6,3,5
2b,0.8,4,5
3c,0.2,1,5
4d,0.8,4,5
5e,0.4,2,5
6f,0.8,4,5
eo=
で指定する辺データの出力形式は、 リスト 2.18 に示される通りである。
node1,node2
は 辺を張る2つの節点、
frequency
は 辺(2つのアイテム)の共起頻度、
frequency1,frequency2
は node1,node2
の出現頻度、
total
は全トランザクション数、
そして、 support
は 共起確率( frequency
/ total
)
confidence
は確信度( frequency
/ frequency1
)
lift
はリフト値( ( total
* frequency
) / ( frequency1
* frequency2
) を表す。
jaccard
と PMI
は パラメータ sim=
の説明を参照のこと。
1node1%0,node2%1,frequency,frequency1,frequency2,total,support,confidence,lift,jaccard,PMI
2a,b,3,3,4,5,0.6,1,1.25,0.75,0.4368292054
3a,c,1,1,3,5,0.2,1,1.666666667,0.3333333333,0.3173938055
パラメータ¶
i= : 型=str , 必須
トランザクションデータファイルを指定する。
tid= : 型=str , 必須
トランザクションIDとなる項目名を指定する。
item= : 型=str , 必須
アイテム項目名を指定する。
no= : 型=str , 任意(default=節点データを出力しない)
出力節点データファイル名を指定する。
eo= : 型=str , 必須
出力辺データファイル名を指定する。
s= : 型=float(0.0-1.0) , 任意(default=0.01)
枝を張る条件として、最小支持度(全トランザクション数に対する割合による指定)を指定する。
S= : 型=int , 任意(default=s=の値を用いる)
枝を張る条件として、最小支持度(トランザクション数)を指定する。
sim= : 型=str , 任意(default=類似度による条件を用いない)
アイテムa,bに枝を張る条件として用いる類似度を指定する。省略した場合は、最小支持度の条件(s= or S=)でのみ枝を張ることになる。指定できる類似度は以下の3つのいずれか一つ。記号の意味は、 \(A (B)\) : アイテム \(a (b)\) を含むトランザクション集合、 \(T\) : 全トランザクション集合。J (jaccard): \(|A \cap B|/|A \cup B|\)P (normalized PMI): \(log(|A \cap B|*|T| / (|A|*|B|)) / log(|A \cap B|/|T|)\)liftを-1〜+1に基準化したもの。-1:a(b)出現時b(a)出現なし、0:a,b独立、+1:a(b)出現時必ずb(a)出現C (Confidence(A=>B)): \(|A \cap B|/|B|\)
th= : 型=float , 条件付き必須(sim=が指定された時)
sim=で指定された類似度について、ここで指定された値以上のアイテム間に枝を張る。
node_support= : 型=bool , 任意(default=False)
節点にもS=の条件を適用する。指定しなければ全てのアイテムを節点として出力する。
num= : 型=bool , 任意(default=False)
アイテム項目が正の整数値である場合に指定可能で、処理が高速化される。
T= : 型=str , 任意(default=/tmp)
ワークディレクトリを指定する。
利用例¶
入力データの準備
1with open('tra.csv','w') as f: 2 f.write( 3'''id,item 41,a 51,b 61,c 71,f 82,d 92,e 102,f 113,a 123,b 133,d 143,f 154,b 164,d 174,f 185,a 195,b 205,d 215,e 22''')
基本例
共起頻度が2以上( S=2
)、確信度が0.7以上 (sim="C"
, th=0.7
)を満たす2アイテム集合を
グラフデータ(節点データファイル: node.csv
, 辺データファイル: edge.csv
)として列挙する。
1import nysol.take as nt 2nt.mtra2gc(i="tra.csv", tid="id", item="item", S=2, sim="C", th=0.7, no="node.csv", eo="edge.csv").run() 3### node.csv の内容 4# node%0,support,frequency,total 5# a,0.6,3,5 6# b,0.8,4,5 7# c,0.2,1,5 8# d,0.8,4,5 9# e,0.4,2,5 10# f,0.8,4,5 11### edge.csv の内容 12# node1%0,node2%1,frequency,frequency1,frequency2,total,support,confidence,lift,jaccard,PMI 13# a,b,3,3,4,5,0.6,1,1.25,0.75,0.4368292054 14# b,a,3,4,3,5,0.6,0.75,1.25,0.75,0.4368292054 15# b,d,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893 16# b,f,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893 17# d,b,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893 18# d,f,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893 19# e,d,2,2,4,5,0.4,1,1.25,0.5,0.2435292026 20# f,b,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893 21# f,d,3,4,4,5,0.6,0.75,0.9375,0.6,-0.1263415893