Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Machine Learning clásico, Unidad 5 — Support Vector Machines (SVM), 5.2 — Kernels ·

Transformaciones implícitas

Transformaciones implícitas: Máster de Support Vector Machines

Introducción

Las Transformaciones Implícitas son una herramienta esencial dentro del conjunto de técnicas que utiliza el Support Vector Machine (SVM) para resolver problemas en espacios no lineales. Estas transformaciones permiten convertir datos linealmente separables a un espacio donde puedan ser separados por un hiperplano, facilitando así la resolución del problema de clasificación o regresión. En este artículo, exploraremos cómo funcionan estas transformaciones, sus beneficios y desafíos, y proporcionaremos algunos consejos prácticos para su implementación.

Explicación principal con ejemplos

Concepto básico

La idea detrás de las Transformaciones Implícitas es que existen funciones hiperbólicas tales como el polinomio, la radial base (RBF) y la multilínea cuadrática (MLQ), que pueden convertir datos no linealmente separables a un espacio donde se vuelven linealmente separables. Estas funciones son conocidas como kernels.

Ejemplo: Kernel Polinomial

Considere dos conjuntos de datos en una dimensión, uno con valores positivos y otro con valores negativos, que no son linealmente separables:

import numpy as np
from matplotlib import pyplot as plt

# Datos generados
np.random.seed(0)
X = np.r_[np.random.normal(2, 1, 50), np.random.normal(-2, 1, 50)]
y = [1 if x < 0 else -1 for x in X]

plt.scatter(X, y)
plt.show()

Para separar estos datos utilizando un SVM, podemos aplicar una transformación polinomial de grado 3:

from sklearn.svm import SVC

# Definir el modelo con kernel polinomial
svc = SVC(kernel='poly', degree=3)

# Entrenar el modelo
svc.fit(X[:, np.newaxis], y)

# Visualización del hiperplano resultante
x_min, x_max = X.min() - 1, X.max() + 1
xx = np.linspace(x_min, x_max, 100)
yy = svc.decision_function(xx[:, np.newaxis])

plt.scatter(X, y)
plt.plot(xx, yy, color='blue')
plt.show()

Kernel Radial Base (RBF)

Otro kernel común es el RBF, que es útil para datos en espacios de alta dimensión:

# Definir el modelo con kernel RBF
svc_rbf = SVC(kernel='rbf')

# Entrenar el modelo
svc_rbf.fit(X[:, np.newaxis], y)

# Visualización del hiperplano resultante
yy_rbf = svc_rbf.decision_function(xx[:, np.newaxis])

plt.scatter(X, y)
plt.plot(xx, yy_rbf, color='red')
plt.show()

Errores típicos / trampas

  1. Sobreajuste: Utilizar un kernel con una complejidad excesiva (grado alto para polinomio) puede llevar a un sobreajuste en los datos de entrenamiento, resultando en un mal rendimiento en nuevos datos.
  2. Escurrimiento de datos: Si los datos no están correctamente escalados o normalizados, las transformaciones implícitas pueden fallar o dar resultados inestables.
  3. Selección incorrecta del kernel: Es común confiar en el kernel por defecto (lineal), pero esto puede no ser adecuado para todos los tipos de problemas. Se debe experimentar con diferentes tipos de kernels y seleccionar el que mejor se adapte a la tarea.

Checklist accionable

  1. Escoge el kernel correcto: Basa tu elección en el tipo de datos y el problema a resolver.
  2. Normaliza tus datos: Asegúrate de que los datos estén normalizados para evitar problemas con la estabilidad del algoritmo.
  3. Prueba diferentes grados para polinomio: Experimenta con valores de grado entre 1 y 5, dependiendo de tu conjunto de datos.
  4. Validación cruzada: Utiliza la validación cruzada para seleccionar los hiperparámetros adecuados del kernel.
  5. Monitorea el rendimiento en datos de prueba: No te fiés solo en el rendimiento en datos de entrenamiento.

Cierre

Siguientes pasos

  • Profundiza en Deep Learning: Si las Transformaciones Implícitas no son suficientes, considera explorar técnicas de Deep Learning que pueden capturar relaciones más complejas.
  • Explica conceptos a otros: Comparte tu conocimiento con colegas y aprendices para reforzar tus propias habilidades.
  • Participa en proyectos de ML: Aplica tus conocimientos en proyectos reales para mejorar continuamente.

Transformaciones implícitas son una herramienta poderosa pero requieren cuidado y experimentación. Con la práctica, podrás utilizarlas eficazmente para resolver problemas complejos en Machine Learning clásico.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).