format danych libsvm [zamknięte]

31

Korzystam z narzędzia libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) do klasyfikacji wektora wsparcia. Jestem jednak zdezorientowany co do formatu danych wejściowych.

Z README:

Format pliku danych szkoleniowych i testowych to:

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

Każda linia zawiera instancję i kończy się znakiem „\ n”. Do klasyfikacji <label>jest liczbą całkowitą wskazującą etykietę klasy (obsługiwana jest wiele klas). W przypadku regresji <label>jest wartością docelową, która może być dowolną liczbą rzeczywistą. W przypadku SVM jednej klasy nie jest używany, więc może być dowolną liczbą. Para <index>:<value>podaje wartość cechy (atrybutu): <index>jest liczbą całkowitą rozpoczynającą się od 1 i <value> jest liczbą rzeczywistą. Jedynym wyjątkiem jest wstępnie obliczone jądro, gdzie <index>zaczyna się od 0; zobacz sekcję wstępnie obliczonych jąder. Indeksy muszą być w porządku rosnącym. Etykiety w pliku testowym służą wyłącznie do obliczania dokładności lub błędów. Jeśli są nieznane, wystarczy wypełnić pierwszą kolumnę dowolnymi liczbami.

Mam następujące pytania:

  1. Jakie jest zastosowanie <index>? Do czego to służy?
  2. Czy istnieje zgodność między tymi samymi wartościami indeksu różnych instancji danych?
  3. Co się stanie, jeśli pominę / pominę indeks pomiędzy?

Pytam, ponieważ plik danych * heart_scale *, który jest zawarty w pakiecie dla libsvm, w linii 12. indeks zaczyna się od 2. Czy <value>dla indeksu 1 wzięto jako nieznany / brakuje? Uwaga: narzędzie tools / checkdata.py dostarczone z pakietem mówi, że plik * heart_scale * jest poprawny.

Siddhant Saraf
źródło

Odpowiedzi:

23

Ten link powinien pomóc: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Wspomniano, że dane są przechowywane w rzadkiej formie tablicy / macierzy. Zasadniczo oznacza to, że przechowywane są tylko niezerowe dane, a wszelkie brakujące dane są traktowane jako wartość zatrzymania zero. Na twoje pytania:

a) Indeks służy jedynie jako sposób na rozróżnienie cech / parametrów. Jeśli chodzi o hiperprzestrzeń, oznacza to po prostu każdy komponent: Np .: indeksy 3-D (3 cechy) 1,2,3 odpowiadają współrzędnym x, y, z.

b) Korespondencja jest jedynie matematyczna, przy konstruowaniu hiperpłaszczyzny służą one jako współrzędne.

c) W przypadku pominięcia jednego z nich, należy mu przypisać domyślną wartość zero.

Krótko mówiąc, +1 1: 0,7 2: 1 3: 1 oznacza:

Przypisz do klasy +1 punkt (0,7,1,1).

Govind Gopakumar
źródło
4

Tylko mały i szybki przewodnik:

Format LibSVM oznacza, że ​​dokument musi być już wstępnie przetworzony. Musisz wiedzieć, ile klas klasyfikacji zostanie zastosowanych (najprawdopodobniej 2) i przestrzeń funkcji.

Klasa klasyfikacji to coś w rodzaju prawda / fałsz; 0,1, ... Tutaj musisz go przekształcić na liczby całkowite (np. 0,1).

Przestrzeń funkcji to przestrzeń dla danych wielowymiarowych. Każdy feauture (wektor) powinien mieć swój własny identyfikator (indeks) i swoją wartość. Np. 1: 23,2 oznacza, że ​​cecha / wymiar 1 ma wartość 23,2

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Xhudik
źródło