Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
-
Upload
naoki-yanai -
Category
Documents
-
view
21.106 -
download
3
Transcript of はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
![Page 1: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/1.jpg)
はじめてでもわかる(単純)ベイズ分類器-基礎からMahout実装まで-
2010/09/26(日) #TokyoWebmining 7
naoki yanai@yanaoki
2010年9月26日日曜日
![Page 2: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/2.jpg)
本日の内容
自己紹介
基礎理論:単純ベイズ分類器
実装例:
LLによる簡易実装(Ruby)
Mahout実装の使い方(Java/Hadoop)
2010年9月26日日曜日
![Page 3: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/3.jpg)
自己紹介名前:yanaoki
職業:Web系エンジニア、Ruby、Java
データマイニング歴:約半年
実務でのマイニング経験もあまりない
今はこの勉強会と発表がモチベーション
#TokyoWebminingと共に育つ
事務局、雑用やってます
個人的ミッション:初心者にもやさしい勉強会
2010年9月26日日曜日
![Page 4: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/4.jpg)
単純ベイズ分類器の基礎
2010年9月26日日曜日
![Page 5: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/5.jpg)
ベイズの定理P(B) = 事象Bが発生する確率(事前確率)P(B|A) = 事象Aが起きた後での事象Bの確率(事後確率)
ベイズの定理によれば、P(A) > 0 の条件のもと、
2010年9月26日日曜日
![Page 6: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/6.jpg)
ベイズの定理より、
単純ベイズ分類器
分母: C に依存しないので、ここでは分母を考慮しない
条件付き独立性を仮定すると、分子は、
分子:乗法定理から次のように変形
特徴変数F1,...,Fnが与えたられた時のカテゴリCの確率
カテゴリの決定は、事後確率が最大となるcを選択
2010年9月26日日曜日
![Page 7: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/7.jpg)
分類器の活用1.入力準備
(a)フォーマット、ノイズ除去、など2.学習
(a)モデルを作成3.評価
(a)モデルを評価(b)「1.入力→2.学習→3.評価」を繰り返す(c)良いモデルを作り、メンテすることが重要
4.実践・推測(a)作成したモデルを用いて未知のモノを分類
2010年9月26日日曜日
![Page 8: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/8.jpg)
単純ベイズ分類器の実装
2010年9月26日日曜日
![Page 9: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/9.jpg)
LLによる簡易実装集合知プログラミング
6章ドキュメントフィルタリング
豊富なサンプルコード
ベイズの定理も解説
RSSフィード分類まで実装
協調フィルタリング、クラスタリングなど、他のアルゴリズムも豊富
2010年9月26日日曜日
![Page 10: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/10.jpg)
LLによる簡易実装
参考書を見ながら実装
Rubyで実装
数十行程度
ソースは何処かに載せておきます
実行例を見ると分かり易いかも(後の資料)
2010年9月26日日曜日
![Page 11: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/11.jpg)
【再掲】分類器の活用1.入力準備
(a)フォーマット、ノイズ除去、など2.学習
(a)モデルを作成3.評価
(a)モデルを評価(b)「1.入力→2.学習→3.評価」を繰り返す(c)良いモデルを作り、メンテすることが重要
4.実践・推測(a)作成したモデルを用いて未知のモノを分類
2010年9月26日日曜日
![Page 12: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/12.jpg)
LLによる簡易実装# 空の分類器を生成c = NaiveBayes.new
# 学習(カテゴリは ‘good’,‘bad’、の2つ)c.train('Nobody owns the water.','good')c.train('the quick rabbit jumps fences','good')c.train('buy pharmaceuticals now','bad')c.train('make quick money at the online casino','bad')c.train('the quick brown fox jumps','good')
# 実践(分類)c.classify("quick rabbit",default="unknown") #=> goodc.classify("quick money",default="unknown") #=> bad
# チューニングc.setthreshold('bad',3.0) # badを選択するためには、他カテゴリの確率の3倍必要c.classify("quick money",default="unknown") #=> unknown
2010年9月26日日曜日
![Page 13: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/13.jpg)
MahoutJava/Hadoop上での計算処理
アルゴリズムによってはローカルでも実行可能
大規模データのデータマイニング
複数のアルゴリズムをサポート
Classifier
CF
Clustering
Pattern Mining
2010年9月26日日曜日
![Page 14: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/14.jpg)
Mahoutの単純ベイズ分類器
Mahout in Action
MEAP版(PDF)
執筆途中のものを発売日前に購入
更新されるたびにダウンロード可能
電子書籍ならでは
2010年9月26日日曜日
![Page 15: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/15.jpg)
現在
2010年9月26日日曜日
![Page 16: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/16.jpg)
執筆を待とう
2010年9月26日日曜日
![Page 17: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/17.jpg)
Mahoutの単純ベイズ分類器2種類の分類器の実装
Naive BayesComplementary Naive Bayes
Tackling the Poor Assumptions of Naive Bayes Text Classifiers
http://people.csail.mit.edu/jrennie/papers/icml03-nb.pdf
入力準備・学習・評価フェーズにHadoop利用Hadoopを使わないオプションあり今回はElastic MapReduce使うので、コマンドは置き換えてください
Wikipediaと20NewsGroupsのExample
2010年9月26日日曜日
![Page 18: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/18.jpg)
【再掲】分類器の活用1.入力準備
(a)フォーマット、ノイズ除去、など2.学習
(a)モデルを作成3.評価
(a)モデルを評価(b)「1.入力→2.学習→3.評価」を繰り返す(c)良いモデルを作り、メンテすることが重要
4.実践・推測(a)作成したモデルを用いて未知のモノを分類
2010年9月26日日曜日
![Page 19: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/19.jpg)
Mahoutの単純ベイズ分類器
Wikipedia(en)データをダウンロード(xml.bz2)
付属ツールでデータを分割(xml→*.xml)
64MB/396ファイル/合計25GB、中規模
1.入力準備・その1・データのダウンロード
$ java -Xmx2048m org.apache.mahout.classifier.bayes.WikipediaXmlSplitter \-d $WORK_DIR/enwiki-20100130-pages-articles.xml.bz2 \-o $WORK_DIR/chunks/ \-c 64
2010年9月26日日曜日
![Page 20: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/20.jpg)
Mahoutの単純ベイズ分類器文書を必要な分だけS3(MapReduceのinput)にアップロード
先ほど分割したファイルから、学習用・評価用に、適当に選んでおく今回は学習用に5ファイル、評価用に1ファイル
カテゴリを準備
今回は2個だけ「Sports・Game」
1.入力準備・その2・カテゴリの準備
$ elastic-mapreduce \--create \--name "wikipedia classifier" \--alive \--log-uri s3://yanaokimrsample/classifier/wikipedia/logs \--num-instances 3 \--instance-type m1.small \--availability-zone us-west-1a
Hadoopクラスタ起動(small,maste1/slave2ノード)
2010年9月26日日曜日
![Page 21: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/21.jpg)
Mahoutの単純ベイズ分類器
付属のツールを用いて学習用データ生成指定カテゴリとWikipediaカテゴリを比較して抽出サブストリングなカテゴリもマッチ
1カテゴリ→1ファイル、1文書→1行出来上がった入力ファイルのフォーマット↓
1.入力準備・その3・学習用データ作成$ elastic-mapreduce -j j-24EIFIRXBO39M \--jar s3n://yanaokimrsample/jars/mahout-examples-0.3.job \--main-class org.apache.mahout.classifier.bayes.WikipediaDatasetCreatorDriver \--arg --input --arg s3n://yanaokimrsample/classifier/wikipedia/chunks \--arg --output --arg s3n://yanaokimrsample/classifier/wikipedia/input \--arg --categories --arg /home/hadoop/cat.txt \--step-name "wikipedia train dataset creator driver"
カテゴリ名<¥t>単語<space>単語<spache>単語<spane>...
2010年9月26日日曜日
![Page 22: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/22.jpg)
Mahoutの単純ベイズ分類器
学習用データと同ツールを用いて生成別データを用い、別の場所に生成
1.入力準備・その4・評価用データ作成$ elastic-mapreduce -j j-24EIFIRXBO39M \--jar s3n://yanaokimrsample/jars/mahout-examples-0.3.job \--main-class org.apache.mahout.classifier.bayes.WikipediaDatasetCreatorDriver \--arg --input --arg s3n://yanaokimrsample/classifier/wikipedia/chunks2 \--arg --output --arg s3n://yanaokimrsample/classifier/wikipedia/input2 \--arg --categories --arg /home/hadoop/cat.txt \--step-name "wikipedia test dataset creator driver"
2010年9月26日日曜日
![Page 23: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/23.jpg)
Mahoutの単純ベイズ分類器
分類器タイプ、N-gram(単語N-gram)、alpha(スムージング)を指定10分程度で完了内部では、論文にそったBayes/CBayesの処理を4回のMapReduceで実行
2.学習・実行
$ elastic-mapreduce -j j-24EIFIRXBO39M \--jar s3n://yanaokimrsample/jars/mahout-core-0.3.job \--main-class org.apache.mahout.classifier.bayes.TrainClassifier \--arg --input --arg s3n://yanaokimrsample/classifier/wikipedia/input \--arg --output --arg s3n://yanaokimrsample/classifier/wikipedia/model \--arg --gramSize --arg 2 \--arg --classifierType --arg bayes \--arg --alpha --arg 0.5 \--arg --dataSource --arg hdfs \--step-name "train classifier"
2010年9月26日日曜日
![Page 24: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/24.jpg)
Mahoutの単純ベイズ分類器
学習時と同じN-gramとalphaを指定2.評価・その1・実行
elastic-mapreduce -j j-24EIFIRXBO39M \--jar s3n://yanaokimrsample/jars/mahout-core-0.3.job \--main-class org.apache.mahout.classifier.bayes.TestClassifier \--arg --model --arg s3n://yanaokimrsample/classifier/wikipedia/model \--arg --testDir --arg s3n://yanaokimrsample/classifier/wikipedia/input2 \--arg --gramSize --arg 2 \--arg --classifierType --arg bayes \--arg --alpha --arg 0.5 \--arg --method --arg mapreduce \--arg --dataSource --arg hdfs \--arg --encoding --arg UTF-8 \--step-name "test classifier"
2010年9月26日日曜日
![Page 25: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/25.jpg)
Mahoutの単純ベイズ分類器
標準出力に、混同行列形式で結果表示2.評価・その2・結果の評価
・・・=======================================================Confusion Matrix-------------------------------------------------------a b <--Classified as464 2 | 466 a = game 159 169 | 328 b = sports Default Category: unknown: 2
→sportsカテゴリの正解率が低い。モデルの再生成が必要。。。
2010年9月26日日曜日
![Page 26: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/26.jpg)
Mahoutの単純ベイズ分類器
生成モデルを用い未知のドキュメントを分類Classifierクラス(Mahoutが用意している)2つの方式モデルをインメモリにロードして利用始めからHBaseを利用
現在はバグがあって動作しないorzバグは明確なので修正して数行で書けそう
2.実践/分類
2010年9月26日日曜日
![Page 27: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/27.jpg)
まとめ今後やりたいこと
Hadoopを使わないでローカルで試せるオプションもあるので、手軽なデータ量でたくさん試したい
Mahoutが実装した論文をしっかり読みたい
分類器タイプ、N-gram、alpha値のパラメータを変えて試したい
Mahout in Actionの続きが読みたい
2010年9月26日日曜日
![Page 28: はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-](https://reader031.fdocument.pub/reader031/viewer/2022013111/5578125cd8b42ab40c8b4751/html5/thumbnails/28.jpg)
ありがとうございました
2010年9月26日日曜日