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ó
- 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.
- Divisió de les Dades: Les dades es divideixen en subgrups basats en la característica seleccionada.
- 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
- Bootstrap Aggregating (Bagging): Es generen múltiples subconjunts de les dades d'entrenament mitjançant mostreig amb reemplaçament.
- Entrenament d'Arbres: Cada arbre es construeix utilitzant un subconjunt diferent de les dades i un subconjunt aleatori de característiques.
- 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.
Curs d'Anàlisi de Dades
Mòdul 1: Introducció a l'Anàlisi de Dades
- Conceptes Bàsics d'Anàlisi de Dades
- Importància de l'Anàlisi de Dades en la Presa de Decisions
- Eines i Programari Comunament Utilitzats
Mòdul 2: Recol·lecció i Preparació de Dades
- Fonts de Dades i Mètodes de Recol·lecció
- Neteja de Dades: Identificació i Gestió de Dades Faltants
- Transformació i Normalització de Dades
Mòdul 3: Exploració de Dades
- Anàlisi Exploratori de Dades (EDA)
- Visualització de Dades: Gràfics i Taules
- Detecció de Patrons i Tendències
Mòdul 4: Modelatge de Dades
- Introducció als Models Estadístics
- Regressió Lineal i Logística
- Arbres de Decisió i Boscos Aleatoris
Mòdul 5: Avaluació i Validació de Models
- Mètriques d'Avaluació de Models
- Validació Creuada i Tècniques de Validació
- Ajust i Optimització de Models
Mòdul 6: Implementació i Comunicació de Resultats
- Implementació de Models en Producció
- Comunicació de Resultats a Parts Interessades
- Documentació i Informes