Trong các phần trước, ta sẽ học lý thuyết về phần trăm và biến đổi ngẫunhiên. Để áp dụng kim chỉ nan này, ta vẫn lấy một ví dụ áp dụng bộ phânloại naive Bayes cho việc phân các loại chữ số. Phương thức này khôngsử dụng ngẫu nhiên điều gì khác ngoài các kim chỉ nan căn bạn dạng về xác suất.
Bạn đang xem: Sử dụng thuật toán Naive Bayes để phân loại dữ liệu dạng văn bản
Quá trình học hoàn toàn xoay quanh vấn đề đưa ra những giả định. Ví như muốnphân loại một mẫu dữ liệu mới không thấy bao giờ, ta cần được đưa ra mộtgiả định nào kia về sự tương đương giữa những mẫu dữ liệu. Bộ phân loại
Naive Bayes, một thuật toán thông dụng với dễ hiểu, mang định rằng tất cảcác đặc trưng đều độc lập với nhau nhằm dễ dàng hóa vấn đề tính toán.Trong phần này, công ty chúng tôi sẽ sử dụng mô hình này để nhận dạng ký kết tựtrong ảnh.
%matplotlib inlinefrom d2l import mxnet as d2limport mathfrom mxnet import gluon, np, npxnpx.set_np()d2l.use_svg_display()
18.9.1. Thừa nhận diện ký tự quang quẻ học¶
MNISTGluon cung ứng lớp MNIST trong mô-đun data.vision để tự động lấydữ liệu trường đoản cú Internet. Sau đó, Gluon vẫn sử dụng dữ liệu đã được thiết lập xuống.Chúng ta xác định rằng ta đang yêu thương cầu tập đào tạo và giảng dạy hay tập kiểm trabằng biện pháp đặt quý giá tham số train thành
True hoặc Falsetương ứng. Từng hình ảnh là một hình ảnh xám tất cả cả chiều rộng lớn và độ cao là(28), size ((28),(28),(1)). Ta đã sửdụng một phép chuyển đổi được thiết lập để vứt bỏ chiều của kênh cuốicùng. Ngoại trừ ra, tập tài liệu biểu diễn từng điểm hình ảnh bằng một trong những nguyên(8)-bit không âm. Ta lượng tử hóa (quantize) chúng thành các đặctrưng nhị phân để đơn giản dễ dàng hóa bài bác toán.
def transform(data, label): return np.floor(data.astype('float32') / 128).squeeze(axis=-1), labelmnist_train = gluon.data.vision.MNIST(train=True, transform=transform)mnist_test = gluon.data.vision.MNIST(train=False, transform=transform)
Downloading /home/tiepvu/.mxnet/datasets/mnist/train-images-idx3-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/train-images-idx3-ubyte.gz...Downloading /home/tiepvu/.mxnet/datasets/mnist/train-labels-idx1-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/train-labels-idx1-ubyte.gz...Downloading /home/tiepvu/.mxnet/datasets/mnist/t10k-images-idx3-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/t10k-images-idx3-ubyte.gz...Downloading /home/tiepvu/.mxnet/datasets/mnist/t10k-labels-idx1-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/t10k-labels-idx1-ubyte.gz...
Ta rất có thể truy cập vào cụ thể từng mẫu ví dụ có chứa hình ảnh và nhãn tương ứng.
image, label = mnist_train<2>image.shape, label
((28, 28), array(4, dtype=int32))
Mẫu được tàng trữ trong vươn lên là image trên tương ứng với một hình ảnh cóchiều cao cùng chiều rộng lớn là (28) pixel.
bộ phân lớp Bayes là 1 trong giải thuật trực thuộc lớp giải mã thống kê, nó rất có thể dự đoán phần trăm của một phần tử tài liệu thuộc vào trong 1 lớp là bao nhiêu. Phân lớp Bayes được dựa trên định lý Bayes (định lý được để theo tên tác giả của nó là Thomas Bayes)
1. Định lý Bayes
Gọi A, B là hai đổi thay cố

trong số đó ta gọi A là một trong những chứng cứ (evidence) (trong vấn đề phân lớp A vẫn là một phần tử dữ liệu), B là 1 trong những giả thiết nào làm cho A nằm trong về một lớp C làm sao đó. Trong vấn đề phân lớp chúng ta muốn xác minh giá trị P(B/A) là xác suất để trả thiết B là đúng với chứng cứ A trực thuộc vào lớp C với điều kiện ra đang biết các thông tin biểu lộ A. P(B|A) là một tỷ lệ hậu nghiệm (posterior probability tốt posteriori probability) của B với đk A. Trả sử tập tài liệu liệu quý khách của bọn họ được biểu hiện bởi các thuộc tính tuổi cùng thu nhập, cùng một quý khách X bao gồm tuổi là 25 và các khoản thu nhập là 2000$. Trả sử H là giả thiết quý khách đõ sẽ cài đặt máy tính, thì P(H|X) đề đạt xác xuất người tiêu dùng X đang mua máy tính với đk ta biết tuổi và thu nhập của bạn đó. Trái lại P(H) là xác suất tiền nghiệm (prior probability tuyệt priori probability) của H. Trong lấy một ví dụ trên, nó là tỷ lệ một khách hàng sẽ mua máy tính mà không cần phải biết các tin tức về tuổi hay các khoản thu nhập của họ. Xuất xắc nói biện pháp khác, xác suất này không nhờ vào vào nhân tố X. Tương tự, P(X|H) là phần trăm của X với đk H (likelihood), nó là một tỷ lệ hậu nghiệm. VÍ dụ, nó là xác suất người tiêu dùng X (có tuổi là 25 và các khoản thu nhập là $200) sẽ mua máy tính xách tay với đk ta đã biết người này sẽ mua trang bị tính. ở đầu cuối P(X) là xác suất tiền nghiệm của X. Trong ví dụ như trên, nó se là xác xuất một fan trong tập dữ liệu sẽ sở hữu được tuổi 25 và thu nhập cá nhân $2000.Posterior = Likelihood * Prior / Evidence
2. Phân lớp Naive Bayes
cỗ phân lớp Naive bayes hay cỗ phân lớp Bayes (simple byes classifier) chuyển động như sau:
Gọi D là tập tài liệu huấn luyện, trong các số ấy mỗi phần tử dữ liệu X được trình diễn bằng một vector chứa n quý hiếm thuộc tính A1, A2,...,An = x1,x2,...,xnGiả sử có m lớp C1, C2,..,Cm. Cho một phần tử tài liệu X, bộ phân lớp sẽ gán nhãn mang đến X là lớp có xác suất hậu nghiệm to nhất. Gắng thể, cỗ phân lớp Bayes sẽ dự đoán X nằm trong vào lớp Ci nếu và chỉ nếu:P(Ci|X) > P(Cj|X) (1 quý hiếm này sẽ tính dựa trên định lý Bayes.Để tìm tỷ lệ lớn nhất, ta nhận biết các giá trị P(X) là tương tự nhau với mọi lớp buộc phải không yêu cầu tính. Vì vậy ta chỉ việc tìm giá trị lớn số 1 của P(X|Ci) * P(Ci). để ý rằng P(Ci) được mong lượng bởi |Di|/|D|, trong những số đó Di là tập các thành phần dữ liệu ở trong lớp Ci. Nếu phần trăm tiền nghiệm P(Ci) cũng không khẳng định được thì ta coi chúng bằng nhau P(C1) = P(C2) = ... = P(Cm), lúc ấy ta chỉ cần tìm giá trị P(X|Ci) bự nhất.Khi số lượng các thuộc tính tế bào tả dữ liệu là phệ thì ngân sách chi tiêu tính toàn P(X|Ci) là rất lớn, dó đó hoàn toàn có thể giảm độ phức hợp của thuật toán Naive Bayes trả thiết các thuộc tính độc lập nhau. Khi ấy ta hoàn toàn có thể tính:P(X|Ci) = P(x1|Ci)...P(xn|Ci)Ví dụ 1:
Phân những bệnh nhân thành 2 lớp ung thư cùng không ung thư. Trả sử phần trăm để một tín đồ bị ung thư là 0.008 có nghĩa là P(cancer) = 0.008; cùng P(nocancer) = 0.992. Tỷ lệ để bệnh nhân ung thư có công dụng xét nghiệm dương tính là 0.98 và xác suất để người bị bệnh không ung thư có công dụng dương tính là 0.03 có nghĩa là P(+/cancer) = 0.98, P(+/nocancer) = 0.03. Hiện thời giả sử một người bệnh có hiệu quả xét nghiệm dương tính. Ta có:P(+/canncer)P(cancer) = 0.98 * 0.008 = 0.0078P(+/nocancer)P(nocancer) = 0.03 * 0.992 = 0.0298Như vậy, P(+/nocancer)P(nocancer) >> P(+/cancer)P(cancer).Do kia ta xét đoán rằng, người bệnh là ko ung thư.
Ví dụ 2:
Cơ sở tài liệu khách hàng:
1 | youth | high | no | fair | no |
2 | youth | high | no | excellent | no |
3 | middle | high | no | fair | yes |
4 | senior | medium | no | fair | yes |
5 | senior | low | yes | fair | yes |
6 | senior | low | yes | excellent | no |
7 | middle | low | yes | excellent | yes |
8 | youth | medum | no | fair | yes |
9 | youth | low | yes | fair | yes |
10 | senior | medium | yes | fair | yes |
11 | youth | medium | yes | excellent | yes |
12 | middle | medium | no | excellent | yes |
13 | middle | high | yes | fair | yes |
14 | senior | medium | no | excellent | no |
mang sử ta gồm một người tiêu dùng mới X có các thuộc tính
X = (age = youth, income = medium, student = yes, credit_rating = fair)Bây giớ cần khẳng định xem khách hàng X gồm thuộc lớp Cyes (mua sản phẩm tính) tuyệt không, ta đo lường như sau:P(Cyes) = 9/14 = 0.357Các xác suất thành phần: P(age = youth|Cyes) = 2/9 = 0.222P(age = youth|Cno) = 3/5 = 0.6P(income = medium|Cyes) = 4/9 = 0.444P(income = medium|Cno) = 2/5 = 0.4P(student = yes|Cyes) = 6/9 = 0.667P(student = yes|Cno) = 1/5 = 0.2P(credit_rating = fair|Cyes) = 6/9 = 0.667P(credit_rating = fair|Cno) = 2/5 = 0.2Cuối cùng:P(X|Cyes) = 0.222 * 0.444 * 0.667 * 0.667 = 0.044P(X|Cno) = 0.60.4 * 0.2 * 0.4 = 0.019P(X|Cyes)*P(Cyes) = 0.044 * 0.643P(X|Cno)*P(Cno) =0.019 * 0.357 = 0.007
Từ tác dụng này ta thấy P(X |Cyes)P(Cyes) có giá trị mập nhất, cho nên vì thế thuật toán Bayes sẽ tóm lại là người sử dụng X sẽ cài máy tính.
3. Khắc phục vấn đề phần trăm điều kiện bằng zero
Nếu vào dữ liệu huấn luyện và giảng dạy không có đối tượng người dùng X nào có thuộc tính lớp ck có thuộc tính Fi nhận một giá bán trị rõ ràng vij, phần trăm điều kiện P(Fi = xij | Ck) sẽ bởi 0.Khi phân lớp, nếu tất cả một đối tượng người sử dụng nào mang thuộc tính này thì xác suất phân vào lớp ông chồng luôn bởi 0.Khắc phục bằng cách ước lượng theo cách làm sau:
4. Ưu điểm
Giả định độc lập: vận động tốt mang lại nhiều bài toán/miền sữ liệu với ứng dụng.Đơn giản dẫu vậy đủ giỏi để xử lý nhiều vấn đề như phân lớp văn bản, lọc spam,..Cho phép phối hợp tri thức tiền nghiệm (prior knowledge) và dữ liệu quan giáp được (obserwed data). xuất sắc khi bao gồm sự chệnh lệch con số giữa những lớp phân loại.Huấn luyện mô hình (ước lượng tham số) dễ cùng nhanh.Xem thêm: 100+ Hình Nền Laptop Đẹp Dễ Thương, Cute Siêu Cấp Vũ Trụ, Hình Nền Laptop Cute Đẹp Nhất
5. Nhược điểm
Giả định chủ quyền (ưu điểm cũng đó là nhược điểm) phần lớn các ngôi trường hợp thực tiễn trong đó có các thuộc tính vào các đối tượng người tiêu dùng thường phụ thuộc vào lẫn nhau.Vấn đề zero (đã nêu cách giải quyết ở phía trên)Mô hình không được huẩn luyện bởi phượng pháp về tối ưu to gan lớn mật và chặt chẽ.Tham số mủa mô hình là những ước lượng phần trăm điều kiện đối chọi lẻ.Không tính tới việc tương tác giữa các ước lượng này.6. Ứng vẻ ngoài thể
6.1. Phân lớp văn phiên bản (document classification)
Tham khảo cuốn sách sau:Christopher Manning, Prabhakar Raghavan, và Hinrich Schutze,Introduction to lớn Information Retrieval, Cambridge University
Press, 2008. (Free)Chương 13. Text classification and Naïve Bayes
6.2. Thanh lọc spam (Spam filtering)
Tham khảo: Bayesian spam filtering http://en.wikipedia.org/wiki/Bayesian_spam_filteringhttp://en.wikipedia.org/wiki/Naive_Bayes_classifierhttp://en.wikipedia.org/wiki/Email_filtering
Bài viết xem thêm từ cuốn "Giáo trình khai thác dữ liệu" của thầy Hà quang quẻ Thụy - Nguyễn Hà nam giới - Nguyễn Trí Thành
