libsvm: C ++ против MATLAB: что с разными погрешностями?

У меня есть два мультиклассовых набора данных с 5 метками, один для обучения, а другой для перекрестной проверки. Эти наборы данных хранятся в виде файлов .csv, поэтому в этом эксперименте они действуют как элемент управления.

У меня есть оболочка C ++ для libsvm и функции MATLAB для libsvm.

Для C ++ и MATLAB:
Используя SVM C-типа с ядром RBF, я перебираю 2 списка значений C и Gamma. Для каждой комбинации параметров я тренируюсь на наборе обучающих данных, а затем прогнозирую набор данных перекрестной проверки. Я сохраняю точность прогноза в 2D-карте, которая соответствует значению C и Gamma, которое дало точность.

Я воссоздал различные наборы данных обучения и перекрестной проверки много-много раз. Каждый раз точность C ++ и MATLAB различна; иногда очень много! В основном MATLAB дает более высокую точность, но иногда реализация на C ++ лучше.

Что может быть причиной этих различий? Я пытаюсь использовать те же значения C / Gamma, что и остальные параметры SVM (по умолчанию).

0

Решение

Не должно быть никаких существенных различий, так как коды C и Matlab используют так же svm.c файл. Так в чем может быть причина?

  • ошибка реализации в вашем коде (ах), это, к сожалению, наиболее вероятная
  • Используемая обертка имеет некоторую ошибку и / или использует другую версию libsvm, чем ваш код matlab (libsvm написан на чистом C и поставляется с обертками python, Matlab и java, поэтому ваша обертка C ++ «не официальная»), или ваша обертка предполагает некоторые дополнительные значения по умолчанию, которые не являются значениями по умолчанию в реализациях C / Matlab / Python / Java
  • Вы выполняете перекрестную проверку в несколько рандомизированной форме (перетасовывание данных, а затем сворачивание, что является совершенно правильным и разумным, но приведет к разным результатам в двух разных прогонах)
  • Во время загрузки данных из .csv в один (или оба) кода выполняется некоторое округление / преобразование, что приводит к несоответствиям (действительно маловероятно, но все же возможно)
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]