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:

  1. Seleccionar l'atribut arrel: Seleccionar l'atribut amb la màxima ganància d'informació.
  2. Dividir el conjunt de dades: Crear branques per a cada valor de l'atribut seleccionat.
  3. 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:

  1. Seleccionar l'atribut arrel: Seleccionar l'atribut que minimitza la impuresa de Gini o l'error quadràtic mitjà.
  2. Dividir el conjunt de dades: Crear branques per a cada valor de l'atribut seleccionat.
  3. 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

  1. Carregar el conjunt de dades: Utilitzem el conjunt de dades Iris, que és un conjunt de dades clàssic per a la classificació.
  2. Dividir el conjunt de dades: Dividim les dades en un conjunt d'entrenament i un conjunt de prova.
  3. Crear el model: Utilitzem DecisionTreeClassifier de Scikit-Learn per crear el model d'arbre de decisió.
  4. Entrenar el model: Entrenem el model amb el conjunt d'entrenament.
  5. 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:

  1. Carrega el conjunt de dades boston.
  2. Divideix el conjunt de dades en entrenament i prova.
  3. Crea un model DecisionTreeRegressor.
  4. 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

  1. Carregar el conjunt de dades: Utilitzem el conjunt de dades Boston, que conté informació sobre els preus de les cases.
  2. Dividir el conjunt de dades: Dividim les dades en un conjunt d'entrenament i un conjunt de prova.
  3. Crear el model: Utilitzem DecisionTreeRegressor de Scikit-Learn per crear el model d'arbre de decisió per a regressió.
  4. Entrenar el model: Entrenem el model amb el conjunt d'entrenament.
  5. 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

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats