1.3 Phân loại thư rác Lọc thư rác dựa trên địa chỉ IP Lọc dựa trên chuỗi hỏi/đáp Challenge/Response filters Phương pháp lọc dựa trên mạng xã hội Phương pháp định danh người gửi Phương ph
Trang 1Lời nói đầu(Hoạt)
Một trong những dịch vụ mà Internet mang lại đó là dịch vụ thư điện tử, đó là
phương tiện giao tiếp rất đơn giản, tiện lợi, rẻ và hiệu quả giữa mọi người trong cộng đồng sử dụng dịch vụ Internet Tuy nhiên chính vì những lợi ích của dịch vụ thư điện tử mang lại mà số lượng thư trao đổi trên Internet ngày càng tăng, và một
số không nhỏ trong số đó là thư rác (spam).
Thư rác thường được gửi với số lượng rất lớn, không được người dùng mong đợi, thường với mục đích quảng cáo, đính kèm virus, gây phiền toái khó chịu cho người dùng, làm giảm tốc độ truyền internet và tốc độ xử lý của email server, gây thiệt hại rất lớn về kinh tế.
Đã có rất nhiều phương pháp đưa ra để giảm số lượng thư rác Như việc đưa ra các luật lệ để hạn chế việc gửi thư rác, đưa ra các phương pháp kĩ thuật lọc thư rác như: lọc dựa trên địa chỉ IP (whitelist, blacklist), lọc dựa trên danh tính người gửi, lọc dựa trên chuỗi hỏi đáp, phương pháp lọc dựa trên mạng xã hội, và phương pháp lọc nội dung…Mỗi phương pháp đều có ưu nhược điểm riêng, không có phương pháp nào là hoàn hảo vì vậy để có bộ lọc thư rác tốt cần phải kết hợp các phương pháp với nhau.
1 Giới thiệu đề tài(Hoạt)
Thư rác (spam mail) là những bức thư điện tử không yêu cầu, không mong muốn và được gửi hàng loạt tới người nhận.
Một bức thư nếu gửi không theo yêu cầu có thể đó là thư làm quen hoặc thư được gửi lần đầu tiên, còn nếu thư được gửi hàng loạt thì nó có thể là thư gửi cho khách hàng của các công ty, các nhà cung cấp dịch vụ Vì thế một bức thư bị coi là rác khi
nó không được yêu cầu, và được gửi hàng loạt.
Tuy nhiên yếu tố quan trọng nhất để phân biệt thư rác với thư thông thường là nội dung thư Khi một người nhận được thư rác, người đó không thể xác định được thư
đó được gửi hàng loạt hay không nhưng có thể xác định được đó là thư rác sau khi
Trang 2đọc nội dung thư Đặc điểm này chính là cơ sở cho giải pháp phân loại thư rác bằng cách phân tích nội dung thư.
1.2 Tác hại thư rác
Theo thống kê thư rác hiện chiếm hơn một nửa số email truyền trên Internet và chính thư rác là nguồn lây lan virus nhanh nhất Thiệt hại do chúng gây ra rất lớn đối với sự phát triển internet nói chung và người sử dụng thư điện tử nói riêng.
Theo thống kê toàn cầu của hãng nghiên cứu Ferris Research ở San Francisco, thư rác gây thiệt hại 50 tỷ USD trong năm 2005 Chỉ tính riêng ở Mỹ, thiệt hại do thư rác gây ra đối với các doanh nghiệp ước tính khoảng 17 tỷ USD/năm.
Thư rác chiếm khoảng 80% lưu lượng thư điện tử thế giới trong quý 1/2006, đó là kết luận của nhóm hợp tác chống thư rác gồm các công ty AOL, Bell Canada,
Cigular Wireless, EarthLink, France Telecom, Microsoft, Verizon, và Yahoo.
Microsoft và AOL cho biết hai hãng này trung bình mỗi ngày chặn gần 5 tỷ thư rác Ước tính, cứ 9 trong 10 email sử dụng dịch vụ MSN Hotmail của Microsoft là thư rác.
Không chỉ gây thiệt hại về tiền bạc, thư rác còn làm giảm hiệu quả làm việc, gây stress, tiêu tốn thời gian của nhân viên Những điều này cũng đồng nghĩa với việc, năng suất lao động giảm, ảnh hưởng tới tình hình kinh doanh và doanh thu của công ty.
1.3 Phân loại thư rác
Lọc thư rác dựa trên địa chỉ IP
Lọc dựa trên chuỗi hỏi/đáp (Challenge/Response filters)
Phương pháp lọc dựa trên mạng xã hội
Phương pháp định danh người gửi
Phương pháp lọc nội dung
Trong báo cáo này nhóm chúng em tập trung tiến hành phân loại thư rác dựa trên nội dung bằng cách sử dụng một số thuật toán và mô hình học máy khác nhau, từ
đó tìm ra ưu điểm và hạn chế của từng thuật toán cũng như tìm ra những thuật toán
có kết quả tối ưu nhất.
Multinomial Naive Bayes
Decision Tree Classifier
Trang 3SVM with Stochastic Gradient Descent Learning
LR with Stochastic Gradient Descent Learning
Giới thiệu về dữ liệu (Huy)
Bộ dữ liệu bao gồm 2 file:
- File fradulent_emails.txt 1000 email với đầy đủ thông tin bao gồm người gửi, người
nhận, content type và nội dung email Tất cả nội dung của file đều chứa thông tin vềcác email lừa đảo
- File spam_normal_emails.csv là file csv có 2 cột là email chứa nội dung của email
và spam với giá trị là 1 hoặc 0 để xác định xem nội dung nay có phải là rác không.File bao gồm 1000 hàng là email spam và 1000 hàng là email bình thường
Tiền xử lý dữ liệu (Huy)
Để quá trình tiền xử lý dữ liệu dễ dàng nhóm chúng em sẽ lấy thông tin đã chuẩn hóa từ 2file ở trên để đưa vào 1 file dữ liệu final để quá trình tiền xử lý dễ dàng
Trang 4Làm sạch dữ liệu
1 Xử lý dữ liệu cho các email lừa đảo
Dữ liệu các email lừa đảo được lưu trữ dưới dạng text(File txt) và các email đềubắt đầu với “From r” chúng em sẽ cắt nội dung các email riêng biệt với nhau theo
từ trên
Để lấy nội dung chính xác của từng email nhóm tiến hành lọc các email có bắtđầu và kết thúc bằng các từ phổ biến
2 Xử lý dữ liệu cho các email spam và bình thường
Dữ liệu các email spam và bình thường được lưu trữ trong file csv Khi đọc
dữ liệu từ file để trích rút và chuẩn hóa thông tin chính xác của email nhóm sẽtiến hành chuyển đổi từ “ thành ‘ Trong quá trình quan sát dữ liệu thấy hầu hếtcác email đều bắt đầu với “Subject:” nên nhóm sẽ trích rút các thông tin từ sau từnày
Trang 53 Tạo dataset final
Tất cả dữ liệu vừa được tạo sẽ được lưu trữ vào 1 một file duy nhất để quá trìnhtiền xử lý sau này dễ dàng File lưu trữ csv sẽ chưa 3 cột như: Email(Chứa nộidung chính của email), Label(Nhãn của email), Length(Độ dài của email) vàđược lưu trữ trong file “final_dataset.csv”
Loại bỏ các từ dừng và dấu chấm câu
StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mangnhiều ý nghĩa Ở tiếng việt StopWords là những từ như: để, này, kia Tiếng anh là những
từ như: is, that, this Có rất nhiều cách để loại bỏ StopWords nhưng có 2 cách chính là:
●
●
Dùng từ điển
Dựa theo tần suất xuất hiện của từ
Trong project nhóm sử dụng từ điện stopwords do “ntlk” cung cấp
Trong project nhóm có sử dụng “STEMMING” cho từ STEMMING là quá trình tạo ra cácbiến thể hình thái về từ gốc/cơ sở và so sánh với khi không sử dụng STEAMING
Quá trình tạo stemming nhóm chúng em có sử dụng thư viện stem của nltk
Trích chọn thuộc tính trong đoạn văn bản
Sử dụng TF-IDF
Viết tắt của thuật ngữ tiếng Anh term frequency – inverse document frequency,tf-idf là trọng
số của một từ trong văn bản thu được qua thống kê thể hiện mức độ quan trọng của từ nàytrong một văn bản, mà bản thân văn bản đang xét nằm trong một tập hợp các văn bản.Thuật toán này thường được sử dụng vì: trong ngôn ngữ luôn có những từ xảy ra thườngxuyên với các từ khác
Trang 6Cách tính trọng số tf-idf
Tf- term frequency: dùng để ước lượng tần suất xuất hiện của từ trong văn bản Tuy nhiên
với mỗi văn bản thì có độ dài khác nhau, vì thế số lần xuất hiện của từ có thể nhiều hơn Vìvậy số lần xuất hiện của từ sẽ được chia độ dài của văn bản (tổng số từ trong văn bản đó)TF(t, d) = ( số lần từ t xuất hiện trong văn bản d) / (tổng số từ trong văn bản d)
IDF- Inverse Document Frequency: dùng để ước lượng mức độ quan trọng của từ đó như
thế nào Khi tính tần số xuất hiện tf thì các từ đều được coi là quan trọng như nhau Tuynhiên có một số từ thường được được sử dụng nhiều nhưng không quan trọng để thể hiện
ý nghĩa của đoạn văn , ví dụ :
●
●
●
Từ nối: and, but, because,then, so, …
Giới từ: in, on, at, …
Từ chỉ định: this, that…
Vì vậy ta cần giảm đi mức độ quan trọng của những từ đó bằng cách sử dụng IDF :
IDF(t, D) = log_e( Tổng số văn bản trong tập mẫu D/ Số văn bản có chứa từ t )
Vậy giá trị của tf-idf : TF(t, d) * idf(t, D)
Trang 7Áp dụng trong project, nhóm chúng em đã sử dụng TfidfVectorizer của sklearn để trích chọn các thuộc tính quan trọng.
Vì Text1 không chứa các từ "computer" và "vision", do đó tần số của chúng được tính bằng 0 trong khi các từ khác có mặt khi tần số của chúng bằng 1.
Count Vector có thể hữu ích trong việc hiểu loại văn bản theo tần suất của các từ trong đó nhưng nhược điểm chính của nó là:
● Nó không có khả năng xác định các từ quan trọng hơn và ít quan trọng hơn để phân tích.
Trang 8Phân chia dữ liệu cho mô hình
Tách tập dữ liệu thành tập huấn luyện và thử nghiệm theo tỷ lệ 7:3
Xây dựng mô hình học máy
Support Vector Machine(Hiếu)
Support Vector Machine là thuật toán được chứng minh có hiệu suất rất tốt trong bài toánphân loại văn bản, nhận dạng chữ ký điện tử, SVM tạo danh mục bằng một bộ phân loạinhị phân Ưu điểm của SVM là nó không bị ảnh hưởng bởi kích thước của không gian đốitượng, thay vào đó tập trung vào việc tối ưu hóa ranh giới giữa những điển hình tích cực vàtiêu cực trong các tài liệu huấn luyện SVM vẽ một đường hoặc một siêu phẳng chia mộtkhông gian ra làm 2 không gian phụ, một không gian phụ chứa các vectơ thuộc 1 nhóm,không gian kia chứa các vectơ thuộc nhóm còn lại Những vectơ sẽ biểu diễn văn bản huấnluyện và văn bản sẽ được phân chia vào nhóm định phân loại
Ở đây, chúng em tạo vòng lặp để tìm ra bộ tham số (kernel,gamma) có khả năng tạo ra bộphân loại SVM ưu việt nhất Với các lựa chọn của tham số kernel gồm: rbf, polynomial,sigmoid và tham số gamma thuộc chạy trong khoảng [0.05 , 1] với step là 0.05 Mỗi lần, giátrị hàm SVM lý tưởng nhất f*(x) được so sánh và tính toán lại, để tìm được bộ phân loạichính xác hơn
Trang 9Kết quả thu được như hình ảnh dưới đây và chúng em chọn bộ tham số (kernel = ‘sigmoid’,gamma = 1.0)
Khi sử dụng Stemming, bộ tham số tối ưu nhất là (kernel='sigmoid', gamma=0.7)
Trang 10KNN dựa vào khoảng cách để phân loại, vì vậy việc chuẩn hóa dữ liệu huấn luyện có thể cải thiện độ chính xác đáng kể.
Ở đây chúng em tính khoảng cách giữa 2 điểm dữ liệu đã được vector hóa theo như phần tiền xử lý dữ liệu đã trình bày ở trên.Sử dụng KNN từ thư viện sklearn KNeighborsClassifier () với i người hàng xóm gần nhất.
Để đánh giá độ chính xác của thuật toán KNN classifier này, chúng em xem xem có bao nhiêu điểm trong test data được dự đoán đúng Lấy số lượng này chia cho tổng
số lượng trong tập test data sẽ ra độ chính xác Scikit-learn cung cấp hàm sốaccuracy_score để thực hiện công việc này.
Kết quả:
Với i thay đổi, kết quả thu được với các giá trị tương ứng của i:
Trang 11Khi sử dụng Stemming
Multinomial Naive Bayes(Hoạt)
Đây là kĩ thuật thuộc họ phân loại theo xác suất dựa trên định lý Bayes
Mô hình này chủ yếu được sử dụng trong phân loại văn bản mà feature vectors được tính bằng Bags of Words Lúc này, mỗi văn bản được biểu diễn bởi một vector
có độ dài d chính là số từ trong từ điển Giá trị của thành phần thứ i trong mỗi vector
chính là số lần từ thứ i xuất hiện trong văn bản đó.
Trang 12Khi đó, p(xi,c) tỉ lệ với tần suất từ thứ i (hay feature thứ i cho trường hợp tổng quát)
xuất hiện trong các văn bản của class c Giá trị này có thể được tính bằng cách:
Trong đó:
Nci là tổng số lần từ thứ i xuất hiện trong các văn bản của class c, nó được tính là
tổng của tất cả các thành phần thứ i của các feature vectors ứng với class c
Nc là tổng số từ (kể cả lặp) xuất hiện trong class c Nói cách khác, nó bằng tổng độ
dài của toàn bộ các văn bản thuộc vào class c
.
Cách tính này có một hạn chế là nếu có một từ mới chưa bao giờ xuất hiện trong class c thì biểu thức trên sẽ bằng 0
Để giải quyết việc này, một kỹ thuật được gọi là Laplace smoothing được áp dụng:
Sử dụng MultinomialNB với alpha thay đổi trong khoảng từ 0.001 đến 0.1:
Kết quả:
Trang 13Khi sử dụng Stemming
Decision Tree Classifier(Hoạt)
Cây quyết định là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật Các thuộc tính của đối tượng có thể thuộc
Trang 14các kiểu dữ liệu khác nhau như Nhị phân (Binary) , Định danh (Nominal), Thứ
tự (Ordinal), Số lượng (Quantitative) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal.
Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp
(classes) của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các
dữ liệu chưa biết.
DecisionTree là một whitebox model, ta có thể dễ dàng nhìn được cấu trúc dữ liệu bên trong và logic để phân loại data của nó Có thể hình dung cấu trúc dữ liệu của DecisionTree như sau.
Decision Node thể hiện một rule để phân nhánh data theo một thuộc tính (có thể hiểu là một rule áp dụng lên feature của data), mỗi nhánh từ Decision Node là kết quả phân nhánh theo rule đó, Leaf Node là kết quả phân loại cuối cùng.
Sử dụng DecisionTreeClassifier với số lượng mẫu tối thiểu cần thiết để tách
một nút bên trong: min_samples_split thay đổi từ 2 - 21, random_state =
111
Trang 15Kết quả:
Khi sử dụng Stemming:
Trang 16Logistic Regression(Hiếu):
Phương pháp hồi quy logistic là một mô hình hồi quy nhằm dự đoán giá trị
đầu ra rời rạc (discrete target variable) y ứng với một vectơ đầu vào x Việc này tương đương với chuyện phân loại các đầu vào x vào các nhóm y tương
ứng Mặc dù tên gọi chứa từ “Regression” nhưng đây là thuật toán
thuộc loại Classification.
Đầu ra dự đoán của logistic regression thường được viết chung dưới dạng:
f(x) = θ (WT X)
Trong đó θ được gọi là logistic function
Hàm sigmoid được sử dụng nhiều nhất vì nó bị chặntrong khoảng (0,1)
Mặc dù có tên là Regression, tức một mô hình cho fitting, Logistic Regression lại được sử dụng nhiều trong các bài toán Classification Sau khi tìm được mô hình, việc xác định class y cho một điểm dữ liệu x được xác định bằng việc so sánh hai
biểu thức xác suất:
Nếu biểu thức thứ nhất lớn hơn thì ta kết luận điểm dữ liệu thuộc class 1, ngược lại thì nó thuộc class 0 Vì tổng hai biểu thức này luôn bằng 1 nên một cách gọn hơn, ta chỉ cần xác định xem P(y=1|x;w) lớn hơn 0.5 hay không Nếu có, class 1 Nếu không, class 0.
Ở bước điều chỉnh tham số, chúng em sử dụng vòng lặp để chọn phương pháp để giải bài toán tối ưu đối với cross entropy Trong đó, hai phương pháp được thử nghiệm là newton-cg và lbfgs với class_weight là balanced.
Kết quả cho như đồ thị dưới:
Trang 17Khi sử dụng Stemming, ta có kết quả:
Random Forest Classifier(Hiếu)
Mô hình rừng cây được huấn luyện dựa trên sự phối hợp giữa luật kết hợp
(ensembling) và quá trình lấy mẫu tái lặp (bootstrapping) Cụ thể thuật toán này tạo
ra nhiều cây quyết định mà mỗi cây quyết định được huấn luyện dựa trên nhiều mẫu
con khác nhau và kết quả dự báo là bầu cử (voting) từ toàn bộ những cây quyết
định Như vậy một kết quả dự báo được tổng hợp từ nhiều mô hình nên kết quả của chúng sẽ không bị chệch Đồng thời kết hợp kết quả dự báo từ nhiều mô hình sẽ có phương sai nhỏ hơn so với chỉ một mô hình Điều này giúp cho mô hình khắc phục
được hiện tượng quá khớp.
Trang 18Mô hình rừng cây sẽ áp dụng cả hai phương pháp học kết hợp (ensemble learning)
và lấy mẫu tái lập (boostrapping) Thứ tự của quá trình tạo thành một mô hình rừng
cây như sau:
Ở bước điều chỉnh tham số, chúng em chạy vòng lặp nhằm tìm ra số lượng cây quyết định được sử dụng trong khoảng (2,36) với random_state là 111.
Và kết quả thu được với số cây tối ưu là 35:
Trang 19Boosting là gì? boosting là thuật toán học quần thể bằng cách xây
dựng nhiều thuật toán học cùng lúc (ví dụ như cây quyết định) và kết
hợp chúng lại Mục đích là để có một cụm hoặc một nhóm các weak learner sau đó kết hợp chúng lại để tạo ra một strong learner duy
nhất.
Trang 20Áp dụng AdaBoost với số lần boosting được chạy ngẫu nhiên từ
25-76 để xác định số lần kết hợp các weak learner tối ưu nhất:
Kết quả thu được:
Sau quá trình thử nghiệm:
Với không sử dụng Stemming thì boosting = 41 đạt kết quả tối ưu nhất:
Với sử dụng Stemming thì boosting = 41 đạt kết quả tối ưu nhất: