Tải bản đầy đủ (.pdf) (50 trang)

Cài đặt một số thuật toán phân lớp dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (393.4 KB, 50 trang )



Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
1



LỜI CẢM ƠN

Em xin chân thành cảm ơn Thầy, Tiến sĩ Nguyễn Đình Thuân đã tận
tình hướng dẫn và giúp đỡ, cung cấp cho em những ý kiến đóng góp, nhận
xét quý báu trong quá trình thực hiện đồ án này.
Em xin chân thành cảm ơn các giảng viên trong khoa Công nghệ thông
tin cũng như các giảng viên giảng dạy trong trường Đại học Đại học Nha
trang những người đã truyền thụ cho em những kiến thức quí báu trong
suốt thời gian học tập và nghiên cứu tại trường Đại học Nha trang, giúp em
có được những điều kiện cần thiết để hoàn thành tốt đồ án tốt nghiệp này.
Sự quan tâm và giúp đỡ của Bố mẹ, cùng toàn thể gia đình là một
nguồn động viên rất lớn, tạo cho con sự yên tâm về vật chất và tinh thần để
con hoàn thành nhiệm vụ của mình.
Cuối cùng xin cảm ơn sự quan tâm và đóng góp ý kiến của tất cả các
bạn.


Nha Trang, ngày 10 tháng 12 năm 2007
Sinh viên thực hiện
Hứa Văn Lắm





















Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
2





MỤC TỪ VIẾT TẮT

Số TT

Từ viết tắt Giải nghĩa

1 CD Count Distribution
2 CSDL Cơ sở dữ liệu
3 DB Database
4 DBMS Database Management System
5 DD Data Distribution
6 DHP Direct Hashing and Puning
7 DIC Dynamic Itemset Counting
8 KDD Knowledge Discovery from Data
9 K-NN K- Nearest Neighbor
10 TID Transaction identifier
11 MAP Maximum A Posterior
12 NB Naïve Bayes
13 TREE Cây quyết định
14 ILA Inductive Learning Algorithm
15 BAYES Algorithm Bayes
16 PLDL Phân lớp dữ liệu
17 IG Information Gain
18 OOP Lập trình hướng đối tượng
19 IDE Môi trường thiết kế tích hợp


















Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
3








DANH MỤC CÁC THUẬT NGỮ

Số TT Thuật ngữ Giải nghĩa
1 Basket data
Dữ liệu các mặt hàng mua bán trong
giao dịch
2 Count Distribution phân phối số đếm
3 Data Distribution Phân phối dữ liệu
4 Itemset Tập các item
5 k-itemset Itemset có k phần tử
6 k-subset
Một tập con của một giao dịch có chứa
k item

7 Transaction Một giao dịch trong cơ sở dữ liệu
8 Transaction identifier Định danh duy nhất của một giao dịch
9 Tập học
Tập hợp những bộ được dùng để xây
dựng mô hình
10 Information gain
Độ lợi thông tin là đại lượng được dùng
để chọn thuộc tính nhằm phân chia tập
học.
11 Java Là ngôn ngữ lập trình hướng đối tượng


















Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp

4

MỤC LỤC
LỜI CẢM ƠN 1
DANH MỤC TỪ VIẾT TẮT Error! Bookmark not defined.
DANH MỤC CÁC THUẬT NGỮ 3
MỤC LỤC 4
LỜI MỞ ĐẦU 6
Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 8
1.1. Các bước của quá trình khai phá dữ liệu: 8
1.2. Nhiệm vụ chính của khai phá dữ liệu 10
1.3. Khai phá dữ liệu mô tả 11
1.4. Khai phá dữ liệu dự đoán 12
1.5. Khái quát các kỹ thuật KTDL 1Error! Bookmark not defined.
1.6 Những thách thức trong KTDL 12
Chương 2:PHÂN LỚP DỮ LIỆU-CÁC THUẬT TOÁN PHÂN LỚP DỮ LIỆU
13
2.1. Mở đầu 13
2.1.1. Xây dựng mô hình 13
2.1.2. Vận hành mô hình 13
2.2 Phân lớp quy nạp trên cây quyết định 14
2.3 Phân lớp bằng thuật giải Bayes 18
2.4 Phân lớp bằng thuật giải ILA 20
2.5 Các phương pháp phân lớp khác 22
Chương 3: SƠ LƯỢC VỀ JAVA 23
3.1 Lịch sử java 23
3.2 Thiết kế và ưu điểm của Java 23
3.3 Đặc điểm của Java 23
3.4 Quy cách ngôn ngữ Java 26
3.5 Công cụ thiết kế và Jbuilde 26

3.6 Các lớp sử dụng trong chương trình 28
Chương 4: XÂY DỰNG GIẢI PHÁP VÀ THỬ NGHIỆM KẾT QUẢ 29
4.1. Tổng quan về hệ thống 29
4.1.1. Mô hình chung của hệ thống 32
4.1.2. Sơ đồ chức năng chương trình 29
4.1.3. Module hóa chức năng chương trình 30
4.1.4 Kiến trúc hệ thống 30
4.1.5 Mô tả chức năng 31
4.1.6 Cấu trúc dữ liệu 31
4.2. Giải pháp, cài đặt 31
4.2.1. Môi trường, công cụ, ngôn ngữ sử dụng 31
4.2.2. Lựa chọn thuật toán 32
4.2.3. Thiết kế môđun 32
4.3. Kết quả thử nghiệm và đánh giá 33
4.3.1. Giao diện chương trình: 33
4.3.2. Cơ sở dữ liệu thử 33
4.3.3. Đánh giá kết quả 34


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
5

4.4. Thông tin rút ra từ dữ liệu thử 48
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49
TÀI LIỆU THAM KHẢO 50

















































Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
6

LỜI MỞ ĐẦU

Ngày nay, cơ sở dữ liệu có kích thước lên tới Terabyte . Bên trong khối
lượng dữ liệu lớn như vậy còn ẩn chứa rất nhều thông tin quan trọng. Khai phá
dữ liệu (data mining) là một quá trình sử dụng rất nhiều công cụ phân tích dữ
liệu để phát hiện ra các mẫu và các mối quan hệ trong dữ liệu để đưa ra được
những dự đoán hiệu quả. Nhiệm vụ chính của data mining là phát hiện ra các tri
thức chưa được phát hiện hay còn ẩn chứa trong tập dữ liệu lớn.
Những tiến bộ gần đây trong việc thu thập và lưu trữ dữ liệu đã được áp
dụng trong các công ty (kỹ thuật mã vạch), các cơ quan hành chính (dữ liệu
điều tra) hay các phòng thí nghiệm khoa học (CSDL phân tử trong hoá học hay
sinh học) để lưu giữ được một lượng lớn các dữ liệu liên quan đến hoạt động
của các tổ chức này. Cùng thời gian này, khả năng dùng nguồn năng lượng tính

toán rẻ để trích rút tự động tri thức có cấu trúc từ dữ liệu đã tập hợp được này
một cách dễ dàng. Những hoạt động như vậy đều được coi như khai phá dữ
liệu. Khai phá dữ liệu bao gồm những lĩnh vực như phân loại, chia nhóm, phân
tích sự tương đồng, tóm tắt nội dung, khai phá luật kết hợp và khai phá các mẫu
tuần tự… Vấn đề phân loại dữ liệu được đưa ra giới thiệu vào năm 1993 nhưng
đã nhanh chóng phát triển mạnh mẽ.
Phân lớp dữ liệu có vai trò quan trọng trong tiến trình dự báo các khuynh
hướng quy luật phát triển. Áp dụng vào tiến trình phân lớp dữ liệu khách hàng
trong CSDL có thể xây dựng các luật phân lớp khách hàng. Một luật phân lớp
có dạng tiêu biểu sau:
Nếu khách hàng ở khu vực 1 và có doanh số năm trước > 200 triệu và
có cửa hàng ở khu thị tứ thì thuộc loại khách hàng có thể giao hàng
trước trả tiền sau

Chính vì những ý nghĩa thiết thực đó, em đã quyết định chọn đề tài tốt
nghiệp của mình là “Nghiên cứu các thuật toán phân lớp dữ liệu và ứng dụng
cho bài toán phân tích ảnh hưởng các môn học”.

Đồ án này sẽ tập trung vào tìm hiểu và nghiên cứu về các thuật toán phân
lớp dữ liệu.
Nội dung chính của đồ án được trình bày trong 5 chương :
Chương 1: Tìm hiểu tổng quan chung về các kỹ thuật khai phá dữ liệu.
Chương 2: Phân lớp dữ liệu – Các thuật toán phân lớp dữ liệu
Chương 3: Sơ lược về Ngôn ngữ lập trình Java


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
7


Chương 4: Xây dựng giải pháp và thử nghiệm kết quả với các thuật toán
phân lớp dữ liệu đã cài đặt.
Kết luận: Nêu ra các nhận xét, kết quả đạt được và một số phương hướng
phát triển tiếp theo của đề tài.





























Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
8

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

Phần đầu của chương sẽ đề cập tới các bước thực hiện của quá trình khai
phá dữ liệu và tổng quan các kỹ thuật khai phá. Phần sau sẽ đi sâu vào một
khía cạnh ứng dụng của khai phá dữ liệu là phân lớp dữ liệu và một số kỹ thuật
phân lớp được sử dụng phổ biến hiện nay cũng như những vấn đề mà các kỹ
thuật này còn chưa giải quyết được.

Khi điện tử và sóng điện từ đã trở thành vấn đề cốt lõi của công nghệ điển
tử cổ điển thì ta thấy rằng dữ liệu, thông tin, tri thức đang là lĩnh vực tập trung
nhiều nghiên cứu và ứng dụng – phát hiện tri thức và khai phá dữ liệu
(knowledge discovery and data mining: KDD).
Nói chung, ta thường biết dữ liệu là một chuỗi các bit, số hay ký tự hoặc
đối tượng cần quan tâm. Ta sử dụng các bít để đánh giá thông tin. Tri thức
được xem như là thông tin tổ hợp, bao gồm các sự thật và mối liên quan giữa
chúng, có thể thu nhận, khám phá và học được. Nói cách khác, tri thức là dữ
liệu ở mức cao của sự trừu tượng và tổng quát hoá.
KDD là lĩnh vực phát triển nhanh chóng, kết hợp với hệ quản trị CSDL,
các lĩnh vực thống kê, học máy và các lĩnh vực liên quan khác. Phát hiện tri
thức là một quá trình chỉ ra được các mô hình/mẫu hiểu được có giá trị và đáng
quan tâm. Data mining là một bước trong quá trình phát hiện tri thức, bao gồm
các thuật toán khai phá dữ liệu cụ thể với hiệu năng tính toán chấp nhận được
để tìm ra các mẫu hay mô hình của dữ liệu.
Nói cách khác, mục đích của khai phá và phát hiện tri thức là tìm ra các

mẫu hay mô hình đáng quan tâm có trong CSDL nhưng đang ẩn dấu trong một
lượng lớn dữ liệu.
1.1. Các bước của quá trình khai phá dữ liệu
Các giải thuật khai phá dữ liệu thường được miêu tả như những chương
trình hoạt động trực tiếp trên tệp dữ liệu. Với các phương pháp máy học và
thống kê trước đây, thường thì bước đầu tiên là các giải thuật nạp toàn bộ tệp
dữ liệu vào trong bộ nhớ. Khi chuyển sang các ứng dụng công nghiệp liên quan
đến việc khai phá các kho dữ liệu lớn, mô hình này không thể đáp ứng được.
Không chỉ bởi vì nó không thể nạp hết dữ liệu vào trong bộ nhớ mà còn vì khó
có thể chiết suất dữ liệu ra các tệp đơn giản để phân tích được.
Quá trình xử lý khai phá dữ liệu bắt đầu bằng cách xác định chính xác vấn
đề cần giải quyết. Sau đó sẽ xác định các dữ liệu liên quan dùng để xây dựng
giải pháp. Bước tiếp theo là thu thập các dữ liệu có liên quan và xử lý chúng
thành dạng sao cho các giải thuật khai phá dữ liệu có thể hiểu được. Về lý


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
9

thuyết thì có vẻ rất đơn giản nhưng khi thực hiện thì đây thực sự là một quá
trình rất khó khăn, gặp phải nhiều vướng mắc như : các dữ liệu phải được sao
ra nhiều bản (nếu được chiết suất vào các tệp), quản lý tập các tệp dữ liệu, phải
lặp đi lặp lại nhiều lần toàn bộ quá trình (nếu mô hình dữ liệu thay đổi),
Sẽ là quá cồng kềnh với một giải thuật khai phá dữ liệu nếu phải truy
nhập vào toàn bộ nội dung của CSDL và làm những việc như trên. Vả lại, điều
này cũng không cần thiết. Có rất nhiều giải thuật khai phá dữ liệu thực hiện
trên những thống kê tóm tắt khá đơn giản của CSDL, khi mà toàn bộ thông tin
trong CSDL là quá dư thừa đối với mục đích của việc khai phá dữ liệu.
Bước tiếp theo là chọn thuật toán khai phá dữ liệu thích hợp và thực hiện

việc khai phá để tìm được các mẫu (pattern) có ý nghĩa dưới dạng biểu diễn
tương ứng với các ý nghĩa đó (thường được biểu diễn dưới dạng luật kết hợp,
cây quyết định, luật sản xuất, biểu thức hồi quy, ).
Đặc điểm của các mẫu là phải mới (ít nhất là đối với hệ thống đó). Độ
mới có thể được đo tương ứng với độ thay đổi trong dữ liệu (bằng cách so sánh
các giá trị hiện tại với các giá trị trước đó hoặc các giá trị mong muốn), hoặc
bằng tri thức (mối liên hệ giữa các phương pháp tìm mới và phương pháp cũ
như thế nào). Thường thì độ mới của mẫu được đánh giá bằng các hàm logic
hoặc hàm đo độ mới, độ bất ngờ của mẫu. Ngoài ra, mẫu phải có khả năng sử
dụng tiềm tàng. Các mẫu này sau khi được xử lý và diễn giải phải dẫn đến
những hành động có ích nào đó được đánh giá bởi một hàm lợi ích. Ví dụ như
trong dữ liệu các khoản vay, hàm lợi ích đánh giá khả năng tăng lợi nhuận từ
các khoản vay. Mẫu khai thác được phải có giá trị đối với các dữ liệu mới với
độ chính xác nào đó.






Hình 1: Quá trình khai phá dữ liệu
Với các giải thuật và các nhiệm vụ của khai phá dữ liệu rất khác nhau,
dạng của các mẫu chiết xuất được cũng rất đa dạng. Theo cách đơn giản nhất,
sự phân tích cho ra kết quả chiết xuất là một báo cáo về một số loại (có thể bao
gồm các phép đo mang tính thống kê về độ phù hợp của mô hình, các dữ liệu
lạ ). Trong thực tế đầu ra phức tạp hơn nhiều. Mẫu chiết suất được có thể là
Xác
định
nhi
ệm

Xác định
dữ liệu
liên quan

Thu thập
và tiền
x
ử lý dữ
Dữ liệu
tr
ực tiếp

Thống
kê tóm
Giải
thuật
khai phá
Mẫu


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
10

một mô tả xu hướng, có thể dưới dạng văn bản, một đồ thị mô tả các mối quan
hệ trong mô hình, cũng có thể là một hành động, ví dụ như yêu cầu của người
dùng đối với những gì khai thác được trong CSDL.
Kỹ thuật khai phá dữ liệu thực chất không có gì mới. Nó là sự kế thừa, kết
hợp và mở rộng của các kỹ thuật cơ bản đã được nghiên cứu từ trước như máy
học, nhận dạng, thống kê (hồi quy, xếp loại, phân nhóm), các mô hình đồ thị,

mạng Bayes, trí tuệ nhân tạo, thu thập tri thức hệ chuyên gia Tuy nhiên, với
sự kết hợp tài tình của khai phá dữ liệu, kỹ thuật này có ưu thế hơn hẳn các
phương pháp trước đó, đem lại nhiều triển vọng trong việc ứng dụng phát triển
nghiên cứu khoa học cũng như làm tăng mức lợi nhuận trong các hoạt động
kinh doanh.

1.2. Nhiệm vụ chính của khai phá dữ liệu.
Rõ ràng mục đích của khai phá dữ liệu là các tri thức chiết xuất được sẽ
được sử dụng cho lợi ích cạnh tranh trên thương trường và các lợi ích trong
nghiên cứu khoa học.
Do đó, có thể coi mục đích của khai phá dữ liệu [4] sẽ là mô tả
(description) và phân lớp, dự đoán (classification/prediction). Các mẫu mà khai
phá dữ liệu phát hiện được nhằm vào các mục đích này. Phân lớp/dự đoán liên
quan đến việc sử dụng các biến hoặc các trường trong CSDL để chiết xuất ra
các mẫu là các dự đoán những giá trị chưa biết hoặc những giá trị trong tương
lai của các biến đáng quan tâm, gồm các bài toán nhỏ như: bài toán cây quyết
định, mạng noron, luật quy nạp, máy hỗ trợ vector, mô hình Markov ẩn…. Mô
tả tập trung vào việc tìm kiếm các mẫu mô tả dữ liệu mà con người có thể hiểu
được. Mô tả gồm có phân tích luật, phân nhóm, tóm tắt…
Để đạt được hai mục đích này, nhiệm vụ chính của khai phá dữ liệu bao
gồm như sau:
• Phân lớp (Classification) : Phân lớp là việc học một hàm ánh xạ
(hay phân loại) một mẫu dữ liệu vào một trong số các lớp đã xác
định.
• Hồi quy (Regression) : Hồi quy là việc học một hàm ánh xạ từ
một mẫu dữ liệu thành một biến dự đoán có giá trị thực.
• Phân nhóm (Clustering): Là việc mô tả chung để tìm ra các tập
xác định, các nhóm hay các loại để mô tả dữ liệu. Các nhóm có thể
tách riêng nhau hoặc phân cấp hoặc gối lên nhau. Có nghĩa là một
dữ liệu có thể vừa thuộc nhóm này, vừa thuộc nhóm kia.

• Khai phá luật kết hợp (Association Rule): tìm ra các large
itemset, các mối liên quan, kết hợp và cấu trúc nhân quả trong tập


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
11

các khoản mục hay đối tượng trong CSDL giao dịch, CSDL quan hệ
hay từ các kho lưu trữ thông tin khác.
• Tóm tắt (Summarization) : Liên quan đến các phương pháp tìm
kiếm một mô tả tóm tắt cho một tập con dữ liệu.
• Mô hình hoá phụ thuộc (Dependency Modeling): Bao gồm việc
tìm kiếm một mô hình mô tả sự phụ thuộc đáng kể giữa các biến.
Các mô hình phụ thuộc tồn tại dưới hai mức : mức cấu trúc của mô
hình xác định (thường ở dạng đồ hoạ) các biến nào là phụ thuộc cục
bộ với nhau, mức định lượng của một mô hình xác định độ mạnh
của sự phụ thuộc theo một thước đo nào đó.
• Phát hiện sự thay đổi và lạc hướng (Change and Deviation
Detection): Tập trung vào khai thác những thay đổi đáng kể nhất
trong dữ liệu từ các giá trị chuẩn hoặc được đo trước đó.
Những nhiệm vụ khác nhau này yêu cầu số lượng và các dạng thông tin
rất khác nhau nên chúng thường ảnh hưởng đến việc thiết kế và chọn giải thuật
khai phá dữ liệu khác nhau.

1.3. Khai phá dữ liệu mô tả
1.3.1. Phân nhóm
Cân nhắc việc nhóm tập các đối tượng dựa trên độ tương đồng của chúng
với các thuộc tính và/ hoặc trạng thái gần kề của chúng trong một không gian
véctơ. Phân nhóm dữ liệu Error! Reference source not found., [4] được gọi

là học không giám sát. Một ứng dụng của lập nhóm các khách hàng của ngân
hàng sao cho việc cung cấp dịch vụ cho khách hàng là có hiệu quả nhất. Ngân
hàng có thể nhóm các nhóm khách hàng như sau:
+ đầu tư linh hoạt
+ đầu tư duy trì
+ đầu tư cân bằng.












L
ợi tức
N


Đầu tư cân bằng

Đầu tư duy trì
Đầu tư linh hoạt


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân

SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
12

Bài toán có ứng dụng rất nhiều trong phân nhóm tài liệu, phân nhóm thuật
ngữ.
Các thuật toán chính của bài toán phân nhóm là K-means, thuật toán phân
nhóm bậc tích luỹ.
Không nên nhầm lẫn phân nhóm với phân đoạn. Phân đoạn liên quan tới bài
toán chỉ ra các nhóm có đặc điểm chung. Phân nhóm là cách phân dữ liệu
vào các nhóm chưa được định nghĩa trước, còn phân loại sẽ phân dữ liệu
vào thành các nhóm đã định nghĩa trước.

1.4. Khai phá dữ liệu dự đoán
Trước khi xây dựng được mô hình dự đoán hiệu quả, ta cần phải hiểu dữ
liệu. Mục tiêu của khai phá dữ liệu là tìm ra những tri thức ẩn chứa bên trong
dữ liệu. Nhờ xây dựng một mô hình thức tế dựa trên tập hợp dữ liệu từ nhiều
nguồn khác nhau gồm cả dữ liệu kinh doanh, thị hiếu khách hàng, thông tin
nhân khẩu, điều khiển dữ liệu và các cơ sở dữ liệu mở rộng có liên quan như
thông tin thời tiết, thông tin văn phòng. Kết quả của việc xây dựng mô hình là
một bản mô tả các mẫu và mối quan hệ dữ liệu có thể hỗ trợ cho việc dự đoán.
Để tránh khó hiểu trong các khía cạnh khác nhau của khai phá dữ liệu, cần đưa
ra cấu trúc công việc cần thực hiện cho quá trình dự đoán
• Mục tiêu công việc
• Kiểu dự đoán
• Kiểu mô hình
• Thuật toán
Mức cao nhất cần quan tâm là công việc nhằm mục đích gì. Như tìm kiếm
các mẫu trong dữ liệu kinh doanh để dự đoán đối tượng khách hàng sẽ thu được
lợi nhiều nhất. Quyết định kiểu dự đoán phù hợp nhất: phân loại hay hồi quy.
Kiểu mô hình: mạng noron cho bài toán hồi quy hay một cây quyết đinh cho

bài toán phân lớp. Có các mô hình như suy diễn logic, phân tích rời rạc số hay
mô hình tuyến tính. Có nhiều thuật toán đã được công bố hiện nay, với cây
quyết định ta có CART, C5.0 Quest hay CHAID.
Mô hình dự đoán [4] được xây dựng hay huấn luyện sử dụng dữ liệu,
trong đó giá trị các biến tương ứng là đã biết. Kiểu huấn luyện này đôi khi được
gọi là học có giám sát.

1.5 Khái quát các kỹ thuật KTDL
1.5.1 Khai thác tập phổ biến và luật kết hợp: là tiến trình khám phá các tập
giá trị thuộc tính xuất hiện phổ biến trong các đối tượng dữ liệu. Từ tập phổ
biến có thể tạo ra các luật kết hợp giữa các giá trị thuộc tính nhằm phản ánh


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
13

khả năng xuất hiện đồng thời các giá trị thuộc tính trong tập các đối tượng. Một
luật kết hợp X->Y phản ánh sự xuất hiện của tập X dẫn đến sự xuất hiện đồng
thời tập Y. Trong CSDL bán hàng, một luật kết hợp tiêu biểu như sau:
Có 67% khách hàng mua bia 333, rượu Nàng Hương thì mua bánh tôm
Cầu tre
Luật kết hợp giúp các nhà hoạch định hiểu rõ xu thế bán hàng, tâm lý khách
hàng…từ đó đưa ra các chiến lược bố trí mặt hàng, kinh doanh, tiếp thị, tồn
kho…
1.5.2 Khai thác mẫu tuần tự: là tiến trình khám phá các mẫu tuần tự phổ
biến phản ánh mối quan hệ giữa các biến cố trong các CSDL hướng thời gian.
Một luật mô tả mẫu tuần tự có dạng tiêu biểu X-> Y phản ánh sự xuất hiện của
biến cố X sẽ dẫn đến việc xuất hiện kế tiếp biến cố Y. Một luật thể hiện mẫu
tuần tự tiêu biểu:

Có 80% khách hàng mua Ao thun Việt Tiến, mua bóng Động lực thì sau
3 ngày mua quần Việt Tiến.
Nhờ mẫu tuần tự, có thể khám phá các xu thế phát triển hành vi của đối tượng.
1.5.3 Phân lớp dữ liệu: là tiến trình khám phá các luật phân loại hay đặc
trưng cho các tập dữ liệu đã được xếp lớp. Tập dữ liệu học bao gồm tập đối
tượng đã được xác định lớp sẽ được dùng để tạo mô hình phân lớp dựa trên đặc
trưng của đối tượng trong tập dữ liệu học. Các luật phân lớp được sử dụng để
xây dựng các bộ phân lớp dữ liệu. Phân lớp dữ liệu có vai trò quan trọng trong
tiến trình dự báo các khuynh hướng quy luật phát triển. Áp dụng vào tiến trình
phân lớp dữ liệu khách hàng trong CSDL có thể xây dựng các luật phân lớp
khách hàng. Một luật phân lớp có dạng tiêu biểu sau:
Nếu khách hàng ở khu vực 1 và có doanh số năm trước > 200 triệu và
có cửa hàng ở khu thị tứ thì thuộc loại khách hàng có thể giao hàng
trước trả tiền sau
1.5.4 Khai thác cụm: là tiến trình nhận diện các cụm tiềm ẩn trong tập các
đối tượng chưa được xếp lớp. Tiến trình khai thác cụm dựa trên mức độ tương
tự giữa các đối tượng. Các đối tượng được gom cụm sao cho mức độ tương tự
giữa các đối tượng trong cùng một cụm là cực đại và mức độ tương tự giữa các
đối tượng nằm trong các cụm khác nhau là cực tiểu. Các cụm được đặc trưng
bằng các tính chất chung của tất cả các đối tượng trong cụm. Do vậy, khảo sát
các cụm sẽ giúp khái quát, tổng kết nhanh chóng nội dung của khối dữ liệu lớn.
1.6 Những thách thức trong KTDL
KTDL phải làm việc với khối lượng dữ liệu lớn và do từ nhiều nguồn khác
nhau(CSDL, Internet, các loại thiết bị thu nhận tín hiệu, các loại thiết bị nhận
dạng, các loại thiết bị lưu trữ như băng từ, CD…) nên vấn đề tốc độ xử lý là
vấn đề quan tâm trước nhất. Có hai phương hướng để giải quyết vấn đề này là
nâng cao năng lực của phần cứng và cải tiến phần mềm, trong đó việc nghiên
cứu đề xuất các thuật toán hiệu quả có khả năng làm việc trên khối lượng dữ
liệu lớn, và có độ phức tạp tính toán thấp là một hướng nghiên cứu đầy tiềm
năng. Từ nhu cầu thực tế trên, gần đây đã xuất hiện nhiều ngành khoa học công

nghệ hỗ trợ KTDL như tính toán song song, máy tính lượng tử, công nghệ
nano, phát triển thuật toán…



Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
14

Chương 2: PHÂN LỚP DỮ LIỆU – CÁC THUẬT TOÁN
PHÂN LỚP

Chương này, sẽ đi sâu về một ứng dụng của khai phá dữ liệu là phân lớp
dữ liệu và là nội dung chính của thực tập tốt nghiệp lần này. Bên cạnh, đưa ra
những khái niệm về phân lớp dữ liệu, về các thuật ngữ của các thuật toán. Còn
đi sâu vào một số thuật toán về phân lớp dữ liệu và có minh họa trực quan về
từng thuật toán. Chương sau, tác giả sẽ nói sơ lược về ngôn ngữ lập trình
dùng để thử nghiệm các thuật toán.

2.1 Mở đầu:
Phân lớp dữ liệu (data classification) là xếp đối tượng dữ liệu vào một
trong các lớp đã được xác định trước. Phân lớp dữ liệu gồm hai bước là xây
dựng mô hình và vận hành mô hình.
2.1.1 Xây dựng mô hình: nhằm mục tiêu mô tả một tập những lớp đã
được định nghĩa trước trong đó mỗi bộ hoặc mẫu sẽ được gán về một lớp đã
xác định trước bởi thuộc tính nhãn lớp. Tập hợp những bộ được dùng để xây
dựng mô hình được gọi là tập dữ liệu học (dưới đây sẽ gọi tắt là tập học). Mô
hình được biểu diễn dưới dạng luật phân lớp, cây quyết định hoặc công thức
toán học…
Ý nghĩa: Xây dựng mô hình là xây dựng luật phân lớp, xây dựng cây quyết

định hoặc là công thức toán học














2.1.2 Vận hành mô hình: nhằm mục đích xác định lớp của dữ liệu trong
tương lai hoặc phân lớp những đối tượng chưa biết. Trước khi vận hành mô
hình cần đánh giá độ chính xác của mô hình trong đó các mẫu kiểm tra (đã biết
được lớp) được đem so sánh với kết quả phân lớp của mô hình. Độ chính xác là
phần trăm của số mẫu kiểm tra được phân lớp đúng. Lưu ý tập kiểm tra và tập
học là hai tập độc lập với nhau.



Dữ liệu huấn
luy
ện

Bộ phân lớp
(Mô hình)

Các thuật toán
phân lớp
IF Trời= Trong
AND Áp Suất=Cao
Then Kết Quả=Không mưa
Hình 2.1 Xây dựng mô hình
Trời Áp Suất Gió Kết Quả
Trong Cao Bắc Không mưa
Mây Cao Nam Mưa
Mây Trung Bình Bắc Mưa
Trong Thấp Bắc Mưa
Mây Thấp Nam

Không mưa
Trong Cao Nam Không mưa


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
15

















2.2 Phân lớp quy nạp trên cây quyết định:
Cây quyết định gồm các nút trong biểu diễn giá trị thuộc tính, các nhánh
biểu diễn đầu ra của kiểm tra, nút là biểu diễn nhãn lớp. Cây quyết định được
tạo theo hai giai đoạn là tạo cây và tỉa nhánh.
Trong giai đoạn tạo cây, lúc bắt đầu tất cả các mẫu học đều nằm ở nút
gốc, sau đó các mẫu học được phân chia một cách đệ quy dựa trên thuộc tính
được chọn. Bước tỉa nhánh nhằm tìm và xóa những nhánh có phần tử không thể
xếp vào lớp nào cả.
Bước vận hành nhằm kiểm tra những giá trị thuộc tính của mẫu đối với
các giá trị trên nhánh của cây quyết định.
Thuật toán tạo cây quyết định bao gồm các bước sau:
Bước 1: Cây được xây dựng đệ quy từ trên xuống và theo cách chia để trị
Bước 2: Ban đầu tất cả mẫu học đều nằm ở gốc.
Bước 3: Thuộc tính được phân loại(nếu là giá trị liên tục được rời rạc hóa)
Bước 4: Các mẫu học được phân chia đệ quy dựa trên thuộc tính chọn lựa
Bước 5: Kiểm tra những thuộc tính được chọn dựa trên heristic hoặc của một
tiêu chuẩn thống kê.
Điều kiện để dừng phân chia tập học:
1. Tất cả những mẫu học đối với một nút cho trước đều cùng lớp.
2. Không còn thuộc tính nào để phân chia tiếp:
3. Không còn mẫu học.
Độ lợi thông tin (ìnormation gain) là đại lượng được dùng để chọn thuộc
tính nhằm phân chia tập học. Thuộc tính được chọn là thuộc tính có độ lợi
thông tin lớn nhất.

Cho hai lớp P và N và tập học S. Lớp P có p phần tử và lớp N có n phần
tử. Khối lượng thông tin cần để quyết định các mẫu trong S thuộc về lớp P hay
lớp N được xác định bởi:
I(p,n) = -
np
p
+
log
2

np
p
+
-
np
n
+
log
2
np
n
+

Dữ liệu
kiểm tra
Bộ phân lớp
Dữ liệu chưa
phân lớp
(Trong, Cao, Nam, ?)
Không mưa


K
ết quả

Hình 2.2 V
ận h
ành mô hình

TRỜI ÁP SUẤT GIÓ KẾT QUẢ
Trong Cao Nam Không mưa
Mây Thấp Nam Không mưa
Mây Trung bình Bắc Mưa
Trong Cao Bắc Không mưa



Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
16

Giả sử thuộc tính A được chọn để phân hoạch S thành các tập hợp { S
1
,S
2

S
v
, }. Nếu S
i
chứa p

i
mẫu của lớp P và n
i
mẫu của lớp N thì entropy cần để
phân loại các đối tượng trong cây S
i
là:
E(A)=
),(
1
n
p
i
i
v
i
np
I
n
p
i
i

=
+
+


Độ lợi thông tin của nhánh A là:
Gain(A)=I(p,n)-E(A)

Thuật toán ID3 là một thuật toán học trên cây quyết định được phát triển
bởi Ross Quinlan(1983). Ý tưởng cơ bản của thuật toán ID3 là tạo cây quyết
định bằng việc sử dụng cách tiềm kiếm từ trên xuống trên tập học. Độ lợi thông
tin được sử dụng để chọn thuộc tính có khả năng phân loại tốt nhất. Thuật toán
ID3 được trình bày sau đây:
Thuật toán ID3(S, D, A)
Vào: Tập học S: thuộc tính quyết định D, tập thuộc tính A
Ra: Nút gốc của cây_quyết định
Begin
- Tạo “Nút_gốc” cho cây quyết định
- If tất cả mẫu học của S đều có giá trị của D là P, trả về cây có
một nút duy nhất là nút_gốc với nhãn “P”
- If tất cả mẫu học của S đều có giá trị của D là N, trả về cây có
một nút duy nhất là nút_gốc với nhãn “N”
- If A là rỗng, trả về cây có nút duy nhất là nút_gốc với nhãn là
trị phổ biến nhất của D trong tập mẫu.
- Else Begin
• Gọi X là thuộc tính của A phân lớp S tốt nhất// tính độ
lợi
• Gán X vào thuộc tính quyết định D của nút_gốc
• For each trị v của X
+ Thêm một nhánh cây mới dưới nút_gốc ứng với X=v
+ Gọi S
v
là tập con của v trị của X là v
+ If S
v
là rỗng
_ Thêm dưới nhánh mới này, một nút là có nhãn là
trị phổ biến nhất của thuộc tính quyết định trong S

Else
_ Thêm cây con vào dưới nhánh mới này
_ ID3(S
v
, D, A-{X})

End
Return nút_gốc
End
Ví dụ 2.1: Để minh họa thuật toán ID3, ta sử dụng dữ liệu “chơi tennis” trong
bảng 2.1 sau:
Các thuộc tính và miền giá trị tương ứng bao gồm:
Thuộc tính Thờitiết có miền giá trị {Nắng, U_ám, Mưa}


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
17

Thuộc tính Nhiệtđộ có miền giá trị {Nóng, Mát, Ấm_áp}.
Thuộc tính Độẩm có miền giá trị {Cao, Vừa}
Thuộc tính Lớp có miền giá trị {P, N}
Tính entropy cho thuộc tính Thờitiết:
Thời tiết p
i
n
i
I(p
i ,
n

i
)
Nắng 2 3 0,971
U ám 4 0 0
Mưa 3 2 0,971
Ta có:
E(Thờitiết)=
Nên Gain(Thờitiết)= I(9,5) –E (Thờitiết)= 0,246
Gain(Nhiệtđộ)=0,029;
Gain(Độẩm)=0,151;
Gain(Gió)=0,048.
Bảng 2.1: Tập dữ liệu học “Chơi tennis”
Thời tiết Nhiệt độ Độ ẩm Gió Lớp
Nắng Nóng Cao Không

N
Nắng Nóng Cao Không

N
U_ám Nóng Cao Không

P
Mưa Ấm_ áp Cao Không

P
Mưa Mát Vừa Không

P
Mưa Mát Vừa Có N
U_ám Mát Vừa Có P

Nắng Ấm_áp Cao Không

N
Nắng Mát Vừa Không

P
Mưa Ấm_áp Vừa Không

P
Nắng Ấm_áp Vừa Có P
U_ám Ấm_áp Cao Có P
U_ám Nóng Vừa Không

P
Mưa Ấm_áp Cao Có n
3. Chọn thuộc tính có độ lợi thông tin lớn nhất đó là thuộc tính “Thờitiết”.
4. Áp dụng ID3 cho mỗi nút con của nút gốc này cho đến khi đạt đến nút lá
hoặc nút có entropy =0.
Cây quyết định do thuật toán ID3 tạo ra trong hình 4.3.












Thời tiết
Gió Độ ẩm
P

N

P

N

P

mưa U ám Nắng
cao

Vừa có không
Hình 2.3. Cây quyết định


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
18

Rút luật từ cây quyết định:
- Mỗi một đường dẫn từ gốc đến là trong cây tạo thành một luật
- Mỗi cặp giá trị thuộc tính trên một đường dẫn tạo nên một sự
liên kết
- Nút lá giữ quyết định phân lớp dự đoán.
- Các luật tạo được dễ hiểu hơn các cây














If Thờitiết = Nóng AND Độẩm= Vừa THEN Chơi tennis
Thuật toán ID3 có các khuyết điểm sau đây:
a> Thiếu sót thứ nhất: Một thiếu sót quan trọng của ID3 là hết khả năng
phân chia tại một nút.
b> Thiếu sót thứ hai: ID3 đòi hỏi số mẫu học lớn. Khả năng khắc phục
nhiễu của tập học là vô cùng quan trọng khi ứng dụng thuật giải ID3.
Nếu có nhiễu và tập học không lớn thì ID3 có thể dẫn đến kết quả sai.
Có nhiều dạng mở rộng thuật toán ID3 như sau:
• Thuật toán ID3 được mở rộng cho trường hợp tập mẫu có thuộc
tính liên tục. Lúc đó, cần phân chia thuộc tính liên tục thành một
tập rời rạc các khoảng.
• Đối với các mẫu học có một số thuộc tính chưa có giá trị được
thực hiện bằng cách gán giá trị thông dụng nhất của thuộc tính
hoặc gán khả năng có thể có với từng giá trị khả dĩ.
C4.5 là phiên bản của thuật toán ID3 trên một số khía cạnh sau: Trong bước
xây dựng cây quyết định, tập học có những bản ghi với những giá trị thuộc tính
chưa biết. Lúc đó chúng ta chỉ tạo mô hình dựa trên các bản ghi đã xác định
đầy đủ giá trị thuộc tính. Trong bước vận hành cây quyết định, có thể phân loại

những bản ghi có những giá trị thuộc tính chưa biết bằng việc ước lượng xác
suất những kết quả có khả năng xảy ra. Trong ví dụ chơi tennis, nếu có một bản
ghi chưa biết giá trị của thuộc tính Độẩm, nhưng biết giá trị của thuộc tính
Thờitiết là Nắng ta xử lý như sau.
Di chuyển từ nút gốc Thời tiết đến nút Độ ẩm theo cạnh được đánh nhãn
là Nắng. Lưu ý nếu thuộc tính Độẩm có giá trị 75 thì có 2 bản ghi, nếu thuộc
tính Độ ẩm có trị lớn hơn 75 thì có 3 bản ghi. Do vậy có thể đưa ra câu trả lời
Thời tiết
Gió Độ ẩm
P

N

P

N

P

mưa U ám Nắng
cao

Vừa có không
Hình 2.4. Rút luật từ Cây quyết định


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
19


cho xác suất xảy ra khả năng là 0,4 cho chơi tennis và 0,6 cho không chơi
tennis.
Đối với việc rời rạc thuộc tính liên tục. Giả sử A là thuộc tính liên tục,
thuật toán có thể tạo một thuộc tính kiểu logic mới có tên là A
c
, thuộc tính này
có trị Đúng nếu A<c và trị sai nếu A>= c . Vấn đề đặt ra là chọn ngưỡng c. Giá
trị c được chọn nhằm tạo ra độ lợi lớn nhất. Xét các giá trị của thuộc tính A
trong tập học. Giả sử chúng được sắp theo thứ tự tăng dần là A
1
, A
2
,… A
m.
Với
từng giá trị A
i
, i= 1, 2,… m , ta chia các bản ghi thành hai phần, trong đó một
phần chứa các mẫu có trị thuộc tính A<c và phần còn lại chứa các mẫu có giá
trị thuộc tính A>= c. Với những lần phân hoạch này, ta tính lại độ lợi thông tin
của phép phân hoạch và tìm phân hoạch có độ lợi lớn nhất.
Giả sử thuộc tính Độ Ẩm trong ví dụ chơi tennis là thuộc tính liên tục.
Ta cần xác định độ lợi thông tin cho mỗi lần phân hoạch tập học theo thuộc
tính Độ ẩm và tìm được sự phân hoạch tốt nhất tại ngưỡng c=75. Lúc đó thuộc
tính Độ ẩm được biến đổi thành thuộc tính Độ ẩm_ logic với giá trị Sai cho các
mẫu có giá trị của thuộc tính Độ ẩm < 75 và giá trị Đúng cho các mẫu có giá trị
của thuộc tính Độ ẩm>=75.
2.2.1. Rút gọn cây quyết định và tập luật suy dẫn
Việc xây dựng cây quyết định đều dựa vào tập học. Trong thực tế cây
quyết định có thể phát sinh các đường đi dài và không đều. Việc rút gọn cây

quyết định được thực hiện bằng cách biến cây con thành nút lá. Công việc này
được thực hiện tại nơi nếu lỗi phân lớp do cây con sinh ra lớn hơn nút lá.
Winston đã giới thiệu cách dùng phép thử Fisher để xác định thuộc tính phân
loại có thực sự phụ thuộc vào các thuộc tính khác hay không. Nếu điều này
không xảy ra thì thuộc tính đó không cần phải xuất hiện trong đường đi hiện tại
của cây quyết định. Quninlan và Breiman đề xuất những heuristic phức tạp để
rút gọn cây quyết định. Từ mỗi đường đi từ gốc đến lá trong cây quyết định, ta
dễ dàng tạo ra vế trái của luật phân lớp dựa trên nhãn của các nút và nhãn của
các các cung.
2.2.2. Phân lớp với chỉ số Gini.
Tương tự như độ lợi ở trên. IBM trong phần mềm IBM Intelligent Miner
đã đưa ra đại lượng cho việc phân lớp là chỉ số Gini như sau.
Nếu một tập dữ liệu T chứa những mẫu từ n lớp, chỉ số Gini, gini(T) được định
nghĩa như sau:
Gini(T)= 1-

=
n
j
j
p
1
2

Với p
j
là tần số liên quan của lớp j trong T.
Nếu một tập hợp dữ liệu T được chia thành hai tập con T
1
và T

2
với kích
thước tương ứng là N
1
và N
2
. Chỉ số Gini của dữ liệu chia cắt chứa những ví dụ
từ n lớp, gini(T) được định nghĩa như sau:
Gini
split
(T)= )(
1
1
T
N
gini
N
+ )(
2
2
T
N
gini
N


Thuộc tính có giá trị gini
split
(T) nhỏ nhất được chọn để phân chia nút.




Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
20

2.3 Phương pháp phân lớp Bayes
2.3.1. Sự phân hoạch và công thức Bayes
Cho H
1
, H
2
, …H
n
là một phân hoạch không gian mẫu M và A là biến cố
bất kỳ trong M. Ta có:
P(A)=

=
n
i
H
H
A
PP
1
1
1
)()(


Các xác suất P(H
1
) và P(A/H
2
) thường được biết trước khi thực hiện
phép thử và được gọi là xác suất tiên nghiệm (apriori probability). Xác suất
P(A/H
i
) cho biết khả năng tham gia của H
i
vào việc xảy ra biến cố A. Xác suất
P(A/H
i
) được gọi là xác suất hậu nghiệm (a posteriori probability). Có thể tính
xác suất hậu nghiệm từ các xác suất tiên nghiệm theo công thức sau:
P(H
i
/A
i
)=
)(
)()(
AP
A
PP
H
H
i
i


Định lý Bayes: Cho H
1
, H
2
, …H
n
là một phân hoạch không gian mẫu và A là
biến cố trong M. Khi đó với mọi i=1, 2, …,n ta có:
P(H
i
/A)=

=
n
k
k
k
i
i
H
H
H
H
A
PP
A
PP
1
)()(
)()(


2.3.2 Bộ phân lớp Naive Bayes
Cho V
1
, V
2
,… V
m
là phân hoạch không gian mẫu V, mỗi V
i
là một lớp.
Không gian các thể hiện X gồm các thể hiện được mô tả bởi tập thuộc tính A
1
,
A
2
,… A
n
. Không gian các thể hiện X là tập học. Khi có thể hiện với giá trị <a
1
,
a
2
,… a
n
>, bộ phân lớp sẽ xuất giá trị hàm phân lớp f(x) là một trong các V
i
.
Tiếp cận Bayes lấy giá trị có xác suất cao nhất V
MAP

cho thể hiện mới. Chữ
MAP viết tắt của cụm từ Maximum A Posterior.
V
MAP
= max P(v
i
, a
1
, a
2
,… a
n
)
Sử dụng định lý Bayes, ta có:
V
MAP
=
), ,(
)|, ,()(
max
21
121
a
a
a
vaaav
n
ni
V
P

PP
v
i

=max P(v
i
) )|, ,(
121
v
a
a
a
n
P
(2.1)
Trong công thức trên có hai số hạng cần quan tâm là P(v
i
) và P(a
1
, a
2

,… a
n
). Ta tính P(v
i
) bằng cách đếm số lần xuất hiện của giá trị đích v
j
trong
tập học. Để tính P(a

1
, a
2
,… a
n
) ta giả thuyết ban đầu các thuộc tính là độc lập
nhau. Nói cách khác, xác suất của một thể hiện quan sát được <a
1
, a
2
,… a
n
>
trên mỗi lớp v
j
là tích các khả năng của từng thuộc tính riêng biệt trên v
j
.
P(a
1
, a
2
,… a
n
|v
i
) =

i
ii

v
a
P )|(
Do vậy, công thức (2.1) được viết lại là:
V
NB
=
max
V
v
i

P(
v
i
)

i
ii
v
a
P )|(

Với NB là viết tắt của cụm từ Naïve Bayes


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
21


Bộ phân lớp Bayes liên quan đến bước học trong đó P(v
j
) và P(a
1
, a
2
,… a
n
)
được tính dựa trên tập học.
Để phân lớp, ta dùng công thức:
V
NB
=
max
V
v
i

P(
v
i
)

i
ii
v
a
P )|(
Với ví dụ ở bảng 2.1 ta có thể tính các xác suất sau:

Thời tiết
P (nắng | p) = 2/9 P (nắng | n) =3/5
P (u ám | p) =4/9 P (u ám | n)= 0
P (mưa | p)=3/9 P (mưa | n)= 2/5
Nhiệt độ
P (nóng | p) = 2/9 P (nóng | n) = 2/5
P (ấm áp | p) =
4/9
P (ấm áp | n) = 2/5
P (mát | p)= 3/9 P (mát | n)= 1/5
Độ ẩm
P (cao | p)= 3/9 P (cao | n)= 4/5
P (vừa | p)= 6/9 P (vừa | n)= 1/5
Gió
P (Có | p) = 3/9 P (Có | p) = 3/5
P (không | p) =
6/9
P (Không | n) =
3/9
Cuối cùng ta có P(p) = 9/14 và P(n) = 5/14
Lưu ý: P(x
i
, C) được ước lượng như là tần suất tương đối của những mẫu có
giá trị x
i
, của thuộc tính thứ I trong lớp C.
Nếu thuộc tính thứ I liên tục P(x
i
, C) được ước lượng thông qua hàm mật độ
Gauss.

Ví dụ 2.3: Với ví dụ play-tennis ở bảng 2.1 ở trên : phân lớp X. Cho mẫu chưa
được thấy như sau X=<mưa, nóng, cao, không>
• Phân lớp X:
* một mẫu chưa gặp X=<mưa, nóng, cao, không>
* P(X | p). P(p)= P(mưa | p).P(nóng | p). P(cao | p).P(không | p).
P(p)
= 3/9 x 2/9 x 3/9 x 6/9 x 9/14 = 0,010582
* P(X | n). P(n)= P(mưa | n).P(nóng | n). P(cao | n).P(không |
n).P(n)
= 2/5 x 2/5 x 4/5 x 2/5 x 5/14 = 0,018286
* Mẫu X được phân vào lớp n (không chơi tennis)
Giải thuật Naïve Bayes viết bằng mã giả như sau:
NAÏVE_BAYSES_LEARN (Example)
For each target value v
i
do
P(v
i
)← extimate P(v
j
)
For each thuoc_tinh a
i

P(a
i
/ v
j
) ← extimate P(a
i

/ v
j
)
End for


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
22

End for
2.4 Phân lớp bằng thuật giải ILA (Inductive Learning Algorithm)
2.4.1 Xác định dữ liệu:
- Tập mẫu được liệt kê trong một bảng, với mỗi dòng tương ứng một mẫu, và
mỗi cột thể hiện một thuộc tính trong mẫu.
- Tập mẫu có m mẫu, mỗi mẫu gồm k thuộc tính và có một thuộc tính quyết
định. Tổng số n các giá trị của thuộc tính này chính là số lớp của tập mẫu.
- Tập luật R có giá trị khởi tạo là Ø
- Tất cả các dòng trong bảng ban đầu chưa được đánh dấu (kiểm tra).
2.4.2 Thuật giải ILA
- Bước 1: Chia bảng m mẫu ban đầu thành n bảng con. Mỗi bảng con ứng với
một giá trị của thuộc tính phân lớp tập mẫu.
(* thực hiện các bước 2 đến 8 cho mỗi bảng con*)
-Bước 2: Khởi tạo bộ đếm kết hợp thuộc tính j, j=1
-Bước 3: Với mỗi bảng con đang khảo sát, phân chia danh sách các thuộc tính
theo các tổ hợp phân biệt, mỗi tổ hợp ứng với j thuộc tính phân biệt.
-Bước 4: Với mỗi tổ hợp các thuộc tính, tính số lượng các giá trị thuộc tính
xuất hiện theo cùng tổ hợp thuộc tính trong các dòng chưa được đánh dấu của
bảng con đang xét(mà đồng thời không xuất hiện với tổ hợp thuộc tính này trên
các bảng còn lại). Gọi tổ hợp đầu tiên(trong bảng con) có số lần xuất hiện nhiều

nhất là tổ hợp lớn nhất.
-Bước 5: Nếu tổ hợp lớn nhất bằng Ø, tăng j lên 1 và quay lại bước 3.
-Bước 6: Đánh dấu các dòng thỏa tổ hợp lớn nhất của bảng con đang xử lý theo
lớp.
-Bước 7: Thêm luật mới vào tập luật R, với vế trái là tập các giá trị của thuộc
tính ứng với tổ hợp lớn nhất(kết hợp các thuộc tính bằng toán tử AND) và vế
phải là giá trị thuộc tính quyết định tương ứng.
-Bước 8: Nếu tất cả các dòng đều đã được đánh dấu phân lớp, tiếp tục thực hiện
từ bước 2 cho các bảng con còn lại. Ngược lại (nếu chưa đánh dấu hết các
dòng) thì quay lại bước 4. Nếu tất cả các bảng con đã được xét thì kết thúc, kết
quả thu được là tập luật cần tìm.
2.4.3 Minh họa thuật giải ILA













Mẫu số Size Color Shape Decision
1 Medium Blue Brick Yes
2 Small Red Wedge No
3 Small Red Sphere Yes
4 Large Red Wedge No

5 Large Green Pillar Yes
6 Large Red Pillar No
7 Large green Sphere Yes

Bảng : Tập mẫu học cho bài toán phân lớp


Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
23














-Áp dụng bước 2 của thuật giải vào bảng con thứ nhất trong bảng trên. Với j=1,
danh sách các tổ hợp thuộc tính gồm có {Size}, {Color}, {Shape}.
-Với tổ hợp {Size}, giá trị thuộc tính “medium” xuất hiện trong bảng con thứ
nhất nhưng không có trong bảng con thứ hai, do đó giá trị tổ hợp lớn nhất là
“medium”. Bởi vì các giá trị thuộc tính “small” và “large” xuất hiện trong cả
hai bảng con, nên không được xét trong bước này. Với tổ hợp {Size}, giá trị

thuộc tính “medium” chỉ bằng 1.
-Xét tiếp tổ hợp {Color}thì giá trị tổ hợp lớn nhất là bảng 2, ứng với thuộc
tính”green”, còn thuộc tính “blue” bằng 1.
-Tương tự, với tổ hợp {Shape} ta có “brick” xuất hiện một lần, và “sphere” hai
lần. Đến cuối bước 4, ta có tổ hợp {Color} với thuộc tính “green” và {Shape}
với thuộc tính “sphere” đều có số lần xuất hiện lớn nhất là 2. Thuật toán mặc
định chọn trường hợp thứ nhất để xác định luật tổ hợp lớn nhất. Dòng 3 và 4
được đánh dấu đã phân lớp, ta có luật dẫn như sau:
Rule 1: IF Color là green THEN Decision là yes
-Tiếp tục thực hiện bước 4 đến 8 cho các mẫu còn lại (chưa đánh dấu) trong
bảng con này (tức dòng 1 và 2). Áp dụng tương tự như trên, ta thấy giá trị
thuộc tính “medium” của {Size}, “blue” của “Color”, “brick” và “sphere” của
{Shape} đều xuất hiện một lần. Bởi vì số lần xuất hiện này giống nhau, thuật
giải áp dụng luật mặc định chọn trường hợp đầu tiên. Ta có thêm luật sau:
Rule 2: IF Size là medium THEN Decision là yes.
Đánh dấu cho dòng 1 trong bảng con thứ nhất. Tiếp tục áp dụng bước 4 đến 8
trên dòng còn lại (tức dòng 2). Giá trị thuộc tính “sphere” của {Shape} xuất
hiện một lần, ta có luật thứ ba
Rule 3: IF Shape là sphere THEN Decision là yes
Dòng 2 được đánh dấu. Như vậy, tất cả các dòng trong bảng con 1 đã được
đánh dấu, ta chuyển qua xử lý bảng con 2.
-Thuộc tính “wedge” của {Shape} xuất hiện hai lần trong dòng 1 và 2 của bảng
con này. Đánh dấu các dòng này với luật dẫn thứ tư sau:
Rule 4: IF Shape là wedge THEN Decision là no
-Với dòng còn lại (tức dòng ) của bảng con 2, ta có thuộc tính {Size} với giá trị
“large” có xuất hiện trong bảng con 1. Do đó, theo thuật giải, ta loại bỏ trường
hợp này. Tương tự như vậy cho giá trị “red” của {Color} và “pillar” của
Bảng con 1
Mẫu số cũ,mới Size Color Shape Decision
1 1 Medium Blue Brick Yes

3 2 Small Red Sphere Yes
5 3 Large Green Pillar Yes
7 4 Large Sphere Yes
Bảng con 2
Mẫu số cũ,mới Size Color Shape Decision
2 1 Small Red Wedge No
4 2 Large Red Wedge No
6 3 Large Red pillar No

B
ảng:
V
ới n=2 Chia th
ành hai b
ảng con theo thuộc tính Decision



Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
24

{Shape}. Khi đó, ILA tăng j lên 1 và khởi tạo các tổ hợp hai thuộc tính là
{Size, Color}, {Size, Shape}, {Color, Shape}. Các tổ hợp thứ nhất và thứ ba
thỏa mãn điều kiện không xuất hiện trong bảng con 1 với các cặp thuộc tính
hienj có của dòng này. Theo luật mặc định, ta chọn luật theo trường hợp thứ
nhất. Đánh dấu dòng này, ta có thêm luật dẫn thứ 5.
Rule 5: IF Size là large and Color là red Then decision là no
Kết quả thu được 5 luật:
Rule 1: IF Color là green THEN Decision là yes

Rule 2: IF Size là medium THEN Decision là yes
Rule 3: IF Shape là sphere THEN Decision là yes
Rule 4: IF Shape là wedge THEN Decision là no
Rule 5: IF Size là large AND Color là red THEN Decision là no
Đánh giá thuật giải:
-Số lượng các luật thu được xác định mức độ thành công của thuật giải. Đây
chính là mục đích chính của các bài toán phân lớp thông qua một tập mẫu học.
Ngoài ra, để đánh giá các hệ học quy nạp là khả năng hệ thống có thể phân lớp
các mẫu được đưa vào sau này.
-Thuật giả ILA được đánh giá mạnh hơn hai thuật giải về phương pháp học quy
nạp trước đây là ID3 và AQ.
2.5 Các phương pháp phân lớp khác:
2.5.1 Phân lớp dựa trên luật kết hợp
Tìm các luật kết hợp có độ hỗ trợ và độ tin cậy cao có dạng “cond_set =
y” với y là một nhãn lớp.
2.5.2 Thuật giải di truyền
Thuật giải di truyền (genetic algorithm) dựa trên nguyên lý Darwin về
sự tiến hóa sinh học. Mỗi luật được biểu diễn bởi một chuỗi bit. Một mẫu khởi
tạo được tạo ra bao hàm những luật tạo một cách ngẫu nhiên. Dựa trên khái
niệm cái phù hợp nhất sẽ tồn tại, những quy luật phù hợp nhất sẽ được biểu
diễn bởi sự phân lớp chính xác trên tập hợp huấn luyện. Sự phù hợp của một
luật được biểu diễn bởi độ chính xác của phân lớp trên tập hợp những ví dụ
huấn luyện. Kết quả được tạo ra bởi sự lai ghép và đột biến.
2.5.3 Tiếp cận tập thô
Tập thô được sử dụng để xấp xỉ hoặc định nghĩa “thô” những lớp tương
đương. Một tập thô cho một lớp C được xấp xỉ bởi hai tập hợp xấp xỉ dưới và
xấp xỉ trên.














Cài đặt một số thuật toán phân lớp dữ liệu GVHD: T.S Nguyễn Đình Thuân
SVTH: Hứa Văn Lắm Đồ án tốt nghiệp
25

Chương 3: SƠ LƯỢC VỀ JAVA

Chương này, tác giả sẽ trình bày sơ lược về ngôn ngữ Java. Lịch sử
phát triển Java. Ví sao tác giả lại sẽ dụng Java để thử nghiệm chương trình?
Tác giả sử dụng Java như thế nào?Những lớp dữ liệu nào tác giả sử dụng cho
lập trình. Chương sau, tác giả sẽ xây dựng giải pháp cho yêu cầu của đề tài và
thử nghiệm kết quả trên dữ liệu thực tế tại trường Đại học Nha trang.

3.1. Lịch sử Java
Java do đội ngũ chuyên gia, đứng đầu là James Goshing thuộc Sun
Microsystem, công ty nổ tiếng về phần mềm máy trạm thiết kế. Ban đầu, vào
năm 1991, với tên Oak, Java được thiết kế cho chương trình điện tử tiêu dùng
dạng nhúng (embedded consumer electronic application). Đến năm 1995, Java
được tái thiết kế để xây dựng chương trình ứng dụng Internet và chính thức lấy
tên Java. Các chương trình Java có thể nhúng vào các trang HTML, được trình
duyệt Web tải xuống nhằm cung cấp hiệu ứng họat hình động và khả năng

tương tác cho khách hàng Web. Sức mạnh của Java không bị giới hạn ở chương
trình ứng dụng Web. Java thật sự là ngôn ngữ lập trình đa năng. Nó có đầy đủ
đặc tính độc lập trình lập trình và có thể dùng vào việc thiết kế chương trình
ứng dụng độc lập. Bản chất của Java là ngôn ngữ hướng đối tượng xuất thân từ
ngôn ngữ thủ tục, nhưng Java đã được thiết kế ở dạng ngôn ngữ hướng đối
tượng ngay từ đầu. Lập trình hướng đối tượng( OOP) hiện là phương pháp lập
trình phổ biến, thay thế vị trí của các kỹ thuật lập trình thủ tục truyền thống.
3.2 Thiết kế và ưu điểm của Java
Java là ngôn ngữ lập trình hướng đối tượng. Một ngôn ngữ hướng đối
tượng sử dụng kỷ thuật phân chia, đóng gói, thừa kế và đa hình hầu cung cấp
tính linh động, tính đơn thể chức năng và khả năng sử dụng ở mức cao trong
thiết kế phần mềm. Java là ngôn ngữ độc lập với hệ nền. Chương trình Java có
thể chạy trên bất cứ máy tính nào có hệ điều hành hỗ trợ Java Virtual Machine,
một thành phần phần mềm dịch mã lệnh Java và thực thi các hành động phối
hợp.
Java có tính phân tán với khả năng nối mạng cài sẵn. Việc xử lý đồng
thời có thể xảy ra trên nhiều máy tính trên Internet.
Java có cơ chế đa tuyến thi hành. Đa tuyến thi hành là khả năng chương
trình thực hiện đồng thời nhiều tác vụ; ví dụ, chương trình có thể tải về và phát
tập tin video cùng lúc.
Java rất an toàn. Máy tính trở nên dễ bị tấn công khi được kết nối với
nhau. Virus và các chương trình phá hoại có thể gây tổn hại cho máy tính của

×