More Related Content Similar to 「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京 (20) More from Koichi Hamada (20) 「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京1. 第7回データマイニング+WEB勉強会@東京
2010/09/26
はじめてでもわかる
Random Forest入門
Introduction to Random Forest
-集団学習による分類・予測-
hamadakoichi
濱田 晃一
2. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
3. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
7. 自己紹介:hamadakoichi 濱田晃一
理論物理 博士(2004.3取得)
量子統計場の理論
Statistical Field Theory Spontaneously
Time-Reversal Symmetry Breaking
Anisotropic Massless Dirac Fermions
博士論文: http://hosi.phys.s.u-tokyo.ac.jp/~koichi/PhD-thesis.pdf 7
9. 自己紹介:hamadakoichi 濱田晃一
Los Angelesでプロダンサーに褒められた
・HIP HOP/House ダンス歴13年
・ダンス開始後 1年半でL.A.でプロダンサーに褒められる
Youtube Channel: http://www.youtube.com/hamadakoichi 9
10. 自己紹介:hamadakoichi 濱田晃一
毎週末3時間ダンスコーチをしています
■過去、東京と京都でも
ダンス部を創設。
コーチをしていました
駒場物理ダンス部 京都大学基礎物理学研究所ダンス部
部長兼コーチ 部長兼コーチ
現在: 毎週末 3時間ダンスコーチ
Youtube Channel: http://www.youtube.com/hamadakoichi 10
11. 数理解析手法の実ビジネスへの適用
2004年 博士号取得後
数理解析手法を実ビジネス適用の方法論構築
主な領域
◆活動の数理モデル化・解析手法
◆活動の分析手法・再構築手法
◆活動の実行制御・実績解析システム
…
内容抜粋
“Decoupling Executions in Navigating Manufacturing "Unified graph representation of processes
Processes for Shortening Lead Time and Its Implementation for scheduling with flexible resource
to an Unmanned Machine Shop”, assignment",
11
12. 数理解析手法の実ビジネスへの適用:活動例
活動例
活動の統一グラフモデルを構築・解析
Unified graphical model of processes and resources
青字:割付モデル属性
[ ] : Optional
Node ・priority(優先度) Edge
・duration(予定時間)
[・earliest(再早開始日時) ] Process Edge
Process [・deadline(納期) ]
[・or(条件集約数) ]
前プロセスの終了後に後プロセスが
プロセスを表す 開始できること表す
・attributes(属性)
preemptable(中断可否),
successive(引継ぎ可否)
Uses Edge
workload(作業負荷) Processが使用する
uses uses uses uses uses uses Assign Region を表す
Assign Region Assigns from Edge
同一Resourceを割付け続ける Assign Regionに
assigns from assigns from 指定Resourceの子Resource集合の
範囲を表す
assigns assigns 中から割付けることを示す
企業01 [process]
has has [startDate(開始日時)]
[endDate(終了日時)] Assigns Edge
製品01 組織A StartDateからEndDateまでの間
Resource has Assign RegionにResourceを
割付対象要素を表す has has has has has has 割付けることを表す
・capacity(容量)
・calender(カレンダー)
AAA01 AAB02 … 山田さん 田中さん 鈴木さん ・attributes(属性) Has Edge
東さん Resourceの所有関係を表す
12
13. 数理解析手法の実ビジネスへの適用:活動例
一品一様の業務プロセスの
動的なプロセス制御数理体系を構築
全体生産リードタイム中央値を 1/2.7に短縮
設計開始~頭だし出荷リードタイム
設 計 開 始 ~ 頭 だ し出 荷 CT対 週 集 計 開 始 日 時 の 箱 ひ げ 図 体系適用
500
適用後
設計開始~頭だし出荷CT
400
360.4h(15.0日)
1/2.7
300
200
100
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141.6h(5.9日)
00 00
9: 9: 9: 9: 9: 9: 9: 9: 9: 9: 9: 9: 9: 9:
/ 20 / 27 / 04 / 11 / 18 / 25 / 01 / 08 / 15 / 22 / 29 / 06 / 13 / 20
/ 09 / 09 / 10 / 10 / 10 / 10 / 11 / 11 / 11 / 11 / 11 / 12 / 12 / 12
04 04 04 04 04 04 04 04 04 04 04 04 04 04
20 20 20 20 20 20 20 20 20 20 20 20 20 20
週 集 計 開 始 日 時
13
14. 数理解析手法の実ビジネスへの適用:活動例
ビジネスとともに
学術分野でも貢献
変動性から生じる動的な課題
・リソースの競合 ・滞留 ・納期遅延 …
一品一様な業務プロセスを含む
統計解析・制御数理モデル
・統計的な有効変数算出
・統計数理モデル化
-優先順位制御
-実行タイミング制御
-統計フィードバック
-適正リソース量算出
・予測数理体系
論文(体系の一部)
M.Nakao, N. Kobayashi, K.Hamada, T.Totsuka, S.Yamada,
“Decoupling Executions in Navigating Manufacturing Processes for Shortening Lead Time and Its Implementation
to an Unmanned Machine Shop”,
CIRP Annals - Manufacturing Technology Volume 56, Issue 1, Pages 171-174 (2007) 14
16. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
17. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
18. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
22. Random Forest とは
樹木モデルの集団学習により
高精度の分類・予測を行う
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 22
23. Random Forest とは
樹木モデルの集団学習により
高精度の分類・予測を行う
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 23
24. Random Forest とは
樹木モデルの集団学習により
高精度の分類・予測を行う
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 24
25. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
26. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: 植物の分類
Iris(アヤメ)データ
花葉と花びらの長さ・幅から
種類の分類構造算出
説明変数 目的変数
花葉(長さ・幅) 花びら(長さ・幅) 種類
26
27. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: 植物の分類 分類 花びらの長さ
Iris(アヤメ)データ
花葉と花びらの長さ・幅から 花びらの幅
種類の分類構造算出
説明変数 目的変数
花葉(長さ・幅) 花びら(長さ・幅) 種類
setosa
virginica
versicolor
27
28. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: 植物の分類 分類 花びらの長さ
Iris(アヤメ)データ
花葉と花びらの長さ・幅から 花びらの幅
種類の分類構造算出
virginica setosa
setosa
virginica
versicolor virginica
versicolor virginica
28
29. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: ブレーキ後 停車距離 予測
carsデータ
車速度と
ブレーキ後の停車距離の関係構造算出
説明変数 目的変数
ブレーキ後の
車の速度
停車までの距離
29
30. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: ブレーキ後 停車距離 予測 回帰(予測) スピード
carsデータ
車速度と
ブレーキ後の停車距離の関係構造算出
説明変数 目的変数
ブレーキ後の
車の速度
停車までの距離
ブレーキ後の停車距離
30
31. 樹木モデル とは
木構造の条件分岐で
分類・予測(回帰)を行う
例: ブレーキ後 停車距離 予測 回帰(予測) スピード(speed)
carsデータ
車速度と
ブレーキ後の停車距離の関係構造算出
ブレーキ後の停車距離
31
32. 樹木モデル: 分岐基準
条件ノード A を条件ノードALとARに分けるとき
以下のΔIを最大化する分割を行う
Classification And Regression Trees (CART)
(Breiman et al, 1984)
分類木
Entropy
GINI係数
※ :条件ノード A で クラス k をとる確率
回帰木
尤離度(deviance)
※ :条件ノード A での目標変数 t の平均値 32
33. Random Forest とは
樹木モデルの集団学習により
高精度の分類・予測を行う
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 33
34. Random Forest とは
樹木モデルの集団学習により
高精度の分類・予測を行う
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 34
35. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
37. 集団学習 とは
複数モデル生成し 結果を統合
精度を向上させる 機械学習のアルゴリズム
37
38. 集団学習 とは
複数モデル生成し 結果を統合
精度を向上させる 機械学習のアルゴリズム
■異なるサンプル、異なる重みの
複数の学習モデルを生成
38
39. 集団学習 とは
複数モデル生成し 結果を統合
精度を向上させる 機械学習のアルゴリズム
■異なるサンプル、異なる重みの
複数の学習モデルを生成
■各モデルの結果を統合・組合せにより
精度・汎用性を向上
39
40. 集団学習 とは
複数モデル生成し 結果を統合
精度を向上させる 機械学習のアルゴリズム
■異なるサンプル、異なる重みの
複数の学習モデルを生成
■各モデルの結果を統合・組合せにより
精度・汎用性を向上
結果の統合 ・分類: 多数決
・回帰: 平均値
40
41. 集団学習 とは
複数モデル生成し 結果を統合
精度を向上させる 機械学習のアルゴリズム
■異なるサンプル、異なる重みの
複数の学習モデルを生成
■各モデルの結果を統合・組合せにより
精度・汎用性を向上
結果の統合 ・分類: 多数決
・回帰: 平均値
41
42. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
43. Random Forest
Tree Modelの集団学習による
高精度の分類・予測(回帰)
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 43
46. Random Forest アルゴリズム: 学習
ブートストラップ サンプリング
学習データから重複を許しランダムに B組のサンプル集合抽出
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
46
47. Random Forest アルゴリズム: 学習
ランダム抽出変数での樹木モデル生成
各ノード展開で M個の説明変数からm個変数をランダム抽出
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Tree 1
47
48. Random Forest アルゴリズム: 学習
全サンプル集合で
樹木モデルを生成
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Tree 1 Tree 2 … Tree B
48
49. Random Forest アルゴリズム: 学習
複数の樹木モデル
= Forest (森) モデル
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Tree 1 Tree 2 … Tree B
49
50. Random Forest アルゴリズム: 学習
複数の樹木モデル
= Forest (森) モデル
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
50
52. Random Forest アルゴリズム
全樹木モデルで
分類・回帰予測の結果算出
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
52
53. Random Forest アルゴリズム
全Tree Model の結果を統合する
分類:多数決、回帰予測:平均
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 53
54. Random Forest アルゴリズム
Tree Modelの集団学習による
高精度の分類・予測(回帰)
学習用データ
Random Sampling 1 Sampling 2 … Sampling B
Forest
Forest
Tree 1 Tree 2 … Tree B
予測対象
Result 1 Result 2 … Result B
分類・予測結果 54
55. Random Forest
Random Forest の
主な特長
・精度が高い
・説明変数が数百、数千でも効率的に作動
・目的変数に対する説明変数の重要度を推定
・欠損値を持つデータでも有効に動作
・個体数がアンバランスでもエラーバランスが保たれる
55
56. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
57. Random Forest の実行
パッケージインストール
# randomForest のインストール
install.packages("randomForest")
library(randomForest)
57
58. Random Forest の実行
学習用・予測用データ作成
# iris(アヤメ)データを使用
data <- iris
# 学習用データとテスト用データをランダムサンプリング
ndata <- nrow(data)#データ行数
ridx <- sample(ndata, ndata*0.5) #50%のランダム抽出で学習・予測データ分割
data.learn <- data[ridx,] #学習用データ作成
data.test <- data[-ridx,] #予測用データ作成
サンプルデータ
iris(アヤメ)データ:よい性質を持ち よく使用される
(R環境で標準提供されている) 説明変数 目的変数
花葉(長さ・幅) 花びら(長さ・幅) 種類
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
Iris Sanguinea 58
59. Random Forest の実行
Random Forest の生成
# Species(種類)を分類変数として Random Forest を生成
forest <- randomForest(Species~.,data = data.learn)
59
60. Random Forest の実行
Random Forest の生成
# Species(種類)を分類変数として Random Forest を生成
forest <- randomForest(Species~.,data = data.learn)
関数
randomForest(formula, data = NULL, …, ..., subset, na.action=na.fail)
主要な引数 内容
formula モデルの形式
x, y 目的変数と説明変数 (formula 代わりに用いる)
data, subset 用いるデータ
na.action 欠損値の表記型の指定
ntree 生成する木の数 (デフォルトは 500)
mtry 分岐に用いる変数の数 (デフォルト, 分類 √M, 回帰 M/3, M:変数総数)
importance 変数の重要度出力 (デフォルトは FALSE)
60
61. Random Forest の実行
生成されたForest を用いた
高精度の予測
# Forestを用いた予測の実行
pred.forest <- predict(forest, newdata = data.test, type = "class")
# 解との比較
table(pred.forest, data.test[,5])
61
62. Random Forest の実行
生成されたForest を用いた
高精度の予測
# Forestを用いた予測の実行
pred.forest <- predict(forest, newdata = data.test, type = "class")
# 解との比較
table(pred.forest, data.test[,5])
予測結果: Random Forest 予測
pred.forest setosa versicolor virginica
setosa 27 0 0
versicolor 0 28 0
virginica 0 0 20
分類間違いなし
62
63. Random Forest の実行
生成されたForest を用いた
高精度の予測
# Forestを用いた予測の実行
pred.forest <- predict(forest, newdata = data.test, type = "class")
# 解との比較
table(pred.forest, data.test[,5])
予測結果: Random Forest 予測 ※比較参照 予測結果:分類木 (rpart)
pred.forest setosa versicolor virginica pred.dt setosa versicolor virginica
setosa 27 0 0 setosa 27 0 0
versicolor 0 28 0 versicolor 0 26 1
virginica 0 0 20 virginica 0 2 19
分類間違いなし
63
64. 樹木モデルとの比較
きわどいところも
分類できている
予測結果: Random Forest 予測 ※比較参照 予測結果:分類木 (rpart)
pred.forest setosa versicolor virginica pred.dt setosa versicolor virginica
setosa 27 0 0 setosa 27 0 0
versicolor 0 28 0 versicolor 0 26 1
virginica 0 0 20 virginica 0 2 19
分類木のエラー箇所
virginica
setosa
virginica
versicolor
64
65. Random Forest の実行
重要度算出
各変数の目的変数に対する重要度
重要度 グラフ表示
#重要度 グラフ表示
varImpPlot(forest)
#重要度 出力
Importance(forest)
重要度 出力
> importance(forest)
MeanDecreaseGini
Sepal.Length 4.791776
Sepal.Width 2.102875
Petal.Length 20.811569
Petal.Width 20.627166
65
66. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
67. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
(Hadoop:象, Mahout: 象使い)
http://mahout.apache.org
67
68. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
(Hadoop:象, Mahout: 象使い)
http://mahout.apache.org
68
69. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
(Hadoop:象, Mahout: 象使い)
http://mahout.apache.org
69
70. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
(Hadoop:象, Mahout: 象使い)
http://mahout.apache.org
70
71. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
(Hadoop:象, Mahout: 象使い)
http://mahout.apache.org
71
72. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
・Hadoop:象, Mahout: 象使い
http://mahout.apache.org
72
73. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
・Apache プロジェクト
・機械学習・データマイニングのライブラリ
・Java オープンソース
・Hadoop(大規模 分散処理基盤)上で動作
・Hadoop:象, Mahout: 象使い
http://mahout.apache.org
73
74. Mahoutとは
Open Sourceでスケーラブルな
機械学習・データマイニングのライブラリ
Applications
Examples
Freq.
Genetic Pattern Classification Clustering Recommenders
Mining
Math
Utilities Collections Apache
Vectors/Matrices/
Lucene/Vectorizer (primitives) Hadoop
SVD
http://cwiki.apache.org/confluence/display/MAHOUT/Algorithms
http://www.slideshare.net/gsingers/intro-to-apache-mahout 74
76. Mahout : Random Forest
mahout.df(Decision Forest) Packageで実装されている
主要クラス
Decision Tree構築: org.apache.mahout.df.builder.TreeBuilder
Interface 内容
TreeBuilder 樹木モデル(Decision Tree)構築のInterface
Class 内容
DefaultTreeBuilder 樹木モデル(Decision Tree)構築の実装クラス
Forest予測: org.apache.mahout.df.callback
Class 内容
ForestPredictions Decision Forestの予測結果を算出する
Decision Forest構築: org.apache.mahout.df.mapreduce
Class 内容
Builder Decision Forestを構築する
Decision Forest: org.apache.mahout.df.DecisionForest
Interface 内容
DecisionForest Decision Forest (Decision Tree 集合) 表現・データ取得 76
77. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
78. 参考資料:R / Random Forest
Rによるデータサイエンス
~データ解析の基礎から最新手法まで ~
■CART元論文:
Breiman, L. , et.al, "Classification and Regression Trees", Wadsworth (1984)
■Random Forest元論文:
Breiman, L., et.al, “Random Forests”, Machine Learning (2001)
80. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に
81. 最後に
蓄積されたデータを有効活用してきたい
81
82. 最後に
蓄積されたデータを有効活用してきたい
Google Group: http://groups.google.com/group/webmining-tokyo
82
83. 最後に
データマイニング+WEB勉強会
発表者を募集しています
連絡
Google Group: http://groups.google.com/group/webmining-tokyo
Twitter : http://twitter.com/hamadakoichi
83
85. AGENDA
◆自己紹介
◆Random Forestとは
◆概要
◆樹木モデル
◆集団学習
◆アルゴリズム
◆R言語での実行
◆Mahout:Random Forest
◆参考資料
◆最後に