формат данных libsvm [закрыто]


31

Я использую инструмент libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) для классификации вспомогательных векторов. Однако меня смущает формат входных данных.

Из README:

Формат файла данных обучения и тестирования:

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

Каждая строка содержит экземпляр и заканчивается символом '\ n'. Для классификации <label>- целое число, обозначающее метку класса (поддерживается мультикласс). Для регрессии, <label>это целевое значение, которое может быть любым действительным числом. Для одноклассного SVM он не используется, поэтому может быть любым числом. Пара <index>:<value>дает значение признака (атрибута): <index>целое число, начинающееся с 1, и <value> действительное число. Единственным исключением является предварительно вычисленное ядро, где <index>начинается с 0; см. раздел предварительно вычисленных ядер. Индексы должны быть в порядке возрастания. Метки в файле тестирования используются только для расчета точности или ошибок. Если они неизвестны, просто заполните первый столбец с любыми числами.

У меня есть следующие вопросы:

  1. Какая польза от <index>? Какой цели это служит?
  2. Есть ли соответствие между одинаковыми значениями индекса разных экземпляров данных?
  3. Что если я пропущу / пропущу индекс между ними?

Я спрашиваю, потому что файл данных * heart_scale *, который включен в пакет для libsvm, в строке 12, индекс начинается с 2. Является ли <value>для индекса 1 неизвестным / отсутствующим? Примечание: инструмент tools / checkdata.py, поставляемый с пакетом, сообщает, что файл * heart_scale * правильный.

Ответы:


23

Эта ссылка должна помочь: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preperation

Упоминается, что данные хранятся в виде разреженного массива / матрицы. По сути, это означает, что сохраняются только ненулевые данные, а любые отсутствующие данные принимаются как нулевое значение удержания. По вашим вопросам:

а) Индекс просто служит способом различения признаков / параметров. В терминах гиперпространства он просто обозначает каждый компонент: например, 3-D (3 объекта) индексы 1,2,3 будут соответствовать координатам x, y, z.

б) Соответствие является просто математическим, при построении гиперплоскости они служат координатами.

c) Если вы пропустите один из них, ему должно быть присвоено значение по умолчанию, равное нулю.

Короче говоря, +1 1: 0,7 2: 1 3: 1 означает:

Присвойте классу +1 балл (0,7,1,1).


4

Просто маленький и быстрый гид:

Формат LibSVM означает, что ваш документ уже должен быть предварительно обработан. Вам необходимо знать, сколько классов классификации будет использоваться (скорее всего, 2) и пространство признаков.

Класс классификации - это что-то вроде true / false; 0,1, ... Здесь вам нужно преобразовать его в целые числа (например, 0,1).

Пространство объектов - это пространство для ваших многомерных данных. Каждое feauture (вектор) должно иметь свой собственный идентификатор (индекс) и свое значение. Например, 1: 23.2 означает, что элемент / измерение 1 имеет значение 23.2.

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.