Я пытаюсь реализовать свою собственную функцию перекрестной проверки для LIBSVM, однако я смущен тем, как обрабатывать структуры данных, которые были предоставлены мне на основе моего входные данные.Как разделить svm_problem на 5 сгибов для пользовательской проверки перекрестных ссылок - LIBSVM
Данные сохраняются в структуре svm_problem:
public class svm_problem implements java.io.Serializable
{
public int l;
public double[] y;
public svm_node[][] x;
}
Где: л длина блока данных; y - массив, содержащий их целевые значения; x - это массив указателей, каждый из которых указывает на представление одного обучающего вектора.
svm_node определяется как:
public class svm_node implements java.io.Serializable
{
public int index;
public double value;
}
Моя цель состоит в том, чтобы разделить обучающие данные на 5 складками, использовать 4 из них для обучения (функция svm_train), а также использовать один отдых, чтобы проверить результат (svm_predict), чтобы найти, какое значение C имеет наилучший результат предсказания (на основе функции ошибки).
Моя проблема заключается в том, как разделить данные на 5 складок с учетом структуры данных. Как структуры данных надлежащим образом разделены на 5 складок для того, чтобы мне приступить к оптимизации С.
Я использовал это в качестве руководства: A Practical Guide to Support Vector Classification
Если кто-то может дать пример или ссылку на пример о том, как это лучше всего сделать, было бы весьма полезно. Благодарю.
У меня уже есть два набора данных, один для обучения и один для тестирования. Я пытаюсь разбить набор данных обучения в 5 раз, чтобы выполнить перекрестную проверку, чтобы найти лучшее значение C. Это значение C будет использоваться, когда весь набор данных используется для обучения svm. Я не уверен, как проверить каждый набор, используя четыре других, чтобы найти лучший C. (C будет вручную обновлен мной). Должны ли четыре других быть объединены, а затем переданы в svm_train или каждый должен быть передан в svm_train отдельно? Функции включены в Libsvm. –
@MattKoczwara Предполагая, что 'svm_train' поэтапно обновляет параметры модели, на самом деле не имеет значения, используете ли вы четыре экземпляра 20%' svm_problem' или один экземпляр 80% 'svm_problem'. Я не знаком с конкретной библиотекой, но способ, которым я описывал разделение данных, довольно универсален, когда дело доходит до материала для машинного обучения. –