【らんだむふぉれすと】
ランダムフォレスト とは?
最終更新:
💡 違う決定木の予測を集めて判断する
学習データの抽出や分岐候補の特徴量にランダム性を入れ、複数の決定木の予測を組み合わせるアンサンブル学習の手法。分類と回帰に使われ、集約方法は実装や用途で異なる。
📌 このページのポイント
- 複数の決定木を組み合わせ、予測のばらつきを減らすことを狙う
- 典型的には学習データを復元抽出し、各分岐の特徴量候補をランダムに選ぶ
- 分類は多数決などで集約するが、scikit-learnは予測確率を平均する
- 回帰では数値予測を平均する。精度はデータと設定によって変わる
木を増やせば必ず正確になるの?
複数の木が違う誤り方をすれば、予測をまとめることで一部の誤りを打ち消せるよ。単独の木のばらつきを減らす狙いがあるんだ。ただし、本数を増やすだけで精度が上がり続けるわけではなく、学習に使っていないデータで確かめる必要があるね。
どこをランダムにするの?
典型的には、元の学習データから同じ行が複数回選ばれてもよい復元抽出で、木ごとの学習データを作る。さらに各分岐で調べる特徴量の候補をランダムに絞るんだ。木ごとに固定した特徴量だけを使い続ける、という説明とは違うよ。
分類の答えは多数決で決めるの?
元の手法では、各木が選んだクラスの多数決で分類するよ。ただしscikit-learnのRandomForestClassifierは、各木の予測確率を平均する。たとえば猫の確率が0.8、0.4、0.6なら平均は0.6で、犬の0.4より大きいので猫を選ぶんだ。
数値を予測する場合は?
回帰では木の数値予測を平均するよ。たとえば3本の予測が110、120、130なら結果は120。木を多くすると学習や予測に時間がかかり、メモリも使うので、精度と計算量を見て設定するんだ。
バギングとはどう違うの?
バギングはデータを復元抽出して複数のモデルを学習し、予測を集約する考え方だよ。ランダムフォレストは決定木を使い、各分岐の特徴量候補にもランダム性を入れる。scikit-learnではbootstrapやmax_featuresを変更でき、全データや全特徴量を使う設定もあるから、設定まで確認しよう。
まとめ:ざっくりこれだけ覚えればOK!
「ランダムフォレスト」って出てきたら「ランダム性を入れた複数の決定木の予測を組み合わせる手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Random Forest」 = ランダムな森
💬 Forestは「森」。ランダム性を入れた決定木の集まりを、木が集まった森として捉える呼び名だよ。