Я думаю, что первым шагом является проверка правильности заявленных результатов обучения и тестирования.
- Выполнено ли разделение во время 5-кратной перекрестной проверки таким образом, чтобы получить статистически независимые наборы обучающих / тестовых наборов? Например, если в данных повторяются измерения, всегда ли они оказываются в одном наборе?
- Точность 95,83% в 5-кратном резюме из 150 образцов соответствует 5 ошибочным из 130 обучающих выборок для 5 суррогатных моделей или 25 неправильным случаям для 5 * 130 обучающих выборок.
Точность теста 98,21% объяснить сложнее: во время одного прогона резюме каждый случай должен быть проверен один раз. Таким образом, возможные сообщаемые цифры должны быть с шагом 100% / 150. 98,21% соответствует 2,68 неправильным случаям (2 и 3 неправильных из 150 тестовых случаев дают точность 98,67 и 98,00% соответственно).
Если вы можете извлечь свою модель, рассчитайте сообщенные погрешности извне.
- Каковы точные данные для случайного ввода?
- Проведите внешнюю перекрестную проверку: разделите ваши данные и передайте в программу только обучающую часть. Предсказать «внешние» данные теста и рассчитать точность. Это соответствует выводу программы?
- Убедитесь, что заявленная «точность теста» основана на независимых данных (двойная / вложенная перекрестная проверка): если ваша программа выполняет оптимизацию на основе данных (например, выбирая «лучшие» функции путем сравнения многих моделей), это больше похоже на ошибку обучения (добро подходит), чем как ошибка обобщения.
Я согласен с @mbq, что ошибка обучения вряд ли когда-либо будет полезна в машинном обучении. Но вы можете оказаться в одной из немногих ситуаций, где это на самом деле полезно: если программа выбирает «лучшую» модель, сравнивая точность, но имеет только ошибки обучения, из которых вы можете выбрать, вам нужно проверить, действительно ли ошибка обучения допускает разумную ошибку. выбор.
@mbq обрисовал лучший сценарий для неразличимых моделей. Тем не менее, случаются и худшие сценарии: точно так же, как и точность теста, точность обучения также подвержена отклонениям, но имеет оптимистический уклон по сравнению с точностью обобщения, которая обычно представляет интерес. Это может привести к ситуации, когда модели невозможно будет отличить, хотя они действительно имеют разную производительность. Но их точность обучения (или внутреннее резюме) слишком близки, чтобы их можно было различить из-за их оптимистической предвзятости. Например, методы итеративного выбора признаков могут быть подвержены таким проблемам, которые могут даже сохраняться для точности внутренней перекрестной проверки (в зависимости от того, как реализована эта перекрестная проверка).
Поэтому, если такая проблема может возникнуть, я думаю, что это хорошая идея, чтобы проверить, может ли разумный выбор быть результатом точности, которую программа использует для принятия решения. Это будет означать проверку того, что внутренняя точность cv (которая предположительно используется для выбора наилучшей модели) не слишком или не слишком оптимистично настроена по отношению к внешне выполненному cv со статистически независимым расщеплением. Опять же, синтетические и / или случайные данные могут помочь выяснить, что на самом деле делает программа.
Второй шаг - посмотреть, имеют ли значение наблюдаемые различия для статистически независимых расщеплений, как уже указывало @mbq.
Я предлагаю вам посчитать, какую разницу в точности вам нужно наблюдать с вашим заданным размером выборки, чтобы получить статистически значимую разницу. Если наблюдаемое отклонение меньше, вы не можете решить, какой алгоритм лучше с вашим данным набором данных: дальнейшая оптимизация не имеет смысла.
Точность на тренировочном наборе не имеет смысла в машинном обучении. Игнорируй это.
источник
Есть несколько серьезных проблем с тем, как вы пошли по этому поводу. Прежде всего, разделение данных ненадежно, если общий размер выборки не огромен. Вы получите другие результаты, если разделитесь снова. Помимо прочего вы не учитываете доверительные интервалы при оценке точности. Во-вторых, 5-кратная перекрестная проверка не является достаточно точной. Может потребоваться повторить это 100 раз, чтобы добиться адекватной точности. В-третьих, вы выбрали в качестве показателя точности прерывистое неправильное правило подсчета очков (пропорция классифицирована правильно). Такое неправильное правило оценки приведет к выбору неправильной модели.
источник
Предполагая, что в реализации алгоритмов нет сбоев, давайте посмотрим на проблему.
Представьте себе, что вы берете небольшое подмножество из ваших тренировочных данных и запускаете на нем алгоритм обучения. Это, очевидно, будет очень хорошо. Всегда можно извлечь подмножество, которое достигает точности почти 98%.
Теперь ваши тестовые данные очень похожи на это подмножество? Если да, то вам нужно пойти и собрать больше данных, надеюсь, немного более разнообразных. С точки зрения отклонения, я бы сказал, что ваша разница высока.
источник
У вас слишком много функций (1000) для количества сэмплов (150). Вам нужно увеличить свои образцы или уменьшить количество функций.
Говорят, что обычно число функций ^ 2 = количество необходимых образцов. Итак, вам нужно как минимум миллион образцов.
источник
Это может произойти с использованием любого алгоритма ML и даже пользовательских классификаторов. Попробуйте разные схемы перекрестной проверки в k-кратном размере, например, в 2 или 10 раз. При более высоком k ожидается, что ошибка теста уменьшится.
источник