Python Data Science Program
📓 Abrir notebook en GitHub

Clase 079 — SVM para regresión (SVR)

Parte: 1 — Machine Learning Clásico · Fuente: Géron, cap. 5. ⏱️ Duración estimada: 50 min.

🎯 Objetivo

Aplicar Support Vector Machines al problema de regresión: entender el truco del epsilon-insensitive loss (ajustar dentro de un tubo de tolerancia en vez de minimizar el error puntual), entrenar LinearSVR y SVR con kernel, y elegir cuándo conviene SVR sobre regresión lineal clásica.

📚 Resultados de aprendizaje

Al finalizar la clase, vas a poder:

🗺️ Temas

  1. De SVM clasificación a SVM regresión: invertir el objetivo.
  2. Epsilon-insensitive loss: errores menores a ε no se penalizan.
  3. LinearSVR: caso lineal, escala bien (O(m)).
  4. SVR con kernel RBF: regresión no lineal, costo cuadrático.
  5. Hiperparámetros clave: epsilon, C, gamma, kernel.
  6. Robustez frente a outliers comparada con OLS.

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Tubo ε en 2D. Generá y = 0.5x + ruido, entrená LinearSVR(epsilon=0.5) y graficá la recta junto al tubo ±ε. Marcá los vectores de soporte (puntos fuera del tubo).
  2. Efecto de epsilon. Repetí el ejercicio 1 con ε ∈ {0.1, 0.5, 1.5}. ¿Cómo cambia la cantidad de vectores de soporte y el MSE en test?
  3. Kernel RBF. En un dataset no lineal (y = sin(x) + ruido), compará LinearSVR vs SVR(kernel="rbf", gamma="scale"). Reportá MAE y graficá ambas curvas.
  4. Grid search. Sobre California Housing, hacé GridSearchCV con SVR variando C ∈ {0.1, 1, 10} y gamma ∈ {"scale", 0.01, 0.1}. No uses más de 5 000 muestras (cuidado con el costo cuadrático).
  5. Robustez vs OLS. Inyectá 5% de outliers en un dataset lineal y compará LinearRegression, Ridge y LinearSVR. ¿Cuál degrada menos?

📝 Homework verificable

Entregar un script svr_california.py que:

  1. Cargue California Housing y aplique StandardScaler (¡SVR exige escalado!).
  2. Entrene LinearSVR(epsilon=0.5, C=1.0, random_state=42) y un SVR(kernel="rbf", C=10, gamma="scale") sobre un subset de 5 000 muestras.
  3. Reporte RMSE en test para ambos modelos.

Criterio de aceptación: LinearSVR RMSE < 0.85 y SVR-RBF RMSE < 0.65 sobre el split de test (train_test_split(random_state=42, test_size=0.2)).

⚠️ Errores comunes

❓ Preguntas frecuentes

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 080 — Árboles de decisión: entrenamiento, visualización, CART