2013-06-05 3 views
1

Я использую классификатор Наивного Байеса. После этого tutorial. Для подготовленных данных я использую 308 вопросов и классифицирую их по 26 категориям, которые помечены вручную. Перед отправкой данных я выполняю NLP. В NLP я выполняю (удаление пунктуации, токенизацию, удаление и удаление стоп-слова) Эти отфильтрованные данные используются для ввода mahout. Используя mahout NBC, я тренирую эти данные и получаю файл модели. Теперь, когда я запускаюКак повысить точность классификатора Naive Bayes?

mahout testnb 

команда, которую я получаю правильно подобранные экземпляры как 96%.

Теперь для моих тестовых данных я использую 100 вопросов, которые я указал вручную. И когда я использую обученную модель с тестовыми данными, я получаю Правильно классифицированные экземпляры как 1%. Это меня разозлило.

Может кто-нибудь предложить мне, что я делаю неправильно или предложить мне некоторые способы увеличить производительность NBC.?

Кроме того, в идеале, сколько данных вопросов я должен использовать для обучения и тестирования?

+0

У вас есть 300 помеченных входных «векторов» для обучения? Ты серьезно? –

+0

@ThomasJungblut 300 слишком меньше? Сколько вопросов мы должны идеально тренировать для каждого класса/категории? – SLearner

ответ

5

Это, по-видимому, классическая проблема "overfitting" ... где вы получаете очень высокую% точности на тренировочном наборе, но низкий% в реальных ситуациях.

Вам, вероятно, потребуется больше учебных примеров. Кроме того, существует вероятность того, что 26 категорий не будут соответствовать вашим функциям. Машиноведение не является магическим и требует какой-то статистической взаимосвязи между переменными и результатами. Фактически, что NBC может делать здесь, это фактически «запоминание» набора тренировок, который совершенно бесполезен для вопросов вне памяти.

+0

Я увеличил количество обучаемого набора данных до 600, тестовый набор данных до 100, уменьшил категории и теперь его 8 категорий. И получил точность 17% от тестовых данных без НЛП. И с НЛП, я получаю точность 10%. Выполнение НЛП (удаление пунктуации, снятие стоп-слова, токенизация и стеблирование) Прошу предложить мне совет. Не могу понять, что я делаю неправильно. Должен ли я использовать НЛП? а также сколько я должен увеличить подготовленные и тестовые данные? – joashp

+1

@ user2331441 Я считаю, что вы не ошибаетесь, его статистическая проблема, скажем, в категориях, которые вы подготовили 80 (по 10 для каждой категории), тогда будущие предложения в вашем тестовом наборе должны иметь некоторые родственные/похожие слова. например, если вопрос, «какой цвет является солнцем?» и вы подготовили ответ, чтобы «солнце было желтым». то если в будущих вопросах не будет содержаться слово «цвет» и «солнце», тогда вы не получите удар по вашему ответу, поэтому, если кто-то введет вопрос «какой оттенок звезды, что земля вращается?» нет никакой корреляции между вашими обученными данными и запрошенным вопросом ... –

+1

Чем больше данных вы тренируете, тем больше у вас будет точность ... (чем больше текст текста, тем больше вероятность, что вы получите хиты, но также более вероятно, что вы получите ложные срабатывания) ... это только мой опыт до сих пор! –