ランダムフォレストを作った話
- 2015/12/20
- 01:08
いろいろあって機械学習をやることになったので特に使用したランダムフォレストについて書いていきます。
1.ランダムフォレストとは
ランダムフォレストとは決定木と呼ばれるものを大量に作って識別する機械学習の方法のひとつです。
ノイズにもなかなか強いので使い勝手のよい機械学習のアルゴリズムであるといえます。さらに、ランダムフォレストではN次元のトレーニングデータに含まれる要素の重要度を知ることができます。
この重要度を知ることが出来るという性質を利用して、トレーニングデータの次元数を削減するときにも使ったりもします。というか使いました。
2.動作
ランダムフォレストの基本的な動作は
1.トレーニングデータの一部を利用して決定木を複数個(任意)作成する
2.テストデータを作成した全ての決定木に与えて解を求める
3.多数決で最も多いものを予測データとして出力する
と、非常にシンプルです。
実装するのであれば決定木さえ作れれば9割終わったようなものですね。
3.実装
今回はjavaで実装したのでjavaベースで書いていきます。
まず決定木を作成するとき、数ある選択肢の中から最適な選択肢を選ぶ方法に「エントロピーを計算する方法」と「ジニ係数を計算する方法」の2種類あります。今回は後者を用いました。
ソースコードはgithubに公開してあるのでどうぞ
https://github.com/akikan/randomForest
1.ランダムフォレストとは
ランダムフォレストとは決定木と呼ばれるものを大量に作って識別する機械学習の方法のひとつです。
ノイズにもなかなか強いので使い勝手のよい機械学習のアルゴリズムであるといえます。さらに、ランダムフォレストではN次元のトレーニングデータに含まれる要素の重要度を知ることができます。
この重要度を知ることが出来るという性質を利用して、トレーニングデータの次元数を削減するときにも使ったりもします。というか使いました。
2.動作
ランダムフォレストの基本的な動作は
1.トレーニングデータの一部を利用して決定木を複数個(任意)作成する
2.テストデータを作成した全ての決定木に与えて解を求める
3.多数決で最も多いものを予測データとして出力する
と、非常にシンプルです。
実装するのであれば決定木さえ作れれば9割終わったようなものですね。
3.実装
今回はjavaで実装したのでjavaベースで書いていきます。
まず決定木を作成するとき、数ある選択肢の中から最適な選択肢を選ぶ方法に「エントロピーを計算する方法」と「ジニ係数を計算する方法」の2種類あります。今回は後者を用いました。
ソースコードはgithubに公開してあるのでどうぞ
https://github.com/akikan/randomForest
スポンサーサイト