Actualmente tengo un conjunto de datos que se sabe que pertenecen a dos clases, y quiere construir un clasificador utilizando SVM. Sin embargo, existen diferentes niveles de confianza para este conjunto de datos. Por ejemplo, para algunos puntos de datos, estamos seguros de que pertenecen a la clase 1; mientras que para algunos puntos de datos, pensamos que deberían pertenecer a la clase 1, pero no es tan cierto. Podemos cuantificar este tipo de información de confianza como el peso. Pero, ¿cómo podemos elenco estos peso de la información en el proceso de capacitación? ¿LibSVM apoyo a este tipo de formación?
Respuestas
¿Demasiados anuncios?Lo que están pidiendo no caer en el marco de la SVM. Hay algunos trabajos sobre la incorporación de los conocimientos previos en SVMs (ver, por ejemplo, aquí , pero estos enfoques no están generalmente en un ejemplo por ejemplo.
No puedo pensar en una manera en la que usted podría acercarse a este, si usted tiene un montón de muestras. Usted podría utilizar los pesos de las probabilidades de inclusión en el azar de los subconjuntos. Tendría que aprender de la SVM en cada subconjunto, y su final clasificador es entonces una combinación lineal de estos subconjuntos. Esta es una variación de arranque, que normalmente funciona a través de subconjuntos de características (ver, por ejemplo, aquí, y podría ser muy interesante para analizar.
[Edit 1]:
Basándose en las respuestas de Jeff y Dikran se me ocurrió que usted puede incorporar en la SVM objetivo. Normalmente la forma primordial parece:
$\min_{\mathbf{w},\mathbf{\xi}, b } \left\{\frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^n \xi_i \right\}$
sujeto a (para cualquier $i=1,\dots n$)
$y_i(\mathbf{w}\cdot\mathbf{x_i} - b) \ge 1 - \xi_i, ~~~~\xi_i \ge 0 .$
pero sólo podría incluir otro vector de valores de confianza, por ejemplo,$0 < \delta_i \leq 1, ~~~~i=1,\dots n$:
$\min_{\mathbf{w},\mathbf{\xi}, b } \left\{\frac{1}{2} \|\mathbf{w}\|^2 + \frac{C}{\delta_i} \sum_{i=1}^n \xi_i \right\}$
sujeto a (para cualquier $i=1,\dots n$)
$y_i(\mathbf{w}\cdot\mathbf{x_i} - b) \ge 1 - \xi_i, ~~~~\xi_i \ge 0 .$
lo que significaría que los casos con baja probabilidad podría recibir una pena mayor en el objetivo. Tenga en cuenta que ahora el $C$ parámetro realiza dos funciones: como regulariser y como un factor de escala para las calificaciones de confianza. Esto puede causar sus propios problemas, así que sería mejor dividirlo en dos partes, pero luego, por supuesto, usted tiene un extra de hyperparameter para sintonizar.
[Edit 2]:
Esto puede ser hecho con libSVM (MATLAB y Python interfaces están incluidos). También hay código disponible en varios idiomas para el SMO algoritmo que permite resolver el SVM problema de manera eficiente. Alternativamente, usted podría usar un paquete de optimización, tales como quadprog en matlab o CVX, para escribir una costumbre de solver.
Existe una técnica llamada ponderado SVM (ver ref abajo), que parece ser apoyado por LibSVM (que en realidad nunca he usado). Ponderado SVM resuelve el problema de tener dos clases desiguales de datos de entrenamiento. En este caso, la clasificación está sesgada hacia la clase con más observaciones. Para compensar, W-SVM establece la pena de parámetro C en proporción con el tamaño de la clase.
La misma idea puede aplicarse a la confianza de la información, dando a cada observación de su propio C; aunque no estoy seguro de si LibSVM apoya esto. En este sentido, se dan una pena mayor a las observaciones en las que usted tiene un montón de confianza, y una pequeña pena de observaciones con las que se tiene poca confianza. El resultado final es que el hyperplane está determinada por la ponderación de cada observación por su intervalo de confianza, como usted desea.
Huang Y Du (2005). Ponderado de la máquina de soporte vectorial para la clasificación con desigual de la formación de la clase de tamaño. Proc. de la 4ª Int. Conf. en el Aprendizaje de Máquina y la Cibernética, 4365-4369. Recuperado de http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1527706
Un papel que podría ser de interés es "la Estimación de un Núcleo Discriminante de Fisher en la Presencia de la Etiqueta de Ruido" por Lawrence y Scholkopf, que se ocupa de KFD en lugar de SVM, pero los dos clasificadores están estrechamente relacionados y que dará resultados similares para la mayoría de los problemas. Tenga en cuenta que el KFD es equivalente a la del núcleo regresión ridge, y un 2-norma SVM es equivalente a la RRK calculada en sólo el soporte de vectores, por lo que es posible que el puerto este enfoque de la SVM.
En general el trato con la etiqueta de ruido es más fácil cuando usted tiene un clasificador probabilístico, así como tdc sugiere, la SVM no es probablemente el mejor enfoque. Podría ser vale la pena mirar semi-supervisado versiones de la SVM, como el problema es similar, ya que en ambos casos sólo se han incierto información acerca de algunas de las etiquetas (muy incierto para semi-supervisado métodos). El enfoque de tdc sugiere es probablemente vale la pena probar, o, alternativamente, en la actualidad cada patrón dos veces, con diferentes etiquetas de cada momento, con pesos $p$$1-p$.