Introducció
La regressió logística és un algorisme de Machine Learning supervisat utilitzat principalment per a tasques de classificació binària. A diferència de la regressió lineal, que es fa servir per predir valors continus, la regressió logística prediu la probabilitat que una instància pertanyi a una de dues classes possibles.
Conceptes Clau
- Funció Sigmoide: La funció sigmoide és una funció matemàtica que transforma qualsevol valor real en un valor entre 0 i 1. És la base de la regressió logística.
- Logit: És la funció logarítmica de les probabilitats, també coneguda com la funció log-odds.
- Versemblança: És una mesura de quina tan bé el model prediu les dades observades. En la regressió logística, s'utilitza la funció de versemblança per ajustar els paràmetres del model.
Funció Sigmoide
La funció sigmoide es defineix com:
\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]
On \( z \) és una combinació lineal de les característiques d'entrada.
Fórmula de la Regressió Logística
La fórmula de la regressió logística és:
\[ P(Y=1|X) = \sigma(\beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_nX_n) \]
On:
- \( P(Y=1|X) \) és la probabilitat que la sortida \( Y \) sigui 1 donades les característiques \( X \).
- \( \beta_0 \) és la intersecció.
- \( \beta_1, \beta_2, \ldots, \beta_n \) són els coeficients de les característiques \( X_1, X_2, \ldots, X_n \).
Exemple Pràctic
Dataset
Utilitzarem un dataset fictici per predir si un estudiant serà admès a una universitat en funció de la seva puntuació en dos exàmens.
Codi en Python
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # Generar dades fictícies data = { 'Exam1': [34, 45, 50, 60, 70, 80, 85, 90, 95, 100], 'Exam2': [78, 82, 85, 88, 90, 92, 94, 96, 98, 100], 'Admitted': [0, 0, 0, 0, 1, 1, 1, 1, 1, 1] } df = pd.DataFrame(data) # Dividir les dades en característiques i etiquetes X = df[['Exam1', 'Exam2']] y = df['Admitted'] # Dividir les dades en conjunts d'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 regressió logística model = LogisticRegression() # Entrenar el model model.fit(X_train, y_train) # Predir amb el model y_pred = model.predict(X_test) # Avaluar el model accuracy = accuracy_score(y_test, y_pred) conf_matrix = confusion_matrix(y_test, y_pred) class_report = classification_report(y_test, y_pred) print(f'Accuracy: {accuracy}') print('Confusion Matrix:') print(conf_matrix) print('Classification Report:') print(class_report)
Explicació del Codi
- Importació de Llibreries: Importem les llibreries necessàries per a la manipulació de dades, visualització i creació del model.
- Generació de Dades: Creem un dataset fictici amb puntuacions d'exàmens i si l'estudiant ha estat admès o no.
- Divisió de Dades: Dividim les dades en característiques (X) i etiquetes (y), i després en conjunts d'entrenament i prova.
- Creació del Model: Utilitzem
LogisticRegression
desklearn
per crear el model. - Entrenament del Model: Entrenem el model amb les dades d'entrenament.
- Predicció i Avaluació: Prediem les etiquetes per al conjunt de prova i avaluem el model utilitzant mètriques com l'accuracy, la matriu de confusió i l'informe de classificació.
Exercici Pràctic
Enunciat
Utilitza el mateix dataset fictici per entrenar un model de regressió logística que prediu si un estudiant serà admès a la universitat en funció de la seva puntuació en tres exàmens. Afegeix una nova columna 'Exam3' amb puntuacions fictícies i repeteix el procés d'entrenament i avaluació del model.
Solució
# Afegir una nova columna 'Exam3' df['Exam3'] = [65, 70, 75, 80, 85, 90, 92, 94, 96, 98] # Dividir les dades en característiques i etiquetes X = df[['Exam1', 'Exam2', 'Exam3']] y = df['Admitted'] # Dividir les dades en conjunts d'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 regressió logística model = LogisticRegression() # Entrenar el model model.fit(X_train, y_train) # Predir amb el model y_pred = model.predict(X_test) # Avaluar el model accuracy = accuracy_score(y_test, y_pred) conf_matrix = confusion_matrix(y_test, y_pred) class_report = classification_report(y_test, y_pred) print(f'Accuracy: {accuracy}') print('Confusion Matrix:') print(conf_matrix) print('Classification Report:') print(class_report)
Errors Comuns
- No Normalitzar les Dades: La regressió logística pot ser sensible a les escales de les característiques. És recomanable normalitzar les dades abans d'entrenar el model.
- Sobreajustament: Utilitzar massa característiques pot portar a sobreajustar el model. Utilitza tècniques com la validació creuada per evitar-ho.
- Interpretació Incorrecta de les Probabilitats: Recorda que la sortida de la regressió logística és una probabilitat. Cal establir un llindar per decidir la classe final.
Conclusió
La regressió logística és una eina poderosa per a tasques de classificació binària. Comprendre els seus fonaments i saber com implementar-la correctament és essencial per a qualsevol professional de Machine Learning. Amb la pràctica i l'experimentació, es poden obtenir models precisos i útils per a una àmplia varietat d'aplicacions.
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