SlideShare a Scribd company logo
1 of 26
Download to read offline
Frequency Pattern Mining
Karubi Namuru
Nov. 14, 2010
自己紹介
● Karubi Namuru, Ph.D.
●
Kauli 株式会社
● Twitter: @karubi
● Facebook: http://facebook.com/karubi
●
出身:広島 , 居住:東京 , Seongnam
Frequency Pattern Mining
●
頻出パターンマイニング
●
データの集合から,出現頻度の高い特徴的なパ
ターンを発見する
●
→ 頻出パターンの抽出
代表的な頻出パターンマイニング
●
相関ルール抽出
●
たとえば,データベースに蓄積した大量のデータか
ら,頻繁に,かつ,同時に,発生する事象を見つけ
ること.
●
同時に発生する事象を,相関の強い関係としてルー
トとして抽出
●
バスケット分析
– POS データや EC などで取得できるトランザクションか
ら購買履歴を分析
バスケット分析
● 購買履歴から「一緒に買われる商品」という特徴的な
パターンを発見する
● 併売商品の発見
– デジタルカメラと液晶を保護するためのシート
を購入する顧客は,メモリカードも一緒に買う
● 商品陳列レイアウト
– おむつを買う顧客は同時にビールも買うなら両
方の商材を近くに陳列しておく
どのように分析しているのか
デジタルカメラと液晶を保護するためのシートを購入する顧
客は,メモリカードも一緒に買う傾向がある
{デジタルカメラ,液晶保護シート}⇒{メモリカード}
{ X }⇒{ Y }
基本の手順
● 全アイテムから全てのルールを洗い出す
● 全アイテムからk個を選ぶ
● この全通りについて,意味のあるルールを見つける
● このアイテムの各々が前提にくるか,結論にくるか
で分け方が変わる
● 全アイテムが前提に集まる場合と,全アイテムが結
論に集まる場合はルールにならないので排除する
実際の計算方法
● m 種類のアイテムにおいて存在するルールの数
● たとえば 10 種類の場合,ルールの総数: 57000 弱
● 価値のあるルールの数:わずかな数
∑
k=2
m
a
b2
m
−2
アプリオリアルゴリズム
● 確信度,サポートという 2 つの指標を導入する
● それぞれ,最小確信度と,最小サポートのふたつを与える
● 確信度,サポートとも最小より大きいルールを発見する方法
FPGrowth アルゴリズム
● アプリオリアルゴリズムの効率を改善するアルゴリズム
● アプリオリアルゴリズムは頻出アイテムセットを抽出する必要
があったが, FPGrowth は FP-Tree という木構造にトランザ
クションを圧縮して, FP-Tree から頻出アイテムセットを抽出
する.
● FP-Growth は候補パターンを生成しないため,データセット
のスキャン回数を抑えることができる.つまり,アプリオリよ
り高速に頻出アイテムセットを抽出することができる.
FPGrowth アルゴリズム
サポート降順に  {4,2,1,3,5,6}
{1,3,4}
{2,4,5}
{2,4,6}
4
2
1
3
5
6
root
4
1
3
2
5 6
FPGrowth アルゴリズム
● Conditional Pattern Base に分割
● 3 を含む集合
● 1 を含んで3を含まない集合
● 4を含んで,1と3を含まない集合
4
2
1
3
5
6
root
4
1
3
2
5 6
Mahout 0.4
●
FPGrowth に関しては,ほぼ変更なし
●
ソースは綺麗になってた
FPGrowth を動かす
●
Mahout を動く環境をつくる
●
Linux の場合
– Virtual Macine をつくる,たとえば CentOS
– Java のインストール,たとえば OpenJDK
– 環境変数を設定
– Mahout をダウンロードして,適当なディレクトリに置
く
– 環境変数を設定
データセット
●
ネット上の無料の資源を利用する
●
学術で使うもの
– だいたいデータの中身がよくわからない
– どういう事象を記録したかのみ説明
– 個々の値については,抽象化されてわからない...
●
見てわかりやすいデータ
– MovieLens
ネット上の情報源
●
公開されている明示的な情報源(一部)
●
The Netflix prize datasets
– Netflix :アメリカのオンライン DVD レンタルサービス
– 1 億レコード以上
– 480,189 人が 17,770 タイトルについて評価
●
Grouplens Research
– ミネソタ大の研究チーム, MovieLens プロジェクト
– 10 万, 100 万, 1000 万レコードの 3 つのデータ
– 71,567 人が 10,681 タイトルについて評価( 1000 万)
大まかな流れ
●
Ratings.dat から,各ユーザが高い評価を与えて
いるデータのみを抜き出す
●
各ユーザの高い評価を与えた組み合わせから,
頻出するパターンを抽出する
●
処理済みデータの内容
●
データ形式
●
1行目
●
122,185,231,292,316,329,355,356,362,364,370,377
,420,466,480,520,539,586,588,589,594,616
●
→ 1 行目のユーザ:ユニーク ID 「1」番の人
●
→ 122,185,231,.... :高い評価を与えた映画
例のユーザ
●
122: Boomerang (1992), Comedy|Romance
●
185: Net, The (1995), Action|Crime|Thriller
●
231: Dumb & Dumber (1994), Comedy
●
292: Outbreak (1995), Action|Drama|Sci-Fi|
Thriller
●
316: Stargate (1994), Action|Adventure|Sci-Fi
●
329: Star Trek: Generations (1994), Action|
Adventure|Drama|Sci-Fi
Mahout FPGrowth
●
コマンドラインで動かせる
1.Mahout をダウンロードしたディレクトリに移動
2.Bin ディレクトリの中に mahout バイナリがある
3.コマンドを打つ
– ./mahout fpg -i /home/you/dir/data.dat -o patterns -k 50
-method mapreduce
↓ だいたいの意味
./mahout (FPGrowth を動かす ) -i ( 解析対象ファイルの
場所 ) -o ( 出力を記録する場所) -k ( TopK )
-method ( Hadoop MapReduce で動かす)
計算中の画面
●
結果を見る方法
●
ダンパーを利用する
./mahout seqdumper –seqFile
patterns/fpgrowth/part-r-00000
処理速度
●
Junjie Hou, Chunping Li, "A Pattern Growth Method Based on Memory Indexing for Frequent Patterns Mining," cimca, vol. 1,
pp.663-668, International Conference on Computational Intelligence for Modelling, Control and Automation and International
Conference on Intelligent Agents, Web Technologies and Internet Commerce Vol-1 (CIMCA-IAWTIC'05), 2005
0
10
20
30
40
50
60
70
80
90
100
0 0.5 1 1.5 2 2.5 3
Support threshold(%)
Run time(sec.)
D1 FP-grow th runtime
D1 Apriori runtime
sec
FPGrowth の応用分野
●
チェスの,勝つゲームもしくは負けるゲームに
おいて頻出する打ち方の分析
●
ウェブページの閲覧内容の分析
●
よくクリックされるニュースの分析
●
ポータルサイトで併用されているコンテンツ
●
クリックされたオンライン広告の分析
●
コンテンツ属性とオーディエンス属性
●
交通事故の発生する状況の分析
●
Thank you

More Related Content

Viewers also liked

Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよHadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよNaoki Yanai
 
Hello deeplearning!
Hello deeplearning!Hello deeplearning!
Hello deeplearning!T2C_
 
データマイニング勉強会3
データマイニング勉強会3データマイニング勉強会3
データマイニング勉強会3Yohei Sato
 
Introduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahoutIntroduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahouttakaya imai
 
Kuroda & Hasebe NLP15 slides on Pattern Lattice Model
Kuroda & Hasebe NLP15 slides on Pattern Lattice ModelKuroda & Hasebe NLP15 slides on Pattern Lattice Model
Kuroda & Hasebe NLP15 slides on Pattern Lattice ModelKow Kuroda
 
Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Koichi Hamada
 
Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Koichi Hamada
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Koichi Hamada
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14thKoichi Hamada
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)sleepy_yoshi
 
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...Salah Amean
 
Deep learningの軽い紹介
Deep learningの軽い紹介Deep learningの軽い紹介
Deep learningの軽い紹介Yoshihisa Maruya
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksEiichi Matsumoto
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習Preferred Networks
 
20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for ShareYasushi Gunya
 
計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)Shota Yasui
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京Koichi Hamada
 

Viewers also liked (20)

Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよHadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
 
Hello deeplearning!
Hello deeplearning!Hello deeplearning!
Hello deeplearning!
 
データマイニング勉強会3
データマイニング勉強会3データマイニング勉強会3
データマイニング勉強会3
 
SVM
SVMSVM
SVM
 
Introduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahoutIntroduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahout
 
Kuroda & Hasebe NLP15 slides on Pattern Lattice Model
Kuroda & Hasebe NLP15 slides on Pattern Lattice ModelKuroda & Hasebe NLP15 slides on Pattern Lattice Model
Kuroda & Hasebe NLP15 slides on Pattern Lattice Model
 
Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6
 
Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8
 
Random forest の解説
Random forest の解説Random forest の解説
Random forest の解説
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14th
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)
 
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...
Data Mining: Concepts and Techniques chapter 07 : Advanced Frequent Pattern M...
 
Deep learningの軽い紹介
Deep learningの軽い紹介Deep learningの軽い紹介
Deep learningの軽い紹介
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder Networks
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習
 
20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share
 
計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京
オープニングトーク - 創設の思い・目的・進行方針  -データマイニング+WEB勉強会@東京
 

Frequency Pattern Mining