Классификация документов с использованием наивного байесовского классификатора

Я делаю классификатор документов в mahout, используя простой наивный алгоритм Байеса. В настоящее время 98% данных (документов), которые у меня есть, относятся к классу A, и только 2% относятся к классу B. Мой вопрос заключается в том, что, поскольку существует такой большой разрыв в процентном соотношении документов класса A и документов класса B, будет ли классификатор сможет тренироваться точно еще?

Что я думаю сделать, так это игнорировать целую кучу документов класса А и «манипулировать» имеющимся у меня набором данных, чтобы не было такого большого разрыва в составе документов. Таким образом, набор данных, который у меня будет в конечном итоге, будет состоять из 30% класса B и 70% класса A. Но есть ли какие-либо последствия этого, о которых я не знаю?


person user1943079    schedule 24.06.2013    source источник


Ответы (2)


Вам не обязательно выбирать набор данных A, чтобы уменьшить количество его экземпляров. Для эффективного обучения на несбалансированных наборах данных доступно несколько методов, таких как недостаточная выборка большинства (именно то, что вы делали), передискретизация меньшинства, SMOTE и т. д. Вот эмпирическое сравнение этих методов: http://machinelearning.org/proceedings/icml2007/papers/62.pdf

В качестве альтернативы вы можете определить пользовательскую матрицу затрат для классификатора. Другими словами, предполагая, что класс B = положительный, вы можете определить стоимость (ложноположительный результат) ‹ стоимость (ложноотрицательный результат). В этом случае выходные данные классификатора будут смещаться в сторону положительного класса. Вот очень полезный учебник: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.164.4418&rep=rep1&type=pdf

person Ali    schedule 13.09.2013

Многое из этого влияет на то, насколько хороша «точность» как мера производительности, и это зависит от вашей проблемы. Если ошибочная классификация «A» как «B» так же плоха/нормальна, как и ошибочная классификация «B» как «A», то нет особых причин делать что-либо, кроме как просто помечать все как «A», поскольку вы знаете, что это гарантированно будет получено. вам точность 98% (при условии, что это несбалансированное распределение представляет истинное распределение).

Не зная вашей проблемы (и если точность - это мера, которую вы должны использовать), лучший ответ, который я мог бы дать, - «это зависит от набора данных». Вполне возможно, что вы могли бы получить точность выше 99% со стандартными наивными отсеками, хотя это маловероятно. В частности, для наивного Байеса вы можете отключить использование априорных значений (априорное значение — это, по сути, доля каждого класса). Это приводит к тому, что создается впечатление, что каждый класс имеет одинаковую вероятность появления, хотя параметры модели будут получены из неравных объемов данных.

Предлагаемое вами решение — обычная практика, иногда оно работает хорошо. Другой практикой является создание поддельных данных для меньшего класса (как бы это зависело от ваших данных, для текстовых документов я не знаю какого-либо особенно хорошего способа). Другой практикой является увеличение веса точек данных в недопредставленных классах.

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

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

person Raff.Edward    schedule 25.06.2013