titc.ai › BLOG
BLOG · AI入門・機械学習
ランダムフォレスト回帰の動きをアニメーションで理解する
木を1本ずつ足して「平均」をとると、予測がなめらかになる様子を、動かして確かめる
公開日 / 著者 富田 良治(TITC合同会社 代表社員)
ランダムフォレスト回帰は、たくさんの「回帰木」に数値を予測させ、その平均を答えにする手法です。たとえば「気温から明日の来店数を見積もる」「曜日・月・祝日などから売上を予測する」といった場面で使われます。回帰木は「区切った範囲ごとの平均値」を答える、階段のような予測をします(決定木分析の記事の「数値を予測する版」です)。下のデモで、木が増えるにつれて階段がなめらかな線に変わっていく様子を見てみましょう。
動かして確かめる
横軸は「その日の気温」、縦軸は「来店数」です。灰色の丸は、ある日の実績です。灰色の点線は、デモ用に見えるようにしてある「本当の関係」で、実際の仕事ではこの線は誰にも分かりません。まずは「再生」を押してください。木が1本増えるたびに、次の3つが起こります。
- データの引き直し:実績から、同じ件数ぶんを重複を許して引き直します。光った点が選ばれた点、大きい点は複数回選ばれた点、うすい点は今回選ばれなかった点です。
- 木の予測:選ばれた点だけで回帰木を1本つくり、その予測を水色の階段状の線で描きます。
- 平均:これまでの全部の木の予測を平均し、黄色の太い線(森の予測)を更新します。
━ 黄色の太線=森の予測(全部の木の平均) ━ 水色の細線=木1本ずつの予測 ━ 赤線=回帰木1本だけ(全データ・同じ深さ) ┅ 灰色の点線=本当の関係
木の本数:0 本
「再生」か「1本追加」を押してください。
検証用データでの誤差(RMSE。小さいほど良い)
森:- 回帰木1本:-
黄色=森の誤差(木の本数ごと)/赤の点線=回帰木1本の誤差。木を増やすと下がり、やがて平らになります。
斜線の部分は、実績のある気温の範囲の外です。検証用データ(学習に使っていない別の日)で誤差を測っています。
何が起きているのか:木をつくって、平均する
ランダムフォレスト回帰は、次の3つの工夫でできています。
- 回帰木は、範囲ごとの平均値を答える:気温を「24℃より上か下か」のように区切り、区切った範囲に入る日の来店数の平均を、その範囲の予測値にします。区切り方は、予測値と実績のずれ(二乗誤差)が最小になる位置を選びます。そのため、1本の木の予測は階段状です。深くするほど階段が細かくなり、実績の点にぴったり沿う(ノイズまで覚え込む)ようになります。
- 木ごとに、違うデータで学習する:元データから同じ件数を重複を許して引き直す方法(ブートストラップ)で、木ごとに少しずつ違うデータを使います。1回の引き直しで、約3分の1の点は選ばれません。だから、木ごとに階段の形が違ってきます。
- 多数決の代わりに「平均」をとる:分類のランダムフォレストは木の多数決で答えますが、回帰は数値なので、全部の木の予測の平均を答えにします。
木1本は、たまたま選ばれた点に引っ張られて、階段がギザギザになります(過学習)。けれども、そのずれ方は木ごとにばらばらです。平均すると、行き過ぎが打ち消し合って、階段がなめらかな線になり、予測のばらつきが減ります。デモでは、赤線(1本)と黄色の太線(森)を見比べ、右上のグラフで誤差が下がるのを確かめてください。木を増やしても、ある本数から先は誤差があまり変わらず、増やしすぎて悪くなることは起きにくいのも特徴です。
実際の分析では説明する項目(気温、曜日、月など)が複数あり、区切りを探すときに候補の項目もランダムに絞ります。このデモは項目が気温ひとつなので、その部分は省いています。
「調べる気温」を動かすと、その気温での森の予測のほかに、木ごとの予測の幅(全部の木の最小〜最大と、真ん中80%の範囲)が出ます。木の意見が大きく割れている気温は、予測に自信が持てないところ、という目安になります。
使うときの注意点
- データの範囲の外は、予測できません。デモの斜線の部分を見てください。いちばん端の木の値がそのまま続くので、予測は平らな横線になります。直線の式で予測する線形回帰は、範囲の外にも線を延ばせますが、回帰木や森にはそれができません。たとえば「過去に30℃を超えた日がない」データで、35℃の日の来店数は当てられません。
- 検証は、学習に使っていないデータで行います。学習に使ったデータで誤差を測ると、深い木ほどよく見えてしまいます。デモのグラフは、使っていない別の日のデータで測っています。
- データそのものの偏りや少なさは、木を増やしても直りません。ノイズ大のデータでは、森にしても予測の幅は残ります。もともとの値のばらつきは、どんな手法でも消せません。
- 理由の説明が難しくなります。1本の木なら質問の道筋で説明できますが、数十〜数百本の平均は、道筋を一つずつ追えません。どの項目がよく効いたかの目安は出せますが、因果関係の証明ではありません。
- 日付を入れるときは、曜日・月・祝日などの特徴にします。日付そのもの(通し番号)を入れると、「過去の範囲の外」の予測になり、将来は平らな横線になります。右肩上がりなどの傾向(トレンド)は、別の手段で扱う必要があります。
中小企業での使いどころ
気温・曜日・月・祝日・キャンペーンの有無から、来店数・売上・仕入れ量・予約数を見積もる場面が定番です。線を引くだけでは合わない、山型や段差のある関係(暑すぎても寒すぎても客足が落ちる、週末だけ急に増える、など)も、人が式を考えずに拾ってくれます。見積もりの所要時間の推定にも使えます。出てきた数字は人の目で確かめ、仕入れや人員配置の判断に使うのは現場を知る人の仕事です。まずはExcelなどに溜まった過去の実績を、特徴ごとに整理するところから始めましょう。
富田 良治(とみた よしはる)
TITC合同会社 代表社員
AI経営コンサルタント。中小企業診断士・ITストラテジスト。元ITエンジニアで駄菓子屋オーナー。 プロフィールを見る