1.3 Mục đích nghiên cứu và ý nghĩa Mục đích nghiên cứu Mục đích của nghiên cứu [1] Sử dụng các thuật toán học máy để phân loại thưđiện tử thành hai loại: thư spam 1 và thư không spam
CƠ SỞ LÝ THUY Ế T
Các khái ni ệ m
Email là phương tiện giao tiếp chính thức và kinh doanh phổ biến nhờ vào tính nhanh chóng, đáng tin cậy và khả năng truy cập dễ dàng Hiện nay, email được áp dụng rộng rãi trong nhiều lĩnh vực, bao gồm cả kinh doanh và giáo dục (AbdulNabi & Yaseen, 2021) Tổng quan, email có thể được chia thành hai loại chính: thư hợp lệ và thư rác.
Email giúp kết nối và trò chuyện dễ dàng, nhưng vấn đề lớn là sự xuất hiện liên tục của email rác Việc phân loại email hợp lệ và thư rác trở nên quan trọng khi thư rác chiếm hơn 50% lưu lượng email toàn cầu (Dada et al., 2019) Thư rác không chỉ lan rộng mà còn chiếm một phần đáng kể trong hộp thư đến hàng ngày của người dùng.
Thư rác gây tổn thất tài chính và bất tiện cho người nhận, vì vậy cần được lọc ra khỏi các thư hợp lệ (Saab et al., 2014) Việc phát hiện thư rác hiệu quả giúp người dùng tránh khỏi email không mong muốn, tiết kiệm thời gian và bảo vệ dữ liệu cá nhân cũng như dữ liệu công ty Hệ thống email nâng cao trải nghiệm người dùng, tăng năng suất và bảo vệ chống lại các mối đe dọa bảo mật như lừa đảo và phần mềm độc hại thông qua việc lọc thư rác hiệu quả (Tusher et al., 2024) Dữ liệu trong báo cáo bao gồm hai cột: Text và Spam.
Text là biến dữ liệu văn bản quan trọng trong các mô hình học máy, được sử dụng để dự đoán và phân loại dữ liệu, đặc biệt là trong việc xác định thư rác (spam) trong email Nội dung của biến này thường là văn bản tiếng Anh, chứa các từ, câu và cụm từ có thể liên quan đến quảng cáo hoặc khuyến mãi, như kế hoạch giảm nợ, chương trình làm giàu nhanh chóng và sản phẩm sức khỏe Việc phân tích nội dung này giúp các mô hình máy học nhận diện đặc điểm và đưa ra quyết định chính xác hơn về tính chất của email.
Thư rác, hay còn gọi là spam email, là các email không mong muốn được gửi với mục đích thu lợi tài chính hoặc gây khó chịu cho người dùng Những email này thường được gửi hàng loạt đến nhiều người nhận và chủ yếu tập trung vào quảng cáo thương mại, sản phẩm, dịch vụ hoặc trang web Ngoài ra, chúng còn có thể chứa các trò lừa đảo, thư dây chuyền và tệp đính kèm độc hại, làm tăng nguy cơ cho người nhận.
Các thu ật toán dùng trong phương pháp dự đoán
In the report, the team utilized various machine learning algorithms, including Naive Bayes (NB), K-Nearest Neighbors (KNN), Support Vector Machine (SVM), Logistic Regression (LR), Decision Tree (DT), Random Forest (RF), and CNN-LSTM, to effectively identify whether emails are spam or not.
Naive Bayes là một nhóm thuật toán phân tích dựa trên định lý Bayes, được sử dụng như một công cụ thống kê xác thực Điểm nổi bật của Naive Bayes là giả định rằng các tính năng trong dữ liệu là độc lập, mặc dù trong thực tế, chúng có thể phụ thuộc lẫn nhau, do đó thuật toán này được gọi là “ngây thơ”.
Naive Bayes là một thuật toán phổ biến trong phân tích văn bản, đặc biệt trong các bài toán như lọc thư rác Thuật toán này cũng được áp dụng rộng rãi trong các bài toán phân tích dữ liệu khác.
Gaussian Naive Bayes (cho dữ liệu liên tục cộng theo chuẩn phân phối)
Multinomial Naive Bayes (cho dữ liệu rời rạc, như trong phân loại văn bản)
Bernoulli Naive Bayes (cho các thuộc tính nhị phân, như hiện tại hoặc không xuất hiện của từ trong văn bản)
Naive Bayes dựa trên Định lý Bayes, với công thức như sau:
- C: lớp mà chúng ta muốn phân loại
- X: tập hợp các đặc điểm của mẫu dữ liệu
- P: xác suất liên quan đến các lớp và đặc điểm
- P ( C ∣ X ):xác suất mà mẫu dữ liệu thuộc về lớp C khi biết các đặc điểm X Đây là điều mà chúng ta muốn tính toán
- P ( X ∣ C ):xác suất để có các đặc điểm X khi biết rằng mẫu thuộc về lớp C. Điều này cho thấy mối quan hệ giữa các đặc điểm và lớp
- P ( C ): xác suất tiên nghiệm của lớp C, cho biết khả năng mà một mẫu thuộc về lớp C mà không cần biết các đặc điểm
- P ( X ): xác suất để có các đặc điểm X, được sử dụng như một yếu tố chuẩn hóa để đảm bảo rằng tổng xác suất của tất cả các lớp là 1
K- Nearest Neighbors (KNN) là một thuật toán học máy được sử dụng cho cả bài toán phân loại (classification) và hồi quy (regression) Nguyên lý hoạt động của KNN dựa trên việc xác định K điểm dữ liệu gần nhất trong không gian đặc trưng từ một tập dữ liệu đã biết Khi một điểm dữ liệu mới cần được phân loại hoặc dự đoán giá trị, KNN sẽ tính toán khoảng cách từ điểm đó đến tất cả các điểm trong tập huấn luyện Sau khi xác định K điểm gần nhất, thuật toán sẽ thực hiện một cuộc bầu chọn (đối với phân loại) hoặc tính toán giá trị trung bình (đối với hồi quy) từ các điểm này KNN có ưu điểm là đơn giản, dễ hiểu và không yêu cầu quá trình huấn luyện phức tạp, nhưng cũng có nhược điểm như hiệu suất giảm khi số lượng điểm dữ liệu lớn và nhạy cảm với nhiễu trong dữ liệu Khi k tăng, khả năng kháng nhiễu của mô hình được cải thiện, nhưng độ chi tiết giảm Ngược lại, khi k nhỏ, mô hình có thể phân biệt tốt hơn nhưng dễ bị ảnh hưởng bởi các mẫu nhiễu. Để xác định nhãn của một điểm dữ liệu, KNN thường sử dụng khoảng cách Euclid:
- x và y là hai điểm dữ liệu,
- n là số chiều của dữ liệu (số đặc trưng)
Sau khi tính toán khoảng cách từ điểm cần phân loại đến các điểm lân cận, thuật toán sẽ lựa chọn K điểm gần nhất Nhãn của điểm cần phân loại sẽ được xác định dựa trên nhãn của đa số các điểm này.
SVM (Support Vector Machine) là một bộ phân loại tuyến tính, hoạt động bằng cách xác định một "siêu phẳng" để phân chia các điểm dữ liệu thành các lớp khác nhau Mục tiêu chính của SVM là tìm ra siêu phẳng có khoảng cách tối đa đến các điểm dữ liệu của hai lớp, từ đó đảm bảo tính phân biệt rõ ràng và giảm thiểu lỗi phân loại Khi có điểm dữ liệu mới, SVM sẽ dự đoán lớp của nó dựa trên vị trí so với siêu phẳng đã được xác định.
SVM (Support Vector Machine) là một phương pháp học máy dùng để phân loại dữ liệu thành hai nhóm A và B bằng cách tìm kiếm đường thẳng trong không gian 2 chiều hoặc mặt phẳng trong không gian 3 chiều Mục tiêu của SVM không chỉ là xác định đường phân cách giữa hai nhóm mà còn tối ưu hóa khoảng cách từ đường này đến các điểm dữ liệu gần nhất của mỗi nhóm, nhằm tăng cường khả năng phân loại của mô hình Kết quả là, SVM giúp cải thiện độ chính xác trong việc phân loại dữ liệu mới.
Công thức cơ bản của SVM nhằm tối đa hóa khoảng cách giữa các lớp được biểu diễn dưới dạng hàm mục tiêu như sau:
- b là hệ số điều chỉnh giúp xác định vị trí của mặt phẳng phân cách trong không gian đặc trưng
- xi là vector đặc trưng của điểm dữ liệu thứ i ngay, đại diện cho vị trí của điểm này trong không gian đặc trưng
Y_i là nhãn của điểm dữ liệu thứ i, có thể nhận giá trị +1 hoặc -1, tùy thuộc vào lớp của điểm đó Đây là đầu ra mong muốn cho điểm dữ liệu x_i.
Logistic Regression (LR) là một phương pháp phân tích thống kê quan trọng trong máy học, đặc biệt trong các bài toán phân loại nhị phân Phương pháp này sử dụng hàm sigmoid để chuyển đổi tính chất tuyến tính của các biến đầu vào thành giá trị xác thực từ 0 đến 1 Điều này cho phép phân loại các phân số nhị phân, với giá trị xác thực cao (gần 1) được phân loại vào một lớp và giá trị thấp (gần 0) vào lớp còn lại.
Hồi quy logistic là một phương pháp được sử dụng để mô hình hóa mối quan hệ giữa các biến phản hồi nhị phân và các biến giải thích Phương pháp này dự đoán xác suất mà một mẫu thuộc về một lớp nhất định Công thức cơ bản của hồi quy logistic giúp xác định mối liên hệ này một cách hiệu quả.
- P(y=1) là xác suất để một điểm dữ liệu được dự đoán thuộc về lớp 1.
- e là cơ số của logarit tự nhiên (khoảng 2.71828).
- β0, β1, β2, , βn là các hệ số (trọng số) của mô hình, với β0 là hệ số chặn (bias) và β1, β2, , βn là trọng số của từng biến độc lập X1, X2, , Xn
- X1, X2, , Xn là các biến độc lập (các đặc trưng hoặc thuộc tính) của dữ liệu. 2.2.5 Decision Tree (DT)
Cây quyết định (Decision Tree - DT) là một thuật toán học máy có giám sát, được áp dụng cho cả phân loại và hồi quy Thuật toán này phân tách dữ liệu đầu vào thành các nhánh dựa trên các thuộc tính của nó, cho đến khi đạt được kết quả phân loại hoặc dự đoán cuối cùng Cấu trúc của cây quyết định bao gồm các nút và nhánh, giúp dễ dàng hình dung quá trình ra quyết định.
Nút gốc (root node): Nút đầu tiên trong cây, nơi bắt đầu quá trình phân chia
Nút quyết định (decision nod e):Các nút trung gian thể hiện các điều kiện kiểm tra trên các đặc trưng của dữ liệu
Nút lá (leaf node) là nút cuối cùng trong cây quyết định, nơi đưa ra dự đoán hoặc quyết định cuối cùng Để lựa chọn thuộc tính tốt nhất cho việc phân chia, các thuật toán cây quyết định sử dụng các chỉ số đánh giá nhằm tối ưu hóa quá trình phân loại.
Entropy (độ hỗn loạn) là thước đo mức độ hỗn loạn hoặc sự không đồng nhất trong một tập dữ liệu Công thức tính entropy cho một tập dữ liệu S với c lớp được xác định dựa trên xác suất pi của lớp thứ i trong tập dữ liệu S.
Thông tin Gain (lượng thông tin đạt được) là chỉ số đo lường mức độ giảm entropy khi phân chia tập dữ liệu theo một thuộc tính cụ thể Cụ thể, Sv là tập con của S với giá trị v của thuộc tính A, cho thấy sự giảm thiểu không chắc chắn trong dữ liệu sau khi phân loại.
Gini Impurity là một tiêu chí phổ biến trong thuật toán CART (Classification and Regression Tree), được sử dụng để đánh giá độ thuần khiết của các lớp trong một tập dữ liệu S với c lớp.
Các ch ỉ s ố đo lườ ng
Giả sử kết quả dự đoán của mô hình phân lớp được thể hiện như bảng sau:
Bảng 2.1: K ết quả dự đoán của mô hình phân lớ p
Class =Yes TP (True Positive) FN (False Negative)
Class =No FP (False Positive) TN (True Negative)
- TP (True Positive): Mô hình dự đoán "Yes" và thực tế là “Yes"
- TN (True Negative):Mô hình dự đoán "No" và thực tế là "No"
- FP (False Positive): Mô hình dự đoán "Yes" nhưng thực tế là “No"
- FN (False Negative): Mô hình dự kiến "No" nhưng thực tế là “Yes"
Từ 4 chỉ số này ta có 5 con số để đánh giá độ chính xác của mô hình:
Độ chính xác (Accuracy) là tỷ lệ phần trăm các dự đoán đúng trong tổng số dự đoán của một mô hình Một độ chính xác cao cho thấy mô hình có khả năng dự đoán chính xác nhiều hơn so với tổng số dự đoán đã thực hiện.
Độ chuẩn xác (Precision) đo lường tỷ lệ dự đoán chính xác trong tổng số dự đoán "No" Một độ chính xác cao cho thấy mô hình có khả năng dự đoán sai thấp, từ đó khẳng định tính hiệu quả của nó trong việc phân loại.
Độ phủ (Recall): Trong tất cả các dự đoán “No” có bao nhiêu dự đoán là do mô hình đưa ra.
The F1-score, also known as the F measure, is essential for comparing models, as it provides a single metric that balances Precision and Recall This harmonic mean helps to evaluate the performance of classification models more effectively.
Diện tích ROC (Area Under the ROC Curve - AUC) phản ánh khả năng phân biệt giữa các lớp của mô hình Giá trị AUC gần 1 cho thấy mô hình phân loại hiệu quả AUC được tính toán từ đường cong ROC, thể hiện mối quan hệ giữa tỷ lệ True Positive Rate và False Positive Rate.
- P(x ∣ positive) là xác suất của điểm dữ liệu x thuộc về lớp "positive"
- P(x ∣ negative) là xác suất của điểm dữ liệu x thuộc về lớp "negative"
Bài nghiên cứu này sử dụng hai loại dữ liệu chính: biến cố định Text và nhãn Spam Độ chính xác của các mô hình phân loại như NB, KNN, SVM, LR, DT, RF và CNN-LSTM được đánh giá thông qua các chỉ số Accuracy, Precision, Recall, F1-score và ROC Area Chương tiếp theo sẽ trình bày chi tiết về các phương pháp, phần mềm và kỹ thuật được áp dụng trong nghiên cứu, cùng với phân tích cụ thể về bộ dữ liệu và các bước tiền xử lý dữ liệu.
DỮ LI ỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨ U
Phương pháp, kỹ thu ậ t, ph ầ n m ề m
3.1.1 Phương pháp học máy (Machine learning)
Trong nghiên cứu này, nhóm đã áp dụng các phương pháp học máy để phân loại email spam và ham Học máy, một lĩnh vực quan trọng của trí tuệ nhân tạo, cho phép máy tính học từ dữ liệu mà không cần lập trình chi tiết cho từng nhiệm vụ Hệ thống có khả năng học từ dữ liệu email đã được gán nhãn, từ đó phát hiện các email có khả năng là spam dựa trên đặc điểm nội dung.
Ngày nay, Machine Learning được ứng dụng phổ biến trong các lĩnh vực:
Xử lý ngôn ngữ tự nhiên (NLP) là công nghệ cốt lõi giúp các chatbot và trợ lý ảo như Chat GPT, Siri, Alexa và Google Assistant hiểu và phản hồi các câu hỏi từ người dùng.
Thị giác máy tính, với chức năng nhận diện khuôn mặt, đóng vai trò quan trọng trong bảo mật, như Face ID của Apple, cũng như trong giám sát an ninh và mạng xã hội thông qua việc gắn thẻ ảnh.
Trong lĩnh vực tài chính và ngân hàng, các mô hình Machine Learning đóng vai trò quan trọng trong việc phát hiện giao dịch bất thường nhằm ngăn ngừa gian lận Chúng cũng giúp phân tích lịch sử tín dụng và hành vi tài chính của khách hàng để đánh giá khả năng tín dụng một cách hiệu quả Hơn nữa, các nền tảng tư vấn tài chính áp dụng Machine Learning để đưa ra quyết định đầu tư dựa trên dữ liệu lịch sử và xu hướng thị trường.
Machine learning sử dụng các thuật toán để xác định khách hàng tiềm năng thông qua các chỉ số như lượt truy cập trang web, lượt nhấp chuột, lượt tải xuống và email đã mở Bên cạnh đó, công nghệ này cũng giúp phân tích cảm xúc của người tiêu dùng, từ đó đánh giá phản ứng của họ đối với sản phẩm (Rust & Huang, 2014).
Machine learning đóng vai trò quan trọng trong y tế và chăm sóc sức khỏe, giúp bác sĩ chẩn đoán bệnh dựa trên chỉ số sinh học và hình ảnh y tế Công nghệ này có khả năng phát hiện sớm các bệnh phức tạp như ung thư và tiểu đường, đồng thời dựa vào dữ liệu dịch tễ để dự đoán và phòng ngừa dịch bệnh Nhờ đó, các tổ chức y tế có thể đưa ra biện pháp phòng ngừa hiệu quả hơn (Esteva et al., 2019).
Các công ty như Tesla và Waymo đang tiên phong trong việc phát triển xe tự lái sử dụng Machine Learning để nhận diện và dự đoán tình huống giao thông Trong lĩnh vực logistics, công nghệ này giúp tối ưu hóa lộ trình vận chuyển, từ đó giảm thiểu thời gian và chi phí vận chuyển.
Trong nghiên cứu này, nhóm đã sử dụng nhiều kỹ thuật phân tích và xử lý dữ liệu để tối ưu hóa hiệu quả của mô hình học máy trong việc phân loại email spam Các kỹ thuật này đóng vai trò quan trọng trong việc cải thiện độ chính xác và hiệu suất của mô hình.
Kỹ thuật phân lớp dữ liệu: Sử dụng các thuật toán phân loại phổ biến như Naive Bayes, K-Nearest Neighbors (KNN), Logistic Regression, Decision Tree,
Các thuật toán Random Forest, Support Vector Machine (SVM) và CNN-LSTM được lựa chọn do hiệu quả và độ chính xác cao trong phân loại văn bản Chúng đặc biệt phù hợp cho các nhiệm vụ xử lý ngôn ngữ tự nhiên, chẳng hạn như phân loại thư điện tử.
Kỹ thuật phân lớp giúp mô hình nhận diện chính xác email spam thông qua các đặc điểm đặc trưng, bao gồm tần suất xuất hiện của các từ khóa như “miễn phí”, “giảm giá” và “click ngay”.
Để tối ưu hóa nội dung cho SEO, cần chú ý đến việc sử dụng các từ khóa như “khuyến mãi” và “100%”, cùng với sự xuất hiện của các từ nối như “và”, “hoặc”, “nhưng” Độ dài tiêu đề và nội dung cũng rất quan trọng, bên cạnh việc sử dụng ký tự đặc biệt và dấu câu hợp lý Số lượng đường dẫn (liên kết) và địa chỉ email của người gửi cũng cần được xem xét kỹ lưỡng Hơn nữa, sự hiện diện của các cụm từ kêu gọi hành động như “mua ngay”, “đăng ký ngay”, “không thể bỏ lỡ” sẽ giúp tăng cường hiệu quả tương tác Tần suất sử dụng ký tự in hoa và các từ ngữ nhạy cảm tài chính như “tiền thưởng”, “thanh toán”, “giàu có”, “làm giàu nhanh” cũng cần được điều chỉnh hợp lý để tránh bị đánh dấu là spam, đồng thời định dạng email phải rõ ràng và chuyên nghiệp.
Kỹ thuật lựa chọn tham số là yếu tố quan trọng để tối ưu hóa hoạt động của mô hình Nhóm nghiên cứu đã áp dụng phương pháp tìm kiếm siêu tham số (Hyperparameter Tuning) thông qua GridSearchCV để xác định các giá trị siêu tham số tối ưu cho từng thuật toán Phương pháp này giúp nâng cao hiệu suất của mô hình bằng cách tìm ra các cấu hình tốt nhất.
KNN: lựa chọn số lượng láng giềng tốt nhất
Logistic Regression: điều chỉnh tham số C và penalty để tối ưu hóa
Decision Tree: điều chỉnh max_depth và criterion để đạt độ chính xác cao
Random Forest: lựa chọn n_estimators và max_depth để cải thiện độ chính xác của mô hình
SVM: điều chỉnh các tham số C, gamma, và kernel để phân biệt tốt nhất giữa email spam và không spam
The CNN-LSTM model involves fine-tuning parameters such as embedding_dim, filters, kernel_size, lstm_units, max_seq_length, and dropout to enhance feature extraction from text sequences and improve the sequential context classification of emails.
Để đánh giá hiệu quả mô hình phân loại, nhóm nghiên cứu sử dụng các chỉ số như Accuracy, Precision, Recall, F1 Score và ROC AUC Những chỉ số này giúp cung cấp cái nhìn tổng quan về hiệu suất của các thuật toán, từ đó xác định mô hình tối ưu nhất trong việc nhận diện thư rác.
Kỹ thuật lọc dữ liệu và phân tích tần suất được sử dụng để xác định ảnh hưởng của các từ trong email đối với dự báo spam Dữ liệu được phân loại thành hai nhóm: email spam và không spam, sau đó áp dụng các thuật toán Text Mining và Frequency Analysis trong Python để đếm tần suất từ Các từ phổ biến sẽ được tính tỷ lệ phần trăm trên tổng số thư spam và không spam, từ đó xác định các từ đặc trưng trong thư rác Những từ xuất hiện nhiều trong email spam, như "call", "free", "txt", là dấu hiệu quan trọng giúp cải thiện mô hình phân loại Ngược lại, các từ có tần suất tương đương ở cả hai loại email sẽ ít ảnh hưởng đến việc phân loại.
Quy trình nghiên c ứ u
Hình 3.1: Quy trình nghiên cứu đề tài Quy trình nghiên cứu của đề tài được thực hiện tuần tự qua các bước sau:
Bước đầu tiên trong quá trình xử lý email là thu thập dữ liệu từ bộ dữ liệu email, bao gồm hai cột chính: cột text chứa nội dung email và cột spam chỉ định nhãn với giá trị 1 cho spam và 0 cho không spam Bộ dữ liệu này được tạo ra bằng cách kết hợp “2007 TREC Public Spam Corpus” và “Enron-Spam Dataset”, nhằm đảm bảo tính đại diện cho các loại email khác nhau.
Bước 2 - Tiền xử lý dữ liệu là quá trình quan trọng nhằm nâng cao chất lượng dữ liệu thô trước khi huấn luyện mô hình Các bước cần thực hiện bao gồm làm sạch dữ liệu, loại bỏ các mẫu không xác định, chuẩn hóa văn bản, loại bỏ ký tự không cần thiết và tách từ Qua đó, văn bản sẽ được chuyển đổi thành dạng ma trận, sẵn sàng để đưa vào các mô hình học máy.
Bước 3 - Chia tập dữ liệu: Dữ liệu được phân chia thành hai phần, bao gồm tập huấn luyện và tập kiểm tra với tỷ lệ 80/20 Điều này giúp đảm bảo rằng mô hình có thể học hỏi từ dữ liệu huấn luyện và được đánh giá trên tập kiểm tra, mà nó chưa từng tiếp xúc trước đó.
In Step 4, the model training process involves applying various algorithms, including Naive Bayes, K-Nearest Neighbors, Logistic Regression, Decision Tree, Random Forest, Support Vector Machine (SVM), and CNN-LSTM, to the training dataset for the purpose of developing classification models.
Tiền xử lý dữ liệu
Huấn luyện mô hình Đánh giá mô hình
Bảng 3.1: Tham số của từng thuật toán
Thuật toán Tham số huấn luyện
Decision tree 'max_depth': np.arange(1, 10), 'criterion': ['gini','entropy']
Random forest 'n_estimators': [10, 20, 30], 'max_depth': [2, 5, 7, 10]
CNN-LSTM 'embedding_dim': [128], 'filters': [128], 'kernel_size': [5],
'lstm_units': [100], 'max_seq_length': [100], 'dropout': [0.5]
Naive Bayes: không yêu cầu tối ưu hóa siêu tham số
KNN: tìm số láng giềng tối ưu trong khoảng từ 5 đến 10
Logistic Regression: Điều chỉnh tham số C trong logspace(-3, 3, 7) và lựa chọn penalty là "l1" hoặc "l2"
Decision Tree: Tối ưu độ sâu cây trong khoảng từ 1 đến 10 và lựa chọn criterion là “gini” hoặc “entropy”
Random Forest: Tối ưu số cây (10, 20, 30) và độ sâu tối đa (2 đến 10)
SVM: Điều chỉnh tham số C và gamma với kernel là “linear” hoặc “rbf”
The CNN-LSTM model combines Convolutional Neural Networks (CNN) for feature extraction from text sequences with Long Short-Term Memory (LSTM) networks for sequential context processing, utilizing specific hyperparameters for optimal performance.
Embedding dimension: Đặt kích thước cho vector từ (128)
Filters và kernel size trong Conv1D: Tối ưu bộ lọc (128) và kích thước kernel (5).
LSTM units: Số lượng đơn vị trong LSTM (100)
Max sequence length: Độ dài chuỗi tối đa (100)
dropout: Tỷ lệ dropout nhằm ngăn ngừa overfitting (0.5).
Bước 5 trong quy trình đánh giá mô hình là sử dụng các chỉ số như Accuracy, Precision, Recall, F1 Score và ROC AUC để đo lường hiệu quả của từng mô hình trên tập kiểm tra Qua đó, chúng ta có thể xác định và lựa chọn mô hình có hiệu suất cao nhất trong việc phát hiện thư rác.
B ộ d ữ li ệ u
Sau khi thu thập dữ liệu từ Kaggle, nhóm đã đề xuất sử dụng bộ dữ liệu hoàn chỉnh gồm 5,572 email, trong đó có 747 email spam và 4,825 email hợp lệ Bộ dữ liệu này được trích xuất từ hai nguồn uy tín trong nghiên cứu email spam: Combined Spam Email CSV của 2007 TREC Public Spam Corpus và Enron-Spam Dataset TREC Public Spam Corpus là tập dữ liệu lớn thường được sử dụng trong các cuộc thi phát hiện thư rác, trong khi Enron-Spam Dataset cung cấp cái nhìn thực tế về thư rác trong môi trường doanh nghiệp Để tối ưu hóa hiệu quả sử dụng, dữ liệu được lưu trữ dưới dạng tập tin CSV với hai cột: một cột chứa văn bản email bằng tiếng Latin và cột còn lại là nhãn phân loại (spam-1 hoặc ham-0) Tuy nhiên, dữ liệu này khó xử lý hơn do tỷ lệ email spam thấp trong quá trình huấn luyện mô hình (747 so với 1,368 trong nghiên cứu gốc) và phần lớn sử dụng ngôn ngữ Latin, do đó cần thêm bước xử lý để chuyển đổi nội dung sang tiếng Anh cho phù hợp.
X ử lý d ữ li ệ u
Ở giai đoạn này, nhóm tiến hành các bước xử lý dữ liệu bao gồm:
3.4.1 Tiền xử lý dữ liệu
Theo García et al (2015), tiền xử lý dữ liệu là bước thiết yếu trong xây dựng mô hình học máy, giúp loại bỏ yếu tố nhiễu và đảm bảo chất lượng dữ liệu đầu vào Quá trình này bao gồm làm sạch dữ liệu, chuẩn hóa và xử lý giá trị thiếu, từ đó giảm thiểu nguy cơ mô hình bị sai lệch hoặc giảm độ chính xác Các thao tác cụ thể để xử lý dữ liệu trong nghiên cứu này bao gồm
Chuyển đổi ngôn ngữ dữ liệu là một bước quan trọng trong nghiên cứu Dữ liệu hợp lệ cần sử dụng là tiếng Anh, trong khi dữ liệu nhóm thu thập được lại là tiếng Latin Do đó, nhóm sẽ thực hiện xử lý dữ liệu để chuyển đổi từ tiếng Latin sang tiếng Anh nhằm tiến hành các bước tiếp theo trong nghiên cứu.
Việc xóa bỏ giá trị không xác định và dữ liệu trùng lặp là rất quan trọng để đơn giản hóa quá trình xử lý và nâng cao tính nhất quán của dữ liệu Dữ liệu trùng lặp có thể gây ra hiện tượng "quá khớp" (overfitting) trong mô hình, làm giảm khả năng tổng quát hóa khi áp dụng vào dữ liệu mới.
Chuyển đổi tất cả chữ cái thành chữ thường giúp loại bỏ sự khác biệt không cần thiết giữa các từ như "NEWS" và "news", từ đó giảm kích thước từ điển và nâng cao hiệu quả của mô hình.
Loại bỏ các số và dấu câu như “12345…” và “.;:’(?” là cần thiết vì chúng không mang ý nghĩa phân loại Việc này giúp mô hình tập trung vào các từ có giá trị phân loại cao hơn.
Việc xóa từ nối (stop words) như "và", "là", "của" là cần thiết để giảm kích thước từ điển và giúp mô hình tập trung vào các từ khóa quan trọng trong phân loại email.
Sau khi hoàn tất quá trình tiền xử lý, các đoạn văn email sẽ được chuyển sang giai đoạn tokenization, trong đó văn bản được phân chia thành các từ hoặc cụm từ riêng lẻ, được gọi là các token.
Tokenization là quá trình phân tách văn bản thành các đơn vị nhỏ hơn như từ hoặc cụm từ, nhằm giúp máy tính dễ dàng hiểu và phân tích Đây là bước cơ bản trong xử lý ngôn ngữ tự nhiên, đóng vai trò quan trọng trong việc chuẩn bị dữ liệu văn bản cho các bước phân tích và xử lý tiếp theo.
Ví dụ, câu “win free cash now” sẽ được tách thành các token “win”, “free”,
Tokenization giúp mô hình nhận diện tần suất xuất hiện của từ, từ đó xác định các từ khóa đặc trưng của thư rác, cải thiện khả năng phân loại.
Bước cuối cùng trước khi huấn luyện là vector hóa, một quá trình chuyển đổi văn bản thành dạng số hóa, như các vector, để máy tính có thể xử lý Hausser (2000) nhấn mạnh rằng vectorization là phương pháp quan trọng trong việc áp dụng các thuật toán học máy cho phân tích ngôn ngữ tự nhiên, giúp chuyển đổi các token thành dạng số Quá trình này tạo ra một ma trận đặc trưng, trong đó mỗi từ được biểu diễn dưới dạng cột và mỗi email là một hàng.
Vector hóa email cho phép mô hình xác định tần suất xuất hiện của các từ khóa như “free” và “win” Ví dụ, nếu từ “free” xuất hiện hai lần và “win” một lần, vector đại diện sẽ chứa các giá trị số tương ứng Phương pháp này giúp nhận diện các từ thường gặp trong thư rác, từ đó cải thiện khả năng phân loại.
Quy trình xử lý dữ liệu chặt chẽ từ thu thập, tiền xử lý đến vector hóa tạo nền tảng dữ liệu mạnh mẽ cho mô hình, giúp cải thiện hiệu suất và khả năng phát hiện email spam một cách chính xác, bảo vệ người dùng khỏi thư rác không mong muốn.
Chương 3 tổng kết các định nghĩa và xu hướng của phương pháp học máy, bao gồm cách thu thập và xử lý dữ liệu, kỹ thuật phân lớp, lựa chọn mô hình, và tối ưu hóa siêu tham số cho các thuật toán Trong chương 4, nhóm sẽ mở rộng với việc triển khai thuật toán Text Mining và Frequency Analysis để đánh giá ảnh hưởng của các từ ngữ riêng lẻ đến việc xác định Spam, nhằm tìm ra thuật toán có chỉ số Accuracy cao nhất và ứng dụng mô hình đó trong phân tích thư Spam/Ham.
K Ế T QU Ả NGHIÊN C Ứ U
Th ố ng kê mô t ả d ữ li ệ u nghiên c ứ u
Nhóm nghiên cứu đã tiến hành phân tích tác động của các từ trong email đến dự báo spam, nhằm xác định những từ cụ thể có ảnh hưởng lớn Để thực hiện điều này, họ đã sử dụng công cụ Power BI để định lượng số lượng email spam và ham trong bộ dữ liệu.
Để phân tích tần suất xuất hiện của các từ trong email spam và ham, nhóm nghiên cứu đã áp dụng hai thuật toán Text Mining và Frequency Analysis, được lập trình bằng Python Quy trình thực hiện chi tiết được trình bày trong phần Phụ lục của bài báo cáo Thuật toán này lọc ra 20 từ khóa xuất hiện nhiều nhất trong thư spam và tính tỷ lệ phần trăm của chúng so với tổng số thư spam và thư không phải spam.
Công thức tính tỷ lệ phần trăm trên tổng số thư spam:
Kết quả cho ra top 20 từ xuất hiện nhiều nhất trong thư spam như bảng dưới đây:
Bảng 4.1: Số thư Spam chứa từ khóa và tỷ lệ Spam của thư
STT Từ khóa Số email chứa từ khóa Tỷ lệ (%)
Công thức tính tỷ lệ phần trăm trên tổng số thư không phải spam:
Và tương tự kết quả cũng cho ra số lượng email ham chứa từ khóa và tỷ lệ trên tổng số thư ham như bảng dưới đây:
Bảng 4.2: Số thư Ham chứa từ khóa và tỷ lệ Ham của thư
STT Từ khóa Số email chứa từ khóa Tỷ lệ (%)
Nhóm đã sử dụng công cụ Power BI để tạo biểu đồ cột chồng và cột đơn, nhằm thể hiện số lượng từ khóa cũng như tỷ lệ xuất hiện của các từ khóa trong thư spam và thư ham.
Hình 4.2: Số lượng thư Spam chứa từ khóa và tỷ lệ so vớ i tổng thư Spam
Hình 4.2 cho thấy tỷ lệ xuất hiện của các từ khóa trong thư spam, với "call" (43.24%), "free" (22.62%), và "txt" (19.01%) là những từ phổ biến nhất, thường liên quan đến tin nhắn tiếp thị Các từ "claim" (14.46%) và "prize" (11.24%) cũng xuất hiện nhiều, gợi ý về các tin nhắn nhận thưởng Đặc biệt, ký hiệu "£" (3.48%) là biểu tượng tiền tệ quan trọng, thường xuất hiện trong email lừa đảo Sự xuất hiện cao của những từ này giúp nhận diện đặc trưng của thư rác, cung cấp cơ sở cho mô hình học máy phân loại spam hiệu quả hơn.
Hình 4.3: Số lượng thư Ham chứa từ khóa và tỷ lệ so vớ i tổng thư Ham
So với Hình 4.3, số lượng từ khóa và tỷ lệ xuất hiện trong thư ham cho thấy tần suất của các từ "call", "free", và "txt" trong email ham giảm đáng kể Cụ thể, tỷ lệ xuất hiện của từ “call” giảm từ 43.24% xuống 4.46% trong email spam, trong khi tỷ lệ các từ "free" và "txt" cũng giảm lần lượt xuống 4.46% và 0.25% Ngoài ra, những từ có tỷ lệ xuất hiện cao trong email spam như “calm” và “prize” cũng được ghi nhận.
Trong email ham, ký hiệu “£” không xuất hiện (0%), cho thấy tần suất xuất hiện của nó trong thư ham rất thấp hoặc không có Điều này cho thấy rằng các từ này không phổ biến trong email ham, từ đó tạo cơ sở vững chắc để đánh giá và phân loại thư spam một cách chính xác hơn.
Hai từ "u" và "get" xuất hiện với tần suất cao trong cả thư spam và ham, lần lượt là 16.87% và 10.98% cho spam, cùng 14.16% và 5.93% cho ham Tỷ lệ này không có sự chênh lệch đáng kể, cho thấy rằng hai từ này không đặc trưng cho thư spam và có thể được coi là các từ trung tính.
Việc phân tích tỷ lệ xuất hiện của các từ trong thư spam so với thư ham là rất quan trọng để cải thiện độ chính xác của mô hình phân loại Nếu một từ xuất hiện thường xuyên trong spam nhưng hiếm gặp trong ham, mô hình sẽ dễ dàng xác định email là spam dựa trên từ đó Ngược lại, những từ có tỷ lệ xuất hiện gần như tương đương giữa spam và ham sẽ không ảnh hưởng nhiều đến quá trình phân loại Tuy nhiên, nếu có từ khóa nào có tỷ lệ lệch rõ rệt về phía spam, điều này sẽ hỗ trợ mô hình nhận diện thư rác một cách chính xác hơn.
K ế t qu ả nghiên c ứ u
Nhóm đã chọn nền tảng Google Colab vì tính tiện lợi và khả năng truy cập dễ dàng để triển khai 7 mô hình, bao gồm 6 mô hình phổ biến: Naive Bayes, K-Nearest Neighbors (KNN), Logistic Regression, Decision Tree, Random Forest, và Support Vector Machine (SVM) Mô hình thứ 7, CNN-LSTM, được nhóm đề xuất Tất cả 7 mô hình này đều được lập trình bằng Python, với quy trình thực hiện chi tiết được trình bày trong Phụ Lục của báo cáo.
Mô hình CNN-LSTM kết hợp mạng nơ-ron tích chập (CNN) để trích xuất đặc trưng từ dữ liệu đầu vào và mạng bộ nhớ dài ngắn (LSTM) để dự đoán chuỗi thời gian Mô hình này được phát triển nhằm giải quyết các bài toán dự đoán chuỗi thời gian và tạo mô tả văn bản từ chuỗi hình ảnh, như video Trong nghiên cứu, mô hình CNN-LSTM cho kết quả cao trong việc phân loại thư rác, với phần CNN trích xuất các từ hoặc cụm từ thường gặp trong email, trong khi LSTM giúp hiểu ngữ cảnh của email để đưa ra dự đoán chính xác Để đánh giá hiệu quả của mô hình, nhóm sử dụng các chỉ số như Accuracy, Precision, Recall, F1 Score và ROC AUC, được tổng hợp và trình bày trong bảng.
Bảng 4.3: Bảng đánh giá độ hiệu quả của các mô hình
Chỉ số đo lường Accuracy Precision Recall F1 Score ROC AUC
Qua quá trình chạy và ghi nhận các chỉ số đo lường, ba mô hình Support Vector Machine, Logistic Regression và CNN-LSTM đều đạt được độ chính xác rất cao, trên 97%, đặc biệt là mô hình CNN-LSTM với 98.3% Điều này chứng minh rằng các mô hình này cực kỳ hiệu quả và có thể ứng dụng thực tế trong việc phân loại email rác và email hợp lệ, từ đó nâng cao bảo mật và hiệu suất làm việc trên không gian mạng.
Trong lần chạy máy tiếp theo, nhóm tác giả đã vẽ biểu đồ ROC và nhận thấy rằng các mô hình Logistic Regression, CNN-LSTM, SVM và Naive Bayes đều đạt trên 98%, cho thấy độ chính xác cao trong dự đoán Tuy nhiên, các số liệu trên biểu đồ chỉ phản ánh tập dữ liệu của nghiên cứu này, do đó cần tiến hành thêm các thực nghiệm để đảm bảo kết quả chính xác hơn.
Nhóm đã áp dụng mô hình CNN-LSTM để phân loại hai loại email, bao gồm một email rác và một email hợp lệ, dựa trên những lý do đã nêu.
Hình 4.5: Ví dụ về email rác
Hình 4.6: Ví dụ về email hợ p lệ Các bước thực hiện như sau:
Bước 1: Bổ sung python code nhằm mục đích tạo ra một textbox cho phép nhập nội dung email để tiến hành kiểm tra
Bước 2: Tiến hành nhập email cần kiểm tra vào textbox và ấn enter
Tiến hành chạy trên cả 2 email mẫu, hệ thống học máy cho ra kết quả như sau:
Sau khi nhập email rác vào ô nhập liệu, hệ thống học máy đã đưa ra kết quả "Dự đoán: spam" với "Xác suất: 1", xác nhận rằng đây là email rác và độ chính xác của dự đoán hoàn toàn đúng với kết quả ban đầu.
Nhóm đã tiến hành kiểm tra với một email mẫu hợp lệ và nhận được kết quả “Dự đoán: Không phải Spam” cùng với “Xác suất: 0”, điều này có nghĩa là email này hoàn toàn hợp lệ và xác suất để nó được coi là email rác là 0, khẳng định dự đoán trùng khớp với kết quả ban đầu.
Nhờ sự kết hợp giữa thuật toán Text Mining và Frequency Analysis, nhóm nghiên cứu đã xác định rằng kết quả Spam (1) chịu ảnh hưởng bởi các từ như “phần thưởng”, “tiền”, “miễn phí” và các từ tương tự Sau khi đánh giá sáu mô hình (NB, KNN, SVM, LR, DT, RF), nhóm đã đề xuất sử dụng thuật toán CNN-LSTM với độ chính xác cao nhất đạt khoảng 98% Nhóm xác định CNN-LSTM là thuật toán tối ưu cho vấn đề nghiên cứu và đưa ra giải pháp cho vấn đề này, đồng thời đề xuất các hướng cải thiện để phát triển thuật toán trong Chương 5.
KẾ T LU Ậ N VÀ HÀM Ý QU Ả N TR Ị
T ổ ng k ế t
Bài báo cáo này so sánh hiệu suất của các thuật toán học máy phổ biến như Naive Bayes, K-Nearest Neighbors, SVM, Logistic Regression, Decision Tree, Random Forest và CNN-LSTM trong việc phân loại và phát hiện thư rác Mục tiêu là đề xuất phương pháp tối ưu nhằm nâng cao hiệu quả lọc thư điện tử, giúp ngăn chặn thư rác một cách hiệu quả nhất.
Mô hình CNN-LSTM, dựa trên kết quả nghiên cứu ở chương 4, đạt độ chính xác cao nhất khoảng 98%, vượt trội hơn các mô hình khác Điều này nhờ vào khả năng trích xuất đặc trưng từ văn bản và xử lý ngữ cảnh tuần tự, từ đó nâng cao hiệu quả phân loại thư rác.
Bằng cách ứng dụng Power BI để trực quan hóa dữ liệu và Google Colab để lập trình, nhóm đã triển khai các thuật toán nhằm tối ưu hóa mô hình phân tích mạng lưới từ vựng và chủ đề từ khóa trong nghiên cứu phát hiện thư rác Qua đó, nhóm xác định các xu hướng nghiên cứu nổi bật, tập trung vào tần suất xuất hiện của các từ khóa phổ biến trong email spam Kết quả thống kê cho thấy các từ như call, free, txt, claim, prize và £ có ảnh hưởng lớn đến việc phân loại thư spam, trong đó claim, prize và £ xuất hiện 100% trong thư spam, trong khi call và free hiếm khi xuất hiện trong thư ham.
Việc áp dụng mô hình CNN-LSTM đã chứng minh khả năng phát hiện chính xác email spam và mở ra hướng phát triển mới trong việc kết hợp học sâu với xử lý ngôn ngữ tự nhiên Nghiên cứu này mang lại ý nghĩa thực tiễn quan trọng cho doanh nghiệp, giúp họ triển khai hệ thống lọc thư rác thông minh, tăng cường bảo mật thông tin và tối ưu hóa quản lý email Đồng thời, nghiên cứu cũng nhấn mạnh sự cần thiết tiếp tục thử nghiệm các phương pháp kết hợp như Bagging, Boosting và Stacking để nâng cao độ chính xác và sự ổn định của mô hình.
Hàm ý qu ả n tr ị
5.2.1 Đối với doanh nghiệp và nhà quản lý email
Việc áp dụng hệ thống dự báo và phân loại email spam trong doanh nghiệp giúp tối ưu hóa nguồn lực, tăng năng suất và giảm chi phí vận hành, đặc biệt là chi phí từ việc quản lý email không hiệu quả và các mối đe dọa bảo mật Sử dụng mô hình máy học để phân loại email rác giảm gánh nặng cho nhóm công nghệ thông tin, cho phép họ tập trung vào các vấn đề cấp bách hơn Phương pháp này rất hữu ích cho các tổ chức như ngân hàng và công ty thương mại điện tử, nơi phải xử lý hàng nghìn email mỗi ngày Qua việc tự động phát hiện và quản lý email rác, doanh nghiệp có thể tiết kiệm thời gian và chi phí nhân lực.
Nâng cao quy trình bảo mật thông tin bằng cách áp dụng mô hình học máy giúp doanh nghiệp chủ động giảm thiểu rủi ro từ email rác chứa mã độc hoặc liên kết lừa đảo Phương pháp này không chỉ ngăn chặn xâm nhập hệ thống mà còn bảo vệ dữ liệu khách hàng và duy trì danh tiếng doanh nghiệp Đặc biệt trong các lĩnh vực như tài chính và chăm sóc sức khỏe, nơi bảo mật thông tin rất quan trọng, hệ thống lọc thư rác tự động và chính xác góp phần giảm thiểu vi phạm bảo mật và tăng cường lòng tin của khách hàng.
5.2.2 Người dùng cuối và khách hàng
Hệ thống lọc thư rác hiệu quả giúp người dùng nhận được email quan trọng mà không bị làm phiền bởi thư không mong muốn, nâng cao trải nghiệm người dùng Nó cũng tăng năng suất và giảm xao lãng cho nhân viên, đặc biệt khi xử lý thông tin nhạy cảm hoặc khẩn cấp Trong môi trường công ty, hệ thống lọc này giảm thời gian xóa thư rác, giúp nhân viên tập trung vào công việc chính.
Hệ thống lọc thư rác chất lượng cao giúp bảo vệ khách hàng khỏi lừa đảo và gian lận qua email Việc cải tiến hệ thống này không chỉ hỗ trợ người dùng trong việc lọc tin nhắn và số điện thoại rác mà còn đặc biệt quan trọng trong các ngành xử lý thông tin cá nhân như ngân hàng và y tế Bảo vệ khách hàng khỏi các mối đe dọa giúp xây dựng niềm tin, tăng cường lòng trung thành và đảm bảo uy tín cho doanh nghiệp trên thị trường.
Hệ thống lọc thư rác hiệu quả giúp doanh nghiệp bảo vệ khỏi các rủi ro pháp lý liên quan đến vi phạm dữ liệu và khiếu nại của khách hàng về bảo mật thông tin.
H ạ n ch ế c ủ a bài nghiên c ứ u
Trong nghiên cứu về các mô hình phân loại email spam sử dụng phương pháp máy học, nhóm nhận thấy rằng mặc dù các mô hình đề xuất đạt kết quả khả quan qua các chỉ số đo lường, nhưng vẫn còn một số hạn chế cần khắc phục.
Hạn chế của nghiên cứu là thiếu thử nghiệm với các kỹ thuật tổng hợp khác như Bagging, Boosting và Stacking Mặc dù nhóm đã áp dụng thuật toán CNN-LSTM, nhưng chưa xem xét các phương pháp này, có thể cải thiện đáng kể độ chính xác và ổn định của hệ thống Bagging giúp giảm phương sai và hạn chế overfitting, đặc biệt hiệu quả cho các mô hình như Decision Tree và Random Forest, mà nhóm chưa đánh giá kỹ về mức độ overfitting Boosting tăng cường độ chính xác bằng cách tập trung vào các mẫu email khó phân loại, trong khi Stacking kết hợp nhiều mô hình để tận dụng ưu điểm của từng thuật toán, giúp cải thiện khả năng phân loại email đa dạng.
Một hạn chế đáng chú ý trong nghiên cứu là mặc dù các thuật toán đạt độ chính xác lên tới 98%, vẫn có khả năng xảy ra sai sót trong việc phân loại email, dẫn đến việc lọc nhầm giữa email spam và không spam Điều này có thể ảnh hưởng đến chất lượng và kết quả cuối cùng của các thuật toán.
Đề xu ất hướ ng nghiên c ứu trong tương lai
Nhằm khắc phục những hạn chế đã chỉ ra, nhóm nghiên cứu đề xuất áp dụng các phương pháp tổng hợp như Bagging, Boosting và Stacking Những phương pháp này không chỉ giúp nâng cao độ chính xác mà còn đảm bảo tính ổn định của mô hình, từ đó giảm thiểu hiện tượng overfitting và cải thiện khả năng tổng quát trong việc xử lý các loại email đa dạng.
Nhóm sẽ thiết lập các tiêu chí đánh giá rõ ràng để so sánh hiệu suất của các mô hình khác nhau, bao gồm không chỉ độ chính xác và độ nhạy mà còn cả độ đặc hiệu Việc bổ sung các chỉ số đo lường này nhằm hỗ trợ quá trình nghiên cứu trở nên tối ưu hơn.
Mặc dù các thuật toán nghiên cứu đạt độ chính xác lên đến 98/100, vẫn có rủi ro trong việc lọc email Để khắc phục triệt để tình trạng lọc sai email, nhóm đề xuất phát triển hệ thống tái xử lý các email được nhận diện là email rác sau lần lọc đầu tiên, nhằm nâng cao tính chính xác của mô hình lọc email rác.
Phân tích chi tiết các kết quả đạt được là rất quan trọng, vì nó giúp rút ra những bài học quý giá cho các nghiên cứu tiếp theo Điều này sẽ góp phần nâng cao chất lượng và hiệu quả của các mô hình phân loại trong tương lai.
1 Python code các bước sử dụng thuật toán để tính tỷ lệ xuất hiện của các từ trong email spam và ham
In Step 1, we begin by defining and declaring variables essential for our analysis, utilizing libraries such as Pandas and NumPy for data manipulation We import various machine learning models including Multinomial Naive Bayes, K-Neighbors Classifier, Decision Tree Classifier, Support Vector Classifier, Random Forest Classifier, and Logistic Regression from Scikit-learn Additionally, we employ CountVectorizer for text feature extraction and various metrics like accuracy, precision, recall, and F1 score for performance evaluation To preprocess text data, we leverage NLTK for tokenization and stopword removal, along with regular expressions for cleaning Finally, we incorporate TensorFlow Keras for building deep learning models, using layers like Embedding, Conv1D, LSTM, and Dense to enhance our text classification tasks.
Bước 2: Tiền xử lý dữ liệu
Sử dụng thư viện NLTK (Natural Language Toolkit) để tải xuống tài nguyên cần thiết nltk.download('punkt') nltk.download('stopwords')
Nhập lớp Translator từ thư viện googletrans
!pip install googletrans==3.1.0a0 from googletrans import Translator
To read data from a file encoded in Latin-1, initialize a translation tool, translate the text into English, and save the translated data into a new CSV file, use the following code: `data = pd.read_csv('database.csv', encoding='latin-1')` Initialize the translator with `translator = Translator()` Define a function to translate text: `def translate_text(text):` Inside the function, handle exceptions and return the translated text: `try: translated = translator.translate(text, dest='en') return translated.text except Exception as e: print(f"Error translating text: {e}") return text` Apply the translation function to the text column: `data['text_translated'] = data['text'].apply(translate_text)` Finally, save the translated data to a new file: `data.to_csv('emails_translated.csv', encoding='utf-8', index=False)`.
Hàm tiền xử lý văn bản def preprocess_text(text):
To preprocess text data effectively, begin by converting all characters to lowercase to ensure uniformity Next, remove numerical values using regular expressions and eliminate punctuation marks through translation methods Afterward, tokenize the text into individual words for further analysis Finally, filter out common stop words to refine the content, resulting in a cleaner and more focused text output.
To transform data into vectors, we start by reading the CSV file using `pd.read_csv('emails_translated.csv')` Next, we preprocess the text data with `data['text'].apply(preprocess_text)`, ensuring consistency by changing 'df' to 'data' to match the DataFrame name Finally, we utilize the `CountVectorizer()` to convert the processed text into vector format.
X =vectorizer.fit_transform(data['text']) #Changed 'df' to 'data' to match the DataFrame name y a['spam'] #Changed 'df' to 'data' to match the DataFrame name
Bước 3: Đếm và tính toán tỷ lệ phần trăm xuất hiện của 20 từ thường xuyên xuất hiện nhất trong email spam và ham
Nhập lớp Counter từ mô - đun collections from collections import Counter
Lọc và tính tổng thư spam spam_emails a[data['spam'] ==1] total_spam_emails =len(spam_emails)
To analyze spam emails, we first combine the text from the spam dataset into a single string We then count the occurrences of each word using the Counter from the collections module Finally, we identify the 20 most frequently used words in the spam emails.
To calculate the percentage of spam emails containing the top 20 words, we create an empty list called `word_email_percentages` For each word and its count in the `top_20_words`, we filter the spam emails to find those that include the specific word We determine the count of emails containing the word and calculate its percentage by dividing this count by the total number of spam emails, then multiplying by 100 Finally, we append the word, its count in emails, and the calculated percentage to the `word_email_percentages` list The results are printed, showing the top 20 words in spam emails along with their respective counts and percentages.
2 Python code các bước xây dựng máy xác định thư rác
Sử dụng các bước đã thực hiện ở trên và chia dữ liệu thành tập train và tập test X_train, X_test, y_train, y_test =train_test_split(X, y, test_size=0.2)
Khởi tạo và huấn luyện các mô hình knn_params ={'n_neighbors': [5, 6, 7, 8, 9, 10]} knn_model =GridSearchCV(KNeighborsClassifier(), knn_params, cv=3) knn_model.fit(X_train, y_train) y_pred_knn =knn_model.predict(X_test)
To evaluate the performance of the K-Nearest Neighbors (KNN) model, several key metrics are calculated: the accuracy score is determined using `knn_accuracy = accuracy_score(y_test, y_pred_knn)`, while precision is assessed with `knn_precision = precision_score(y_test, y_pred_knn)` Additionally, the model's ability to retrieve relevant instances is measured through recall, calculated as `knn_recall = recall_score(y_test, y_pred_knn)` The F-measure, which balances precision and recall, is obtained using `knn_f_measure = f1_score(y_test, y_pred_knn)`, and the area under the ROC curve is evaluated with `knn_roc_auc = roc_auc_score(y_test, y_pred_knn)`.
The evaluation metrics for the model after running include accuracy, precision, recall, F-measure, and ROC area, which are displayed as follows: "Accuracy: [value]", "Precision: [value]", "Recall: [value]", "F-measure: [value]", and "ROC area: [value]".
Khởi tạo và huấn luyện các mô hình nb_model =MultinomialNB() nb_model.fit(X_train, y_train) y_pred_nb =nb_model.predict(X_test)
To evaluate the performance of the model, we calculate several key metrics: the accuracy score is determined using `accuracy_score(y_test, y_pred_nb)`, while the precision is assessed with `precision_score(y_test, y_pred_nb)` Additionally, we measure the recall through `recall_score(y_test, y_pred_nb)` and compute the F-measure using `f_measure_score(y_test, y_pred_nb)` Finally, the ROC AUC score is obtained with `roc_auc_score(y_test, y_pred_nb)`, providing a comprehensive overview of the model's effectiveness.
After running the machine, the evaluation metrics yielded the following results: Accuracy is measured at nb_accuracy, Precision stands at nb_precision, Recall is reported as nb_recall, the F-measure is noted as nb_f_measure, and the ROC area is recorded at nb_roc_auc.
To initialize and train decision tree models, we define parameters using `dt_params = {'max_depth': np.arange(1, 10), 'criterion': ['gini', 'entropy']}` We then employ GridSearchCV to optimize the DecisionTreeClassifier with these parameters, setting the cross-validation to 3 folds After fitting the model with the training data using `dt_model.fit(X_train, y_train)`, we make predictions on the test set by executing `y_pred_dt = dt_model.predict(X_test)`.