Multinomial Naive Bayes áp dụng trong classification

Multinomial Naive Bayes là một kỹ thuật phân loại cơ bản mà chúng ta nên biết. Được xây dựng trên cơ sở của định lí Bayes, kỹ thuật này thuộc loại phân loại theo xác xuất.

Multinomial Naive Bayes là gì?

Multinomial Naive Bayes là một mô hình phân loại xác xuất. Đây là một công thức phức tạp mà có thể được tìm hiểu chi tiết trên wiki.

Để giúp bạn hiểu rõ hơn về kỹ thuật này, hãy xem qua ví dụ đơn giản sau:

Giả sử chúng ta có 5 tài liệu và một số từ như sau:

  • 4 tài liệu đã được phân loại là “c” hoặc “j”
  • Tài liệu thứ 5 cần được phân loại là “c” hay “j”?

Prior:

  • P(c) = 3/4
  • P(j) = 1/4

Xác suất có điều kiện:

  • P(Chinese/c) = 3/7
  • P(Tokyo/c) = 1/14
  • P(Japan/c) = 1/14
  • P(Chinese/j) = 2/9
  • P(Tokyo/j) = 2/9
  • P(Japan/j) = 2/9

Cuối cùng, chúng ta tính được xác suất để chọn class:

  • P(c|d5) = 0.0003
  • P(j|d5) = 0.0001

Do đó, chúng ta chọn loại “c” cho “Doc5”.

Áp dụng Multinomial Naive Bayes bằng scikit learn

Dưới đây là một ví dụ khác về cách sử dụng scikit learn để áp dụng kỹ thuật phân loại này. Chúng ta sử dụng một file dữ liệu CSV:

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

df = pd.read_csv('temp/tweets.csv')
target = df['is_there_an_emotion_directed_at_a_brand_or_product']
text = df['tweet_text'].values.astype('U').tolist()

count_vect = CountVectorizer()
count_vect.fit(text)

transformed = count_vect.transform(["I love my iphone!!!"])
counts = count_vect.transform(text)

nb = MultinomialNB()
nb.fit(counts, target)

print(nb.predict(transformed))

Kết quả: “Positive emotion”

Dĩ nhiên, kết quả được dự đoán dựa trên xác suất đã được huấn luyện từ dữ liệu.

Hy vọng với bài viết này, bạn đã hiểu thêm về kỹ thuật Multinomial Naive Bayes và cách áp dụng nó trong phân loại.

FEATURED TOPIC