こんにちは!
ブロガーのたけしです。
今回は、データサイエンスや機械学習
に興味を持っている皆さんに
「決定木の深さ」についてお話しします。
決定木はとても便利なアルゴリズムですが、
その「深さ」について悩むことが多いの
ではないでしょうか?
深さによってモデルの精度が大きく変わる
ので、どれくらいの深さがベストか知って
おくと非常に役立ちます。

決定木の「深さ」とは?
まず、決定木とはその名の通り、
決定を枝分かれさせてデータを
分類する木構造のモデルです。
「深さ」というのは、この木がどれだけ
下に伸びているか、つまりルート(根っこ)
から一番遠い葉(最終的な決定)までの
距離を指します。
例えば、浅い木だと簡単にデータを
分けてしまい、少し粗めの予測になります。
一方で、深い木はたくさんの情報を使って
細かくデータを分類します。
ここで疑問が生まれます。「じゃあ、
深ければ深いほど良いのでは?」と
思いがちですが、残念ながらそれは
間違いです。

過学習と未学習の罠
決定木の深さには、次のような二つ
の極端な問題があります:
- 浅すぎる決定木(未学習)
決定木が浅すぎると、重要な
特徴を捉えきれず、予測が雑
になります。
たとえば、住宅の価格を予測
するモデルが「部屋の数だけで
価格を決める」ような感じです。
確かに部屋数は重要ですが、
それだけでは正確な予測は
難しいですよね。 - 深すぎる決定木(過学習)
一方で、決定木が深すぎると、
それぞれのデータポイントを
過剰に詳しく扱ってしまい、
トレーニングデータに対しては
非常に正確な予測ができるものの、
新しいデータに対してはうまく
いかないことが多くなります。
これを「過学習」と呼びます。
住宅の例でいえば、「その家の壁の色、
隣の家の犬の種類、郵便番号の末尾の
数字」まで考慮して価格を予測する、
というようなことです。明らかに過剰
ですよね。

じゃあ、理想の深さはどれくらい?
決定木の理想的な深さは、モデルの
目的やデータの性質に依存しますが、
一般的なルールとして覚えておくと
良いポイントがあります。
- 交差検証を使って適切な深さを見つける
データを複数のサブセットに分け、
異なる深さでモデルを訓練し、テスト
してみると良いでしょう。これにより、
過学習や未学習を防ぎつつ、最も良い
パフォーマンスが得られる深さを
見つけられます。 - 木が深くなりすぎるのを防ぐために
パラメータを設定する
機械学習ライブラリには、木の深さ
を制限するパラメータが用意され
ています。たとえば、Pythonの
人気ライブラリ「scikit-learn」では、max_depth
というパラメータで木の深さ
を指定できます。初めは10~20の深さ
を試してみて、結果を比較すると
良いでしょう。 - ドメイン知識を活用する
分析対象のドメイン知識
(分野の専門知識)を持っていると、
それを元にどれくらいの
深さが適切か予想を立てること
もできます。
例えば、住宅価格の予測では「部屋数」
「立地」「建物の年齢」などが主要な要素
なので、これらを反映するほどの
深さが必要です。

面白い豆知識!
ちょっとしたおまけです。決定木は、
AIを使った「ゲーム」でも活用
されています。たとえば、チェスの
AIは、次の一手を決定するために
何百手先までシミュレーションを
行います。これも一種の「深い決定木」
だと言えるでしょう! でも、あまりに
先を読みすぎると、時間がかかりすぎ
てしまうのが悩みどころです。
結論
決定木の深さは「ほどよく」が
ポイントです。浅すぎず、深すぎず、
最適なバランスを見つけることが重要。
交差検証やパラメータ調整を使いながら、
自分のデータに最適な深さを見つけましょう。
さて、これであなたも決定木マスターに
一歩近づきましたね! 次回も面白く
ためになるデータサイエンスのトピック
をお届けするので、ぜひお楽しみに!
それではまた、次の記事でお会いしましょう!
