Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

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

Kernels comunes

Kernels comunes

Introducción

En la implementación de Support Vector Machines (SVM), los kernels son herramientas cruciales para transformar datos no lineales a espacios donde puedan ser clasificados o regresados con mayor facilidad. La elección del kernel es fundamental, ya que puede significativamente influir en el rendimiento y la interpretación de los modelos SVM. En este artículo, exploraremos diferentes tipos de kernels comunes y cómo seleccionarlos adecuadamente.

Explicación principal

1. Kernel lineal

El kernel lineal es el más sencillo y no requiere transformaciones adicionales del espacio de entrada. Matemáticamente, se define como: \[ K(x_1, x_2) = \langle x_1, x_2 \rangle + b \] donde \(x_1\) y \(x_2\) son vectores de características y \(b\) es una constante (a menudo se omite para simplificar la expresión).

2. Kernel polinomial

El kernel polinomial transforma los datos a un espacio de mayor dimensión, donde pueden ser separados por un hiperplano. Se define como: \[ K(x_1, x_2) = (\gamma \langle x_1, x_2 \rangle + r)^d \] donde \(d\) es el grado del polinomio, \(r\) y \(\gamma\) son parámetros que pueden ajustarse.

3. Kernel radial (Gaussian RBF)

El kernel radial basado en la función de densidad Gaussiana (RBF) transforma los datos a un espacio infinito, lo que puede ser útil para separar conjuntos de datos no lineales. Se define como: \[ K(x_1, x_2) = \exp\left(-\gamma \|x_1 - x_2\|^2\right) \] donde \(\gamma\) es un parámetro que controla la "amplitud" del kernel.

4. Kernel sigmoid

El kernel sigmoid se utiliza para aproximar funciones logísticas y no es tan común en la práctica como los anteriores, pero aún puede ser útil en algunos casos. Se define como: \[ K(x_1, x_2) = \tanh(\gamma \langle x_1, x_2 \rangle + r) \] donde \(r\) y \(\gamma\) son parámetros.

Ejemplo de código

A continuación se muestra un ejemplo简体中文版

from sklearn.svm import SVC
import numpy as np

# 定义数据集
X = np.array([[1, 2], [3, 4], [-1, -2], [-3, -4]])
y = np.array([0, 1, 0, 1])

# 使用不同的核函数训练SVM模型
models = [
    ("Linear", SVC(kernel='linear')),
    ("Polynomial", SVC(kernel='poly', degree=2)),
    ("RBF", SVC(kernel='rbf')),
    ("Sigmoid", SVC(kernel='sigmoid'))
]

for name, model in models:
    model.fit(X, y)
    print(f"{name}: 支持向量个数: {model.support_vectors_.shape[0]}")

Errores típicos / trampas

  1. Omisión de la elección del kernel: Los modelos SVM pueden ser altamente dependientes del tipo de kernel usado. No utilizar un kernel adecuado puede resultar en modelos ineficaces o mal ajustados.
  1. Selección impropia de parámetros: Para los kernels no lineales como el RBF, la elección incorrecta de \(\gamma\) y \(r\) puede afectar drásticamente el rendimiento del modelo. Un valor muy alto de \(\gamma\) puede resultar en overfitting, mientras que un valor muy bajo puede resultar en underfitting.
  1. Ignorar datos no lineales: En muchos casos, los datos pueden ser mejor separados usando transformaciones no lineales. Ignorar la posibilidad de usar kernels polinomiales o RBF puede llevar a modelos subóptimos.

Checklist accionable

  1. Analizar el tipo de problema y datos - ¿Son los datos estructuradamente lineales o no lineales?
  2. Experimentar con diferentes tipos de kernel - Comenzar con kernels lineales, luego probar polinomiales y RBF.
  3. Tuneear parámetros del kernel - Ajuste cuidadosamente \(\gamma\) e \(r\), especialmente para el kernel RBF.
  4. Validar cruzada - Utilizar validación cruzada para evaluar la generalización del modelo.
  5. Comparar modelos - Evaluar diferentes configuraciones y seleccionar la mejor.

Cierre

Siguientes pasos

  • Aplicar conocimientos: Prueba los kernels en conjuntos de datos reales y observa cómo afectan el rendimiento del modelo.
  • Aprender más: Explora otros tipos de modelos de aprendizaje automático que pueden ser relevantes para tus problemas.
  • Optimizar: Continua optimizando tus modelos SVM con diferentes configuraciones y técnicas avanzadas.

通过本文,我们了解了SVM中常见的几种核函数,并探讨了如何选择合适的核函数以获得更好的模型性能。希望这些信息能帮助你在实际应用中做出明智的决策!

Contacto

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