4

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

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

ответ

1

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

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

2

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

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

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

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

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