ランダムフォレストの仕組みをわかりやすく解説!〜Python実装のやり方や欠点、使用例まで〜

現在のIT業界では、様々なAIを使った技術が誕生しています。このAI技術で、業務内容の改善であったり、作業の効率化を狙う事ができます。

そして、IT業務の一つである、Webマーケティングでは、特に分析・分類をメインに進める業務もあります。そんな分析・分類に特化した、ランダムフォレストと呼ばれるアルゴリズムについて、徹底解説していきます。

アルゴリズムなどの説明だけでなく、実装する手順についても詳しく説明します。

アバター画像
監修者 エンジニア 石島

某電子専門学校卒業後、サーバー/ネットワーク運用業務を通し、ネットワーク設計/構築事業をメインにインフラ業務全般を担当。その後、某情報セキュリティ会社にて、情報セキュリティ教育事業の教育係も担当。

\エキスパートが回答!/
この記事に関する質問はこちら
記事に関するご質問以外にも、システム開発の依頼やAIの導入相談なども受け付けております。

    会社名必須
    必須
    必須
    Eメール必須
    電話番号必須
    ご依頼内容必須

    ランダムフォレストとは?

    ランダムフォレストとは、機械学習プログラムの一つです。

    主に決定木アンサンブル学習、これら2つの技術を活用することで、分類・回帰を行っています。

    例えば、分類の場合、どのコンテンツでどういったジャンルが伸びているのかを調べたい時があると思います。

    そういった場合、このランダムフォレストの技術により、決定木を使用します。決定木によるツリー分析で、たった数分で分類できます。

    さらに回帰の場合、週にどれくらいある商品が売り上げているのか確認したい場合があるとします。そういった場合、アンサンブル学習をすることで、それぞれの平均値を算出することができるのです。

    こういった、何かのグループ分けや平均を、簡単な手順で算出出来る点が、ランダムフォレストの特徴と言えるでしょう。

    この手法により、様々な業界で、ランダムフォレストを利用し、業務改善や業務効率化を行えます。

    アンサンブル学習についてもっと詳しく知りたい方は、以下の記事をご参照ください。

    関連記事
    アンサンブル学習の一種「バギング」とは?メリットや注意点を紹介!
    アンサンブル学習の一種「バギング」とは?メリットや注意点を紹介!

    ランダムフォレストの仕組み

    次にランダムフォレストの仕組みについて解説していきます。ランダムフォレストは、主に以下の3つで構成されています。

    • データのサンプリング
    • 決定木の構築
    • 予測の集約

    ランダムフォレストは、まず与えられたデータをサンプリングし、サンプリングされたデータを機械学習します。その後、決定木の構築をしていきます。決定木の構築後、予測されたデータの集約を行い、分析結果として出力されます。

    それぞれ詳しく説明します。

    データのサンプリング

    ランダムフォレストは、機械学習トレーニングをする際に、ハイパーパラメーターと呼ばれるものを設定します。このパラメーターを設定した後、分類・回帰したいデータをサンプリング(抽出・解析)します。

    その際、分類するデータなのか、分析するデータなのかで、サンプリングする手法が変わります。

    そのため、データをサンプリングする場合は、必ず分類するのか、平均値を算出したいのかを明確にしておく必要があります。

    決定木の構築

    ランダムフォレストは、データのサンプリングが完了した後、決定木の構築を行っていきます。

    決定木は、データの分類・回帰を行う為に、決定木という名の通り、与えられた条件にYES or NOでツリー状に分析していきます。ツリー状で分析し、最終的なYES or NOで与えられた条件に対して答えを出します。

    これが決定木による構築の一連の流れです。この決定木による構築の際も、分類なのか分析なのかにより、使われる機械学習プログラムが変わってきますので、条件に合った決定木の構築を行っていきましょう。

    決定木についてもっと詳しく知りたい方は、以下の記事をご参照ください。

    関連記事
    決定木分析とは? メリットやデメリット、マーケティングへの活用方法をわかりやすく解説
    決定木分析とは? メリットやデメリット、マーケティングへの活用方法をわかりやすく解説

    予測の集約

    最後に予測の集約について解説します。

    ランダムフォレストは、データのサンプリングでデータの洗い出しをします。洗い出されたデータを、決定木の構築により、分類・回帰をしていきます。

    分類・回帰されたデータは、ランダムフォレストにより、予測されたデータとして蓄積されていきます。これらのデータを纏めて、集約します。これでランダムフォレストは、作業者から指示されたデータの予測結果を出力します。

    ランダムフォレストは、この3つのデータを活用する事により、精度の高い予測を行う事ができるのです。

    機械学習についてもっと詳しく知りたい方は、以下の記事をご参照ください。

    関連記事
    機械学習におけるアルゴリズムの仕組みや種類・学習法をわかりやすく紹介!
    機械学習におけるアルゴリズムの仕組みや種類・学習法をわかりやすく紹介!

    Pythonでランダムフォレストを実装してみる

    ここでは、実際にランダムフォレストを実装する手順について解説します。

    画像を交えて詳しく解説していきますので、Pythonでランダムフォレストを実装してみたい方は、参考にしてみて下さい。

    主に以下の四つの手順でランダムフォレストを実装していきます。

    • Scikit-learnをインストールする
    • データを準備し読み込む
    • データを分割する
    • ランダムフォレストを構築する

    必ずPythonの最新バージョンを事前にインストールしてください。

    Scikit-learnをインストールする

    まず、ランダムフォレストのライブラリをインストールする為、Pythonのプロンプトを立ち上げ、以下のコマンドを入力します。

    >>pip install sckit-learn

    すると以下の画面のようにインストールが開始されます。プロンプトが戻ってくるまで待ちます。

    プロンプトが戻ったら、インストール完了です。

    データを準備し読み込む

    以下の4つのデータを準備し、インポートします。

    • データセット
    • 機械学習モデル
    • ランダムフォレストモデル
    • 予測集約モデル

     

    使用するコマンドは以下の通りです。

    >>import pandas as pd

    >>import datetime

    >>from sklearn.model_selection import train_test_split

    >>from sklearn.ensemble import RandomForestClassifier

    上記のコマンドを入力後、エラーが出力されなければ、データのインポートは完了です。

    インポートが完了したら、以下の画面のように元データを読み込ませます。

    >> df = pd.read_csv(r”C:\test\ks-projects-201801.csv”)

    エラーが出力されず、プロンプトが戻ったら成功です。

    データを分割する

    以下のコマンドで、データ分割を行います。

    >>train_date=df.drop(“state”,axis=1)

    >>y = df[“state”].values

    >>X = train_data.values

    >>X_train, X_test, y_train,  y_test=train_test_split(X, y, test_size=0.3, random_state=1234)

    エラーが出力されず、プロンプトが戻ったら成功です。

    ランダムフォレストを構築する

    以下のコマンドでランダムフォレストを構築します。

    >> clf = RandomForestClassifier(random_state=1234)

    >> clf.fit(X_train, y_train)

    >>RandomFrestClassifier(random_state=1234)

    >>score= 0.6488749082942222

    エラーが出力せず、プロンプトが戻ったら成功です。

    一番下のscore=xxx…のように出力されている数字が、ランダムフォレストを実行した結果の精度となります。

    ※1に近い程、精度が高いです。

    これでランダムフォレストの実装は完了です。

    ランダムフォレストの使用例

    ここでは実際にランダムフォレストを用いた使用例について説明します。ンダムフォレストはすでに導入している企業も多数あり、実績もあります。

    それでは、主に以下の三つの事例から紹介します。

    • 顧客の購入予測
    • 金融データの分析
    • 病気の予測

    それぞれ、詳しく解説していきます。

    顧客の購入予測

    まず顧客の購入予測において、ランダムフォレストの活用例を説明します。

    とあるファッションショップにおいて、顧客がどれくらい店内に滞在しているのか、とどれくらいの金額で購入したのかについて、過去の売り上げからグラフにしました。この過去の売り上げから、ランダムフォレストを使用して、売り上げ予測を行ったそうです。結果的に、ランダムフォレストが示した通りの売り上げを達成する事ができたのです。

    以下がランダムフォレストが回答を行った結果の一部です。

    金融データの分析

    次は金融データの分析において、ランダムフォレストを実際に使用した事例を説明します。

    とある金融機関で、ローンの返済状況が芳しくない状態が続いていました。ローンの返済状況をどうやったら改善できるのか、について、ランダムフォレストを導入する事にしました。実際にシミュレーションしてみた結果が以下の画像の通りです。(Teamと呼ばれるものが返済期間です。)

    返済期間が短いほど、返済状況が悪くなっているのが解ります。

    ここから、その金融機関は、返済期間を見直し、ローンの返済状況の改善に成功しました。

    病気の予測

    最後に、病気の予測について、ランダムフォレストを活用した事例について解説します。

    とある大学病院で、ランダムに男性と女性から毛髪検査を行い、どのような栄養素の状態で、病気になってしまうか、についての研究をしました。
    その研究の際、どういった栄養素で、病気の再現が発生するのかを、ランダムフォレストを使用し、予測しました。これにより、以下の画像のような結果になったのです。

    この結果により、病気になりやすい栄養素の特定に繋がり、病気になる予測が可能になったとのことです。そのため、患者がどのような生活習慣や食事を取れば、病気になりにくいかが特定できるようになりました。

    ランダムフォレストの分類と回帰

    ここではランダムフォレストにある以下の二種類の手法について、解説していきます。

    • 分類問題とは
    • 回帰問題とは

    これらは、ランダムフォレストとして一つにくくっていますが、出来る事は違うのです。また、この手法の違いにより、ランダムフォレストを設定する値の指定も違ってきます。

    分類問題とは

    まずランダムフォレストにおける分類問題とは、その名前の通り、それぞれの値を分類することです。

    例えば、植物の種類や、動物の種類を区別する場合、それぞれの特徴をカテゴライズする事が基本です。ランダムフォレストはこのカテゴライズを、あらゆる分野で分類していきます。文中でも述べていますが、病気になりやすい栄養素が何かであったり、人気のある商品をカテゴライズしたりなどです。

    既に事業者として業務を行っている場合、業務の改善や効率化に繋がります。

    回帰問題とは

    ランダムフォレストにおける回帰問題とは、どのような数値が予測できるか、のような、値を予測するものです。

    例えばどの商品が人気があるのか、どういった経緯を踏まえて、顧客がどのような商品を購入するなどの予測をします。

    これにより、金融機関や業務における営業において、ランダムフォレストを活用する事により、次にどれくらいの金額を用意すればよいのか、どのような営業戦略を行えば成功するのかといった事に役に立ちます。

    ハイパーパラメーターの調整

    次に、ハイパーパラメーターの調整について解説していきます。ハイパーパラメーターは、以下の三つに分類されます。

    • 決定木
    • 最大深さ
    • 特徴量

    ランダムフォレストは一般的に、学習をするごとに、パラメーターを調節し、学習アルゴリズムを最適化していきます。それに対して、ハイパーパラメーターは、ランダムフォレストに人間が直接調整するのです。

    それぞれ詳しく説明していきます。

    決定木の数

    まず決定木の数におけるハイパーパラメーターの役割について説明します。

    ランダムフォレストは学習するごとにパラメーターを設定すると述べましたが、企業が業務内容を変更した場合、再学習する必要性があります。
    そのような場合、ハイパーパラメーターとして決定木の数を予め指定しておけば、どれくらいの精度でランダムフォレストが回答を出すか、決める事ができます。

    最大深さ

    次に決定木の最大の深さにおける、ハイパーパラメーターの役割について解説していきます。

    これは、ランダムフォレストがどれくらい質問に対して深堀し、回答を出すかといったことを指します。

    ランダムフォレストを導入してしばらくすると、学習がある項目で偏ってしまい、過学習してしまうといった問題が発生します。そのような場合、ハイパーパラメーターから最大の深さを指定しておけば、ランダムフォレストが過学習してしまう事を防ぎます。

    特徴量

    最後に決定木の特徴量における、ハイパーパラメーターの役割について説明します。

    ランダムフォレストは、入力するデータを分類してから回答を出します。その特徴量が多すぎる、もしくは少なすぎると、分類に時間がかかってしまったり、的外れな回答をしてしまいます。

    そのような場合、予め特徴量を指定する事により、ランダムフォレストの動作の挙動を改善できます。

    特徴量についてもっと知りたい方は、以下の記事をご参照ください。

    関連記事
    【入門者必見!】特徴量エンジニアリングとは?機械学習での重要性やメカニズムなど、基礎をわかりやすく解説!
    【入門者必見!】特徴量エンジニアリングとは?機械学習での重要性やメカニズムなど、基礎をわかりやすく解説!

    ランダムフォレストのメリット

    ここでは、ランダムフォレストを導入することで得られるメリットを以下の二つの観点から解説していきます。

    • 高性能な予測精度がある
    • 一目でデータ推移がわかる

    ランダムフォレストは、上記のように、予測する際、精度が高く、見やすいといったメリットがあります。それ故に、様々な企業で導入されている実績があります。

    それぞれ詳しく解説していきます。

    高性能な予測精度がある

    ランダムフォレストは、予測精度が高いという点が魅力です。

    この精度が高いという点が最大のメリットと言えるでしょう。しかも、使用されるシーンが限られておらず、様々なシーンでランダムフォレストを活用し、高い精度で回答を得られます。

    さらに、ランダムフォレストが学習すればするほど、予測データの精度が高くなっていきます。それ故に、売り上げの推移から予測を立てたい多くの企業からランダムフォレストが使用されています。

    一目でデータ推移がわかる

    ランダムフォレストを利用して得られるメリットの二つ目は、一目でデータ推移が解ります。

    ランダムフォレストは、グラフや表等、あらゆるフォーマットに対応しています。

    それ故に、様々なIT企業の売り上げ等の戦略で使用されています。場合によってはプレゼン等の資料で、ランダムフォレストからアウトプットされたデータを活用できます。

    ただし、高い技術力が必要になります。

    ランダムフォレストのデメリット

    ここでは、ランダムフォレストを導入した後に出てくるデメリットについて、以下の二つの観点から説明していきます。

    • 計算コストが高くなる
    • 過学習が発生する

    ランダムフォレストは回答の精度が高いのが魅力的ですが、それ故に計算コストの増加や過学習の問題が発生してしまいます。

    それぞれ詳しく説明します。

    計算コストが高くなる

    ランダムフォレストは、様々なシーンで予測をし、高い精度が魅力だと述べました。

    それ故に、しばらくランダムフォレストを使用していると、だんだんランダムフォレストの動作が遅くなり、計算に時間がかかるようになります。

    これは、普段ランダムフォレストを多く利用していると発生する問題です。ランダムフォレストは予測において、高い精度の代わりに、計算コストが高いといったデメリットがあります。

    計算コストの問題を解決するには、ハイパーパラメーターの調整をすることになります。

    過学習が発生する

    ランダムフォレストは、予測するたびに学習をしていきます。

    しかし、ランダムフォレストを多く利用していると、誤回答が頻出するようになります。これは、計算コストだけでなく、ランダムフォレストが学習しすぎる事によって発生する問題です。

    それ故に、このような問題が発生したら、計算コストによる問題と同様に、ハイパーパラメーターの設定を行うといった、調整が必要になってきます。

    機械学習の過学習の問題について詳しく知りたい方は、以下の記事をご参照ください。

    関連記事
    【AI】機械学習における過学習とは?原因や防ぐ方法をわかりやすく解説
    【AI】機械学習における過学習とは?原因や防ぐ方法をわかりやすく解説

    ランダムフォレストのまとめ

    ランダムフォレストの概要から導入方法、使用例、ランダムフォレストを導入して得られるメリットとデメリットについて、それぞれ詳しく解説していきました。

    ランダムフォレストは、ITにおける営業戦略や、医療業界などさまざまな業界で導入されています。

    様々な予測を高い精度で的中するといった魅力があるので、既に事業を立ち上げている方はもちろん、新規事業を立ち上げる方にもおすすめできる機械学習アルゴリズムと言えます。

    しかし、活用するには高い技術力と知識が必要です。もしこのような機械学習プログラムの導入を考えているのであれば、株式会社Jiteraに相談すると良いです。様々な機械学習を経験したプロから、適切な回答と支援をしてもらえるでしょう。

    株式会社Jiteraに相談する

    例:開発手順、ツール、プロンプト

    メルマガ登録

    社内で話題になった「生成AIに関するニュース」をどこよりも早くお届けします。