スポンサーリンク
ペンしお

国立大学4年生。趣味でブログをやっている者です。現在のブログ収益は500円くらい。大学では医療系ICTやAIについて研究します。面白い記事を書いたりしてこうと思ってます。趣味はテニス、スロット、アニメです。Twitterふぉろーしてね。

ペンしおをフォローする

【機械学習】ランダムフォレストについて

ランダムフォレスト

モチベーション

大学院の基礎勉強として機械学習の一つのランダムフォレストについて一週間調べたので復習ついでにまとめたいと思います!機械学習って響きはなんかすごく難しそうで中身はどんなことやっているんだろうと思っている方や、これから勉強するかもしれないという方に向けてできるだけ簡単にまとめるのでぜひ読んでみてください!

ランダムフォレストって?

ランダムフォレストは機械学習アルゴリズム(予測モデル)の一つです。 これ以外には線形回帰、ロジスティック回帰、サポートベクトルマシン、ニューラルネットワークなどなど、、、いろいろあります!

ランダムフォレストの定義としては「決定木による複数の弱学習器を統合させて汎化能力を向上させるアンサンブル学習アルゴリズム」です。何に使うの?というと、分類や回帰(数値の予測)に使います。

ランダムフォレストの例!(分類)

ランダムフォレストというか、機械学習全般で使われる「分類」というものについて説明します。(分類をする方法は何個もあって、ランダムフォレストもその中の一つ)

例えば、ある花が咲いています。あなたはこれが何の花か分かりません。ここである程度「この特徴の花はこういう名前の花だよ」と教えたランダムフォレストを使います。これを教師あり学習といいます。あなたが用意するのは花の特徴を観察してランダムフォレストに教えてあげることです。

花びらの大きさ、花の香り、茎の長さ、葉っぱの大きさ、形などいくつかの特徴をランダムフォレストに教えると、ランダムフォレストはその花の種類をその特徴から教えられたものを参考にして予測します。最後に、あなたが予測できた花は何?と聞くと、「すいせん」などと答えが返ってきます。

それではこれがどう中身が動いて花を特定させているのか説明していきます。

アンサンブル学習って?

アンサンブル学習とは、「アンサンブル」とあるようにいくつかあるものを混ぜることでより良いものにしていくための計算です。オーケストラでも、フルートやトランペット、ユーフォニウムなど、いくつかの楽器の音色を組み合わせる「アンサンブル演奏」ってありますよね。そんな感じのイメージです。

アンサンブル学習とは複数の学習器を組み合わせ、より良い予測を得ようとする方法です。これはどういうことかというと、QuizKnockのメンバーで例えると伊沢さん一人対他のメンバー全員でクイズ対決をするのと同じことです。さすがに、ほかのメンバー全員の方が勝ちますよね(笑)仲間同士で穴を埋めあうイメージです。

ランダムフォレストではこのアンサンブル学習が取り入れられています。

学習器は花の予測をするそのものです。正直一つあれば予測すること自体は不可能ではないけど、精度が低いから、何個か組み合わせるんです。

ランダムフォレストで使うのはアンサンブル学習の中の一つバギング!

QuizKnockのメンバー で例えます。あるメンバーに 「この特徴の花はこういう名前の花だよ」 というのを100個教えます(訓練データ)。そのメンバーはなるほどなるほど!と覚えて、その中の花なら予測できるようになります。次に、ほかのメンバーにも同じく 100個教えます 。しかし僕は100個しかその特徴を持っていないので教えたものはすべて同じ内容です。そこで、新しく、「この花はなに?」と尋ねました。答えはもちろんふたりとも同じ答えが返ってきますよね。つまり、同じデータを使って教えても意味がないんです。

そこで、どうすれば良いのかというと、バギング(ブーストラップ集約)という手法を使います。これはブーストラップというものを集めたものですが、ブーストラップとは訓練データからランダムに重複ありでn個(何個でもおk)のデータだけ取り出して使う方法です。このブーストラップ(ランダムにn個データを取り出したもの)を QuizKnockのメンバー 一人に教え、これをN人にそれぞれ教えます。Nが3のときは下の図のようになります。

QuizKnockのメンバー 3人がそれぞれ花の予測をしてくれるのでこれを多数決することで最終的な花の名前を決定します。これがバギングという考え方です。

決定木を使ったものがランダムフォレスト

いままで QuizKnockのメンバー でバギングを解説しました。これでほぼランダムフォレストの完成です。 QuizKnockのメンバー を決定木というものにおきかえればランダムフォレストという機会学習の完成です!木をたくさん集めれば森になりますよね。

それでは、決定木について説明していきます!

決定木って?

決定木とはある簡単な基準に基づいてデータの分割を繰り返し、木のような構造を作り出すアルゴリズムです。

上の決定木はその日の天気と風の強さからテニスをする人の人数を振り分けたものです。あるテニスボールを売り出しに行く人がいるとすると、この人はその日の天気が晴れで、風が吹いていないならテニスする人が多いだろうと予測することが出来るのでテニスボールを売りに出かけるのが良いと考えます。逆に天気は晴れだけど風邪が強い日はテニスをする人がすくないから今日は休みでいいやと仕事に出かけない選択ができます。

この決定木が使われている例としてアキネーターというゲームがあります。これは質問の回答によって答えを絞っていき、最終的に想像しているキャラクターを当ててくれます。

Akinator

ある基準によって分類していく様子が木のように見えることが決定木と呼ばれるわけです。

どうしてアンサンブル学習?

アンサンブル学習においてモデル間の相関が低いほど最終的な予測器の精度が高まります。相関が低いというのは関係が薄いということです。そこでこの相関を低くするための工夫が二つあります。

一つ目はブーストラップで、全体の中から一部分を取り出すのを何回も行うことによって、違うデータを使って学習させるのと同じくらいの効果があります。

もう一つは使う特徴量をそのつど変化させる考え方でそれぞれの決定木で花の特徴を変化させます。例えば、この決定木では花の生息地と香りで予測する、この決定木では花びらの大きさと色で予測するなどです。

これを行うことで異なる特徴量で作ったモデルの相関を低くすることが出来ます。

どうして決定木を用いるのか

ランダムフォレストはとても予測精度が高くて扱いやすいモデルで有名な機械学習です。バギングの基本的な考え方は過学習しやすいモデルを複数組み合わせて誤差を減らすことです。

過学習とはこの特徴はこの花、これはこの花というふうに学習器が学んでいきますが、時々間違えた情報や例外などの外れ値と呼ばれるものもしっかり学んでしまうことです。これをしてしまうと、この外れ値に近い特徴のデータが来た時に、本当は違うのに外れ値のものを予測してしまいます。これは精度の低下につながってしまうので、できればこの外れ値は無視したいわけです。

ここで、決定木はある基準をとことん分けていくことで外れ値とその他のような分け方もできてしまいます。これが過学習のもとになってしまうので防ぎたいですよね。

そこでバギングを用いることで誤差を減らすことができます。決定木はこの点でバギングのベース学習器として理想的なので、決定木を用います。

まとめ

まとめると、ある分類したいものがあったときに、ランダムフォレストではそのデータをいくつかに分けてそれぞれ予測するものを作り、それぞれで出した予測値を多数決することで精度を上げました。

これから機械学習についてちょくちょく書いていこうと思うので、学習する機会があったりものしりになりたい方はぜひちぇっくしてみてください!(笑)

コメント

タイトルとURLをコピーしました