Bài giảng Máy học nâng cao: Naive bayes classification cung cấp cho người học các kiến thức: Giới thiệu Naïve Bayes Classification (NBC), mô hình toán, các dạng phân phối dùng trong NBC, các ví dụ. Cuối bài giảng có phần bài tập để người học ôn tập và củng cố kiến thức.
Trịnh Tấn Đạt Khoa CNTT – Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/ Nội dung Giới thiệu Naïve Bayes Classification (NBC) Mơ hình tốn Các dạng phân phối dùng NBC Các Ví dụ Bài Tập Giới Thiệu Naïve Bayes Classification (NBC) thuật toán dựa định lý Bayes lý thuyết xác suất để đưa phán đoán phân loại liệu dựa liệu quan sát thống kê Thuộc vào nhóm supervised learning Giới Thiệu ❖ Thuật tốn Nạve Bayes Classification áp dụng vào loại ứng dụng sau: Real time Prediction: NBC chạy nhanh nên thích hợp áp dụng ứng dụng nhiều vào ứng dụng chạy thời gian thực, hệ thống cảnh báo, hệ thống trading … Text classification/ Spam Filtering/ Sentiment Analysis: NBC thích hợp cho hệ thống phân loại văn hay ngơn ngữ tự nhiên tính xác lớn thuật tốn khác Ngoài hệ thống chống thư rác ưu chuộng thuật toán Và hệ thống phân tích tâm lý thị trường áp dụng NBC để tiến hành phân tích tâm lý người dùng ưu chuộng hay không ưu chuộng loại sản phẩm từ việc phân tích thói quen hành động khách hàng … Bayes's theorem Gọi A, B hai kiện (event) Bayes's theorem Công thức Bayes tổng quát Bayes's theorem Posterior ~ likelihood x prior Trong đó: P(A): gọi evidence (cố định, xem số) P(B): gọi prior probability (xác suất tiền nghiệm) phân phối xác suất A P(A|B) : gọi likelihood, thể độ phù hợp A giá trị B khác P(B|A): gọi posterior probability (xác suất hậu nghiệm) phản ánh ước lượng cho B biết A Nạve Bayes Classification ❖ Mơ hình: Giả sử có tập huấn luyện chứa N mẫu x ={x1,x2, ,xd} Rd Giả sử có C classes: c {1,2,…,C} Hãy tính xác suất để điểm liệu rơi vào class c: Tính p(c|x) ??? , nghĩa tính xác suất để đầu class c biết đầu vào vector x (đây posterior probability) Từ đó, giúp xác định class điểm liệu x cách chọn class có xác suất cao Nạve Bayes Classification Dựa vào lý thuyết Bayes: mẫu số p(x) (evidence) khơng phụ thuộc vào c Trong : • p(c|x) : posterior probability • p(c): prior probability - ước lượng |Ni|/|N|, Ni tập phần tử liệu thuộc lớp ci • p(x|c): likelihood, tức phân phối điểm liệu class c, thường khó tính tốn x biến ngẫu nhiên nhiều chiều, cần rất nhiều liệu training để xây dựng phân phối Nạve Bayes Classification Khi số lượng thuộc tính mơ tả liệu lớn chi phí tính tồn p(x|c) lớn Dó giảm độ phức tạp thuật tốn Nạve Bayes giả thiết thuộc tính độc lập Khi đó, Xác suất = Giá trị thuộc tính không xuất tất lớp (“Outlook= Overcast” lớp “no”) Probability will be zero! A posteriori probability will also be zero! Sử dụng Laplace estimator Xác suất khơng có giá trị ❖ Laplace estimator Ví dụ : thuộc tính outlook cho lớp yes Giá trị thuộc tính nhiễu/ thiếu thơng tin Quá trình học: bỏ qua liệu nhiễu Quá trình phân lớp : bỏ qua thuộc tính nhiễu Ví dụ Ví dụ Gaussian Naive Bayes (Dữ liệu liên tục) Khi liệu liên tục, cần có cách tính cho likelihood Ước Lượng Likelihood Dựa Vào Hàm Phân Phối Xác Suất ❖ Giả sử thuộc tính có phân phối Gaussian Hàm mật độ xác suất tính sau mean standard deviation hàm mật độ xác suất f(x) ~ likelihood Dữ liệu liên tục Ví dụ Dữ liệu liên tục Ví dụ: Phân loại email Bài tốn phân loại mail Spam (S) Not Spam (N) Ta có training data gồm E1, E2, E3 Cần phân loại E4 Bảng từ vựng:[w1,w2,w3,w4,w5,w6,w7] Số lần xuất từ email tương ứng bảng Ví dụ: Phân loại email Tính Prior probability Sử dụng Laplace Smoothing với α=1 ta tính xác suất xuất từ văn sau: Ví dụ: Phân loại email Vậy ta tính được: Ví dụ: python code cho ví dụ from sklearn.naive_bayes import MultinomialNB import numpy as np # train data e1 = [1, 2, 1, 0, 1, 0, 0] e2 = [0, 2, 0, 0, 1, 1, 1] e3 = [1, 0, 1, 1, 0, 2, 0] train_data = np.array([e1, e2, e3]) label = np.array(['N', 'N', 'S']) # test data e4 = np.array([[1, 0, 0, 0, 0, 0, 1]]) clf1 = MultinomialNB(alpha=1) # training clf1.fit(train_data, label) # test print('Probability of e4 in each class:', clf1.predict_proba(e4)) print('Predicting class of e4:', str(clf1.predict(e4)[0])) Kết luận Naïve Bayes Classification cho kết tốt thực tế chịu giả thiết tính độc lập có điều kiện (khi cho nhãn/lớp) thc tính dễ cài đặt, thời gian train test nhanh sử dụng phân loại text, spam, etc hoạt động với feature vector mà phần liên tục (sử dụng Gaussian Naive Bayes), phần lại dạng rời rạc (sử dụng Multinomial Bernoulli) Hạn chế: giả định độc lập (ưu điểm nhược điểm) hầu hết trường hợp thực tế có thuộc tính đối tượng thường phụ thuộc lẫn liệu có nhiều thuộc tính dư thừa Nạve Bayes khơng hiệu liệu liên tục khơng tn theo phân phối chuẩn Tìm hiểu thêm Probabilistic Graphical Model (Mơ hình xác suất dạng đồ thị) Bayesian network (BN) (Mạng Bayesian) Bài Tập 1) Toy example: Phân lọai giới tính Male/Female dựa vào thơng tin chiều cao cân nặng Cài đặt chương trình demo thuật tốn Nạve Bayes Tham khảo: https://alphacoder.xyz/naive-bayes/ Bài Tập 2) Nhận dạng ký tự dùng thuật tốn Nạve Bayes The Database: UCI Letter-Recognition Data in a text file 26 classes: A to Z 16-D feature vectors 20,000 samples https://archive.ics.uci.edu/ml/datasets/letter+recognition ... Có ba loại sử dụng phổ biến là: Gaussian Naive Bayes, Multinomial Naive Bayes, Bernoulli Naive Các Phân Phối Thường Dùng Cho Likelihood ❖ Gaussian Naive Bayes (dùng cho liệu liên tục – dạng số)... Giới thiệu Naïve Bayes Classification (NBC) Mơ hình tốn Các dạng phân phối dùng NBC Các Ví dụ Bài Tập Giới Thiệu Nạve Bayes Classification (NBC) thuật tốn dựa định lý Bayes lý thuyết... định class liệu dựa giả thiết có tên Naive Bayes Classifier (NBC) NBC có tốc độ training test nhanh Việc giúp mang lại hiệu cao tốn large-scale Nạve Bayes Classification • Ở bước training,việc