formato de datos libsvm [cerrado]

31

Estoy usando la herramienta libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) para la clasificación de vectores de soporte. Sin embargo, estoy confundido sobre el formato de los datos de entrada.

Desde el archivo Léame:

El formato del archivo de datos de entrenamiento y prueba es:

<label> <index1>:<value1> <index2>:<value2> ...
.
.
.

Cada línea contiene una instancia y termina con un carácter '\ n'. Para la clasificación, <label>es un número entero que indica la etiqueta de la clase (admite varias clases). Para la regresión, <label>es el valor objetivo que puede ser cualquier número real. Para SVM de una clase, no se usa, por lo que puede ser cualquier número. El par <index>:<value>proporciona un valor de característica (atributo): <index>es un número entero que comienza en 1 y <value> es un número real. La única excepción es el núcleo precalculado, donde <index>comienza desde 0; vea la sección de núcleos precalculados. Los índices deben estar en orden ASCENDENTE. Las etiquetas en el archivo de prueba solo se utilizan para calcular la precisión o los errores. Si no se conocen, simplemente complete la primera columna con cualquier número.

Tengo las siguientes preguntas:

  1. ¿De qué sirve el <index>? ¿Para qué sirve?
  2. ¿Existe una correspondencia entre los mismos valores de índice de diferentes instancias de datos?
  3. ¿Qué sucede si pierdo / omito un índice intermedio?

Pregunto porque el archivo de datos * heart_scale * que se incluye en el paquete para libsvm, en la línea 12, el índice comienza desde 2. ¿ <value>Se toma como desconocido para el índice 1? Nota: la herramienta tools / checkdata.py proporcionada con el paquete dice que el archivo * heart_scale * es correcto.

Siddhant Saraf
fuente

Respuestas:

23

Este enlace debería ayudar: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Se menciona que los datos se almacenan en forma de matriz / matriz dispersa. Esencialmente, significa que solo se almacenan los datos distintos de cero, y cualquier dato faltante se toma como valor cero. Para sus preguntas:

a) El índice simplemente sirve como una forma de distinguir entre las características / parámetros. En términos de hiperespacio, simplemente designa cada componente: por ejemplo: los índices 3-D (3 características) 1,2,3 corresponderían a las coordenadas x, y, z.

b) La correspondencia es meramente matemática, al construir el hiperplano, estos sirven como coordenadas.

c) Si omite uno en el medio, se le debe asignar un valor predeterminado de cero.

En resumen, +1 1: 0.7 2: 1 3: 1 se traduce en:

Asignar a la clase +1, el punto (0.7,1,1).

Govind Gopakumar
fuente
4

Solo guía pequeña y rápida:

El formato LibSVM significa que su documento ya debe ser procesado previamente. Necesita saber cuántas clases de clasificación se utilizarán (muy probablemente 2) y el espacio de características.

La clase de clasificación es algo así como verdadero / falso; 0,1, ... Aquí debe transformarlo en enteros (por ejemplo, 0,1).

El espacio de características es un espacio para sus datos multidimensionales. Cada característica (vector) debe tener su propia ID (índice) y su valor. Por ejemplo, 1: 23.2 significa que la característica / dimensión 1 tiene un valor 23.2

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
xhudik
fuente