Изменения

Перейти к: навигация, поиск

Классификация текстов и анализ тональности

6037 байт добавлено, 19:47, 23 января 2020
Наивная байесовская модель
Далее все вероятности подсчитываются по методу максимального правдоподобия.
 
<math>c = argmax_{c \in C} P(c)\prod_{k=1}^{n} P(t_k|c)</math>
Преимущества метода:
* легкая интерпретируемость результатов работы алгоритма.
Недостатками являются относительно частое низкое качество классификации и неспособность учитывать зависимость результата классификации от сочетания признаков. ===== Многомерная модель =====В многомерной(multivariate) модели документ – это вектор бинарных атрибутов, показывающих, встретилось ли в документе то или иное слово. Когда мы подсчитываем правдоподобие е документа, мы перемножаем вероятности того, что встретилось каждое слово из документа и вероятности того, что не встретилось каждое (словарное) слово, которое не встретилось. Получается модель многомерных испытаний Бернулли. Наивное предположение в том, что события «встретилось ли слово» предполагаются независимыми. Математически: пусть <math>V = \{w_t\}_{t=1}^{|V|}</math> – словарь. Тогда документ <math>d_i</math> – это вектор длины <math>|V|</math>, состоящий из битов <math>B_{it}</math>. <math>B_{it} = 1</math> тогда и только тогда, когда слово <math>w_{t}</math> встречается в документе <math>d_{i}</math>. Правдоподобие принадлежности <math>d_{i}</math> классу <math>c_{j}</math>: <math>P(d_i|c_j) = \prod_{t=1}^{|V|}(B_{it} \times P(w_t|c_j) + (1 - B_{it}) \times (1 - P(w_t|c_j)))</math> Для обучения такого классификатора нужно обучить <math>P(w_t|c_j)</math>. Пусть дан набор документов <math>D = \{d_{i}\}</math>, которые уже распределены по классам <math>c_{j}</math> (возможно, даже вероятностно распределены), дан словарь <math>V = \{w_t\}</math>, и мы знаем биты <math>B_{it}</math> (знаем документы). Тогда можно подсчитать оптимальные оценки вероятностей того, что то или иное слово встречается в том или ином классе (при помощи лапласовой оценки): <math>P(w_i|c_j) = \frac{1 + \sum_{i=1}^{|D|} B_{it} \times P(c_j|d_i)}{2 + \sum_{i=1}^{|D|} P(c_j|d_i)}</math> Априорные вероятности классов можно подсчитать как <math>P(c_j) = \frac{1}{|D|}\sum_{i=1}^{|D|}P(c_j|d_i)</math>. Классификация происходит как обычно - максимизацией правдоподобия: <math>c = argmax_{j}P(c_j)P(d_i|c_j) = argmax_{j}(\log{\sum_{i=1}^{|D|}P(c_j|d_i)} + \sum_{t=1}^{|V|}\log{(B_{it} \times P(w_t|c_j) + (1 - B_{it}) \times (1 - P(w_t|c_j)))})</math>. ===== Мультиномиальная модель =====В мультиномиальной(multinomial) модели документ – это последовательность событий. Каждое событие – это случайный выбор одного слова из того самого «bag of words». Когда мы подсчитываем правдоподобие документа, мы перемножаем вероятности того, что мы достали из мешка те самые слова, которые встретились в документе. Наивное предположение в том, что мы достаём из мешка разные слова независимо друг от друга. Получается мультиномиальная генеративная модель, которая учитывает количество повторений каждого слова, но не учитывает, каких слов нет в документе. Математически: пусть <math>V = \{w_t\}_{t=1}^{|V|}</math> – словарь. Тогда документ <math>d_i</math> – это вектор длины <math>|V|</math>, состоящий из слов, каждое из которых «вынуто» из словаря с вероятностью <math>P(w_t|c_j)</math>. Правдоподобие принадлежности <math>d_{i}</math> классу <math>c_{j}</math>: <math>P(d_i|c_j) = P(|d_i|) \times |d_i|! \times \prod_{t=1}^{|V|}\frac{P(w_t|c_j)^{N_{it}}}{N_{it}!}</math>, где 𝑁𝑖𝑡 – количество вхождений <math>w_t<\math> в <math>d_i)</math>. Для обучения такого классификатора тоже нужно обучить вероятности <math>P(w_t|c_j)</math>. Пусть дан набор документов <math>D = \{d_{i}\}</math>, которые уже распределены по классам <math>c_{j}</math> (возможно, даже вероятностно распределены), дан словарь <math>V = \{w_t\}</math>, и мы знаем вхождения <math>N_{it}</math>. Тогда можно подсчитать апостериорные оценки вероятностей того, что то или иное слово встречается в том или ином классе (не забываем сглаживание – правило Лапласа): <math>P(w_t|c_j) = \frac{1 + \sum_{i=1}^{|D|} N_{it} \times P(c_j|d_i)}{|V| + \sum_{s=1}^{|V|}\sum_{i=1}^{|D|} N_{is}P(c_j|d_i)}</math>. Априорные вероятности классов можно подсчитать как <math>P(c_j) = \frac{1}{|D|}\sum_{i=1}^{|D|}P(c_j|d_i)</math>. Тогда классификация будет происходить как <math>c = argmax_{j}P(c_j)P(d_i|c_j) = argmax_{j}(\log{\sum_{i=1}^{|D|}P(c_j|d_i)} + \sum_{t=1}^{|V|}N_{it}\log{P(w_t|c_j)})</math>.
==== [[Метод опорных векторов (SVM)]] ====
Анонимный участник

Навигация