決定木における過学習の防止
メニューを表示するにはスワイプしてください
Pythonを使用して決定木を実装する前に、重要なトピックについて説明します。それは過学習です。これは決定木に関連する主な課題です。
以下は、決定木がデータセットにどのように適合するかの例です。モデルが訓練データに適応し、そのパターンや複雑さを捉えていることに注目してください。
モデルが訓練セットに完全に適合し、いかなるインスタンスも誤分類しない場合でも、問題は決定境界が複雑すぎることです。その結果、テスト(または交差検証)精度は訓練セットの精度よりも大幅に低くなり、モデルが過学習していることを示します。
この理由は、モデルが訓練データに完全に適合するために必要なだけ多くの分割を行うためです。
幸いなことに、決定木は高度に設定可能であり、ハイパーパラメータを調整することで過学習を最小限に抑えることができます。
最大木深さ
ノードの深さは、そのノードからルートノードまでの(垂直方向の)距離。
決定木の最大深さを制限することで、木を小さくし、過学習の可能性を低減。これを行うには、最大深さに達した決定ノードをリーフノードに変換。
異なる最大深さの値によって決定境界がどのように変化するかを示すGIFも参照。
サンプルの最小数
ツリーを制約するもう一つの方法は、リーフノードにおけるサンプルの最小数を設定することです。これにより、モデルがより単純になり、外れ値に対して頑健になります。
このハイパーパラメータが決定境界にどのように影響するかを確認できます。
これら両方のハイパーパラメータは、scikit-learnのDecision Tree実装で利用可能です。
デフォルトではツリーに制約はありません:max_depthはNoneに設定されており、深さに制限はなく、min_samples_leafは1に設定されています。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください