Regularización múltiple mediante gráfico laplaciano en SVM

8

Estoy tratando de implementar la regularización múltiple en máquinas de vectores de soporte (SVM) en Matlab. Estoy siguiendo las instrucciones en el documento de Belkin et al. (2006), ahí está la ecuación:

f=argminfHki=1lV(xi,yi,f)+γAfA2+γIfI2

donde V es alguna función de pérdida y es el peso de la norma de la función en el RHKS (o norma ambiental), impone una condición de suavidad en las posibles soluciones, y es el peso de la norma de la función en El múltiple de baja dimensión (o norma intrínseca), que se aplica sin problemas a lo largo de la muestra M. El regularizador ambiental hace que el problema esté bien planteado, y su presencia puede ser realmente útil desde un punto de vista práctico cuando el supuesto del múltiple se mantiene en menor grado .γAγI

Se ha demostrado en Belkin et al. (2006) que admite una expansión en términos de puntos de S, La función de decisión que discrimina entre la clase +1 y -1 es .fnf(x)=i=1nαik(xi,x)y(x)=sign(f(x))

El problema aquí es que estoy tratando de entrenar SVM usando LIBSVM en MATLAB pero no quiero modificar el código original, así que he encontrado la versión precalculada de LIBSVM que en lugar de tomar datos de entrada y grupos de salida como parámetros , calcula la matriz de Kernal y la salida agrupa y entrena el modelo SVM. Estoy intentando alimentarlo con la matriz de Kernel regularizada (matriz de Gram) y dejar que haga el resto.

Traté de encontrar la fórmula que regulariza el Kernal y llegué a esto: Definiendo como la matriz de identidad con la misma dimensión que la Matriz del Kernel,IK

G=2γAI+2γILKI

Gram=KG

En el que es la matriz gráfica laplaciana, es la matriz del núcleo e es la matriz de identidad. Y se calcula utilizando la multiplicación escalar de dos matrices y .LKIGramKG

¿Hay alguien que pueda ayudarme a descubrir cómo se calcula esto?

Oficial médico
fuente
1
@Sveltely Nothing
Moh

Respuestas:

6

Si bien no lo probé , al leer el artículo, el problema de optimización, tanto para SVM como para LapSVM , se da como:

β=maxβRli=1lβi12βTQβ
sujeto a:
i=1lβiyi=00βi1l, with i=1,,l

Para SVM :

QSVM=Y(K2γ)YαSVM=Yβ2γ

Mientras que para LapSVM tenemos lo siguiente (paréntesis adicionales para aclarar la relación):

QLapSVM=Y(JK(2γAI+2γI(l+u)2LK)1JT)YαLapSVM=(2γAI+2γI(l+u)2LK)1JTYβ

Podemos definir si:

QSVM*QLapSVM

{γSVM*=1/2KSVM*=JKLapSVM(2γAI+2γI(l+u)2LKLapSVM)1JT

Último:

αLapSVM=KLapSVM(2γAI+2γI(l+u)2LKLapSVM)1JTαSVM*

Puedo confirmar que funciona. Vea este ejemplo con un núcleo gaussiano, y cómo la clase virginicacomienza a arrastrarse a los datos no etiquetados cuando comparación con , que es el SVM estándar.γI=2500γI=0

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Firebug
fuente