В этом блоге мы рассмотрим, как обрабатывать текстовые данные с помощью алгоритма Naive Bayes, его плюсы и минусы. Мы также рассмотрим алгоритм наивного Байеса Бернули.
Как обрабатывать текстовые данные?
Алгоритм наивного Байеса можно использовать для решения таких задач, как определение того, является ли электронное письмо спамом или нет, классификация отзывов как положительных или отрицательных, классификация любого текстового контента или анализ настроений. Рассмотрим отзывы ниже.
- Нам нужно найти все слова в отзывах
- Нам нужно преобразовать в нижний регистр
- Нам нужно удалить стоп-слова
4. Нам нужно создать вектор со всеми словами, как показано ниже, где 1 означает, что слово присутствует, а 0 означает, что слово отсутствует.
5. Нам нужно вычислить вероятности, как показано ниже.
P(food)=3/17 P(amazing)=1/17 P(worst)=1/17 P(service)=2/17 P(chicken)=1/17 and so on
6. Нам нужно рассчитать условные вероятности, как показано ниже:
P(food|positive)=2/11 P(food|negative)=1/6 P(amazing|positive)=1/11 P(amazing|negative)=0/6
7. Мы видим, что P(восхитительно|отрицательно)=0/6, поэтому, когда мы вычисляем вероятность того, что «восхитительная еда» будет отрицательной, она равна 0, как показано ниже, потому что одно значение равно 0. Мы хотим избежать такого сценарий, а также сглаживание, называемое «сглаживание по Лапласу».
P(negative|"amazing food")=P(amazing|negative)*P(food|negative)*P(negative)/P(amazing)*P(negative)=0
Что такое сглаживание по Лапласу?
Сглаживание по Лапласу добавляет 1 к каждому значению в векторе, так что ни одно из значений условной вероятности не будет равно 0. Если бы мы выполнили сглаживание по Лапласу для приведенной выше таблицы, то это привело бы к чему-то вроде этого
Теперь P(потрясающе)=8/108, P(отрицательно)=29/108 и P(потрясающе|отрицательно)=3/29. Теперь никакие вероятности не будут равны 0.
Что такое Наивный Байес Бернулли?
В наивном байесовском методе Бернулли векторные значения всегда равны 1, даже если количество вхождений может быть больше 1. Хотя мы не используем наивный байесовский метод Бернулли широко, в некоторых случаях он может быть полезен. Допустим, вы хотите классифицировать электронные письма как спам/хам (не спам). В этом случае мы не хотим, чтобы любые нежелательные электронные письма классифицировались как спам, потому что мы потеряли бы много важных электронных писем. Когда мы используем алгоритм наивного Байеса, в некоторых случаях мы можем получить больше ложных срабатываний. В таких случаях лучше попробовать Бернуллиевский наивный байесовский метод. Но использование всего этого зависит от типа проблемы, которую мы пытаемся решить.
Преимущества наивного Байеса:
- Это очень просто и может быть реализовано с меньшим количеством обучающих данных.
- это очень быстро
- Может обрабатывать как числовые, так и текстовые данные
- Он хорошо масштабируется, хорошо работает, даже если количество точек данных увеличивается.
- Может использоваться как для бинарной, так и для многоклассовой классификации
- Обработка пропущенных значений становится намного проще
- Также может делать вероятностные прогнозы
Недостатки наивного байесовского метода:
- Он предполагает условную независимость, поэтому очень трудно понять связь между признаками.
- При обработке непрерывных значений вам, возможно, придется правильно группировать значения.
- Сглаживание, безусловно, необходимо, иначе мы можем получить многие значения вероятности равными 0.
Полезные ссылки
- Github — https://github.com/MadhuRamiah/Yelp-Reviews
- Векторизатор — https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html
- Библиотеки Sklearn для текстовых данных — https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html