2 votos

Extracción de la variable de función de decisión de libsvm

Estoy intentando utilizar las SVM de clase única de LIBSVM para alguna clasificación y necesito extraer la siguiente suma postclasificación (es decir, la variable que toma la función de decisión)

$$ \Sigma_{i=1}^{N} \alpha_i K(z,z_i) $$

No estoy muy seguro de esto así que sólo quiero comprobar que tengo la idea correcta, pero ¿podría calcular la suma simplemente utilizando la variable primal $\textbf{w}$ ? Para un modelo libsvm $m$ Acabo de llamar

w = (m.SVs)'*(m.coef);

y luego calcular $\textbf{w}^T \textbf{z}$ donde $\textbf{z}$ es el vector de características de lo que me gustaría clasificar. No estoy seguro, supongo que puede ser más fácil calcular la función kernel explícitamente, pero si alguien sabe de una buena manera de acceder a la información en libsvm estaría muy agradecido.

4voto

Marc Claesen Puntos 9818

Dependiendo del núcleo que utilices, no es posible calcular $\mathbf{w}$ (el hiperplano de separación en el espacio de características ) de forma explícita. Para el núcleo RBF, por ejemplo, $\mathbf{w}$ es de dimensión infinita.

En cambio, lo que puede es el producto interior de $\mathbf{w}$ y la instancia de prueba $\mathbf{z}$ incrustado en el espacio de características $\phi(\mathbf{z})$ como sigue $\langle \mathbf{w}, \phi(\mathbf{z})\rangle = \sum_{i\in SV} \alpha_i y_i K(\mathbf{x}_i, \mathbf{z})$ .

Si su pregunta es si se puede calcular el valor de decisión puede hacerlo de la siguiente manera: $$f(\mathbf{z}) = \sum_{i\in SV} \alpha_i y_i K(\mathbf{x}_i, \mathbf{z}) +b.$$

En libsvm, la función sv_coef contiene el vector $\alpha_i y_i$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X