Introducció
Gradient Boosting és una tècnica de Machine Learning que combina múltiples models febles, normalment arbres de decisió, per crear un model fort que millora iterativament el seu rendiment. Aquesta tècnica és molt popular en competicions de dades i aplicacions del món real degut a la seva capacitat per manejar dades complexes i obtenir resultats precisos.
Conceptes Clau
- Model feble (Weak Learner): Un model que té un rendiment lleugerament millor que l'atzar.
- Boosting: Una tècnica que combina múltiples models febles per crear un model fort.
- Gradient Descent: Un mètode d'optimització utilitzat per minimitzar una funció de pèrdua ajustant els paràmetres del model.
Funcionament del Gradient Boosting
- Inicialització: Comença amb un model inicial, sovint un arbre de decisió simple.
- Iteració: En cada iteració, es construeix un nou model feble que intenta corregir els errors del model anterior.
- Actualització: Els models es combinen ajustant els pesos dels errors per minimitzar la funció de pèrdua utilitzant gradient descent.
- Predicció Final: La predicció final és la suma ponderada de les prediccions de tots els models febles.
Algorisme
- Inicialitza el model amb una predicció constant, \( F_0(x) \).
- Per a cada iteració \( m \) fins a \( M \):
- Calcula els residus \( r_{i}^{(m)} = y_i - F_{m-1}(x_i) \) per a cada mostra \( i \).
- Ajusta un nou model feble \( h_m(x) \) als residus.
- Actualitza el model: \( F_m(x) = F_{m-1}(x) + \gamma h_m(x) \), on \( \gamma \) és la taxa d'aprenentatge.
- La predicció final és \( F_M(x) \).
Exemple Pràctic
A continuació es mostra un exemple de Gradient Boosting utilitzant Python i la biblioteca scikit-learn
.
from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingRegressor from sklearn.metrics import mean_squared_error # Generar dades sintètiques X, y = make_regression(n_samples=1000, n_features=20, noise=0.1) # Dividir les dades en entrenament i prova X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el model de Gradient Boosting model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42) # Entrenar el model model.fit(X_train, y_train) # Fer prediccions y_pred = model.predict(X_test) # Avaluar el model mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}")
Explicació del Codi
- Generació de Dades: Utilitzem
make_regression
per crear un conjunt de dades sintètiques per a un problema de regressió. - Divisió de Dades: Dividim les dades en conjunts d'entrenament i prova.
- Creació del Model: Creem un model de
GradientBoostingRegressor
amb 100 estimadors, una taxa d'aprenentatge de 0.1 i una profunditat màxima dels arbres de 3. - Entrenament del Model: Entrenem el model amb les dades d'entrenament.
- Predicció i Avaluació: Fem prediccions amb les dades de prova i calculem l'error quadràtic mitjà (MSE) per avaluar el rendiment del model.
Exercici Pràctic
Enunciat
Utilitza el conjunt de dades Boston Housing
disponible a scikit-learn
per entrenar un model de Gradient Boosting que prediu el preu de les cases. Avaluar el model utilitzant l'error quadràtic mitjà (MSE).
Solució
from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingRegressor from sklearn.metrics import mean_squared_error # Carregar el conjunt de dades Boston Housing boston = load_boston() X, y = boston.data, boston.target # Dividir les dades en entrenament i prova X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el model de Gradient Boosting model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42) # Entrenar el model model.fit(X_train, y_train) # Fer prediccions y_pred = model.predict(X_test) # Avaluar el model mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}")
Explicació del Codi
Aquest codi segueix els mateixos passos que l'exemple anterior, però utilitza el conjunt de dades Boston Housing
per predir els preus de les cases.
Errors Comuns i Consells
- Overfitting: Utilitzar un nombre massa gran d'estimadors o una profunditat massa gran pot conduir a sobreajustament. Utilitza tècniques com la validació creuada per ajustar els hiperparàmetres.
- Taxa d'Aprenentatge: Una taxa d'aprenentatge massa alta pot fer que el model no convergeixi. Prova diferents valors per trobar el millor.
- Dades No Normalitzades: Assegura't que les dades estiguin normalitzades o estandarditzades per millorar el rendiment del model.
Conclusió
Gradient Boosting és una tècnica poderosa per millorar el rendiment dels models de Machine Learning combinant múltiples models febles. Amb una comprensió sòlida dels seus conceptes i una implementació acurada, pots aplicar aquesta tècnica per resoldre problemes complexos i obtenir resultats precisos.
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