TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU SỬ DỤNG THUẬT TOÁN NAVIE BAYES ĐỂ PHÂN LOẠI THƯ RÁC Sinh viên thực hiện : TRẦN THẾ DUYỆT NGU
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU
SỬ DỤNG THUẬT TOÁN NAVIE BAYES
ĐỂ PHÂN LOẠI THƯ RÁC
Sinh viên thực hiện : TRẦN THẾ DUYỆT
NGUYỄN BÁ QUÝ TRƯƠNG HOÀNG ANH Giảng viên hướng dẫn: VŨ VĂN ĐỊNH
Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D16CNPM4
Khóa : 2021
Hà Nội, tháng 04 năm 2024
Trang 2STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG I: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 2
1.1 Tổng quan về Khai phá dữ liệu: 2
1.1.1 Khái niệm về khai phá dữ liệu: 2
1.1.2 Các chức năng chính của khai phá dữ liệu: 2
1.1.3 Lợi ích của Khai phá dữ liệu và ứng dụng: 3
1.1.3.1 Lợi ích của Khai phá dữ liệu 3
1.1.3.2 Ứng dụng: 3
1.2 Các kỹ thuật khai phá dữ liệu: 4
1.2.1 Kỹ thuật phân lớp: 4
1.2.2 Kỹ thuật phân cụm: 4
1.2.3 Kỹ thuật phân tích luật kết hợp: 4
1.2.4 Kỹ thuật bài toán hồi quy: 4
1.2.5 Kỹ thuật dự đoán: 5
1.2.6 Kỹ thuật phân tích chuỗi: 5
CHƯƠNG 2: THUẬT TOÁN NAVIE BAYES 6
2.1 Giới thiệu phương pháp NAVIE BAYES 6
2.2 Các mô hình thuật toán Bayes 7
2.2.1 Mô hình Bernoulli 7
2.2.2 Mô hình Multinomial 8
2.3 Điểm mạnh và hạn chế của thuật toán Navie Bayes 8
2.3.1 Điểm mạnh: 8
2.3.2 Điểm yếu: 8
CHƯƠNG 3: ÁP DỤNG THUẬT TOÁN 9
3.1 Giới thiệu Google colab 9
3.1.1 Google colab là gì? 9
3.1.2 Tại sao nên sử dụng Google colab 9
3.1.3 Các tính năng của Google colab 10
3.2 Mô tả bài toán 10
3.3 Áp dụng thuật toán và bài toán 12
Trang 43.3.1 Thực nghiệm với thư viện scikit-learn của python 12
3.3.1.1 Giới thiệu thư viện scikit-learn 12
3.3.1.2 Source code 12
3.4 Kết quả 21
KẾT LUẬN 24
TÀI LIỆU THAM KHẢO 25
Trang 5
DANH MỤC HÌNH ẢNH Hình 3 1 Google colab 8
Hình 3 2 Biểu đồ hiển thị ham và spam 14
Hình 3 3 Biểu đồ learning curve thuật toán Navie Bayes 15
Hình 3 4 Kết quả tính toán các giá trị test 15
Hình 3 5 Bảng kết quả dự đoán và thực tế 15
Hình 3 6 Biểu đồ kết quả dự đoán và thực tế ham, spam 16
Trang 6LỜI NÓI ĐẦU
Trong thời buổi hiện đại ngày nay, công nghệ thông tin cũng như những ứngdụng của nó không ngừng phát triển, lượng thông tin và cơ sở dữ liệu được thuthập và lưu trữ cũng tích lũy ngày một nhiều lên Con người cũng vì thế mà cần cóthông tin với tốc độ nhanh nhất để đưa ra quyết định dựa trên lượng dữ liệu khổng
lồ đã có Các phương pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngàycàng không đáp ứng được thực tế, vì thế, một khuynh hướng kỹ thuật mới là kỹthuật phát hiện tri thức và khai phá dữ liệu nhanh chóng được phát triển
Khai phá dữ liệu đã và đang được nghiên cứu, ứng dụng trong nhiều lĩnhvực khác nhau ở các nước trên thế giới Ở Việt Nam, kỹ thuật này đang đượcnghiên cứu và dần đưa vào ứng dụng Khai phá dữ liệu là một bước trong quytrìnhphát hiện tri thức Hiện nay, mọi người không ngừng tìm tòi các kỹ thuật để thựchiện khai phá dữ liệu một cách nhanh nhất và có được kết quả tốt nhất
Trong bài tập lớn này, chúng em tìm hiểu và trình bày về một kỹ thuật trongkhai phá dữ liệu để phân lớp dữ liệu cũng như tổng quan về khai phá dữ liệu, với
đề tài “Sử dụng thuật toán Navie Bayes để phân loại thư rác”. Trong quá trìnhlàm bài tập lớn này, chúng em xin gửi lời cảm ơn đến thầy giáo Vũ Văn Định.Thầy đã rất tận tình hướng dẫn chi tiết cho chúng em, những kiến thức thầy cungcấp rất hữu ích Chúng em rất mong nhận được những góp ý từ thầy
Chúng em xin chân thành cảm ơn!
Trang 7CHƯƠNG I: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU
1.1 Tổng quan về Khai phá dữ liệu:
1.1.1 Khái niệm về khai phá dữ liệu:
Khai phá dữ liệu (data mining) là quá trình tính toán để tìm ra các mẫu trongcác bộ dữ liệu lớn liên quan đến các phương pháp tại giao điểm của máy học,thống kê và các hệ thống cơ sở dữ liệu Đây là một lĩnh vực liên ngành của khoahọc máy tính Mục tiêu tổng thể của quá trình khai thác dữ liệu là trích xuất thôngtin từ một bộ dữ liệu và chuyển nó thành một cấu trúc dễ hiểu để sử dụng tiếp.Ngoài bước phân tích thô, nó còn liên quan tới cơ sở dữ liệu và các khía cạnh quản
lý dữ liệu, xử lý dữ liệu trước, suy xét mô hình và suy luận thống kê, các thước đothú vị, các cân nhắc phức tạp, xuất kết quả về các cấu trúc được phát hiện, hiệnhình hóa và cập nhật trực tuyến Khai thác dữ liệu là bước phân tích của quá trình
"khám phá kiến thức trong cơ sở dữ liệu" hoặc KDD
Khai phá dữ liệu là một bước của quá trình khai thác tri thức (KnowledgeDiscovery Process), bao gồm:
• Xác định vấn đề và không gian dữ liệu để giải quyết vấn đề (Problemunderstanding and data understanding)
• Chuẩn bị dữ liệu (Data preparation), bao gồm các quá trình làm sạch dữliệu (data cleaning), tích hợp dữ liệu (data integration), chọn dữ liệu (dataselection), biến đổi dữ liệu (data transformation)
• Khai thác dữ liệu (Data mining): xác định nhiệm vụ khai thác dữ liệu vàlựa chọn kỹ thuật khai thác dữ liệu Kết quả cho ta một nguồn tri thức thô
• Đánh giá (Evaluation): dựa trên một số tiêu chí tiến hành kiểm tra và lọcnguồn tri thức thu được
• Triển khai (Deployment)
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầutiên đến bước cuối cùng mà là một quá trình lặp và có quay trở lại các bước đã qua
1.1.2 Các chức năng chính của khai phá dữ liệu:
Data Mining được chia nhỏ thành một số hướng chính như sau:
• Mô tả khái niệm (concept description): thiên về mô tả, tổng hợp và tóm tắtkhái niệm
2
Trang 8• Luật kết hợp (association rules): là dạng luật biểu diễn tri thứ ở dạng kháđơn giản.
• Phân lớp và dự đoán (classification & prediction): xếp một đối tượng vàomột trong những lớp đã biết trước
• Phân cụm (clustering): xếp các đối tượng theo từng cụm (số lượng cũngnhư tên của cụm chưa được biết trước Người ta còn gọi phân cụm là học khônggiám sát (học không thầy)
• Khai phá chuỗi (sequential/temporal patterns): tương tự như khai phá luậtkết hợp nhưng có thêm tính thứ tự và tính thời gian Hướng tiếp cận này được ứngdụng nhiều trong lĩnh vực tài chính và thị trường chứng khoán vì nó có tính dự báocao
1.1.3 Lợi ích của Khai phá dữ liệu và ứng dụng:
1.1.3.1 Lợi ích của Khai phá dữ liệu
Lợi ích chính của Khai phá dữ liệu nằm ở khả năng phát hiện các mẫu vàmối liên hệ tiềm ẩn trong cơ sở dữ liệu Hay nói cách khác giúp ta làm chủ kho dữliệu lớn, bằng mô hình tri thức được xây dựng dựa trên nguồn dữ liệu có sẵn, Khaiphá dữ liệu đem lại nhiều giá trị như:
Lịch sử bán hàng và hành vi của khách hàng có thể được sử dụng để xâydựng các mô hình dự báo doanh số, sản phẩm và dịch vụ mới cho tương lai Các công ty trong ngành tài chính sử dụng các công cụ Khai phá dữ liệu
để xây dựng các mô hình phát hiện rủi ro và gian lận
Trong Lĩnh vực sản xuất công nghiệp có thể sử dụng Khai phá dữ liệutrong việc cải thiện an toàn sản phẩm, xác định các vấn đề về chất lượng, quản lýchuỗi cung ứng và cải thiện hoạt động vận hành sản xuất
1.1.3.2 Ứng dụng:
Data Mining tuy là một hướng tiếp cận mới nhưng thu hút được rất nhiều sựquan tâm của các nhà nghiên cứu và phát triển nhờ vào những ứng dụng thực tiễncủa nó Chúng ta có thể liệt kê ra đây một số ứng dụng điển hình:
• Phân tích dữ liệu và hỗ trợ ra quyết định (data analysis & decision support)
• Điều trị y học (medical treatment)
Trang 9• Text mining & Web mining • Tin-sinh (bio-informatics)
• Tài chính và thị trường chứng khoán (finance & stock market) • Bảo hiểm(insurance)
1.2 Các kỹ thuật khai phá dữ liệu:
1.2.1 Kỹ thuật phân lớp:
Là một trong những kỹ thuật Khai phá dữ liệu phổ biến nhất, ví dụ như:quản lý rủi ro hay lựa chọn ảnh quảng cáo nào sẽ xuất hiện đối với mỗi nhómkhách hàng, hay phân tích xem nhóm khách hàng nào có khả năng sẽ chuyển sangdùng sản phẩm dịch vụ của đối thủ cạnh tranh của công ty…
Kỹ thuật phân lớp là dữ liệu được tổ chức trong các lớp cho trước, hay cònđược gọi là học có quan sát Trong kỹ thuật phân loại người ta sử dụng các nhãnlớp cho trước để sắp xếp các đối tượng Mà trong đó, một tập huấn luyện bao gồmcác đối tượng đã được kết hợp với các nhãn đã biết Những thuật toán có quan sát
sẽ được áp dụng cho tập các đối tượng cần phân loại để từ đó có thể mô hình hóa
sự phân lớp của dữ liệu
1.2.2 Kỹ thuật phân cụm:
Kỹ thuật phân cụm khác biệt với kỹ thuật phân lớp là các nhãn lớp chưa biết
và không có dữ liệu huấn luyện Đối tượng được phân cụm dựa trên các thuộc tínhtương đồng giữa chúng Bài toán phân cụm còn hay được gọi là học không có giámsát
1.2.3 Kỹ thuật phân tích luật kết hợp:
Kỹ thuật phân tích luật kết hợp, hay còn gọi là kỹ thuật phân tích giỏ hàngbởi vì nó thường được sử dụng rộng rãi trong phân tích các giao dịch dữ liệu, cácbài toán lựa chọn hàng hóa đi kèm… Kỹ thuật phân tích luật kết hợp khám phá racác luật kết hợp thể hiện mối liên hệ giữa các thuộc tính dữ liệu mà thường xuấthiện cùng nhau trong các tập dữ liệu
1.2.4 Kỹ thuật bài toán hồi quy:
Kỹ thuật hồi quy cũng tương tự như kỹ thuật phân lớp Điểm khác biệt làhồi quy dự đoán cho các dữ liệu liên tục
4
Trang 101.2.5 Kỹ thuật dự đoán:
Dự đoán là phần quan trọng của khai phá dữ liệu Có hai loại dự đoánchính:
Dự đoán về một số giá trị dữ liệu chưa biết hay có xu hướng sắp xảy ra
Dự đoán để phân lớp dựa trên (một tập huấn luyện và giá trị thuộc tính)của đối tượng
1.2.6 Kỹ thuật phân tích chuỗi:
Là kỹ thuật để tìm ra các mẫu trong một loạt các giá trị hay trạng thái rờirạc Ví dụ: việc chọn mua hàng hóa của khách hàng có thể mô hình là một chuỗi
dữ liệu Hành động chọn mặt hàng A, sau đó chọn mặt hàng B, C… là một chuỗicác trạng thái rời rạc Trong khi đó thời gian lại là chuỗi số liên tục Phân tíchchuỗi (PTC) và phân tích luật kết hợp (PTLKH) giống nhau ở chỗ đều phân tíchtập hợp các đối tượng hay trạng thái Điểm khác biệt là mô hình chuỗi phân tích sựchuyển của các trạng thái, trong khi mô hình luật kết hợp thì coi mỗi một mặt hàngtrong giỏ hàng là như nhau và độc lập Với mô hình chuỗi, thì việc chọn mặt hàng
A trước mặt hàng B hay việc chọn mặt hàng B trước A sau là khác nhau Còn ở môhình kết hợp thì cả hai trường hợp đều không khác nhau
Trang 11CHƯƠNG 2: THUẬT TOÁN NAVIE BAYES
2.1 Giới thiệu phương pháp NAVIE BAYES
Naive Bayes Classification – thuật toán phân loại Naive Bayes - là một thuậttoán dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các phán đoán cũng nhưphân loại dữ liệu dựa trên các dữ liệu được quan sát và thống kê, được ứng dụngrất nhiều trong các lĩnh vực Machine learning dùng để đưa các dự đoán có độchính xác cao, dựa trên một tập dữ liệu đã được thu thập NBC thuộc vào nhómhọc máy có giám sát Thuật toán này thường được sử dụng trong các bài toán phânlớp văn bản hoặc là lọc spam
Theo định lý Bayes, ta có công thức tính xác suất ngẫu nhiên của sự kiện yykhi biết xx như sau:
Giả sử ta phân chia 1 sự kiện x thành n thành phần khác nhau x1, x2,…,xn.Naive Bayes theo đúng như tên gọi dựa vào một giả thiết x1, x2,… xn là các thànhphần độc lập với nhau Từ đó ta có thể tính được:
Do đó ta có:
là phép tỉ lệ thuận.∝
6
Trang 12Trên thực tế thì ít khi tìm được dữ liệu mà các thành phần là hoàn toàn độclập với nhau Tuy nhiên giả thiết này giúp cách tính toán trở nên đơn giản, trainingdata nhanh, đem lại hiệu quả bất ngờ với các lớp bài toán nhất định.
2.2 Các mô hình thuật toán Bayes
Một trong các bài toán nổi tiếng hiệu quả khi sử dụng NBC là bài toán phânloại text, trong đó phổ biến nhất là bài toán phân loại thư rác
Trong bài toán này, mỗi văn bản được thể hiện thành dạng bag of words,hiểu nôm na là thể hiện xem có bao nhiêu từ xuất hiện và tần suất xuất hiện trongvăn bản, nhưng bỏ qua thứ tự các từ
Các từ và tần suất xuất hiện được coi là các feature vector, và theo giả thiếtNaive Bayes coi là các thành phần độc lập mà không ảnh hưởng đến nhau
Có 2 mô hình thuật toán Naive Bayes thường sử dụng là: mô hình Bernoulli
và mô hình Multinomial
2.2.1 Mô hình Bernoulli
Ở mô hình này, các feature vector là các giá trị nhị phân 0, 1 Trong đó 1 thểhiện từ có xuất hiện trong văn bản, 0 thể hiện từ đó không xuất hiện trong văn bản Xác suất P(xi y) được tính bằng:∣
Với P(i|y)P(i y) là tỉ lệ số lần từ xi xuất hiện trong toàn bộ tập training data∣
có nhãn yy
Nhiều tài liệu biểu diễn công thức dưới dạng khác là:
Trang 13Ni là tổng số lần từ xi xuất hiện trong văn bản
Nc là tổng số lần từ của tất cả các từ x1,…xn xuất hiện trong văn bản
2.3 Điểm mạnh và hạn chế của thuật toán Navie Bayes
Trang 14CHƯƠNG 3: ÁP DỤNG THUẬT TOÁN
3.1 Giới thiệu Google colab
3.1.1 Google colab là gì?
Google Colab là một sản phẩm từ Google Research và nó cho phép chạy cácdòng code python thông qua các trình duyệt, đặc biệt phù hợp với Data analysis,machine learning và giáo dục Colab không cần yêu cầu cài đặt hay cấu hình máytính phải cao, mọi thứ đều có thể chạy thông qua trình duyệt, bạn có thể sử dụng tàinguyên máy tính từ CPU tốc độ cao và cả GPUs và cả TPUs đều được cung cấpcho bạn Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s andP100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab và các loạiGPU trong Colab thay đổi theo thời gian Vì đây là dịch vụ miễn phí, nên Colab sẽ
có những thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạnthời gian mỗi lần sử dụng, thời gian sử dụng tối đa lên tới 12 giờ
Hình 3 1 Google colab
3.1.2 Tại sao nên sử dụng Google colab
Các thư viện được cài đặt sẵn: Phân phối Anaconda của Jupyter Notebook
có một số dữ liệu đã được cài đặt sẵn như Numpy, Pandas, Matplotlib Ngoài raphần mềm Google Colab cũng cung cấp nhiều thư viện machine learning được càiđặt sẵn như Keras, Pytorch, Tensorflow nên có thể sử dụng thuận tiện hơn.Được lưu trên đám mây: Mọi thứ trên hệ thống sẽ được lưu trữ trong cục bộmáy khi bạn lựa chọn Jupyter Notebook làm môi trường làm việc do đó nếu bạn làngười đề cao quyền riêng tư thì đây chắc chắn là một tính năng ưa thích của bạn.Nếu người dùng muốn máy tính của mình có thể truy cập được với tất cả thiết bịđang đăng nhập Google, thì phần mềm Google Colab là lựa chọn hàng đầu chobạn Vì tất cả Google Colab Notebook đều được lưu trong tài khoản Google Drive
nó giống như các tệp Google Docs và Google Sheets Sử dụng GPU và TPU miễnphí: Chúng ta không cần phải suy nghĩ nhiều, khi lựa chọn Google Colab thay vìJupyter Notebook Vì, Google Research có thể cho phép bạn sử dụng GPU và TPU
Trang 15chuyên dụng của họ cho các dự án machine learning cá nhân của bạn Đối với một
số dự án, gia tốc GPU và TPU sẽ tạo ra sự khác biệt rất lớn ngay cả đối với một số
dự án nhỏ
3.1.3 Các tính năng của Google colab
Google colab cung cấp một số tính năng có thể kể đến như:
Người dùng có thể tạo mục lục dựa trên các heading viết bằng ngôn ngữmarkdown qua đó bạn sẽ dễ dàng cấu trúc Notebook và làm việc của mình Bạncũng có thể thu gọn các phần nội dung khi soạn thảo một cách thuận tiện nhất
Có thể thêm hình ảnh, biểu mẫu dễ dàng với markdown giúp bạn trình bàybáo cáo hoặc làm dashboard cực tiện lợi Thậm chí người dùng cũng có thể ẩn cácdòng code để trông Notebook gọn gàng hơn với tính năng biểu mẫu
Kết nối dễ dàng với Google Drive hay là Google Sheets để bắt tay vào phântích dữ liệu “trên mây” hoàn toàn
Chạy Python trên Cloud hay Local Runtime cũng đều cho trải nghiệm tốt,người dùng vẫn tận dụng được tính năng tuyệt vời của Google Colab khi chạy vớiPython trên Local Runtime Trong khi đó vẫn không bị Google tự động xóa dữ liệukhi kết thúc phiên làm việc như khi chạy trên Cloud Tự động lưu lịch sử chỉnh sửathành các phiên bản mới giúp bạn dễ dàng khôi phục lại phiên bản gần nhất mỗikhi xảy ra lỗi Cho phép tìm kiếm và chèn các đoạn dữ liệu được soạn thảo sẵntrong các Template vào Notebook Tính năng này được đánh giá khá cao bởi bạnkhông cần phải mở thêm nhiều file lưu trữ để tìm lại các đoạn code mẫu mình đãbiết khi cần Tạo dashboard viết bằng Python và có thể chia sẻ với team dễ dàngnếu cần tương tự như Google Data Studio nhưng nó lại linh hoạt và mạnh mẽ hơnrất nhiều
3.2 Mô tả bài toán
Bài toán phân loại thư rác (spam) là một trong những ứng dụng phổ biến củathuật toán Naive Bayes trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP) Mục tiêucủa bài toán này là phân biệt giữa các email là thư rác (spam) và thư không phải làthư rác (ham)
Dưới đây là một mô tả chi tiết về bài toán này:
10