Полиномиальный наивный байесовский метод для классификации документов и обработки естественного языка (NLP)
Мультиномиальная наивная реализация Байеса в Python 3.8, NumPy и NLTK.
Вступление
Наивный Байес - вероятностный подход к построению моделей классификации данных. Он сформулирован в виде нескольких методов, широко используемых в качестве альтернативы основанной на расстоянии кластеризации K-средних и лесам деревьев решений, и рассматривает вероятность как «вероятность» того, что данные принадлежат определенному классу. Существуют гауссовская и полиномиальная модели наивного Байеса.
Полиномиальная модель дает возможность классифицировать данные, которые не могут быть представлены в числовом виде. Его главное преимущество - значительно меньшая сложность. Это дает возможность выполнять классификацию с использованием небольших обучающих наборов, не требуя постоянного повторного обучения.
Аудитория читателей этого рассказа узнает о полиномиальном наивном алгоритме классификации Байеса и его реализации в Python 3.8 с использованием новейших библиотек NumPy и NLTK.
Полиномиальные наивные байесовские классификаторы
Полиномиальный наивный байесовский метод широко используется для отнесения документов к классам на основе статистического анализа их содержания. Он предоставляет альтернативу тяжелому семантическому анализу на основе ИИ и значительно упрощает классификацию текстовых данных.
Классификация направлена на отнесение фрагментов текста (то есть документов) к классам путем определения вероятности того, что документ принадлежит к классу других документов, имеющих ту же тему.
Каждый документ состоит из нескольких слов (т.е. терминов), которые способствуют пониманию содержания документа. Класс - это тег одного или нескольких документов, относящихся к одной и той же теме.
Маркировка документов одним из существующих классов выполняется путем статистического анализа, проверки гипотезы о том, что термины документа уже встречались в других документах из определенного класса. Это увеличивает вероятность того, что документ принадлежит к тому же классу, что и документы, уже классифицированные:
Дано: образцы 𝑺, предназначенные для классификации:
Каждый образец в 𝑺 определяется как строка, которая встречается в одном или нескольких документах из класса 𝑪:
Классификация проводится на основании документов 𝐷, уже засекреченных:
Чтобы выполнить классификацию, члены 𝑺 представлены вектором. Каждый признак 𝒘ᵢ из 𝑾 - это частота появления соответствующего 𝒊-го термина в документах из класса 𝑪. Каждый вектор признаков 𝑾 - гистограмма частот встречаемости термина / класса:
Классификация выполняется путем оценки вероятности 𝒑 (𝒘ᵢ | 𝑪) 𝒊 = 𝟏..𝒏, что термины в 𝑺 встречаются в документах 𝐷 из класса 𝑪.
Полиномиальная модель основана исключительно на оценке вероятностной решающей функции, заключенной из теоремы Байеса.
Байесовская вероятность 𝒑 (𝑪ₖ | 𝑾) вычисляется следующим образом:
Основная идея наивного Байеса состоит в том, что все особенности в независимо вносят вклад в вероятность того, что 𝑺 принадлежит 𝑪ₖ.
В качестве альтернативы, задняя (𝑪ₖ | 𝑾) выражается как:
Предполагаемый априор 𝒑 (𝐶ₖ) и вероятность 𝒑 (𝑾 | 𝐶ₖ) пропорционально влияют на исход, что 𝐶ₖ является классом.
Однако только его числитель влияет на оценку апостериорного 𝐏𝐫 (𝐶ₖ | 𝑾). Несмотря на это, свидетельство 𝒑 (𝑾) одинаково масштабирует 𝐏𝐫 (𝐶ₖ | 𝑾) каждого 𝐶ₖ и может быть просто исключено из оценки.
Полиномиальная модель используется для классификации документов с предположением, что 𝑺 представлена вектором признаков 𝑾. Каждая характеристика 𝒘ᵢ - это количество (то есть частота), с которым 𝒊-й член из 𝑺 встречается в документах 𝐷, уже отнесенных к одному из классов 𝐶.
Первоначально апостериорная 𝐏𝐫 (𝑾 | 𝐶ₖ) каждого оценивается как:
Априор 𝐏𝐫 (𝑪ₖ) является частным. числитель которого оценивается как факториал суммы всех характеристик ∀ 𝑤 ₖ ᵢ ∈ 𝑾 𝒊 = 𝟏..𝒏. В свою очередь, знаменатель получается как произведение факториалов 𝑤 ₖᵢ всех функций.
Числитель оценивается как распределение вероятностей, которое представляет собой вероятность всех возможных результатов, которые 𝑺 произошли в документах 𝑫 из класса 𝑪ₖ. Общее количество таких исходов равно факториалу суммы признаков ∀ 𝑤 ₖᵢ ∈ 𝑾, упомянутой выше.
В свою очередь, знаменатель 𝒑 (𝑪ₖ) получается как сумма всех возможных результатов, которые признаки 𝑾 произошли в корпусе документов 𝑫. Это фиксируется в арифметической прогрессии, полученной как сумма 𝑤 ₖᵢ каждой функции! факториал.
Вычисления, приведенные выше, очень похожи на факторизацию Лежандра вектора на простые множители. Кроме того, это подразумевает многомерное вычисление биномиального распределения. Когда знаменатель достаточно велик, (𝑪ₖ) значительно уменьшается. Обычно это дает возможность исключить особенности, встречающиеся во всех документах из корпуса 𝑫.
Вероятность 𝑺 заданного 𝑪ₖ является произведением вероятностей терминов 𝒑ₖᵢ в статистической степени 𝑤 ₖᵢ, отклоняющей нулевую гипотезу:
Полиномиальная модель, описанная выше, применяется для вычисления вероятности 𝒑 (𝑾 | 𝑪ₖ) того, что 𝑺 происходит от 𝑪ₖ.
Хотя в данном случае цель состоит в том, чтобы вычислить вероятность того, что 𝑪ₖ является классом. 𝐏𝐫 (𝐶ₖ | 𝑾) легко вычисляется путем представления полиномиальной модели в лог-пространстве:
Поскольку вероятность 𝒑 (𝑾 | 𝐶ₖ) является произведением вероятностей 𝒑ₖᵢ ≡ 𝒑 (𝑤 ᵢ | 𝐶ₖ), она представлена в логарифмической шкале. В этом случае 𝒑 (𝑾 | 𝐶ₖ) пропорционально максимально возможной степени, поддерживаемой статистической моделью.
В приведенном выше уравнении 𝗹𝗼𝗴 (𝒑) - натуральный логарифм вероятности 𝒑, вычисляемый как:
Логарифм 𝒑 всегда .𝟎, если 𝒑 меньше или равен 𝟏.𝟎, и натуральный логарифм 𝐥𝐧 (𝒑), если не указано иное.
Решение о классе 𝐶ₛ структуры принимается, например:
Класс 𝐶ₛ определяется как один из существующих классов 𝐶ₖ, для которого абсолютное значение 𝐏𝐫 (𝐶ₖ | 𝑾) является максимальным. Поскольку 𝐏𝐫 (𝐶ₖ | 𝑾) всегда отрицательно, берется его абсолютное значение.
Алгоритм полиномиальной байесовской классификации
Пусть 𝑺 - входная строка, 𝑫 - корпус 𝒛-документов, 𝑪 - набор 𝒎-классов:
Вычислите класс 𝑪ₛ образца 𝑺, следующим образом:
- Разделить образец 𝑺 на набор 𝒏-членов
- Для каждого 𝒌-го класса 𝑪ₖ 𝒌 = 𝟭..𝒎 выполните следующие действия:
- Вычислить вектор 𝑾-признаков ∀𝒘ₖᵢ ∈ 𝑾, где 𝒘ₖᵢ - частота, с которой соответствующий 𝒊-й член встречался в документах из 𝑪ₖ.
- Оцените априорную (𝑪ₖ) как полную вероятность того, что документ встречается в документах из класса 𝑪ₖ.
- Вычислите апостериорное 𝐏𝐫 (𝑪ₖ | 𝑺), добавив предварительное 𝒑 (𝑪ₖ) к сумме 𝒘ᵢ каждого члена, заданного 𝑪ₖ, вероятностей 𝒑 (𝒘ᵢ | 𝑪ₖ):
3. Определите класс 𝑪ₛ для 𝑺, для которого 𝐏𝐫 (𝑪ₖ | 𝑾) 𝒌 = 𝟭..𝒎 является максимальным:
Сложность этого алгоритма 𝜎 оценивается как:
𝒛 - общий объем документов в 𝑫, 𝒏 - количество терминов в выборке 𝑺, 𝒎 - количество классов 𝑪
Полу-контролируемое обучение
Полу-контролируемое обучение дает возможность повысить производительность полиномиальных моделей. Также это позволяет улучшить качество классификации за счет обучения модели на основе уже засекреченного корпуса документов.
Алгоритм полууправляемого обучения интуитивно прост и сформулирован в виде следующих шагов:
- Вычислите класс 𝑪ₛ формы 𝑺, используя полиномиальную модель, описанную выше.
- Приложить 𝑺, помеченную, к корпусу документов 𝐷.
- Переоцените модель классификации.
Для классификации каждого нового образца выполните следующий процесс 𝑺.
Процесс обучения под непосредственным руководством:
Процесс, проиллюстрированный выше, предоставляет возможность выполнять классификацию, присваивая выборки конечному набору классов, аналогично использованию алгоритма максимизации ожидания (EM).
Использование кода
Код в библиотеках Python 3.8, NumPy и NLTK, реализующий алгоритм полиномиальной классификации, приведен ниже:
ВЫХОД:
Для получения подробных результатов загрузите и запустите проект ниже: