今回は機械学習の中でも使用頻度が高いランダムフォレストを取り上げてみたいと思います。
ランダムフォレストとは教師あり学習の1つで、複数の決定木を用いて回帰や分類の問題を解く手法です。
この説明を見て、「決定木って何だろう?」と思った方もいらっしゃると思います。そうです、ランダムフォレストを理解するには、その前提として決定木を理解しておく必要があります。
ということで、今回は決定木からランダムフォレストに至るまでを順を追って解説していきたいと思います。
決定木とは?
では、まず大前提の決定木から始めます。これは言葉で説明するよりも実物を見ていただく方が早いので、早速具体例を示します。以下は入力された画像が猫であるかどうかを判定するための決定木です。
図をご覧になって決定木についてのおおよそのイメージは持てたのではないでしょうか?
決定木は名前が示すように何かしらの決定を下すために使用されます。決定を下すための条件をいくつか設定しておき、各条件に対してYes/Noを答えていくことで、結論が得られます。上図のようにそれを可視化したものが木構造(幹から枝葉が伸びる様子)に見えるので、決定木と呼ばれています。
冒頭に述べたように、教師あり学習なので、正解データ(今回の例では猫の画像)を学習させることによって、AIが自身で決定木を作成するのです。
ちなみに、今回の例は「画像が猫かどうかを分類する」というタスクだったので、このような場合は決定木の中でも特に分類木と呼ばれます。一方で、予測結果が数値となるようなものは回帰木と呼ばれます。
機械学習の手法の中には、予測結果が得られた際に「どういう根拠でそのような結果になったのか?」が明確に分からないこともあります。決定木はご覧のように答えに至るまでの判定基準がはっきりしているので、根拠や過程が分かりやすいことが特長です。
ランダムフォレストとは?
ランダムフォレストは「複数の決定木を使用する」と最初に述べました。
なぜわざわざ1つではなく、複数の決定木を使用するのでしょうか?
それは1つだけだと、判定条件が偏ってしまう恐れがあるからです。例えば、先ほどの猫の画像判定の例で言えば、「爪があるか?」「三角形の耳があるか?」なども決定木に含めることができるはずですが、全ての判定条件を1つの決定木で完全に学習することは困難です。従って、より正しい判断を行なうには複数の決定木を使う方がよいのです。諺で例えるなら「三人寄れば文殊の知恵」という発想でしょう。
ただし、複数の決定木を用いるに当たっても注意点があります。繰り返しになりますが、決定木は教師あり学習なので、人間が入力した正解データをAIが学習した結果に基づいて作成されます。すなわち、仮に全ての決定木に同じ入力データを渡した場合は、同じような構造の決定木が出来上がってしまう可能性が高いのです。こうなってしまっては、複数の決定木を用いる旨味が減ってしまいますね。複数の決定木は各々違う判定条件を持っているからこそ、多角的な判断ができて役に立つのです。
では、似たような決定木の量産を避けるためにはどうすればよいでしょうか?
答えは学習に用いる正解データをランダムに変えてやればよいのです。各々の決定木に流し込む正解データを手持ちのデータの中からランダムに抽出すれば、異なったデータで学習が進むことになるので、様々な決定木を作ることができます。ちなみに、このように全体からランダムにデータを抽出してくることをブートストラップサンプリングと言います。
ここまで来たらなぜランダムフォレストと呼ばれるのかも分かってきたのではないでしょうか?ランダムなデータを使って、複数の決定木、すなわち森(フォレスト)を作ることが名前の由来です。
最後に、ランダムフォレストの出力の決定方法を確認します。先ほどから何度も言っているように、ランダムフォレストでは複数の異なる決定木を利用するので、何かしらのデータを入力して予測をしようとした際に、各々の決定木が異なる結論を出します。猫の画像分類で言えば、ある画像を入力して判定させた際に、「これは猫の画像だ」という決定木もいれば、「これは猫の画像じゃない」という決定木もいるわけです。
こうなった場合にどちらの意見を採用すればよいのでしょうか?
答えは多数決です。つまり、「猫の画像だ」と主張する決定木の方が多ければ、ランダムフォレストとして最終結論は「猫の画像だ」ということになります。非常にシンプルな仕組みですね。ちなみに今回の例は分類問題だったので多数決でしたが、例えば決定木が数値を返すような場合には、全ての決定木の平均値を取るというようなやり方もあります。
ちなみに、このランダムフォレストのように複数のモデル(今回の場合は決定木)を用いて学習を行なう手法のことをアンサンブル学習と呼びます。
最後に
今回はランダムフォレストの仕組みをゼロから解説しました。
例えて言うなら、みんなで意見を言い合って多数決で決めるということなので、考え方としては身近に感じてもらえたのではないかと思います。
メジャーで分かりやすい手法なので、是非機会があれば使ってみてください。
最後になりますが、より詳しくAIを学んでみたいという方は、AIの基礎からAI搭載WEBアプリ開発まで学べるキカガク長期コースも活用してみてください!