Точность теста выше, чем обучение. Как интерпретировать?

23

У меня есть набор данных, содержащий не более 150 примеров (разделенных на обучение и тестирование) со многими функциями (более 1000). Мне нужно сравнить классификаторы и методы выбора функций, которые хорошо работают с данными. Итак, я использую три метода классификации (J48, NB, SVM) и 2 метода выбора объектов (CFS, WrapperSubset) с различными методами поиска (Greedy, BestFirst).

Сравнивая, я смотрю на точность тренировки (5-кратное перекрестное складывание) и точность теста.

Вот один из результатов J48 и CFS-BestFirst:

{"precisionTraining": 95.83, "precisionTest": 98.21}

Многие результаты таковы, и на SVM есть много результатов, которые указывают, что точность теста намного выше, чем обучение (тренировка: 60%, тестирование: 98%)

Как я могу осмысленно интерпретировать такие результаты? Если бы это было ниже, я бы сказал, что это переоснащение. Можно ли что-то сказать о предвзятости и дисперсии в этом случае, посмотрев все результаты? Что я могу сделать, чтобы сделать эту классификацию значимой, например, повторно выбрать наборы обучения и тестов или просто использовать перекрестную проверку всех данных?

У меня 73 тренировочных и 58 тестовых экземпляров. Некоторые ответы не имели этой информации, когда они были опубликованы.

ercu
источник

Ответы:

21

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

  • Выполнено ли разделение во время 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.

Я предлагаю вам посчитать, какую разницу в точности вам нужно наблюдать с вашим заданным размером выборки, чтобы получить статистически значимую разницу. Если наблюдаемое отклонение меньше, вы не можете решить, какой алгоритм лучше с вашим данным набором данных: дальнейшая оптимизация не имеет смысла.

cbeleites поддерживает Монику
источник
Здесь есть отличная информация, чтобы переварить. во-первых, мне очень жаль, что я не дал точных цифр, так как не ожидал, что вы получите такие подробные цифры, и я также хотел сосредоточиться только на одной теме. Во всяком случае, у меня 73 тренировочных и 58 тестовых данных. они не разделены статистически, они были взяты мной в разное время. Учебные образцы сначала берутся в алгоритм выбора признаков (метод обертки fs также имеет внутреннее 5-кратное резюме), а затем 5-кратный, и берется лучшая точность, и модель сохраняется. а затем эта модель используется для расчета точности теста.
ercu
17

Точность на тренировочном наборе не имеет смысла в машинном обучении. Игнорируй это.


источник
Благодарность! У меня много результатов с одинаковой лучшей точностью теста, поэтому я не могу сейчас сравнивать результаты (я бы также посмотрел на точность обучения, чтобы сравнить, если вы этого не сказали :). Таким образом, вместо того, чтобы разделять на тестирование и обучение, подходит ли для моего случая несколько результатов перекрестной проверки для всего набора данных для сравнения результатов? или мне нужна другая метрика?
ercu
1
CV, безусловно, хорошая идея; в любом случае, обратите внимание, что может быть несколько «лучших» алгоритмов или наборов параметров (в том смысле, что они дают одинаковую или статистически неразличимую точность в лучшем случае) - это тоже не проблема. Более того, это означает, что вы получаете стабильные результаты - точный оптимум может свидетельствовать о том, что вы перегнали модель по параметрам выбора вишни.
8
Полезно знать точность обучающего набора, чтобы оценить степень переобучения вашего алгоритма прогнозирования (вычисляя разницу в точности между обучающими и тестовыми наборами).
Фрэнк Харрелл
Не могли бы вы объяснить, почему?
инф
1
По определению, методы ML основаны на производительности на невидимых данных, поэтому они не дают никаких гарантий об этом результате (ожидается, что модель не будет повторно реализовывать механизм, лежащий в основе данных, как в статистическом моделировании). На практике многие методы дают слишком точные прогнозы, поэтому это только обман.
7

Есть несколько серьезных проблем с тем, как вы пошли по этому поводу. Прежде всего, разделение данных ненадежно, если общий размер выборки не огромен. Вы получите другие результаты, если разделитесь снова. Помимо прочего вы не учитываете доверительные интервалы при оценке точности. Во-вторых, 5-кратная перекрестная проверка не является достаточно точной. Может потребоваться повторить это 100 раз, чтобы добиться адекватной точности. В-третьих, вы выбрали в качестве показателя точности прерывистое неправильное правило подсчета очков (пропорция классифицирована правильно). Такое неправильное правило оценки приведет к выбору неправильной модели.

Фрэнк Харрелл
источник
3

Предполагая, что в реализации алгоритмов нет сбоев, давайте посмотрим на проблему.

Представьте себе, что вы берете небольшое подмножество из ваших тренировочных данных и запускаете на нем алгоритм обучения. Это, очевидно, будет очень хорошо. Всегда можно извлечь подмножество, которое достигает точности почти 98%.

Теперь ваши тестовые данные очень похожи на это подмножество? Если да, то вам нужно пойти и собрать больше данных, надеюсь, немного более разнообразных. С точки зрения отклонения, я бы сказал, что ваша разница высока.

shashydhar
источник
1

У вас слишком много функций (1000) для количества сэмплов (150). Вам нужно увеличить свои образцы или уменьшить количество функций.

Говорят, что обычно число функций ^ 2 = количество необходимых образцов. Итак, вам нужно как минимум миллион образцов.

user798719
источник
0

Это может произойти с использованием любого алгоритма ML и даже пользовательских классификаторов. Попробуйте разные схемы перекрестной проверки в k-кратном размере, например, в 2 или 10 раз. При более высоком k ожидается, что ошибка теста уменьшится.

mehrdadorm
источник