Introducció

En aquest tema, explorarem dues tècniques de modelatge molt potents i àmpliament utilitzades en l'anàlisi de dades: els arbres de decisió i els boscos aleatoris. Aquestes tècniques són especialment útils per a tasques de classificació i regressió, i són conegudes per la seva capacitat d'interpretació i precisió.

Arbres de Decisió

Conceptes Bàsics

Un arbre de decisió és un model predictiu que utilitza un conjunt de regles basades en les característiques de les dades per prendre decisions. Es representa com un arbre, on cada node intern representa una característica o atribut, cada branca representa una regla de decisió, i cada fulla representa un resultat o classe.

Construcció d'un Arbre de Decisió

  1. Selecció de la Característica: Seleccionem la característica que millor divideix les dades en termes de la variable objectiu. Això es fa utilitzant mètriques com la impuresa de Gini o la informació entropia.
  2. Divisió de les Dades: Les dades es divideixen en subgrups basats en la característica seleccionada.
  3. Repetició: Aquest procés es repeteix recursivament per a cada subgrup fins que es compleixin certs criteris d'aturada, com ara una profunditat màxima de l'arbre o un nombre mínim de mostres per fulla.

Exemple de Codi

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Carregar el conjunt de dades Iris
iris = load_iris()
X = iris.data
y = iris.target

# Dividir les 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 i entrenar l'arbre de decisió
clf = DecisionTreeClassifier()
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'Precisió de l\'arbre de decisió: {accuracy:.2f}')

Avantatges i Desavantatges

Avantatges:

  • Fàcil d'interpretar i visualitzar.
  • No requereix molta preparació de les dades.
  • Pot manejar tant dades numèriques com categòriques.

Desavantatges:

  • Pot sobreajustar-se fàcilment a les dades d'entrenament.
  • Sensible a petites variacions en les dades.

Boscos Aleatoris

Conceptes Bàsics

Un bosc aleatori és un conjunt d'arbres de decisió entrenats de manera independent sobre diferents subconjunts de les dades i/o diferents subconjunts de característiques. La predicció final es fa mitjançant la mitjana (per a la regressió) o la majoria de vots (per a la classificació) de les prediccions de tots els arbres.

Construcció d'un Bosc Aleatori

  1. Bootstrap Aggregating (Bagging): Es generen múltiples subconjunts de les dades d'entrenament mitjançant mostreig amb reemplaçament.
  2. Entrenament d'Arbres: Cada arbre es construeix utilitzant un subconjunt diferent de les dades i un subconjunt aleatori de característiques.
  3. Agregació de Prediccions: Les prediccions dels arbres es combinen per obtenir la predicció final.

Exemple de Codi

from sklearn.ensemble import RandomForestClassifier

# Crear i entrenar el bosc aleatori
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rf_clf.fit(X_train, y_train)

# Predir les etiquetes per al conjunt de prova
y_pred_rf = rf_clf.predict(X_test)

# Avaluar el model
accuracy_rf = accuracy_score(y_test, y_pred_rf)
print(f'Precisió del bosc aleatori: {accuracy_rf:.2f}')

Avantatges i Desavantatges

Avantatges:

  • Redueix el risc de sobreajustament.
  • Pot manejar grans conjunts de dades amb moltes característiques.
  • Menys sensible a petites variacions en les dades.

Desavantatges:

  • Més complex i més lent d'entrenar que un arbre de decisió individual.
  • Menys interpretable que un arbre de decisió individual.

Exercici Pràctic

Enunciat

Utilitzant el conjunt de dades Iris, construeix un arbre de decisió i un bosc aleatori per a la tasca de classificació. Compara la precisió dels dos models i discuteix els resultats.

Solució

# Entrenar l'arbre de decisió
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisió de l\'arbre de decisió: {accuracy:.2f}')

# Entrenar el bosc aleatori
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rf_clf.fit(X_train, y_train)
y_pred_rf = rf_clf.predict(X_test)
accuracy_rf = accuracy_score(y_test, y_pred_rf)
print(f'Precisió del bosc aleatori: {accuracy_rf:.2f}')

Discussió

En general, el bosc aleatori tendeix a tenir una precisió més alta que un arbre de decisió individual perquè combina les prediccions de múltiples arbres, reduint el risc de sobreajustament i millorant la generalització. No obstant això, aquesta millora en la precisió ve a costa d'una major complexitat i temps de càlcul.

Conclusió

En aquest tema, hem après sobre els arbres de decisió i els boscos aleatoris, dues tècniques de modelatge molt potents en l'anàlisi de dades. Hem vist com es construeixen, els seus avantatges i desavantatges, i hem practicat amb exemples de codi en Python. A la propera secció, explorarem com avaluar i validar aquests models per assegurar-nos que funcionen bé amb dades noves.

© Copyright 2024. Tots els drets reservats