2016-10-15 2 views
1

Я работаю над проблемой классификации, где классы очень несбалансированы. Чтобы справиться с этой проблемой, я использовал чрезмерную выборку с заменой. (как предлагается здесь: http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/ ).Какой показатель использовать для оценки классификатора с несбалансированными данными?

Затем я делю набор данных (по выборке) на поезд и тестовый набор и тренирую наивный алгоритм Байеса. Когда я хочу проверить, можно ли использовать меру точности. Насколько я понимаю, для классов с низкими выборками я специально добавил копии образцов. Поэтому мой test_set содержит точные копии набора поездов. Что относительно матрицы замешательства, что это означает использовать матрицу замешательства над набором выборочных данных? Это хорошая практика?

+0

Просто общее замечание - вы не может ничего научиться с ** отдельным примером ** в классе. собрать ** порядков ** больше данных. – lejlot

ответ

2

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

В частности - вы имеете дело с несбалансированным набором данных. Главный вопрос: Почему неуравновешен? Причина в том, что данные real являются несбалансированными (например, вы имеете дело с бинарной классификацией с различными редкими положительными классами), или это является следствием некоторого нечетного способа сбора данных, что на самом деле не является случайной выборкой из основного процесса (например, обычные классы полностью сбалансированы, но ваш помеченный набор данных не является, поскольку люди предпочитают помечать положительные образцы в вашей проблеме). Если реальные данные не сбалансированы, то вы не можете изменить баланс в тестовом наборе, это полностью нарушит любые выводы, которые вы попытаетесь извлечь из экспериментов. Данные испытаний должны соответствовать репрезентативным образцом достоверных данных. Вы не можете изменить его «для своих нужд», никогда. Если последнее верно, то вы можете попытаться изменить тест, чтобы сделать его более похожим на истинные данные (тот же аргумент, что и раньше).

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

Подводя итог:

  • не изменяют распределение тестовых данных (без передискретизации!)
  • установить метрику, который соответствует , что вы хотите узнать
  • добавить эту информацию в схему обучения (например - присоединять классы весов для SVM, логистическая регрессия и т.д.)
+0

Спасибо за ваш ответ. Что вы подразумеваете под всегда сначала сплит-данными, а затем с pr-eprocess? Я представил пример своих данных в eidt. – user128751

+0

Подумайте, что произойдет, если вы перепробовали до разделения ваших данных (это предварительная обработка, о которой вы упомянули). Разве теперь не возможно, что вы могли бы получить те же наблюдения в учебных и тестовых наборах, как упомянуто в лейблоте? Считаете ли вы, что это может быть причиной для беспокойства о том, насколько хорошо модель будет обобщать на невидимые/новые данные? –

+0

Да, если я сначала перепробовал, а затем разделил данные на тренировку и тестирование, я бы получил то же самое наблюдение в наборе для обучения и тестирования, который не то, что я хочу. Итак, я должен сначала разделить свои данные, затем перебрать образец набора поездов, а затем использовать тестовый набор, который был получен до сверхсэмплирования. Правильно ли я понимаю? – user128751

Смежные вопросы