Обычно это хорошая проблема, но я уверен, что это происходит потому, что происходит что-то смешное ...
В качестве контекста я работаю над проблемой в области выражения лица / распознаваниятаким образом, получение 100% точности кажется невероятно неправдоподобным (не то чтобы это было правдоподобно в большинстве приложений ...).Я предполагаю, что в наборе данных есть какое-то постоянное смещение, из-за которого SVM слишком легко получает ответ, или, скорее всего, я сделал что-то не так со стороны SVM.
Я ищу предложения, которые помогут понять, что происходит - это я (= мое использование LibSVM)?Или это данные?
Подробности:
- Около 2500 помеченных векторов / экземпляров данных (преобразованные видеокадры отдельных лиц - всего <20 отдельных лиц), проблема двоичной классификации,~ 900 функций / экземпляр.Несбалансированный набор данных с соотношением примерно 1: 4. </li>
- Запустил subset.py, чтобы разделить данные на тест (500 экземпляров) и поезд (оставшиеся).
- Ran "svm-train -t0 ".(Примечание: очевидно, нет необходимости в '-w1 1 -w-1 4' ...)
- Выполнить svm-предсказание в тестовом файле.Точность = 100%!
Испытано:
- Примерно 10 раз проверено, что я не тренируюсь и не тестирую одни и те же файлы данных с помощью какой-то непреднамеренной команды.ошибка аргумента строки
- повторный запуск subset.py (даже с -s 1) несколько раз и обучение / тестирование только нескольких различных наборов данных (в случае, если я случайно выбираю самый волшебный поезд / тестируемый pa
- запустил простую проверку, похожую на разницу, чтобы убедиться, что тестовый файл не является подмножеством обучающих данных.
- svm-шкала данных не влияет на точность (точность = 100%). (Хотячисло опорных векторов уменьшается с nSV = 127, bSV = 64 до nBSV = 72, bSV = 0.)
- ((странно)) с использованием ядра RBF по умолчанию (наоборот, линейное - то есть удаление '-t 0 ') приводит к тому, что с точностью до «мусора» (?!)
- (проверка работоспособности) выполнение svm-прогнозирования с использованием модели, обученной на наборе масштабированных данных по сравнению с немасштабированным набором данных, дает точность = 80% (то есть, он всегда угадывает доминирующий класс).чтобы удостовериться, что каким-то образом svm-предсказание действует на моей машине номинально.
Предварительный вывод?:
Что-то с данными искажено - каким-то образом, внутри набора данных,есть тонкий, управляемый экспериментатором эффект, который получает SVM.
(Это, на первый взгляд, не объясняет, почему ядро RBF, тем не менее, дает результаты с мусором.)
Буду очень признателен за любые предложения о том, как исправить мое использование LibSVM (если это на самом деле проблема) или b) определить, какой тонкий уклон экспериментатора в данных, которые получает LibSVM.