Introducció
Els arbres de decisió són un dels algorismes més populars i fàcils d'entendre en el camp del machine learning supervisat. S'utilitzen tant per a tasques de classificació com de regressió. Un arbre de decisió és una estructura en forma d'arbre on cada node intern representa una "decisió" basada en el valor d'un atribut, cada branca representa el resultat d'aquesta decisió, i cada fulla representa una etiqueta de classe o un valor de regressió.
Conceptes Clau
Components d'un Arbre de Decisió
- Node arrel: El node superior de l'arbre que comença el procés de decisió.
- Nodes interns: Nodes que representen decisions basades en atributs.
- Branques: Connexions entre nodes que representen el resultat d'una decisió.
- Fulles: Nodes finals que representen la sortida o la classe.
Tipus d'Arbres de Decisió
- Classificació: Assignen una etiqueta de classe a les instàncies.
- Regressió: Assignen un valor continu a les instàncies.
Construcció d'un Arbre de Decisió
Algoritme ID3
L'algoritme ID3 (Iterative Dichotomiser 3) és un dels primers i més coneguts per construir arbres de decisió. Utilitza la ganància d'informació per seleccionar l'atribut que millor separa les dades.
Pasos de l'algoritme ID3:
- Seleccionar l'atribut arrel: Seleccionar l'atribut amb la màxima ganància d'informació.
- Dividir el conjunt de dades: Crear branques per a cada valor de l'atribut seleccionat.
- Repetir: Aplicar recursivament el procés als subconjunts de dades resultants fins que es compleixi un criteri d'aturada (per exemple, totes les instàncies en un subconjunt pertanyen a la mateixa classe).
Algoritme CART
L'algoritme CART (Classification and Regression Trees) és un altre mètode popular que utilitza la impuresa de Gini per a la classificació i l'error quadràtic mitjà per a la regressió.
Pasos de l'algoritme CART:
- Seleccionar l'atribut arrel: Seleccionar l'atribut que minimitza la impuresa de Gini o l'error quadràtic mitjà.
- Dividir el conjunt de dades: Crear branques per a cada valor de l'atribut seleccionat.
- Repetir: Aplicar recursivament el procés als subconjunts de dades resultants fins que es compleixi un criteri d'aturada.
Exemple Pràctic
Exemple de Classificació amb Scikit-Learn
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # Carregar el conjunt de dades Iris data = load_iris() X = data.data y = data.target # Dividir el conjunt de dades en entrenament i prova X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Crear el model d'arbre de decisió clf = DecisionTreeClassifier() # Entrenar el model clf.fit(X_train, y_train) # Predir les etiquetes per al conjunt de prova y_pred = clf.predict(X_test) # Avaluar el model accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy:.2f}')
Explicació del Codi
- Carregar el conjunt de dades: Utilitzem el conjunt de dades Iris, que és un conjunt de dades clàssic per a la classificació.
- Dividir el conjunt de dades: Dividim les dades en un conjunt d'entrenament i un conjunt de prova.
- Crear el model: Utilitzem
DecisionTreeClassifier
de Scikit-Learn per crear el model d'arbre de decisió. - Entrenar el model: Entrenem el model amb el conjunt d'entrenament.
- Predir i avaluar: Prediem les etiquetes per al conjunt de prova i calculem l'exactitud del model.
Exercicis Pràctics
Exercici 1: Construcció d'un Arbre de Decisió per a Regressió
Utilitza el conjunt de dades boston
de Scikit-Learn per construir un arbre de decisió que prediu els preus de les cases.
Pasos:
- Carrega el conjunt de dades
boston
. - Divideix el conjunt de dades en entrenament i prova.
- Crea un model
DecisionTreeRegressor
. - Entrena el model i avalua'l utilitzant l'error quadràtic mitjà.
Solució
from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeRegressor from sklearn.metrics import mean_squared_error # Carregar el conjunt de dades Boston data = load_boston() X = data.data y = data.target # Dividir el conjunt de dades en entrenament i prova X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Crear el model d'arbre de decisió per a regressió regressor = DecisionTreeRegressor() # Entrenar el model regressor.fit(X_train, y_train) # Predir els valors per al conjunt de prova y_pred = regressor.predict(X_test) # Avaluar el model mse = mean_squared_error(y_test, y_pred) print(f'Mean Squared Error: {mse:.2f}')
Explicació del Codi
- Carregar el conjunt de dades: Utilitzem el conjunt de dades Boston, que conté informació sobre els preus de les cases.
- Dividir el conjunt de dades: Dividim les dades en un conjunt d'entrenament i un conjunt de prova.
- Crear el model: Utilitzem
DecisionTreeRegressor
de Scikit-Learn per crear el model d'arbre de decisió per a regressió. - Entrenar el model: Entrenem el model amb el conjunt d'entrenament.
- Predir i avaluar: Prediem els valors per al conjunt de prova i calculem l'error quadràtic mitjà del model.
Errors Comuns i Consells
Errors Comuns
- Overfitting: Els arbres de decisió poden sobreajustar-se fàcilment a les dades d'entrenament. Utilitza tècniques com la poda per evitar-ho.
- Selecció de paràmetres: No ajustar correctament els hiperparàmetres com la profunditat màxima de l'arbre pot afectar el rendiment del model.
Consells
- Poda: Utilitza tècniques de poda per reduir la complexitat de l'arbre i evitar l'overfitting.
- Validació creuada: Utilitza la validació creuada per avaluar el rendiment del model de manera més robusta.
- Escalatge de dades: Tot i que els arbres de decisió no requereixen normalització o estandardització de les dades, pot ser útil per a altres algorismes que es combinin amb els arbres de decisió.
Conclusió
Els arbres de decisió són una eina poderosa i intuïtiva per a tasques de classificació i regressió en machine learning. Tot i que són fàcils d'entendre i implementar, és important tenir en compte les tècniques per evitar l'overfitting i assegurar-se que el model generalitzi bé a noves dades. Amb la pràctica i l'experimentació, els arbres de decisió poden ser una part valuosa del teu arsenal de machine learning.
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus