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;
}
: L 데이터 세트의 길이이고; y은 대상 값을 포함하는 배열입니다. x은 하나의 학습 벡터를 나타내는 포인터의 배열입니다.
public class svm_node implements java.io.Serializable
{
public int index;
public double value;
}
내 목표는 5 겹으로 훈련 데이터를 분할 훈련 (기능 svm_train)에 대한 그들의 4를 사용하고, 그 결과를 테스트하기 위해 나머지 하나를 사용하는 것입니다
svm_node는 다음과 같이 정의된다 (svm_predict)를 사용하여 가장 좋은 예측 결과를 갖는 C의 값을 찾습니다 (오류 기능 기준).
제 문제는 데이터 구조에 따라 데이터를 5 배로 분리하는 것입니다. 나를
내가 가이드로 이것을 사용하고있다 C.
의 최적화를 진행하는 방법은 데이터 구조가 제대로 위해 5 겹으로 나눌 수 있습니다 A Practical Guide to Support Vector Classification누군가가 예 또는를 제공 할 수있는 경우 이것이 최선의 방법에 대한 예제에 링크하면 크게 감사하겠습니다. 감사.
교육용 및 테스트 용 데이터 세트가 이미 두 개 있습니다. 최선의 C 값을 찾기 위해 교차 검증을 수행하기 위해 교육 데이터 세트를 5 폴드로 분할하려합니다. 이 C 값은 전체 데이터 세트가 svm을 학습하는 데 사용될 때 사용됩니다. 가장 좋은 C를 찾기 위해 4 가지 다른 방법을 사용하여 각 세트의 유효성을 검사하는 방법을 잘 모르겠습니다. C가 수동으로 업데이트됩니다. 각각 다른 4 개를 결합하여 svm_train으로 전달해야합니까? 아니면 각각을 svm_train에 개별적으로 전달해야합니까? 이 기능은 Libsvm에 포함되어 있습니다. –
@MattKoczwara'svm_train'이 모델 매개 변수를 점차적으로 업데이트한다고 가정 할 때 실제로 네 개의 20 %'svm_problem' 인스턴스 또는 한 개의 80 %'svm_problem' 인스턴스 중 어떤 것을 공급하는지 상관하지 않아야합니다. 필자는 특정 라이브러리에 익숙하지 않지만 데이터를 분할하는 방법은 기계 학습에 있어서는 매우 보편적입니다. –