なっトク! 生成AI・DL/機械学習

明快! 機械学習「ランダムフォレスト」をざっくり知る

2024-05-19

機械学習の手法「ランダムフォレスト」は、なぜ「分類」「回帰」両方使えるのか?

今回は、ランダムフォレストが分類と回帰の両方に使える、ということを説明します。
 

たすく

なんか、ランダムフォレストは決定木構造なので「分類」に使えることはわかりますが、なぜ「回帰」にも使えるのか、ふと疑問に思ったんで、調べてみました

 

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

ランダムフォレストは機械学習の手法の一つで、「森(フォレスト)」という言葉からわかるように、たくさんの「木(ツリー)」を使う方法です。
この木は「決定木」と呼ばれます。
決定木は、質問を順番にしていって答えを見つける方法です。
 

たとえば、「今日は晴れですか?」、「テストの点数は高いですか?」といった質問をいくつか経て、最後に「この人はサッカー部に入っていますか?」といった内容について、(確率的に)結論を出します(後述)。
 

分類と回帰

そもそも機械学習の「分類」「回帰」って何だっけ?

あかり

まず「分類」「回帰」について、解説します。
機械学習には大きく3パターンあり、①「教師あり学習」、②「教師なし学習」、③「強化学習」に分かれます。
今回はそのうちの①「教師あり学習」について、取り上げています。
「教師あり学習」という手法は、「分類」「回帰」という2種類の分析に分かれます。
 

  1. 分類(ぶんるい):これはものごとをグループに分けることです。
    たとえば、友だちが犬を飼っているか、猫を飼っているか、ペットを飼っていないかを予測することです。
    ランダムフォレストはたくさんの決定木を使って、それぞれの木が出す結果を合わせて最終的な答えを出します。
     
  2. 回帰(かいき):これは数字を予測することです。
    たとえば、来週のテストの点数を予測することです。
    回帰分析は、いろいろな方法がありますが、ランダムフォレストでも可能です。
    その場合、たくさんの決定木を使って、各木が予測した結果を平均して最終的な答えを出します。
     

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

ランダムフォレストのいいところは、たくさんの木を使うことで、1本の木が間違った答えを出しても、他の木が助けてくれることです。
だから、結果がより正確になります。
 

  • ランダムフォレスト:たくさんの決定木を使う方法
  • 分類:グループに分ける
  • 回帰:数字を予測する
  • メリット:たくさんの木が助け合うので正確な結果が出やすい

これでランダムフォレストが少しわかりやすくなったでしょうか?
 

「分類」は何種類までできるのか

たすく

分類は、通常、何種類までできますか。
回帰に使う場合は、回帰変数が具体的にわかるのですか。
ランダムフォレストを使うと、何がわかるのですか

分類では、理論的にはいくつでも種類(クラス)を分けることができます。
例えば、以下のようなケースです。

  • 2種類:犬か猫か
  • 3種類:犬、猫、鳥
  • もっと多くの種類:動物園の全ての動物(ライオン、象、キリン、など)

実際には、データや問題によりますが、数百種類まで分類することも可能です。
ただし、種類が多くなると、データの質や量が重要になります。
 

回帰に使う場合

回帰では、数値を予測することが目標です。
予測したい数値(これを「目的変数」または「回帰変数」と呼びます)は具体的な値になります。
ランダムフォレストを使って回帰を行う場合、以下のようなことがわかります。
 

  • 家の価格:家の広さ、場所、築年数などのデータを使って、その家がどれくらいの価格で売れるかを予測します。
  • テストの点数:勉強時間、過去の成績、授業の出席率などを使って、次のテストで何点取れるかを予測します。
  • 天気予報:過去の気温、湿度、風速などのデータを使って、明日の気温を予測します。
     

まとめ

  • 分類:理論的には何種類でも可能。ただし、データ量や質が重要。
  • 回帰:具体的な数値を予測する。家の価格、テストの点数、天気予報などが例。
     

このように、ランダムフォレストは分類でも回帰でも使える強力なツールです。
どちらの場合でも、多くのデータと決定木を使うことで、より正確な予測ができるようになります。
 

ランダムフォレストの処理の流れ

  1. データの収集
    まず、予測に使うデータを集めます。例えば、学校の生徒に関するデータを使って、「この人はサッカー部に入っているかどうか」を予測する場合を考えます。
    データには次のような項目が含まれるかもしれません。
  • 学年
  • 性別
  • 体育の成績
  • 他の部活動の参加状況
  • 自宅から学校までの距離
     
  1. データの前処理
    集めたデータを使いやすい形に整えます。
    例えば、欠けている情報を補完したり、テキストデータを数値に変換したりします。
  2. 決定木の作成
    ランダムフォレストは、多くの決定木から成り立っています。
    各決定木は次のようにして作られます。
     
  • 元のデータセットからランダムにサンプルを取り出します(ブートストラップサンプリング)。
  • 取り出したサンプルを使って決定木を作成します。このとき、各ノードで分割に使う特徴量(質問項目)もランダムに選びます。
  1. 個々の決定木の学習
    各決定木は、そのサンプルデータを使って学習します。例えば、「体育の成績が高いか?」「他のスポーツ部に入っているか?」といった質問を順に行い、最終的に「サッカー部に入っているかどうか」を予測します。
  2. 予測の統合
    全ての決定木が学習を終えたら、新しいデータを入力して予測を行います。
    各決定木がそのデータに対して「サッカー部に入っている」「入っていない」という予測を出します。
    最終的には、全ての決定木の予測を集計して、多数決で最終的な予測を決定します。
     

具体例

例えば、新しい生徒Aのデータが次のようだったとします:

  • 学年:2年生
  • 性別:男性
  • 体育の成績:85点
  • 他の部活動:なし
  • 自宅から学校までの距離:2km

各決定木がこのデータに基づいて、「体育の成績が高いのでサッカー部に入っている」とか、「他の部活動に参加していないので入っていない」とか、様々な予測を出します。
そして、それらの予測を多数決で決定し、「サッカー部に入っているかどうか」を最終的に判断します。
 

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

  • 高い精度:多数の決定木が協力することで、精度の高い予測が可能です。
  • 過学習の防止:ランダムにサンプルや特徴量を選ぶことで、特定のデータに過度に適応する(過学習)を防ぎます。
  • 扱いやすい:異なるタイプのデータ(数値データ、カテゴリデータ)を組み合わせて使えるため、実用的です。

これでランダムフォレストの処理の流れがより具体的に理解できると思います。
質問項目を使って最終的な結論を出すというのは、各決定木がそのプロセスを通じて予測を行うという意味で使いましたが、全体の流れの説明としては不十分だったかもしれません。
これで、ランダムフォレストがどのように機能するのか、より具体的にイメージできるでしょうか。
 

回帰におけるランダムフォレストの仕組み

たすく

分類についてはわかりました。
回帰についてランダムフォレストを適用すると、回帰係数などパラメータの数値まで具体的にわかるのですか。
ランダムフォレストを使うと、どうして回帰による予測がおこなえるようになるのですか。

ランダムフォレストを使った回帰について、詳しく説明しますね。

ランダムフォレストは、多数の決定木を使って予測を行う方法です。
回帰においては、各決定木が数値を予測し、それらの予測を平均して最終的な結果を得るというプロセスを通じて、回帰分析を行います。
 

回帰係数について

一般的な線形回帰モデルでは、回帰係数が具体的に求められます。
回帰係数は各特徴量(入力データの各項目)が目的変数(予測したい数値)にどの程度影響するかを示す値です。
しかし、ランダムフォレストは非線形モデルであり、決定木の集合体なので、明確な回帰係数はありません。
 

ランダムフォレストは、各決定木が「分割規則」を使って予測を行います。
このため、個々の特徴量がどのように最終的な予測に影響を与えるかを直接示す係数は存在しません。
代わりに、特徴量の重要度(Feature Importance)を計算することができます。
これは、各特徴量が予測にどれだけ貢献しているかを示す値です。
 

ランダムフォレストを使った回帰のプロセス

  1. データの収集
    予測に必要なデータを集めます。
    例えば、家の価格を予測する場合、広さ、部屋の数、立地、築年数などのデータを集めます。
     
  2. データの前処理
    データを使いやすい形に整えます。
    欠損値を補完し、数値に変換するなどの処理を行います。
     
  3. 決定木の作成
    多数の決定木を作成します。
    各決定木は、元のデータセットからランダムにサンプルを取り出し、各ノードで分割に使う特徴量もランダムに選びます。
     
  4. 個々の決定木の学習
    各決定木が、取り出したサンプルデータを使って学習し、数値を予測するモデルを作成します。
    例えば、「広さが100㎡なら家の価格は5000万円」、「部屋の数が3つなら価格は4500万円」といった予測を行います。
     
  5. 予測の統合
    全ての決定木が学習を終えたら、新しいデータを入力して予測を行います。
    各決定木がそのデータに対して数値を予測し、最終的には全ての決定木の予測を平均して最終的な予測値を得ます。
     

具体例

例えば、新しい家のデータが次のようだったとします:

  • 広さ:120㎡
  • 部屋の数:4
  • 立地:都市中心部
  • 築年数:10年

各決定木がこのデータに基づいて、「価格は6000万円」とか「価格は6200万円」とか、様々な予測を出します。
そして、それらの予測を平均して最終的な価格予測を決定します。
 

まとめ

  • ランダムフォレストで回帰係数は求められない:非線形モデルのため、具体的な回帰係数は存在しない。
  • 特徴量の重要度が計算可能:各特徴量が予測にどれだけ貢献しているかを示す値は計算できる。
  • 回帰のプロセス
  • データの収集と前処理
  • 多数の決定木の作成
  • 各決定木の学習
  • 全決定木の予測結果を平均して最終予測を得る

ランダムフォレストは、各決定木の予測を平均することで、全体として安定した予測結果を得ることができるため、回帰分析においても強力なツールです。
 

なるほど。
でも、ランダムフォレストは非線形モデルで、決定木の集合体なので、明確な回帰係数はないんだね。
それって、本当に大丈夫なの?
「代わりに、特徴量の重要度(Feature Importance)を計算することができます」が指す意味をもう少し分かりやすく説明してほしいわ

あかり

 

特徴量の重要度(Feature Importance)とは?

ランダムフォレストでは、各特徴量が予測にどれだけ貢献しているかを測ることができます。
これを「特徴量の重要度」と呼びます。簡単に言うと、「どの特徴量が予測結果にどれだけ影響を与えているか」を示すものです。
 

特徴量の重要度の計算方法

特徴量の重要度は、次のような方法で計算されます:

  1. 分割の貢献度
    各決定木の各ノード(分岐点)で、どの特徴量を使ってデータを分割するかが決まります。特徴量の重要度は、特定の特徴量を使って分割することによって、データの純度(情報の一貫性)がどれだけ向上するかを基に計算されます。純度の向上が大きいほど、その特徴量の重要度は高くなります。
  2. 全体の平均
    ランダムフォレストは多数の決定木から構成されているため、各決定木で計算された特徴量の重要度を平均して、最終的な重要度を求めます。
     

特徴量の重要度がわかると何が嬉しいのか?

  1. モデルの理解
    どの特徴量が予測に大きく影響しているかを知ることで、モデルの動作を理解しやすくなります。例えば、家の価格を予測するモデルで「広さ」が最も重要な特徴量だとわかれば、広さが価格に大きな影響を与えることがわかります。
  2. 特徴量の選択
    モデルの精度を高めるために、重要度の低い特徴量を削除することができます。これにより、モデルがよりシンプルで計算効率が良くなります。
  3. データのインサイト
    特徴量の重要度を分析することで、データ自体に関する新しい知見を得ることができます。例えば、学生の成績を予測するモデルで、「勉強時間」よりも「授業の出席率」が重要だとわかれば、授業への参加が成績に大きな影響を与えていることがわかります。
       

具体例

例えば、以下のような特徴量を持つデータセットを考えます:

  • 広さ(sqm)
  • 部屋の数
  • 立地
  • 築年数
  • 近くの学校の評価
     

これらの特徴量を使って、家の価格を予測するランダムフォレストモデルを作成したとします。特徴量の重要度を計算した結果、次のようになったとします:
 

  • 広さ(sqm):40%
  • 部屋の数:25%
  • 立地:20%
  • 築年数:10%
  • 近くの学校の評価:5%
     

この結果から、「広さ」が最も予測に重要であり、「近くの学校の評価」が最も重要でないことがわかります。
この情報を基に、モデルの改善や新しいデータの収集方針を決定することができます。
 

まとめ

  • 特徴量の重要度(Feature Importance):各特徴量が予測にどれだけ貢献しているかを示す値。
  • 計算方法
  • 各決定木の分割の貢献度を基に計算。
  • 複数の決定木の結果を平均して最終的な重要度を決定。
  • メリット
  • モデルの理解を深める。
  • モデルの精度を高めるための特徴量選択。
  • データの新しい知見を得る。

特徴量の重要度は、ランダムフォレストモデルがどのように動作しているかを理解し、改善するための強力なツールです。
 

「特徴量の重要度」がわかるということはOK。
「特徴量の重要度」がわかったのに、そこから具体的な「回帰係数」の値を求めることはできないのはどうして?
だって、それができなければ、「ランダムフォレストは回帰に使えます」なんて言えないんじゃないの?
値がわからないんだから・・・

あかり

 
ランダムフォレストが回帰に使えるという点についてもう少し詳しく説明します。
回帰係数が求められなくても、ランダムフォレストは十分に回帰問題を解くことができます。
その理由を説明します。
 

ランダムフォレストと回帰係数

ランダムフォレストは、非線形モデルであり、多数の決定木を使って予測を行います。
各決定木は、データを分割しながら予測を行うため、線形回帰のような明確な回帰係数は存在しません。
回帰係数は線形モデル(例えば、線形回帰)において、各特徴量が目的変数にどの程度影響するかを示すものです。
しかし、ランダムフォレストは次のような特徴があります:
 

  1. 非線形な関係を捉える
    ランダムフォレストは非線形な関係を捉えることができるため、複雑なデータにも対応できます。線形回帰では捉えられない関係をモデル化することができます。
  2. 多数の決定木による予測
    各決定木は特徴量を使ってデータを分割し、予測を行います。回帰においては、各決定木が数値を予測し、それらの予測を平均して最終的な結果を得ます。この方法により、回帰問題に対しても高い精度で予測を行うことができます。
     

ランダムフォレストが回帰に使える理由

ランダムフォレストが回帰に使えるのは、具体的な回帰係数を必要としないからです。
ランダムフォレストは、多数の決定木を使って予測を行うため、各特徴量の影響を明示的に示す回帰係数は不要です。
代わりに、次のような方法で回帰予測を行います:
 

  1. 決定木の作成と学習
    多数の決定木を作成し、それぞれがデータを学習します。各決定木は、入力データを使って予測を行うモデルを作成します。
  2. 予測の統合
    新しいデータに対して、各決定木が予測を行います。例えば、家の価格を予測する場合、各決定木が異なる価格を予測します。最終的には、全ての決定木の予測を平均して最終的な価格予測を得ます。

具体例

例えば、家の価格を予測するモデルを考えます。
特徴量として、広さ、部屋の数、立地、築年数、近くの学校の評価があります。
これをランダムフォレストで回帰予測する場合、次のようになります:

  1. 各決定木の予測
    各決定木が新しい家のデータに基づいて予測を行います。
    ある木は「6000万円」と予測し、別の木は「6200万円」と予測します。
  2. 予測の平均
    全ての決定木の予測値を平均して、最終的な予測値を求めます。
    例えば、10本の決定木がそれぞれ異なる価格を予測し、その平均が「6100万円」だった場合、最終的な価格予測は「6100万円」となります。
     

特徴量の重要度の活用

特徴量の重要度は、モデルがどの特徴量を重視しているかを知るための指標です。
これを使ってモデルを改善したり、データの理解を深めたりすることができます。
例えば、予測に対して「広さ」が最も重要だとわかれば、広さに関するデータをより詳しく集めるなどの対応が可能です。
 

まとめ

  • ランダムフォレストは回帰に使える:具体的な回帰係数がなくても、多数の決定木を使って正確な数値予測が可能。
  • 非線形な関係を捉える:ランダムフォレストは非線形モデルであり、複雑なデータにも対応できる。
  • 予測の統合:各決定木の予測を平均することで、最終的な予測値を得る。
  • 特徴量の重要度:モデルの理解と改善に役立つ。

このように、ランダムフォレストは回帰問題に対しても有効であり、具体的な回帰係数がなくても正確な予測ができる強力なツールになります。
 

先の住宅の例でいえば、住宅価格がそもそも線形回帰であるとはいいきれないと思うし、各パラメータ同士が、それぞれの数値の高低によって、複雑に相関するように思えます。
なので、ちゃんと学習を行ったモデルであるならば、
数式は示すことはできないけれど、「こういう条件の時は、だいたい何円ぐらいという『結論』だけ」、わりと妥当な値を提示することができる、という理解で合っていますか?

あかり

その通りです。
ランダムフォレストを使った回帰モデルは、複雑な非線形関係を捉え、具体的な数式や回帰係数を示すことなく、データに基づいた妥当な予測値を提示することができます。

具体例で説明

住宅価格を予測する場合、以下のような特徴量があります:

  • 広さ(sqm)
  • 部屋の数
  • 立地
  • 築年数
  • 近くの学校の評価

これらの特徴量が複雑に相関し合って、最終的な住宅価格を決定します。ランダムフォレストモデルは、以下のようなプロセスを通じて予測を行います。
 

ランダムフォレストの予測プロセス

  1. データの収集と前処理
    住宅価格に関連するデータを集め、欠損値の補完や数値化などの前処理を行います。
  2. 多数の決定木の作成
    各決定木は、元のデータセットからランダムにサンプルを取り出し、それぞれが異なるパターンを学習します。
  3. 決定木の学習
    各決定木が、住宅価格を予測するために、データを使って学習します。
    この過程で、広さ、部屋の数、立地、築年数、学校の評価などを考慮し、それぞれの分岐点でデータを分割して予測を行います。
  4. 新しいデータに対する予測
    新しい住宅データが入力された場合、各決定木がそのデータに基づいて価格を予測します。
    例えば、広さが120㎡、部屋が4つ、都市中心部に立地し、築年数が10年、近くの学校の評価が高い場合、各決定木が「この条件なら6000万円くらい」と予測します。
  5. 予測値の平均化
    全ての決定木が出した予測値を平均し、最終的な予測値を決定します。
    例えば、10本の決定木がそれぞれ異なる価格を予測し、その平均が「6100万円」だった場合、最終的な予測値は「6100万円」となります。

結論

ランダムフォレストを使った回帰モデルでは、以下のようなことが言えます:

  • 具体的な数式や回帰係数は存在しない:各特徴量がどのように価格に影響するかを具体的に示すことはできません。
  • 非線形な関係を捉える:住宅価格のように複雑な相関関係があるデータにも対応できる。
  • 妥当な予測値を提示する:学習したモデルを使って、新しいデータに基づいた妥当な予測値を提示することができる。
  • モデルの説明性:数式や回帰係数がないため、モデルの動作を完全に説明することは難しいですが、特徴量の重要度を使って、どの特徴量が予測に重要かを理解することはできます。

したがって、ランダムフォレストモデルを使うことで、住宅価格のような複雑な予測問題に対しても、妥当な予測値を提供することが可能です。具体的な数式がなくても、各決定木の予測を統合することで、高精度な予測を実現します。
 

「特徴量がどのように価格に影響するかを具体的に示すことはできない」けど、回帰分析で予想ができるっていうのは、面白いよね

あかり


はい、その通りです。
ランダムフォレストを用いた回帰分析は、特徴量がどのように結果に影響するかを具体的に示すことはできませんが、非常に高い予測精度を持っています。
これは、多くの決定木を使ってデータのパターンを学習し、それらの結果を統合することで、複雑な非線形関係を捉えられるからです。
 

具体的な例とその魅力

繰り返しになりますが、たとえば、住宅価格を予測する場合:

  • 広さ
  • 部屋の数
  • 立地
  • 築年数
  • 近くの学校の評価

これらの特徴量が価格に与える影響を個別に理解することは難しいかもしれません。
しかし、ランダムフォレストは次のようにして予測を行います:

  1. データの準備
    多数の住宅データを用意し、それらのデータを使ってモデルを学習します。
  2. 決定木の作成
    データを使って多数の決定木を作成し、それぞれが異なるサンプルと特徴量の組み合わせで学習します。
  3. 学習と予測
    各決定木が独自の方法でデータを分割し、予測を行います。例えば、ある決定木は「広さ」と「築年数」に基づいて価格を予測し、別の決定木は「立地」と「近くの学校の評価」に基づいて価格を予測します。
  4. 予測値の統合
    全ての決定木が出した予測値を平均し、最終的な価格予測を得ます。この方法により、各特徴量の複雑な相互作用を捉えることができます。

ランダムフォレストの魅力

  1. 高い予測精度
    多くの決定木を使うことで、個々の決定木が持つエラーやバイアスを相殺し、非常に高い予測精度を達成します。
  2. 非線形関係の捉え方
    ランダムフォレストは非線形なデータにも対応できるため、複雑なデータセットでも有効です。これは、各決定木が異なる特徴量の組み合わせを使って学習するためです。
  3. 特徴量の重要度
    各特徴量が予測にどれだけ貢献しているかを示す「特徴量の重要度」を計算することができます。これにより、どの特徴量が最も影響力があるかを理解することができます。
  4. 過学習の防止
    ランダムフォレストは、多数の決定木を使い、それぞれが異なるサンプルで学習するため、特定のデータセットに過度に適応する(過学習する)ことを防ぎます。
     

まとめ

ランダムフォレストを用いた回帰分析は、具体的な回帰係数を提供しないものの、多数の決定木を統合することで、非常に高い予測精度を実現します。
特徴量の相互作用や非線形関係を捉える能力が高いため、複雑なデータセットにも対応可能です。
この方法は、データのパターンを学習し、現実世界の複雑な問題に対して妥当な予測を提供するための強力なツールです。
 

  • この記事を書いた人
  • 最新記事

花丸たすく

▸高度情報処理技術者(ITストラテジスト)
▸データアナリスト、ラーニング・アドバイザー
▸「学び直し」に挑戦する社会人を応援
▸落ちこぼれ→京大→教育関連企業→現在
▸「学び直し」から得た「気づき」こそ成長の源泉、現実を変える力
▸武器になる「学び直し」のキホン
▸資格取得・大学受験のエッセンス
▸「勉強マインド」作りへ、自分のノウハウを全部公開

-なっトク!, 生成AI・DL/機械学習