Comprendere perché gli alberi decisionali sono molto inclini al sovradattamento e i suoi potenziali rimedi
Gli alberi decisionali sono una classe di algoritmi di machine learning ben noti per la loro capacità di risolvere sia problemi di classificazione che di regressione, e per non dimenticare la facilità di interpretazione che offrono. Tuttavia, soffrono di overfitting e possono non riuscire a generalizzare bene se non controllati adeguatamente.
In questo articolo discuteremo di cosa si intende per overfitting, in che misura un albero decisionale si adatta eccessivamente ai dati di training, perché rappresenta un problema e come può essere affrontato.
Successivamente, faremo conoscenza con una delle tecniche d’insieme, ovvero insaccamentoe vedere se può essere utilizzato per rendere gli alberi decisionali più robusti.
Tratteremo quanto segue:
- Crea il nostro set di dati di regressione utilizzando NumPy.
- Addestra un modello di albero decisionale utilizzando scikit-learn.
- Comprendi cosa significa overfitting osservando le prestazioni dello stesso modello sul set di addestramento e sul set di test.
- Discuti perché l’overfitting è più comune nei modelli non parametrici come gli alberi decisionali (e ovviamente impara cosa si intende con il termine non parametrico) e come può essere prevenuto utilizzando la regolarizzazione.
- Capire cosa aggregazione bootstrap (insaccamento in breve) cos’è e come può potenzialmente aiutare a contrastare il sovradattamento.
- Infine, implementeremo la versione di bagging dell’albero decisionale e vedremo se aiuta o meno 🤞
Ti stai ancora chiedendo se vale la pena leggerlo? 🤔 Se ti sei mai chiesto perché le foreste casuali sono solitamente preferite agli alberi decisionali standard, questo è il posto migliore da cui iniziare poiché le foreste casuali utilizzano l’idea di insaccamento più qualcos’altro per migliorare gli alberi decisionali.
Iniziamo!
Configureremo un notebook Python e importeremo prima le librerie.
import pandas as pd
import numpy as np
import plotly.graph_objects as go
from sklearn.tree import DecisionTreeRegressor
from sklearn import tree
from sklearn.model_selection import train_test_split
Fonte: towardsdatascience.com