ランダムフォレスト (random forest) |
2017-07-30 - 2018-05-30 (update) |
|
|
*ランダムフォレスト とは
決定木を使った機械学習のアルゴリズムの1つです.決定木では,例えば,ある1つのデータを根(root)に入力すると,分岐を繰り返して1つの葉(leaf)を決めてくれます.決定木では,進んだ先の葉によって入力したデータを識別します.
{{small:決定木を構成するノードは,入力したデータを見てどちら分岐するを決めるパラメータを持っています.}}
{{small:そのパラメータは,学習用のデータをうまく見分けられるように設定することになります.}}
ランダムフォレストでは決定木を複数作成します.各決定木は,学習用のデータからランダムに選んだサンプルを使って,少しずつ性質を変えて学習させます(図1).学習の後にデータの識別を行う時は,各決定木の識別結果を統合して1つの解を決定します.
{{small:このように複数の識別器を利用した学習方法は,アンサンブル学習(ensemble learning)と呼ばれています.}}
[img:nywj]
{{small:図1 1つの決定木の構造}}
ランダムフォレストについて詳しく学びたい場合,[1][2]の文献や[3]のWebサイトが参考になります.
{{small:[1]L.Breiman, "Random Forests", Machine Learning, 2001}}
{{small:[link:https://www.stat.berkeley.edu/~breiman/randomforest2001.pdf] }}
{{small:[2]中部大学藤吉先生のCVチュートリアル資料}}
{{small:[link:http://www.vision.cs.chubu.ac.jp/cvtutorial/PDF/04RandomForests.pdf] }}
{{small:[3]じじいのプログラミング(診断人様)}}
{{small:[link:http://shindannin.hatenadiary.com/entry/2014/12/26/184624] }}
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/sp/randomforest
学習用のデータからランダムフォレストを構築し,テストデータでその性能を確認します.
関数の回帰問題を解くプログラムと,画像を識別する多クラス分類のプログラムの2種類を含みます.
多クラス分類のプログラムを動かすには,次のデータセットをダウンロードしておく必要があります.
{{small:MNIST(手書き数字データ): [link:http://yann.lecun.com/exdb/mnist/] }}
*応用事例
ランダムフォレストの応用事例を紹介します.
**手書き数字認識[4]
手書き数字の画像を入力として,その数字を識別します.画像を入力とした場合,例えば各画素の輝度値自体や周辺との差を特徴として識別を行います.[4]の文献では決定木の数を増やすことで,99%近い識別性能が得られることが紹介されています.
[img:f1jd]
{{small:図2 決定木の例}}
{{small:[4]Y.Amit, D.Geman, "Shape quantization and recognition with randomized trees", Neural Computation, 1996}}
{{small:[link:http://www.wisdom.weizmann.ac.il/~vision/courses/2003_2/shape.pdf] }}
**人体の姿勢推定[5]
Kinectで利用されているアルゴリズムで,距離画像を入力として人体の姿勢を推定します.ここでは,距離画像の各部が人体の何れのパーツであるかを識別し,その結果から人体の姿勢を推定します.
[img:x9q7]
{{small:図3 距離画像から人体の各部を識別}}
[youtube:lntbRsi8lU8]
{{small:[5]J.Shotton, A.Fitzgibbon, M.Cook, T.Sharp, M.Finocchio, R.Moore, A.Kipman, A.Blake, "Real-Time Human Pose Recognition in Parts from a Single Depth Image", Computer Vision and Pattern Recognition(CVPR), 2011}}
{{small:[link:https://people.cs.pitt.edu/~kovashka/cs3710_sp15/pose_jesse.pdf] }}
**物体の距離推定[6]
アクティブステレオに基づく距離の推定方法で,処理時間のかかる探索的なマッチングを介さずに投影像を識別します.処理時間に余裕が出た分,細かくラベルを識別することで高精度化できるようです.
[img:rdcz]
{{small:図4 ランダムパターンの投影増から距離を推定}}
[youtube:KJ6_quEHN_0]
{{small:[6]JSR.Fanello, C.Rhemann, V.Tankovich, A.Kowdle, SO.Escolano, D.Kim, S.Izadi, "HyperDepth: Learning Depth from Structured Light Without Matching", Computer Vision and Pattern Recognition(CVPR), 2016}}
{{small:[link:http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Fanello_HyperDepth_Learning_Depth_CVPR_2016_paper.pdf] }}
>> ご意見・ご質問など お気軽にご連絡ください.info