formato dati libsvm [chiuso]


31

Sto usando lo strumento libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) per la classificazione dei vettori di supporto. Tuttavia, sono confuso sul formato dei dati di input.

Dal README:

Il formato del file di dati di addestramento e test è:

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

Ogni riga contiene un'istanza ed è terminata da un carattere '\ n'. Per la classificazione, <label>è un numero intero che indica l'etichetta della classe (è supportata la multi-classe). Per regressione, <label>è il valore target che può essere qualsiasi numero reale. Per SVM di una classe, non viene utilizzato, quindi può essere qualsiasi numero. La coppia <index>:<value>fornisce un valore di caratteristica (attributo): <index>è un numero intero che inizia da 1 ed <value> è un numero reale. L'unica eccezione è il kernel precompilato, dove <index>inizia da 0; vedere la sezione dei kernel precompilati. Gli indici devono essere in ordine ASCENDENTE. Le etichette nel file di test vengono utilizzate solo per calcolare precisione o errori. Se sono sconosciuti, basta riempire la prima colonna con qualsiasi numero.

Ho le seguenti domande:

  1. Qual è l'uso di <index>? A quale scopo serve?
  2. Esiste una corrispondenza tra gli stessi valori di indice di diverse istanze di dati?
  3. Cosa succede se mi manca / salta un indice tra?

Lo chiedo perché il file di dati * * heart_scale che è incluso nel pacchetto per libsvm, sulla linea 12, l'indice parte da 2. È la <value>per l'indice 1 preso come sconosciuto / mancante? Nota: lo strumento tools / checkdata.py fornito con il pacchetto indica che il file * heart_scale * è corretto.

Risposte:


23

Questo link dovrebbe aiutare: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Si dice che i dati sono memorizzati in una matrice / matrice sparsa. In sostanza, significa che vengono memorizzati solo i dati diversi da zero e tutti i dati mancanti vengono considerati come valore zero. Per le tue domande:

a) L'indice serve semplicemente come modo per distinguere tra caratteristiche / parametri. In termini di iperspazio, sta semplicemente designando ciascun componente: ad esempio: gli indici 3-D (3 caratteristiche) 1,2,3 corrisponderebbero alle coordinate x, y, z.

b) La corrispondenza è puramente matematica, quando si costruisce l'iperpiano, servono da coordinate.

c) Se salti uno in mezzo, dovrebbe essere assegnato un valore predefinito pari a zero.

In breve, +1 1: 0.7 2: 1 3: 1 si traduce in:

Assegnare alla classe +1, il punto (0.7,1,1).


4

Solo una guida piccola e veloce:

Il formato LibSVM significa che il tuo documento deve essere già pre-elaborato. Devi sapere quante classi di classificazione verranno utilizzate (molto probabilmente 2) e lo spazio delle funzioni.

La classe di classificazione è qualcosa di vero / falso; 0,1, ... Qui è necessario trasformarlo in numeri interi (ad es. 0,1).

Lo spazio delle caratteristiche è uno spazio per i tuoi dati multidimensionali. Ogni personaggio (vettore) dovrebbe avere il suo ID (indice) e il suo valore. Ad esempio 1: 23.2 significa che la caratteristica / dimensione 1 ha valore 23.2

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.