Низкая точность классификации, что делать дальше?


16

Итак, я новичок в области ОД и пытаюсь провести некоторую классификацию. Моя цель - предсказать исход спортивного события. Я собрал некоторые исторические данные и сейчас пытаюсь обучить классификатор. Я получил около 1200 сэмплов, 0,2 из которых я разделил для целей тестирования, другие я включил в поиск по сетке (включая перекрестную проверку) с различными классификаторами. Я пробовал SVM с линейными, rbf и полиноминальными ядрами и случайными лесами на данный момент. К сожалению, я не могу получить точность значительно больше 0,5 (так же, как при случайном выборе класса). Значит ли это, что я просто не могу предсказать исход такого сложного события? Или я могу получить точность не менее 0,7-0,8? Если это возможно, то что я должен смотреть дальше?

  • Получить больше данных? (Я могу увеличить набор данных до 5 раз)
  • Попробуйте разные классификаторы? (Логистическая регрессия, кНН и т. Д.)
  • Переоценить мой набор функций? Существуют ли ML-инструменты для анализа, какие функции имеют смысл, а какие нет? Может быть, я должен уменьшить свой набор функций (в настоящее время у меня есть 12 функций)?

Какова ваша точность обучения? А сколько у вас образцов в каждом классе?
Лев

1
Что это за спорт и что вы считаете «правильной» классификацией? Если вы просто пытаетесь предсказать исход выигрыша / проигрыша практически в любом крупном виде спорта, это почти немыслимо, что даже самый простой классификатор не может предсказать лучше, чем 0,5. Если, к примеру, вы пытаетесь предсказать выигрыш / проигрыш против спреда или какого-либо другого результата с недостатками, тогда гораздо лучше, чем 0,5, может быть трудно.
кардинал

Точность @Leo Training составляет около 0,5. Классы распределены равномерно, у меня есть классы 0 и 1.
fspirit

@cardinal Да, я пытаюсь предсказать исход выигрыша / проигрыша, без гандикапов. Можно ли достичь, скажем, точности 0,8 на тестовом наборе?
fspirit

1
@fspirit: Это зависит от спорта и неравенства в способностях между участниками, с одной стороны. Просто знание того, кто участвует в каждом конкурсе, часто может быть сильным предиктором. Здесь и здесь есть пара связанных постов.
кардинал

Ответы:


17

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

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

Для этого составьте график ошибки проверки и ошибки обучающего набора как функции обучающих примеров.

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

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

Это общие правила, которые я бы использовал, когда столкнулся с такой проблемой, как ваша.

Приветствия.


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

Нет, я имею в виду ошибку обучающего набора там, где она написана. Ошибка обучения - это число неправильно классифицированных примеров в обучающем наборе, деленное на размер обучающего набора. Точно так же ошибка набора тестов - это число неправильно классифицированных примеров в наборе тестов, разделенное на размер обучающего набора. Кроме того, вы можете проверить курс машинного обучения Coursera ( class.coursera.org/ml-2012-002/lecture/index ), особенно видеофильмы «Рекомендации по применению машинного обучения». Эти советы имеют отношение к вашей ситуации.
sjm.majewski

Я участвовал в курсе, когда он проходил впервые. Что касается ошибки обучающего набора, я теперь вывожу ее тоже, для SVM она довольно высокая - 0,5, а для случайных лесов
fspirit

5

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

Вы можете начать с проверки гипотез или корреляционного анализа, чтобы проверить отношения. Создание специфичных для класса гистограмм для объектов (т. Е. Построение гистограмм данных для каждого класса для заданного объекта на одной оси) также может быть хорошим способом показать, хорошо ли различает объект два класса.

Важно помнить, однако, чтобы результаты вашего поискового анализа не влияли на ваш выбор для классификации. Выбор функций для классификации, основанный на предыдущем предварительном анализе на тех же данных, может привести к переобучению и предвзятым оценкам производительности (см. Обсуждение здесь ), но предварительный анализ, по крайней мере, даст вам представление о том, является ли задача, которую вы пытаетесь выполнить, даже возможно.


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

@BGreene - твой третий абзац сложный для меня. Если предварительный анализ показывает, что предиктор x1 сильно коррелирует с результатом, разве это не противоречит цели проверки этой корреляции, если не использовать x1 в качестве, по крайней мере, предиктора-кандидата в многомерной модели?
rolando2

@ rolando2 - Я не предлагаю, чтобы вы не включали функцию в качестве кандидата в качестве части процедуры выбора функции, но вы не должны выбирать функции на основе такого предварительного анализа, поскольку это приведет к превышению. Однако в целях оценки обобщенной эффективности модели классификатора выбор характеристик должен выполняться в рамках процедуры выбора модели (т. Е. В пределах каждого периода перекрестной проверки). Я предлагаю то, что исследовательский анализ и классификация должны рассматриваться как отдельные виды деятельности - каждый говорит вам разные вещи о ваших данных
BGreene

3

Хорошо, что вы разделили свои данные на тренировочные и тестовые данные.

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

Избавление от функций может избежать некоторых типов переоснащения. Тем не менее, это не должно улучшить ошибку на вашем тренировочном наборе. Низкая ошибка в вашем тренировочном наборе и высокая ошибка в вашем тестовом наборе могут указывать на то, что вы используете слишком гибкий набор функций. Тем не менее, безопаснее проверить это путем перекрестной проверки, чем в вашем тестовом наборе. После выбора набора функций на основе набора тестов он больше не действует в качестве набора тестов.


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

50%

В «возможности ужасны» я включаю случай, когда нет решения, которое возможно. Однако я в этом очень сомневаюсь. Я не знаю ни одного вида спорта, в котором нельзя было бы увидеть, что один конкурент фаворит другого. Это возможно даже в каменных ножницах.
Дуглас Заре

1

Почему бы не следовать принципу «сначала посмотри на графики данных». Одна вещь, которую вы можете сделать, это двухмерная диаграмма рассеяния условных плотностей двух классов для двух ковариат. Если вы посмотрите на них и не увидите практически никакого разделения, которое может указывать на отсутствие предсказуемости, вы можете сделать это со всеми ковариатами. Это дает вам некоторые идеи о возможности использовать эти ковариаты для прогнозирования. Если вы видите некоторую надежду на то, что эти переменные могут немного отделиться, тогда начинайте думать о линейных дискриминантах, квадратичных дискриминантах, распознавании ядра, регуляризации, древовидной классификации, SVM и т. Д.


Извините, ковариат == особенность?
fspirit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.