TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG BÀI TẬP LỚN HỌC MÁY Đề tài: Phân loại trang Web dựa vào phương pháp Nạve Bayes Sinh viên thực hiện:
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG
BÀI TẬP LỚN HỌC MÁY
Đề tài: Phân loại trang Web dựa vào phương pháp Nạve Bayes
Sinh viên thực hiện:
Giảng viên hướng dẫn: TS Nguyễn Nhật Quang
Hà Nội 12-2013
Trang 2MỤC LỤC
I Giới thiệu chung……… …3
II Cơ sở lý thuyết phân loại Nạve Bayes……… ….3
1 Phân loại Nạve Bayes……… … 3
2 Phân loại văn bản bằng Nạve Bayes……… ………5
III Giải quyết bài tốn……… 6
1 Datasets………6
2 Áp dụng Nạve Bayes cho giải quyết bài tốn thực tế ……… 7
IV Kết quả cài đặt thử nghiệm……… ….8
V Cài đặt và demo……….……… 9
1 Cài đặt……… 9
2.Demo……… 10
VI Kết luận và đánh giá……… 12
VII Tài liệu tham khảo……… 13
Chú dẫn ……… ……….14
Trang 3I Giới thiệu chung
Đề tài : Phân loại nội dung Web dựa trên phương pháp Nạve Bayes
- Ngơn ngữ lập trình : Java
Thành viên trong nhĩm:
Bùi Văn Tồn 20092754 CNTT2-K54
Đồn Xuân Dũng 20090506 CNTT2-K54
Hứa Mạnh Hùng 20091292 CNTT2-K54
Mục đích:
Phân loại nội dung trang Web thuộc lĩnh vực nào ? Như là Giải trí, Xã hội, Cơng nghệ,…
Yêu cầu :
- Lĩnh vực được phân loại cho trang web phải phù hợp với nội dung của nĩ
- Độ chính xác của tồn hệ thống ở mức chấp nhận được
Kịch bản:
Đưa vào nội dung Web Hệ thống phân tích nội dung(biểu diễn ) Đánh giá (tính tốn) Phân loại nội dung
II Cơ sở lý thuyết phân loại Nạve Bayes
1 Phân loại Nạve Bayes
- Là một trong các phương pháp học máy được áp dụng phổ biến nhất trong thực tế
- Dựa trên định lý Bayes
Biểu diễn bài tốn phân loại:
Một tập học D_train, trong đĩ mỗi ví dụ học x được biểu diễn là một véctơ n chiều : (x1, x2, x3, ,xn)
Một tập xác định các nhãn lớp : C={c1, c2, c3,…,cm}
Với mỗi ví dụ (mới) z, thì z sẽ được phân vào lớp nào ?
Mục tiêu: Xác định phân lớp cĩ thể ( phù hợp) nhất đối với z
Trang 4Giải thuật:
Giai đoạn học, sử dụng một tập học:
Đối với mỗi phân lớp cĩ thể (mỗi nhãn lớp) ci ∈ C
Tính giá trị xác xuất trước : P(ci) Đối với mỗi giá trị thuộc tính xj , tính giá trị xác suất xảy ra của giá trị thuộc tính đố với một phân lớp ci : P(xj|ci)
Giai đoạn phân lớp, đối với một tập ví dụ mới:
- Đối với mỗi phân lớp ci ∈ C , tính giá trị của biểu thức :
P(ci).∏n
j=1 P(xj|ci)
- Xác định phân lớp của z là lớp cĩ thể nhất c* :
c* = arg max P(ci).∏n
j=1 P(xj|ci) (ci ∈ C)
Ví dụ phân lớp Nạve Bayes:
Một sinh viên trẻvới thu nhập trung bình và mức đánh giá tín dụng bình thường sẽmua một cái máy tính?
http://www.cs.sunysb.edu/~cse634/lecture_notes/07classification.pdf
Biểu diễn bài tốn phân loại
z = (Age = Young, Income = Medium, Student=Yes, Credit_rating = Fair)
Cĩ 2 phân lớp cĩ thể c1 (“Mua máy tính”) và c2 (“khơng mua máy tính”
Trang 5Tính giá trị xác suất trước cho mỗi phân lớp
P(c1) = 9/14
P(c2) =5/14
Tính giá trị xác suất của mỗi giá trị thuộc tính đối với mỗi phân lớp
P(Age = Young|c1) = 2/9
P(Income = Medium|c1) = 4/9
P(Student = Yes|c1) = 6/9
P(Credit_rating= Fiar|c1) = 6/9
P(Age = Young|c2) = 3/5
P(Income = Medium|c2) = 2/5
P(Student= Yes|c2) = 1/5
P(Credit_rating= Fair|c2) = 2/5
Tính tốn xác suất cĩ thể xảy ra của ví dụ z đối với mỗi phân lớp
Đối với phân lớp c1
P(z|c1) = P(Age = Young|c1) P(Income = Medium|c1) P(Student=Yes|c1) P(Credit_rating= Fiar|c1) = (2/9).(4/9).(6/9).(6/9) = 0.044
Đối với phân lớp c2
P(z|c2) = P(Age = Young|c2) P(Income = Medium|c2) P(Student=Yes|c2) P(Credit_rating= Fiar|c2) = (3/5).(2/5).(1/5).(2/5) = 0.019
Kết luận : Anh ta (z) sẽ mua một máy tính
2 Phân loại văn bản bằng Nạve Bayes
Biểu diễn bài tốn phân loại văn bản
Tập học D_train, trong đĩ mỗi ví dụ học là một biểu diễn văn bản gắn với một nhãn lớp: D = {(dk, ci)}
Một tập các nhãn lớp xác định: C= {ci}
Giai đoạn học
Trang 6Từ tập các văn bản trong D_train, trích ra tập các từ khĩa (keywords/tems): T= {tj}
Gọi D_ci (⊆D_train) là tập các văn bản trong D_train cĩ nhãn lớp ci
Đối với mỗi phân lớp ci
o Tính giá trị xác suất trước của phân lớp ci : 𝑃 𝑐𝑖) =|𝐷𝑐𝑖 |
|𝐷|
o Đối với mỗi từ khĩa tj, tính xác suất từ khĩa tj xuất hiện đối với lớp ci
n(dk, tj) : là số lần xuất hiện của từ khĩa tj trong văn bản dk
Giai đoạn phân lớp đối với một văn bản mới d
Từ văn bản d, trích ra tập T_d gồm các từ khĩa (keywords) tj đã được định nghĩa trong tập T(T_d ⊆ T)
Giả sử : Xác suất từ khĩa tj xuất hiện đối với lớp ci là độc lập đối với vị trí của
từ khĩa đĩ trong văn bản
P(tj ở vị trí k|ci) = P( tj ở vị trí m|ci) , ∀k,m Đối với mỗi phân lớp ci, tính giá trị likelihooh của văn bản d đối với ci
P(ci).∏tj∈T_d P(tj|ci) Phân lớp văn bản d thuộc vào lớp c*
c* = arg max P(ci) ∏tj∈T_d P(tj|ci)
III Giải quyết bài tốn
Bài tốn : Phân loại nội dung Web dựa trên phương pháp Nạve Bayes
1 Datasets
Nội dung web được thu thập ( được lưu vào MySQL) dựa trên bộ webcrawler(1)
Thu thập từ trang http://vietnamnet.vn/ bao gồm:
Lĩnh vực Số bản ghi
Trang 7Mỗi bản ghi được gán nhãn từ 17 theo quy ước và nội dung của website
2 Áp dụng Nạve Bayes cho giải quyết bài tốn thực tế
Tập học: D_train lấy ra từ tập web đã thu thập được
- D_train ~ 33% tập Datasets
- Để tránh các ví học tập trung, lấy các bản ghi cĩ (id%3)=0
- Gọi D_ci là tập các web trong D_train mà cĩ nhãn lớp ci
Lĩnh vực Số văn bản trong D_train
(~33% tổng số tập web)
Số từ đơi một khác nhau
trong D_c i
Tập D= 1651
Mỗi ví dụ học học được gán nhãn lớp ci (i= 17 )
Giai đoạn học
B1 : Trích ra tập từ khĩa và tần suất xuất hiện của các từ trong từng tập D_ci
Vấn đề xảy ra trong bước này là tập các từ là rất lớn, trung bình khoảng 80.000
- 90.000 từ Nguyên nhân chủ yếu xảy ra vấn đề này là do lập bộ đếm 2 từ văn bản web Để khắc phục tình trạng này ta sẽ chỉ lấy 1.500 từ cĩ 2 kí tự cĩ tần số cao nhất Lý do lấy 1500 từ là vì từ khoảng này các từ mới cĩ ý nghĩa trong việc phân loại mà ta cĩ thể cảm quan bằng mắt thường
B2 : Tính P(ci)
Trang 8C i P(c i )
1 238/1651~0.144155
2 228/1651~0.138098
3 252/1651~01526348
4 190/1651~0.1150817
5 244/1651~0.147789
6 250/1651~0.1514234
7 249/1651~01508177
B3: Tính P(tj | ci) theo công thức
P(tj | ci) = 𝑇ầ𝑛 𝑠ố 𝑐ủ𝑎 𝑡ừ 𝑡𝑗 𝑡𝑟𝑜𝑛𝑔 𝑡ậ𝑝 𝑤𝑒𝑏 𝑐ó 𝑛ℎã𝑛 𝑙ớ𝑝 𝑐𝑖
𝑇ổ𝑛𝑔 𝑠ố 𝑡ừ đô𝑖 𝑚ộ𝑡 𝑘ℎá𝑐 𝑛ℎ𝑎𝑢 𝑡𝑟𝑜𝑛𝑔 𝑡ậ𝑝 𝐷_𝑐𝑖
Để tránh trường hợp hàm Naive Bayes hội tụ về 0 ta tính theo công thức :
Giai đoạn phân lớp với một văn bản d
B1 : Từ văn bản d, trích ra các từ khóa tj và tần xuất của nó trong d
B2 : Phân lớp văn bản d thuộc vào lớp c*
Do chỉ xét 1.500 từ có tần xuất cao nhất trong tập D_train nên sẽ xảy ra trường hợp :
Có từ trong d mà không được tính xác suất Để giải quyết vấn đề này, trong những trường hợp như thế ta coi P(tj | ci) =1 Nói cách khác, ta bỏ qua từ này
IV Kết quả cài đặt thử nghiệm
Lĩnh vực Gán nhãn sai
(tập huấn luyện 1/3)
Độ chính xác từng lĩnh vực
Độ chính xác toàn hệ thống
99.88 %
Trang 9Độ chính xác lĩnh vực Xã hội đạt : 99.16 % , những lĩnh vực khác 100%
Xét trên toàn hệ thống : 4/(4961-1651) ~ 99.88 %
Xác định nguyên nhân : Trong 4 văn bản web được gán nhãn là “chính trị” trong khi đúng phải là “xã hội”, nguyên nhân chủ yếu gây ra bởi sự tương đồng giữa hai lĩnh vực này Việc phân tách rõ ràng là tương đối khó, do đó với mức chính xác như trên hoàn toàn có thể chấp nhận được
Một vài kết quả cài đặt khác khi thay đồi kích thước tập huấn luyện
Lĩnh vực Gán nhãn sai
(tập huấn luyện 1/20)
Gán nhãn sai (tập huấn luyện 1/2)
Độ chính xác toàn hệ thống
Nhận xét : Ta có thể thấy để đạt được độ chính xác 0.01% ta phải bỏ ra chi phí khá lớn D_train= 50% Datasets Ngược lại với trường hợp tập huấn luyện nhỏ D_train= 1/20 Datasets lại cho kết quả khá tốt
V Cài đặt và demo
1 Cài đặt
Các lớp được cài đặt
DemTu.java : Trích rút tất cả các từ và tấn suất xuất hiện trong tập học
TapTuVung.java : Trong tập đầu ra ở lớp DemTu.java lấy 1500 kết quả có tần suất cao
nhất và tính tần suất theo phương pháp Naive Bayes
Classify.java : Lớp này sử dụng trong giai đoạn phân lớp
MainUI.java : Lớp này dùng để demo< Phân loại 1 văn bản web cụ thể đưa ra nhãn
lớp )
Trang 102.Demo
Giao diện chính( sử dụng JformDesigner )
Chạy thử nghiệm phân loại thể loại nội dung 1 web đã thu thập trong database
Cách sử dụng : Nhập nội dung web vào “Noi dung Web đã thu thập được” Click
“Check” hệ thống sẽ đưa ra nhãn lĩnh vực phù hợp với nội dung vừa đưa vào
Trang 11Giải thích kết quả
Sau khi đưa vào nội dung web thu thập được hệ thống sẽ tính hàm Nạve Bayes trên mỗi lĩnh vực, sau đĩ chọn giá trị lớn nhất và gán nhãn tương ứng
Ở ví dụ trên : Nội dung Web thuộc lĩnh vực “Cơng nghệ” cĩ c* = 2.099 x 10^59 là giá trị lớn nhất
Trang 12VI Kết luận và đánh giá
Khĩ khăn gặp phải:
Khĩ khăn:
- Việc thu thập tập thử nghiệm lớn là tương đối khĩ khăn Giải quyết :
- Làm việc vơi tập thử nghiệm nhỏ tuy cĩ thể gây ảnh hưởng tới độ chính xác của hệ thống
Kết quả đạt được:
- Cài đặt thành cơng giải thuật học Nạve Bayes
- Hệ thống cĩ độ chính xác chấp nhân được
Phân chia cơng việc
- Dũng : Tìm hiểu Web Crawler và thu thập dữ liệu
- Hùng : Code phần tính tần suất các từ trong tập học
- Tồn : Các việc cịn lại
Hướng phát triển :
- Cài đặt thêm một số giải thuật học khác để so sánh độ chính xác của hệ thống
- Thử nghiệm trên tập dữ liệu lớn hơn
Kết luận :
Cài đặt của chúng em vẫn là thử nghiệm khơng tránh khỏi những thiếu sĩt Chúng em rất mong nhận được sự gĩp ý của thầy để bản cài đặt của chúng em hồn thiện hơn Chúng em xin gửi lời cảm ơn chân thành tới thầy Nguyễn Nhật Quang vì đã cung cấp rất nhiều điều kiện thuận lợi cho chúng em hồn thành bài tập lớn này !
Trang 13VII Tài liệu tham khảo
Bài giảng L3_Học dựa trên xác suất - TS Nguyễn Nhật Quang – ĐH Bách Khoa HN
Chú giải
(1) webcrawler : Trong bài tập lớn này đã sử dụng bộ Crawler4j , đây là dự án mã
nguồn mở bằng java , tham khảo thêm tại:http://code.google.com/p/crawler4j/