Trƣớc khi tiến hành phân lớp dữ liệu, cần phải xử lý để chuyển đổi dữ liệu về định dạng phù hợp. Luận văn sử dụng phần mềm Weka (nguồn http://www.cs.waikato.ac.nz/ml/weka/) để thực hiện các thao tác tiền xử lý dữ liệu. Chi tiết các bƣớc xử lý nhƣ sau:
Bƣớc 1: Chuyển đổi dữ liệu dạng chuỗi về dạng vector: weka sẽ xây dựng bộ
từ điển về các từ khóa. Sau khi chuyển đổi, bộ dữ liệu dùng để chuyển đổi ở đây bao gồm 148 bản ghi và 100 thuộc tính. Hình 3.2 chỉ rõ dữ liệu sau khi đã đƣợc chuyển đổi.
Hình 3.2: Nội dung tin nhắn được chuyển thành dạng vector
Khi đó dữ liệu dạng vector đƣợc mô tả nhƣ trong hình sau. Các thuộc tính là các từ trong nội dung tin nhắn, mỗi thuộc tính là 1 cột dữ liệu. Mỗi tin nhắn đƣợc thể hiện trên một hàng với các số 0,1… thể hiện số lần xuất hiện thuộc tính (từ tiếng anh) trong nội dung của tin nhắn nhƣ hình 3.3. Khi đó ta vẫn có thể chỉnh sửa đƣợc nội dung file nếu cần.
Hình 3.3: Nội dung file dữ liệu dạng vector
Bƣớc 2: Trích chọn đặc trƣng đƣợc trình bày chi tiết trong mục 3.3.
Bƣớc 3: Thực hiện gán số thứ tự cho các đỉnh với mỗi đỉnh là một SMS đƣợc thể hiện trên một dòng dữ liệu và gán nhãn trƣớc cho một số đỉnh còn một số đỉnh thì chƣa gán nhãn. Bằng cách thêm một số nhãn 1,0 (thể hiện là nhãn) hay -1 (chƣa gán nhãn) trƣớc phần dữ liệu của tin nhắn. Bƣớc này đƣợc thực hiện trong chƣơng trình nhằm chuẩn hóa dữ liệu đầu vào cho phù hợp với dữ liệu đầu vào của thuật toán.
3.3. Trích chọn đặc trƣng
Trích chọn đặc trƣng (Feature Selection, Feature Extraction) là nhiệm vụ rất quan trọng giai đoạn tiền xử lý dữ liệu khi triển khai các mô hình khai phá dữ liệu hoặc máy học. Một vấn đề gặp phải là các bộ dữ liệu dùng để xây dựng mô hình dữ liệu thƣờng chứa nhiều thông tin không cần thiết (thậm chí gây nhiễu) cho việc xây dựng mô hình. Chẳng hạn, một bộ dữ liệu gồm hàng trăm thuộc tính dùng để mô tả về khách hàng của một doanh nghiệp đƣợc thu thập, tuy nhiên khi xây dựng một mô
hình nào đó chỉ cần khoảng 50 thuộc tính từ hàng trăm thuộc tính đó. Nếu ta sử dụng tất cả các thuộc tính (hàng trăm) của khách hàng để xây dựng mô hình thì ta cần nhiều CPU, nhiều bộ nhớ trong quá trình huấn luyện, thậm chí các thuộc tính không cần thiết đó làm giảm độ chính xác của mô hình và gây khó khăn trong việc phát hiện tri thức.
Có nhiều phƣơng pháp để trích chọn ra các thuộc tính tốt để huấn luyện mà vẫn đảm bảo đƣợc yêu cầu, giúp quá trình thực thi huấn luyện nhanh hơn. Trong trích chọn đặc trƣng văn bản, các phƣơng pháp có thể kể đến nhƣ Bag-of-words hay Chỉ số Gain,… luận văn sử dụng phƣơng pháp trích chọn dựa trên bag-of-words với kỹ thuật loại bỏ từ dừng “stop word” và lấy từ gốc “stemming”.
Sau khi các đặc trƣng phù hợp đƣợc chọn, bộ phân lớp đƣợc đào tạo với tập dữ liệu huấn luyện. Quá trình huấn luyện thƣờng đƣợc lặp đi lặp lại nhiều lần để có đƣợc một mô hình tốt nhất. Hiệu năng của mô hình phân loại sau đó đƣợc đánh giá bởi tập dữ liệu kiểm tra đã chuẩn bị riêng.
Trong luận văn này Wake 3 đƣợc sử dụng để chọn ra các đặc trƣng tốt bằng cách sử dụng tính năng Attribute Selection với tùy chọn Best First để lọc bỏ các tính năng không thực sự quan trọng từ đó giảm số thuộc tính cần xét giúp chƣơng trình thuật toán thực hiện đƣợc nhanh hơn mà vẫn đảm bảo một số tiêu chí dùng cho phân lớp nhƣ hình sau.
Từ đó ta đƣợc file đầu vào cho bài toán tự huấn luyện và lan truyền nhãn với 30 thuộc tính cơ bản nhƣ hình 3.5. Dữ liệu đầu vào có thể xem và sửa nếu cần thiết nhƣ hình 3.5 nhƣ sau:
Hình 3.5: Trích chọn thuộc tính cho file đầu vào của chương trình
Dữ liệu đầu vào của thuật toán là tập các bản ghi dữ liệu chƣa đƣợc phân lớp. Với mỗi bản ghi dữ liệu sẽ chứa giá trị của các thuộc miền rời rạc.
Hình 3.7: Dữ liệu của chương trình mở bằng Notepad
Cấu trúc dữ liệu của tệp đầu vào có thể mô tả lại nhƣ sau: Đầu tiên là các thông tin về Wake 3
Tiếp theo là n dòng thông tin các thuộc tính có dạng @ thuộc tính với n là số thuộc tính.
Mỗi dòng tƣơng ứng với giá trị của một đối tƣợng trong luận văn thì mỗi dòng thể hiện dữ liệu các thuộc tính của 1 sms.
Các giá trị của mỗi thuộc tính cách nhau bởi một dấu “,”
3.4. Cài đặt và thử nghiệm
Môi trƣờng cài đặt và thử nghiệm
Chƣơng trình thử nghiệm đƣợc viết bằng ngôn ngữ C#.Net trên bộ Visual Studio 2010 sử dụng phiên bản .Net Framework 4.0. Dữ liệu của chƣơng trình đƣợc lƣu trữ trong hệ quản trị cơ sở dữ liệu Sql Server 2008 R2.
Các chức năng của chƣơng trình
Nhập dữ liệu:
Cho phép nhập dữ liệu từ tệp text có cấu trúc nhƣ trong mô tả ở mục 3.6. Trƣớc khi nhập liệu, ngƣời dùng có thể chỉnh sửa trên phần mềm Wake 3. Để nhập dữ liệu, ngƣời dùng nhấn vào nút “Chọn...”, sau đó tìm đến tệp dữ liệu lƣu trữ trên máy tính có đuôi dạng *.arff hoặc *.text. Sau khi chọn tệp, dữ liệu sẽ đƣợc lấy thông tin cần thiết về các thuộc tính và thực hiện lƣu vào cơ sở dữ liệu và hiển thị lên ở tab “Chi tiết dữ liệu” để phục vụ cho việc thực hiện các thuật toán tiếp theo đƣợc dễ dàng hơn.
Tại giao diện này, cột wi chính là thuộc tính thứ i trong bộ thuộc tính đã
trích chọn ở bên trên. ngƣời dùng có thể thực hiện các thao tác lựa chọn vào combobox “Chọn phƣơng pháp”. Chƣơng trình cho phép lựa chọn phƣơng pháp tự huấn luyện và phƣơng pháp lan truyền nhãn. Sau khi lựa chọn, nhấn nút “Thực hiện”.
Với phƣơng pháp tự huấn luyện, kết quả hiển thị nhƣ sau:
Hình 3.9: Kết quả khi lựa chọn phương pháp tự huấn luyện
Các tin nhắn thuộc lớp sms spam là 11 còn lại là ham.
Với phƣơng pháp lan truyền nhãn, giao diện sẽ hiển thị thông tin về ma trận nhãn, ma trận xác suất nhãn, ma trận trọng số cạnh và ma trận xác suất.
Mỗi nút trên đồ thị là một SMS. Ngoài ra trên tab “Đồ thị lan truyền nhãn”, sẽ hiển thị đồ thị các nhãn với mỗi đỉnh là 1 hình tròn, đỉnh màu đỏ ứng với trƣờng hợp chƣa gán nhãn, đỉnh xanh lá ứng với nhãn 1 và đỉnh vàng ứng với nhãn 0 và đƣờng nối giữa các đỉnh.
Trong hình 3.10 ta có thể xem chi tiết các ma trận đƣợc tính toán trong quá trình lan truyền nhãn nhƣ: ma trận trọng số cạnh W, ma trận xác suất chuyển đổi P, ma trận nhãn YL, ma trận xác suất chuyển nhãn f
Hình 3.10: Giao diện đồ thị lan truyền nhãn trước khi thực hiện
Ở giao diện này trên các bảng “Nút i” thể hiện là SMS thứ i
Để thực hiện thuật toán lan truyền nhãn, ngƣời dùng nhấn vào nút “Thực hiện” trên tab “Phƣơng pháp lan truyền nhãn”, chƣơng trình sẽ trả về kết quả là các đỉnh đã đƣợc gán nhãn. Đồng thời sẽ hiển thị ma trận xác suất hội tụ và ma trận xác xuất nhãn fu với của các 8 tin nhắn spam.
Sau khi hệ thống thực hiện xong việc lan truyền nhãn, ta có thể xem kết quả dƣới dạng bảng ma trận xác suất nhạn hội tụ và ma trận xác suất nhãn fu cũng nhƣ dƣới dạng đồ thị nhƣ hình 3.11. Màn hình sẽ hiển thị thông tin các đỉnh và nhãn của chúng sau khi đƣợc lan truyền từ các đỉnh đã gán nhãn khác
Hình 3.11: Giao diện đồ thị lan truyền nhãn sau khi thực hiện
Sau khi thực hiện thuật toán lan truyền nhãn, các đỉnh đều đƣợc gán nhãn nên không còn các đỉnh màu đỏ (chƣa gán nhãn) nhƣ trên hình. Tại giao diện này, ngƣời dùng có thể nhấn vào nút “Lƣu kết quả” để lƣu lại dữ liệu đã gán nhãn. Kết quả sẽ xuất ra tệp text.
3.5. Kết quả thực nghiệm và đánh giá độ phức tạp
3.5.1 Kết quả thực nghiệm
Kết quả thực nghiệm thuật toán thu đƣợc 11 tin nhắn đƣợc phân lớp tin nhắn rác và 39 tin nhắn trong đó 3 tin nhắn phân lớp sai, tỷ lệ tin nhắn phân lớp đúng đạt 94%. 3.5.2 Đánh giá độ phức tạp thuật toán
Với thuật toán tự huấn luyện
Dữ liệu đầu vào bao gồm:
ℓ: số lƣợng dữ liệu đã gán nhãn.
u: số lƣợng dữ liệu chƣa gán nhãn (u ≫ ℓ). n = ℓ + u =50 : tổng số lƣợng dữ liệu.
Độ phức tạp của thuật toán tự huấn luyện dựa trên việc đánh giá quá trình lặp ở bƣớc 2 (xem 1.3.1):
Thuật toán thực hiện số vòng lặp nhiều nhất có thể là: u vòng lặp. Trong đó: Vòng lặp thứ nhất có độ phức tạp: O (ℓ).
Vòng lặp thứ hai có độ phức tạp là: O (ℓ + 1). ... Vòng lặp thứ u có độ phức tạp là: O (ℓ+u−1). Do đó thuật toán có độ phức tạp là:
O (ℓ) + O (ℓ +1) + ... + O (ℓ +u−1) = O(ℓ +u−1). (O (ℓ +u) − O (ℓ))/ 2. = O(ℓ +u−1). O (u) / 2.
≈ O(n2) ≈ O(502).
Với thuật toán lan truyền nhãn
Thuật toán lan truyền nhãn đƣợc thực hiện dựa trên quá trình tính toán các ma trận và việc lặp lại để xác định sự hội tụ của thuật toán.
Đầu vào của thuật toán là một đồ thị, trong đó: ℓ: số đỉnh đã gán nhãn.
u: số đỉnh chƣa gán nhãn (u ≫ ℓ). n = ℓ + u =50: tổng số đỉnh của đồ thị.
Thuật toán thực hiện các quá trình tính toán với độ phức tạp của các thành phần nhƣ sau: - Quá trình xác định các ma trận trọng số W, ma trận xác suất P, ma trận xác suất chuyển nhãn PUU, ma trận xác suất PUL, ma trận nhãn YL, ma trận xác suất nhãn
f, có độ phức tạp: O(n2). (1) - Quá trình xác định siêu tham số α dựa trên thuật toán tìm cây khung nhỏ nhất, có độ phức tạp: O (n2
×log n). (2)
- Quá trình lặp để thực hiện việc lan truyền nhãn đƣợc thực hiện trong m bƣớc lặp (m khá lớn), trong đó: việc xác định sự hội tụ của thuật toán dựa trên quá trình tính toán các định thức ma trận, các phép toán nhân ma trận và tìm ma trận nghịch đảo, có độ phức tạp: O(n3).
Do đó, độ phức tạp của quá trình lặp là: O (m×n3
). (3)
Từ (1), (2) và (3) suy ra độ phức tạp của thuật toán la truyền nhãn là: O (m×503).
3.6. Kết luận
Trong chƣơng này, tác giả đã cài đặt chƣơng trình thử nghiệm phƣơng pháp tự huấn luyện và lan truyền nhãn dựa trên học nửa giám sát. Với thuật toán tự huấn luyện, ứng dụng cho phép ngƣời dùng nhập dữ liệu đầu vào, gán nhãn thông qua quá trình tự huấn luyện. Với thuật toán lan truyền nhãn trên đồ thị, chƣơng trình cho phép theo dõi kết quả của quá trình tính toán thông qua các ma trận, đồng thời hiển thị kết quả một cách trực quan lên giao diện. Chƣơng trình có thể dễ dàng phát triển với nhiều thuộc tính hơn.
Trong chƣơng này, tác giả đã chƣơng trình thử nghiệm các thuật toán phân lớp áp dụng vào bài toán phân loại tin nhắn rác. Với phƣơng pháp trích chọn đặc trƣng nhƣ đã trình bày ở trên, giúp giảm rất nhiều thời gian thực hiện phân lớp của các thuật toán. Đồng thời, luận văn cũng trình bày chi tiết các bƣớc tiền xử lý dữ liệu cho phép khai thác trên các thuật toán phân lớp hiệu quả hơn
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Kết luận
:
-Trình bày khái quát về học có giám sát, học không giám sát và học nửa giám sát.
-Giới thiệu một số phƣơng pháp học nửa giám sát phổ biến nhƣ: Self-training, Co-training, TSVM và đánh giá các ƣu và nhƣợc điểm của mỗi phƣơng pháp.
-Trình bày phƣơng pháp học nửa giám sát dựa trên đồ thị và một số thuật toán nhƣ: Labeled Propagation, Mincut.
-Đã cài đặt chƣơng trình thử nghiệm thuật toán lan truyền nhãn trên đồ thị và thuật toán tự huấn luyện.
Hạn chế
Về chƣơng trình ứng dụng: do thời gian có hạn nên tôi chƣa có điều kiện xây dựng một phần mềm ứng dụng hoàn chỉnh, áp dụng các thuật toán trên vào các lĩnh vực trong đời sống.
Hƣớng phát triển
Với việc nghiên cứu về học nửa giám sát và phƣơng pháp học nửa giám sát dựa trên đồ thị, tôi sẽ tiếp tục nghiên cứu sâu hơn về hƣớng này và sẽ tìm hiểu những phƣơng pháp, thuật toán học nửa giám sát khác để có thể áp dụng những lý thuyết đã nghiên cứu đƣợc nhằm xây dựng các phần mềm áp dụng vào thực tiễn.
TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt
[1] TS Nguyễn Tân Ân (2011), Bài giảng mạng noron nhân tạo, Trƣờng Đại
học Sƣ phạm Hà Nội, Hà Nội.
[2] PGS. TS Đoàn Văn Ban, ThS Nguyễn Hiền Trinh (2009), Ngôn ngữ hình thức và ôtômát, NXB Đại học Thái Nguyên.
[3] PGS. TS. Hà Quang Thụy (2011), Bài giảng nhập môn khai phá dữ liệu,
Trƣờng Đại học Công nghệ Đại học Quốc gia Hà Nội, Hà Nội.
Tài liệu tiếng Anh
[4] Avirm Blum, Shuchi Chawla (2001), Learning from labeled and Unlabeled
Data using Graph Mincuts, Computer Science Department, Carnegie
Mellon University, 5000 Forbes Avenue, Pittsburgh, PA15213USA.
[5] Amarnag Subramanya (2012), Partha Pratim Talukdar, A Tutorial on Graph-based Semi-Supervised Learning Algorithms for NLP, South Korea.
[6] Matthias Seeger (2001), Learning with labeled and unlabeled data,
Technical Report, University of Edinburgh.
[7] Olivier Chapelle, Bernhard Sch¨olkopf, Alexander Zien (2006), Semi- Supervised Learning.
[8] Partha Pratim Talukdar (July 16, 2010), Experiments in Graph-based Semi-
Supervised Learning Methods for Class-Instance Acquisition, Search Labs,
Microsoft Research Mountain View, CA 94043, Fernando Pereira Google, Inc.Mountain View, CA 94043.
[9] Xiaojin Zhu (May 2005), Semi-Supervised Learning with Graphs.
[10] Zoubin Ghahramani (2012), Graph-based Semi-supervised Learning,