データマイニング & パターンマイニング

47
デデデデデデデデ & デデデデデデデデデ

Upload: kenaz

Post on 21-Mar-2016

1.290 views

Category:

Documents


3 download

DESCRIPTION

データマイニング & パターンマイニング. 目次. 相関ルール Apriori algorithm 頻出アイテム集合を探す subset 関数 Apriori-Gen 関数 相関ルールを探す FP-growth algorithm さまざまな手法 列パタンのマイニング :PrefixSpan. 相関ルールとは. 「目玉商品 A と日用品 B を購入した顧客は、同時に高級品 C も高い確率で購入する」. A,B,C のセット商品を発売する 顧客の便利性を考えて、商品の配置を近づける. { 目玉商品 A 、日用品 B}⇒{ 高級品 C} と表現できる. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: データマイニング  & パターンマイニング

データマイニング &パターンマイニング

Page 2: データマイニング  & パターンマイニング

目次相関ルールApriori algorithm

頻出アイテム集合を探すsubset 関数Apriori-Gen 関数

相関ルールを探すFP-growth algorithmさまざまな手法列パタンのマイニング :PrefixSpan

Page 3: データマイニング  & パターンマイニング

相関ルールとは

「目玉商品 A と日用品 B を購入した顧客は、同時に高級品 C も高い確率で購入する」

• A,B,C のセット商品を発売する• 顧客の便利性を考えて、商品の配置を近づける

{ 目玉商品 A 、日用品 B} {⇒ 高級品 C} と表現できる

{X} {Y}⇒

Page 4: データマイニング  & パターンマイニング

定義{X} {⇒ Y} 相関ルール

X, Y X: 前提部 , Y: 結論部

I={i1,i2,…,im} アイテム集合 , ik, k=1,.,m はアイテム、例えば個別の商品

T トランザクション ( 例えば買い物かごの中身 ) =アイテムの集合

support(X)支持度 : support アイテム集合 X 含む T の全 T に対する割合

conf(X⇒Y)確信度 : confidence    X を含む T のうち、 Y を含む T の全 T に対する割合 =support(XUY)/support(X)

Page 5: データマイニング  & パターンマイニング

価値のある相関ルールを求める

 

M このアイテムの中からkこを選ぶ方法 =

kこのアイテムの各々が前提に来るか、結論に来るかのわけ方= 2k

全部のアイテムが前提に集まる場合と、結論に集まる場合は、ルールにならないので排除

2k -2

個のルールが存在する

種類のアイテムで

m

kk

km

m

2)22(

km

Page 6: データマイニング  & パターンマイニング

価値のある相関ルールを求める

 

アイテムが 10 種類の場合でもルールは約57,000 もある

価値のある相関ルールはわずかだけ

価値のある相関ルールとは確信度  conf が高い支持度 support が高い

個のルールが存在する

種類のアイテムで

m

kk

km

m

2)22(

Page 7: データマイニング  & パターンマイニング

アプリオリアルゴリズム(Agrawal 1994, VLDB94)

• 最小確信度、最小サポート (min support)を与えて確信度、サポートがそれ以上の相関ルールを発見する

support(XUY)>αsupport(XUY)/support(X)=conf(X Y) >β⇒を満たす相関ルール X⇒Y を取り出すのが目的

Page 8: データマイニング  & パターンマイニング

効率よく探し出すために

アイテム集合のサポートは単調減であることを使う。 頻出アイテム集合とは、最小サポート以上のサポートを持つアイテム集合

この背反を取ると

support(XUY) と support(X) が必要。 support(XUY) は最小サポート以上であるので、 XUY の部分集合である X の

サポートも最小サポート以上( X と Y はともに条件なので、 XUY は、 X 、 Y 単独よりも厳しい条件)

最小サポート以上の頻出アイテム集合のサポートを求めておけばすべての相関ルールの確信度を求めることができる

)support()support( JIJI ならば

{ A,B }が頻出アイテム集合でない             ↓{ A,B,C }も頻出アイテム集合ではない

{ A,B,C }が頻出アイテム集合⇒{ A,B }も頻出アイテム集合

Page 9: データマイニング  & パターンマイニング

アルゴリズム1. support(XUY)>α を満たす頻出アイテム集合をす

べて探し出し、サポートを求める

2. support(XUY)/support(X)>βを満たす相関ルールを探し出す

(1) が求まれば、それを使うと (2) は簡単どうやって (1) を効率よくもとめるか

Page 10: データマイニング  & パターンマイニング

Apriori algorithmk アイテム集合 k個のアイテムを持つアイテム集合

Lk 頻出kアイテム集合(これらは最小サポート以上を持つ)以下の2つのフィールドからなる : (1) アイテム集合、 (2) support count

Ck 頻出アイテム集合の可能性のある k アイテム集合 : 以下の2つのフィールドからなる (1) アイテム集合 (2) support count

C’k TIDs(Transaction ID) の transaction から生成された k アイテム集合の候補の集合

Page 11: データマイニング  & パターンマイニング

頻出アイテム集合を探し出す

• 要素数の少ないサポートから求めていき、最小サポートより少ない集合を含めるものは計算しない

{ A,B }が頻出アイテム集合でない⇒{ A,B,C }も頻出アイテム集合ではない

1.データベースをスキャンし Ck 中の各サポートを計算する

2. Ck 中の最小サポートを満足する部分を Lk とする

3. Lk から Ck+1 を生成する

Page 12: データマイニング  & パターンマイニング

Apriori algorithmL1={ 頻出アイテム集合 }for ( k=2; Lk-1≠Ø; k++) do { Ck= apriori_gen(Lk-1) ; // New candidates

for (all transactions t in D )do{ Ct = subset(Ck , t) // Candidates contained

in t; for (all candidates c in Ct) do

{c.count++} }; Lk ={c in Ck | c.count≥ minsup} }Answer ∪k Lk}

Page 13: データマイニング  & パターンマイニング

Apriori-Gen 関数

結合フェーズLk 中から最後の要素だけが異なる二つのアイ

テム集合を結合して要素数 k+1 の候補アイテム集合を作る

枝狩りフェーズ結合フェーズで作った候補アイテム集合に対

し、要素数 k の部分集合が Lk に含まれていないような候補を除去する

Page 14: データマイニング  & パターンマイニング

Transaction data の例

データベース  D

TID item

00001 A,C,D

00002 B,C,E

00003 A,B,C,E

00004 B,E

Page 15: データマイニング  & パターンマイニング

頻出アイテム集合を計算する例min support =2

C 1

アイテム集合

{A}{B}{C}{D}{E}

L1アイテム集合

カウント

{A} 2{ B}

{ C}

{ E}

subset 関数&

minsupport>=2 のものを選択

頻出アイテム集合の候補

頻出アイテム集合

Apriori-Gen 関数

C2

アイテム集合

{A,B}{A,C}{A,E}{B,C}{B,E}{C,E}

頻出アイテム集合の候補

Page 16: データマイニング  & パターンマイニング

頻出アイテム集合を計算する例つづき

C3

アイテム集合

{ B,C,E}

L2アイテム集合

カウント

{A,C} 2{ B,C}

2

{ B,E}

{ C,E}

2

C2アイテム集合

{A,B}{A,C}{A,E}{B,C}{B,E}{C,E}

頻出アイテム集合の候補

頻出アイテム集合

Apriori-Gen 関数

頻出アイテム集合の候補

subset関数

L3

アイテム集合 カウント

{ B,C,E}

頻出アイテム集合

subset 関数&

minsupport>=2 のものを選択 ここだけ

が異なる

Page 17: データマイニング  & パターンマイニング

要素数 3 の部分集合{A,D,E}が含まれていないので、{A,C,D,E} は排除

{A,B,C}

{A,B,D}

{A,C,D}

{A,C,E}

{B,C,D}

頻出アイテム集合 C3

{A,B,C,D}

{A,C,D,E}

頻出アイテム集合の候補 L4

Page 18: データマイニング  & パターンマイニング

Apriori_Gen (Lk){ Ck +1= φ;foreach p,q in Lk such that ( p.item1=q.item1,…, p.itemk-1=q.itemk-1, p.itemk ≠ q.itemk)

{c=p U q.itemk; Ck+1=Ck+1U{c}}

//prunefor (all itemsets c in Ck+1 )do for(all k subsets s of c )do

{if s not in Lk then delete c from Ck+1}

}return Ck+1}

Page 19: データマイニング  & パターンマイニング

subset 関数

トランザクション t に含まれる候補アイテム集合を見つけ出す

例 t={A,B,C,E} SUBSET(C2,t) = {{A,B}1 、 {A,C}2 、 {A,E}1 、

{B,C}2 、 {B,E}3 、 {C,E}2}  (数字は出現回数)

  が subset 関数で生成されるが、そのうち   min support=2 以上のものだけを選ぶと {{A,C} 、 {B,C} 、 {B,E} 、 {C,E}}

Page 20: データマイニング  & パターンマイニング

相関ルールの導出(枝刈り1)

)support()~support(~ aaaa について

)support()support())(conf(

alala

))(conf())~(~conf( alaala

)~support()support())~(~conf(

alala

るも最小確信度以上であばが最小確信度以上なら

))(conf())~(~conf(

alaala

}){},,conf({}),{},conf({

},,,{},,{

},{~

DCBADCBA

DCBAlCBAa

BAa

Page 21: データマイニング  & パターンマイニング

相関ルールの導出:枝刈り 2

るも最小確信度未満であばが最小確信度未満なら

))conf(()~)~conf((

cclccl

ccalcalc

~~~ とする、

るも最小確信度以上であばが最小確信度以上なら

))(conf())~(~conf(

alaala

対偶をとる

• {A,B,C} {⇒ D} と {A,B,D} {⇒ C} のどちらか一方でも最小確信度未満ならば

• {A,B} {⇒ C,D} も最小確信度未満である

}),{},conf({}){},,conf({

},,,{}{~

},{

DCBADCBA

DCBAlDc

DCc

Page 22: データマイニング  & パターンマイニング

FP-growth algorithm

• Apriori algorithm の効率を大きく改善するアルゴリズム (J.Han, 1999 SIGMOD)

Page 23: データマイニング  & パターンマイニング

I = {a1; a2; : : :; am} be a set of itemsa transaction database DB = {T1; T2; : :Tn} where Ti (i =1,..,n) is a transaction which

contains a set of items in I. The support1 (or occurrence frequency) of a

pattern A, which is a set of items is the number of transactions containing A in DB.

A is a frequent pattern if A's support is no less than a predefined minimum support threshold, ξ.

Page 24: データマイニング  & パターンマイニング

FP-tree の定義

• 要素– one root “null”– a set of   item prefix subtrees as the children of the root– a frequent-item header table

• Node in the item prefix subtree consists of– (1)item-name, (2)count, (3)node-link

• frequent-item header table con-sists of– (1) item-name and (2) head of node-link

Page 25: データマイニング  & パターンマイニング

Item name CountItem link

a:3 ----->

Page 26: データマイニング  & パターンマイニング

FP-tree construction algorithm

Step1:DB を scan し、 ξ 以上の頻度を持つ frequent item F を集め、頻度の降順にソート。

Step2:DB の格要素 (transaction) において、それに含まれる item を頻度の降順にソートし、

Step3: for( each transaction: L) do    { root の null ノードからスタートして、以下

のように root にぶら下がる木を作る。ただし、 T=root

する ; L=[p|P], p は先頭の要素、 P は残りのリスト ; insert_tree([p|P],T) }

Page 27: データマイニング  & パターンマイニング

insert_tree([p|P],T){If T has a child N such that N.item-name= p.item-name, then increment N's count by 1; else { create a new node N, and let its count be 1; its parent link be linked to T ;    its node-link   be linked to the nodes with the

same         item-name   via the node-link structure.    } If P is nonempty, then call insert tree(P;N) recursively}

Page 28: データマイニング  & パターンマイニング

FP-Tree の木の高さは、ひとつのtransaction に含まれる item の個数の最大値

Root から leaf までの枝( path) において、item は頻度の降順に並んでいる。

Page 29: データマイニング  & パターンマイニング

FP-Tree からのルール導出

Page 30: データマイニング  & パターンマイニング

• Property 3.1 (Node-link property) For any frequent item ai, all the possible frequent patterns that contain ai can be obtained by following ai's node-links,starting from ai's head in the FP-tree header.

Page 31: データマイニング  & パターンマイニング
Page 32: データマイニング  & パターンマイニング

パタンマイニング関数 :mine

Header table  の中で、一番頻度の低い(つまり、一番下の) item から順にパターンを探す。

(p:3)の上に来るパタンは p の条件付パタンベースと呼ばれ、以下の通り。

{<f:4; c:3; a:3;m:2>|   p}, {<c:1; b:1>|  p}

pの上に共通に来るパタンはcのみなので、抽出されたパタンは (cp:3) だけ。

Page 33: データマイニング  & パターンマイニング

つづきmの上には、 <f:4; c:3; a:3>, <f:4; c:3; a:3; b:1> が来るが、共通するパ

タンは < f:3; c:3; a:3> だけ。そこで、 mine(< f:3; c:3; a:3>|m) を実行す

ると (am:3),(cm:3),(fm:3) が得られる。次に、 mine(< f:3; c:3>|am) を実行すると、

(cam:3),(fam:3) が得られる。さらに (<f:3>|cam) を実行すると、

(fcam:3) が得られる。 以下他のパタンについても同様。

Page 34: データマイニング  & パターンマイニング

Conditional FP-tree は、条件の item (例えば 1番上の例だと p)の countに合わせる。

Page 35: データマイニング  & パターンマイニング

パタン・マイニング・アルゴリズム• Input: FP-tree constructed based on Algorithm 1,using DB and a

minimum support threshold ξ.• Output: The complete set of frequent patterns.• Method: Call FP-growth (FP-tree ; null).Procedure FP-growth (Tree 、 α ){

if Tree contains a single path Pthen for each combination (denoted as β )   of the nodes in

the          path P do

{ generate pattern β∪α               [ with support =minimum support of

nodes in β] }else for each ai in the header of Tree do

{ generate pattern β= ai ∪α               [ with   support = ai :support}; construct 's conditional pattern base; β‘s conditional FP-tree : Treeβ;             if Tree β≠Ø                then call FP-growth (Treeβ, β) }}

Page 36: データマイニング  & パターンマイニング

その他

• 分類階層つき相関ルール• 数値属性を1個持つ相関ルール• 数値属性を2個持つ相関ルール• 並列アルゴリズム• 視覚化手法

Page 37: データマイニング  & パターンマイニング

抽出対象のデータは要素の列の集合要素は item の集合min_support 以上の出現頻度を持つ部分列

をすべて探し出すこと

Sequential pattern mining列パタンのマイニング

Page 38: データマイニング  & パターンマイニング

対象のデータ I={i1,i2,….,in}, ij は item Sequence は順序付きの item 集合の列 Sequence:S=<s1,s2,…,sl>, Si=(x1,x2,…,xm)   xi は I の要素(= item) 。 1 個しか item

を含まない (x) は x と略記 Sequence : S の長さ:  S が含む item 数

length(<(a)(b)>)=length(<ab>)=2, length(<(a b)>)=2 β(=b1,..,bm) is super-sequence of α(=a1,…,an)   (逆に α

は β の subsequence) とは 次の条件を満たす1≤j1≤j2≤…. ≤ jn≤m なるサフィックス列が存在すること。

   Sequence database: <sid,s> の集合。 sid は seqience:s の名前   

l i1for ISi要素:

m21 bjan,.....,bja2bja1 かつ

Page 39: データマイニング  & パターンマイニング

Sequence database の例 :S

Sequence id Sequence

10 <a(abc)(ac)d(cf)>

20 <(ad)c(bc)(ae)>

30 <(ef)(ab)(df)cb>

40 <eg(af)abc>

Page 40: データマイニング  & パターンマイニング

Prefix, projection and postfix α=<e1,e2,..en>, β=<e1’,e2’,..,em’>, m≤n 次の条件を満たすとき、 β は α の prefix

(1)ei’=ei for (i≤m-1) (2) (3)em-e’m の要素は e’m の要素より辞書順で後のも

の β を α の subsequence とするとき、 α の

subsequence α’ が α の projection であるとは以下のように定義される α’ は prefix β を持つ α’ の super-sequence であり、 prefixβ を持ち、かつ α の

subsequence であるものは存在しない。( α’ は上記の条件を持たす最大の列

mm ee '

Page 41: データマイニング  & パターンマイニング

Prefix, projection and postfix α’=<e1,e2,..,e k > は β=< e1,e2,..,em-1,e’m> に対する α

の projection. ただし (m≤ k ) このとき列 γ=<e’’m,em+1,…,e k > は β に対する α の

postfix ただし、 e’m + e’’m = em 。 つまり  α = βγ 例: α=< (a) (b) (a b c) (f) > β=< (a) (b) (a b )> γ=<(c) (f) > 例: <a>,<aa>,<a(ab)>,<a(abc)> は <a(abc)(ac)d(cf)> の prefix だ

が、  <ab> や <a(bc)> は prefix ではない?? prefix <ab> =<(a)(b)> の postfix は <(_c) )(ac)d(cf)> 。 2項目の

(abc) は集合だから、いきなり <ab> を prefix にしてもよい。

mm ee '

Page 42: データマイニング  & パターンマイニング

PrefixSpan の動作sequence data base :S の例を用いて

ただし、 min_support=2

Step 1: length=1 の列パタンを全て求める<a>:a, <b>:4, <c>:4, <d>:3, <e>:3, <f>:3

Step 2: 列パタンの分割(辞書順に含むアイテムを拡大していくように)a 以外は持たないもの、a b 以外は持たないもの、a b c 以外は持たないもの、……

Page 43: データマイニング  & パターンマイニング

Step 3:列パタンの部分集合を数え上げる

これは、 step 2 の各結果に対して、 projection を数え上げ、その結果の列パタンに同様の数え上げを再帰的に繰り返す。

Page 44: データマイニング  & パターンマイニング

Step 3 のSにおける動作例<a> に対する projection のデータベース

は<a(abc)(ac)d(cf)> <( abc)(ac)d(cf)> (1)<(ad)c(bc)(ae)> <(_d)c(bc)(ae)> (2)<(ef)(ab)(df)cb> <(_b)(df)cb> (3)<eg(af)cbc> <(_f)cbc> (4)

prefix<a> を含む length=2 の列パタン(min_support=2) は上記の結果のprojection たちを調べると

<aa>:2 (1),(2), <ab>:4 (1)(2)(3)(4)<(ab)>:2 (1)(3), <ac>:4 (1)(2)(3)(4)<ad>:2 (1)(3), <af>:2 (1)(3)

Page 45: データマイニング  & パターンマイニング

つづき Prefix <aa> を持つ postfix subsequence(<aa>-projected

database) は (1) から得られる < (_bc)(ac)d(cf)> だけ。よって、 min_support 以上の頻出パタンはここからは生成されない。よって、このパタンは修了

<ab>-projected database からは <(_c) (ac)d(cf)> (1) , <(_c)a> (1)(2), <c> (1)-(4)

この結果を再帰的に調べると  <(_c)>:2, <(_c)a>:2, <a>:2, <c>:3 ( 全部書くと <a(bc)>, <a(bc)a>, <aba>, <abc>)

<(ab)>-projected database からは <(_c) (ac)d(cf)>, <(df)cb> この結果を再帰的に調べると <(ab)c>, <(ab)d>, <(ab)f>,

<(ab)dc> 以下同様に全ての列パタンを再帰的に調

べ、 min_support 以上の列パタンを数え上げる。

Page 46: データマイニング  & パターンマイニング

例:Sから PrefixSpan で得た列パタンPrefix Projected postfix 列パタン

<a> <(abc)(ac)d(cf)>, <(_d)c(bc)(ae)>,<(_b)(df)cb>,<(_f)cbc>

<a>,<aa>,<ab>,<a(bc)>,<a(bc)a>,<aba>,<abc>,<(ab)>,<(ab)c>,<(ab)d>,<(ab)f>,<(ab)dc>,<ac>,<aca>,<acb>,<acc>,<ad>,<adc>,<af>

<b> <(_c)(ac)d(cf)>, <(_c)(ae)>, <(df)cb>, <c>,

<b>, <ba>, <bc>, <(bc)>, <(bc)a>, <bd>, <bdc>, <bf>

<c> <(ac)d(cf)>, <(bc)(ae)>, <b>, <bc>

<c>, <ca>, <cb>, <cc>,

<d> <(cf)>, <c(bc)(ae)>,<(_f)cb> <d>, <db>, <dc>, <dcb>

<e> <(_f)(ab)(df)cb>, <(af)cbc> <e>, <ea>, <eab>, <eac>, <eacb>, <eb>, <ebc>, <ec>, <ecb>, <ef>, <efb>,<efc>,<efcb>

<f> <(ab)(df)cb>, <cbc> <f>, <fb>, <fbc>, <fc>, <fcb>

Page 47: データマイニング  & パターンマイニング

PrefixSpan の効率化 Apriori property の利用

例: <ac> は列パタン ( すなわち min_support 以上)だが、 <ad> は列パタンでない( min_support 未満)の場合は、両者を含む <acd> およびその super-sequence は列パタンにならないことは明白なので、調べる必要はない。

Pointer 利用によるメモリの効率的使用例えば、 <a(abc)(ac)d(cf)> の処理では、その部分列

が何回も処理される。 例えば、 <a> の projection: <(abc)(ac)d(cf)>①

と、 <ab> の projection :② <(_c) )(ac)d(cf)> 。これらが別々にメインメモリに格納されることを防ぐために、 projection database には、s①=2 (offset), s =4(offset)② を記憶しておけば、 <a(abc)(ac)d(cf)>は1箇所で記憶しておくだけで良い。