format data libsvm [ditutup]

31

Saya menggunakan alat libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) untuk mendukung klasifikasi vektor. Namun, saya bingung tentang format data input.

Dari README:

Format file data pelatihan dan pengujian adalah:

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

Setiap baris berisi instance dan diakhiri dengan karakter '\ n'. Untuk klasifikasi, <label>adalah bilangan bulat yang menunjukkan label kelas (multi-kelas didukung). Untuk regresi, <label>adalah nilai target yang bisa berupa bilangan real. Untuk SVM satu kelas, ini tidak digunakan sehingga dapat berupa angka berapa pun. Pasangan ini <index>:<value>memberikan nilai fitur (atribut): <index>adalah bilangan bulat mulai dari 1 dan <value> merupakan bilangan real. Satu-satunya pengecualian adalah kernel yang dikomputasi, di mana <index>dimulai dari 0; lihat bagian kernel yang sudah dikomputasi. Indeks harus dalam urutan ASCENDING. Label dalam file pengujian hanya digunakan untuk menghitung akurasi atau kesalahan. Jika tidak diketahui, cukup isi kolom pertama dengan angka apa saja.

Saya punya pertanyaan berikut:

  1. Apa gunanya <index>? Apa tujuannya?
  2. Apakah ada korespondensi antara nilai indeks yang sama dari berbagai contoh data?
  3. Bagaimana jika saya melewatkan / melewatkan indeks di antaranya?

Saya bertanya karena datafile * heart_scale * yang termasuk dalam paket untuk libsvm, pada baris 12, indeks dimulai dari 2. Apakah <value>indeks 1 diambil sebagai tidak diketahui / hilang? Catatan: alat / alat checkdata.py yang disediakan dengan paket mengatakan bahwa file * heart_scale * sudah benar.

Siddhant Saraf
sumber

Jawaban:

23

Tautan ini akan membantu: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Disebutkan bahwa data disimpan dalam bentuk array / matriks yang jarang. Pada dasarnya, ini berarti hanya data yang bukan nol yang disimpan, dan data yang hilang dianggap memiliki nilai nol. Untuk pertanyaan Anda:

a) Indeks hanya berfungsi sebagai cara untuk membedakan antara fitur / parameter. Dalam hal hyperspace, itu hanya menunjuk setiap komponen: Misalnya: indeks 3-D (3 fitur) 1,2,3 akan sesuai dengan koordinat x, y, z.

b) Korespondensi hanyalah matematika, ketika membangun hyper-plane, ini berfungsi sebagai koordinat.

c) Jika Anda melewatkan satu di antaranya, maka harus ditetapkan nilai default nol.

Singkatnya, +1 1: 0,7 2: 1 3: 1 diterjemahkan menjadi:

Tetapkan ke kelas +1, intinya (0,7,1,1).

Govind Gopakumar
sumber
4

Panduan kecil dan cepat:

Format LibSVM berarti bahwa dokumen Anda harus sudah diproses sebelumnya. Anda perlu tahu berapa banyak kelas klasifikasi yang akan digunakan (kemungkinan 2) dan ruang fitur.

Klasifikasi kelas adalah sesuatu seperti benar / salah; 0,1, ... Di sini Anda perlu mengubahnya menjadi bilangan bulat (mis. 0,1).

Ruang fitur adalah ruang untuk data multidimensi Anda. Setiap fitur (vektor) harus memiliki ID (indeks) dan nilainya sendiri. Misalnya 1: 23.2 berarti fitur / dimensi 1 memiliki nilai 23.2

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