2

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

Следует ли увеличить количество учебных документов? Я не думаю, что это мой код, потому что я проверил вычисления, но я не знаю, может быть, функция compute_numerators ошибочна? Для числитель части я использовал журналы из-за сгущенного задачи и суммируются вероятности условий и вероятности (number_of_documents_in_category/overall_number_of_documents) http://i.stack.imgur.com/GIwIp.png

Супер смущен и обескуражен, так как это заняло у меня так долго, и теперь я чувствую, как это было ни для чего, потому что оно даже не классифицировало ОДИН документ правильно :(

@Bob Dillon, Привет, благодарю вас за подробный ответ. Мой самый большой вопрос из этого заключался в том, что вы подразумеваете под разделительным. есть четкое различие между документами между классами? Я действительно не знаю, как это ответить. Данные были классифицированы людьми, поэтому разделение возможно, но, возможно, s настолько близко к другим типам категорий, что он становится размытым? Может быть, компьютер не распознает разницу в используемых словах, которые классифицируются как одна вещь против другой категории? Я должен держать эти категории, я не могу переупорядочить категории, они должны быть такими, как есть. Я не уверен, как прототип в R, мне все равно не нужно будет записывать текстовые данные и запускать их? мне все равно не нужно будет создавать токенизацию и т. д.? Я собираюсь изучить прирост информации и SVM. Вероятно, я вернусь назад. Благодаря!

+0

Хорошо, что вы сравниваете это, чтобы знать, что это неправильно? Кроме того, магическое число в статистике равно 30. До тех пор, пока у вас будет более 30 наблюдений, ваш размер выборки должен быть достаточно большим. – FirebladeDan

+0

Ну, тестовый документ уже классифицирован, я просто хочу посмотреть, правильно ли он классифицирован. И я сравниваю предсказанное с фактическим. Да, у меня 776 так определенно покрывает 30 баз, но, возможно, для классификации текста требуется гораздо больше? – hope288

+0

Так что не волнуйся о том, что у тебя хороший выбор. По-прежнему не имеет смысла, с каким двигателем вы сравниваетесь. Ваш обученный набор отличается от вашего, сделанного в R или Matlab. Я все еще смущен, как вы знаете, что это неправильно. – FirebladeDan

ответ

2

Я только что создал свое собственное Наивное модель Байеса с нуля и подготовкой его на 776 документов

Наивный Байес, любит его название говорит, наивный алгоритм. Это очень плохо по сравнению с современными методами, такими как поддерживающие векторные машины или (глубокие) нейронные сети. Вы должны помнить об этом при использовании: ожидать лучших результатов, чем бросать монету, дало бы вам, но не очень.

пытался классифицировать документы, но это секретное документы неправильно на все три тестовых документах

только три тестовых документов? Это очень мало и ничего не говорит. Если у вас есть x документов, вы должны использовать не менее 20% для тестирования. Также рассмотрите возможность использования перекрестной проверки.

Следует ли увеличить количество учебных документов?

Это поможет. Золотое эмпирическое правило в машинном обучении состоит в том, что больше данных обычно будет использовать лучший алгоритм. Конечно, мы не всегда можем получить больше данных, или мы не можем позволить вычислительной мощности использовать больше данных, поэтому важны лучшие алгоритмы.

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

В заключение: тест на дополнительные данные. Если у вас есть документы 779, используйте для тестирования не менее 100 или сделайте cross validation.Если вы получите выше 50-60% точности, будьте счастливы, это достаточно хорошо для этого количества данных и Naive Bayes.

+0

@lVlad, спасибо за ваш ответ. Я увеличил количество тестов до 400, но только 3 были правильными :(Я увеличиваю количество тренировок до 6000 и собираюсь использовать 1200 документов для тестирования. Я также изучаю SVM, я скоро обновляюсь. Еще раз спасибо! – hope288

2

У вас много работы против вас.

  1. Слабое снижение мерность - остановка фильтрации слово только
  2. Multi-класс классификации
  3. Слабый классификатор
  4. мало данных учебных

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

Вы должны попробовать прототипировать свою систему перед тем, как перейти к реализации. Использование Octave, R или MatLab - хорошее место для начала. Убедитесь, что ваши данные разделены и алгоритм эффективен для ваших данных. Другие предложили использовать SVM и нейронные сети, а не классификацию Наивного Байеса. Это хорошее предложение. Каждый из них немного подстраивается, чтобы получить лучшую производительность. Я использовал API Google Prediction в качестве проверки первого порядка производительности, которую я могу ожидать от системы, а затем заменить ее на SVM или другой классификатор, чтобы оптимизировать производительность и сократить затраты/время ожидания/и т. Д. Это хорошо, чтобы получить базовую линию как можно быстрее и легче, прежде чем глубоко погрузиться в подводное плавание.

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

Я нашел this paper, чтобы быть хорошей теоретической трактовкой классификации текста, включая уменьшение функции.

Я был успешным с использованием Информационного коэффициента для уменьшения функции и нашел this paper, чтобы быть очень хорошим практическим руководством.

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

Удачи вам!

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