Причины, по которым SVM Prediction дает значения ошибок «test» и «train», отличаются - R - PullRequest
0 голосов
/ 12 июня 2019

У меня большой набор данных, на котором я запускаю clusterSVM для двоичной классификации с использованием пакета SwarmSVM, который использует LibLinear для SVM.

Модель отлично работает на тренировочном наборе. Но когда я пытаюсь запустить прогноз на тестовом наборе, я получаю следующую ошибку:

Error in predict.LiblineaR(object$svm, tilde.newdata, ...) :    dims of 'test' and 'train' differ

Я исследовал эту проблему в максимально возможной степени и не могу найти причину, по которой модель считает, что размеры комплектов для испытаний и поездов разные:

  • наборы данных test и train имеют одинаковое количество столбцов, порядок столбцов, типы данных и имена столбцов
  • в тестовом наборе или в наборе данных для обучения отсутствуют NA или отсутствующие данные
  • и поезд, и тест были масштабированы. Фактически, данные поезда были сначала масштабированы, а затем тестовый набор был масштабирован на основе набора поездов
  • класс теста и поезда одинаковы
  • в тесте или поезде нет столбцов с постоянным значением (нет столбцов со стандартным отклонением, равным нулю)

Единственное, что сработало, это изменение соотношения тест / поезд с 10% -90% до 15% -85%. Итак, я предполагаю, что причина ошибки связана со значениями столбцов, которые исчезают при добавлении новых строк для проверки. Но я не понимаю, как это возможно. данные довольно большие (около 2 миллионов строк). Таким образом, тест будет иметь около 200 000 строк с соотношением тест-поезд 10-90%. Не знаете, почему добавление дополнительных 100 000 будет иметь значение?

Я знаю, что это широкий / абстрактный вопрос, но я нигде не смог найти правильного объяснения этому.

Если это поможет, вот параметры, которые я использую для модели:

 csvm_model <- clusterSVM( 
      x = train_x,
      y = train_y,
      type = 1,
      cost = 0.005,
      centers = 10000,
      cluster.fun = cluster.fun, 
      cluster.predict = cluster.predict
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...