tutorial support machine data algorithm machine-learning svm libsvm

algorithm - data - support vector machine



Cuál es la diferencia entre LibSVM y LibLinear (3)

libsvm y liblinear son ambas bibliotecas de software que implementan Support Vector Machines. ¿Cual es la diferencia? ¿Y cómo las diferencias hacen que liblinear sea más rápido que libsvm?


Desde: http://www.csie.ntu.edu.tw/~cjlin/papers/liblinear.pdf

Es compatible con máquinas de vector de soporte lineal (LV) de regresión logística (LR), pérdida de L2 y L1-regularizada L2 (Boser et al., 1992). Hereda muchas características de la popular librería SVM LIBSVM

Y también puede ver información útil aquí de uno de los creadores: http://agbs.kyb.tuebingen.mpg.de/km/bb/showthread.php?tid=710

La idea principal, diría, es que liblinear está optimizado para tratar con la clasificación lineal (es decir, no se necesitan núcleos), mientras que la clasificación lineal es solo una de las muchas capacidades de libsvm, por lo que lógicamente puede no coincidir con liblinear en términos de precisión de clasificación. Obviamente, estoy haciendo algunas generalizaciones generales aquí, y los detalles exactos sobre las diferencias probablemente se cubran en el documento que he vinculado anteriormente, así como con la guía del usuario correspondiente a libsvm del sitio web libsvm.


En la práctica, la complejidad del algoritmo SMO (que funciona tanto para kernel como SVM lineal) como se implementa en libsvm es O (n ^ 2) u O (n ^ 3) mientras que liblinear es O (n) pero no admite SVM de núcleo. n es el número de muestras en el conjunto de datos de entrenamiento.

Por lo tanto, para escala media a grande, olvídese de los kernels y use liblinear (o tal vez eche un vistazo a los solucionadores de SVM de LaSVM aproximados, como LaSVM ).

Edición: en la práctica, libsvm se vuelve dolorosamente lento en 10k muestras.


SVM es una máquina de vectores de soporte , que básicamente es un clasificador lineal, pero que utiliza muchas transformaciones de kernel para convertir un problema no lineal en un problema lineal de antemano.

Desde el enlace de arriba, parece que liblinear es casi lo mismo, sin esas transformaciones de kernel. Entonces, como dicen, en los casos en que las transformaciones del kernel no son necesarias (mencionan la clasificación del documento), será más rápido.