TÓM TẮT NỘI DUNG
Phân lớp dữ liệu là một trong những hướng nghiên cứu chính của khai phá dữ
liệu. Công nghệ này đã, đang và sẽ có nhiều ứng dụng trong các lĩnh vực thương mại,
ngân hàng, y tế, giáo dục Trong các mô hình phân lớp đã được đề xuất, cây quyết
định được coi là công cụ mạnh, phổ biến và đặc biệt thích hợp với các ứng dụng khai
phá dữ liệu. Thuật toán phân lớp là nhân tố trung tâm trong một mô hình phân lớp.
Khóa luận đã nghiên cứu vấn đề phân lớp dữ liệu dựa trên cây quyết định. Từ
đó tập trung vào phân tích, đánh giá, so sánh hai thuật toán tiêu biểu cho hai phạm vi
ứng dụng khác nhau là C4.5 và SPRINT. Với các chiến lược riêng về lựa chọn thuộc
tính phát triển, cách thức lưu trữ phân chia dữ liệu, và một số đặc điểm khác, C4.5 là
thuật toán phổ biến nhất khi phân lớp tập dữ liệu vừa và nhỏ, SPRINT là thuật toán
tiêu biểu áp dụng cho những tập dữ liệu có kích thước cực lớn. Khóa luận đã chạy thử
nghiệm mô hình phân lớp C4.5 với tập dữ liệu thực và thu được một số kết quả phân
lớp có ý nghĩa thực tiễn cao, đồng thời đánh giá được hiệu năng của mô hình phân lớp
C4.5. Trên cơ sở nghiên cứu lý thuyết và quá trình thực nghiệm, khóa luận đã đề xuất
một số cải tiến mô hình phân lớp C4.5 và tiến tới cài đặt SPRINT.
MỤC LỤC
TÓM TẮT NỘI DUNG i
LỜI CẢM ƠN . ii
MỤC LỤC iii
DANH MỤC BIỂU ĐỒ HÌNH VẼ .v
DANH MỤC THUẬT NGỮ vii
ĐẶT VẤN ĐỀ .1
Chương 1. TỔNG QUAN VỀ PHÂN LỚP DỮ LIỆU DỰA TRÊN CÂY QUYẾT
ĐỊNH .3
1.1. Tổng quan về phân lớp dữ liệu trong data mining 3
1.1.1. Phân lớp dữ liệu 3
1.1.2. Các vấn đề liên quan đến phân lớp dữ liệu .6
1.1.3. Các phương pháp đánh giá độ chính xác của mô hình phân lớp 8
1.2. Cây quyết định ứng dụng trong phân lớp dữ liệu .9
1.2.1. Định nghĩa 9
1.2.2. Các vấn đề trong khai phá dữ liệu sử dụng cây quyết định 10
1.2.3. Đánh giá cây quyết định trong lĩnh vực khai phá dữ liệu .11
1.2.4. Xây dựng cây quyết định 13
1.3. Thuật toán xây dựng cây quyết định .14
1.3.1. Tư tưởng chung 14
1.3.2. Tình hình nghiên cứu các thuật toán hiện nay 15
1.3.3. Song song hóa thuật toán phân lớp dựa trên cây quyết định tuần tự 17
Chương 2. C4.5 VÀ SPRINT 21
2.1. Giới thiệu chung .21
2.2. Thuật toán C4.5 .21
2.2.1. C4.5 dùng Gain-entropy làm độ đo lựa chọn thuộc tính “tốt nhất” 22
2.2.2. C4.5 có cơ chế riêng trong xử lý những giá trị thiếu 25
2.2.3. Tránh “quá vừa” dữ liệu .26
2.2.4. Chuyển đổi từ cây quyết định sang luật .26
2.2.5. C4.5 là một thuật toán hiệu quả cho những tập dữ liệu vừa và nhỏ .27
2.3. Thuật toán SPRINT 28
2.3.1. Cấu trúc dữ liệu trong SPRINT 29
2.3.2. SPRINT sử dụng Gini-index làm độ đo tìm điểm phân chia tập dữ liệu “tốt nhất”
31
2.3.3. Thực thi sự phân chia .34
2.3.4. SPRINT là thuật toán hiệu quả với những tập dữ liệu quá lớn so với các thuật toán
khác .35
- iv-
2.4. So sánh C4.5 và SPRINT 37
Chương 3. CÁC KẾT QUẢ THỰC NGHIỆM .38
3.1. Môi trường thực nghiệm .38
3.2. Cấu trúc mô hình phân lớp C4.5 release8: 38
3.2.1. Mô hình phân lớp C4.5 có 4 chương trình chính: 38
3.2.2. Cấu trúc dữ liệu sử dụng trong C4.5 39
3.3. Kết quả thực nghiệm .40
3.3.1. `7Một số kết quả phân lớp tiêu biểu: 40
3.3.2. Các biểu đồ hiệu năng 47
3.4. Một số đề xuất cải tiến mô hình phân lớp C4.5 54
KẾT LUẬN 56
TÀI LIỆU THAM KHẢO .57
67 trang |
Chia sẻ: maiphuongtl | Lượt xem: 2224 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
4 – 5/14* log25/14 = 0.940
• Tính G(S, A) với A lần lượt là từng thuộc tính:
– A = age. Thuộc tính age đã được rời rạc hóa thành các giá trị <30,
30-40, và >40.
– Với age= “<30”: I (S1) = (s11,s21) = -2/5log22/5 –3/5log23/5 =
0,971
– Với age =“ 30-40”: I (S2) = I(s12,s22) = 0
– Với age =“ >40”: I (S3) = I(s13,s23) = 0.971
Σ |Si| / |S|* I(Si) = 5/14* I(S1) + 4/14 * I(S2) + 5/14 * I(S3) =
0.694
Gain (S, age) = I(s1,s2) – Σ |Si| / |S|* I(Si) = 0.246
Tính tương tự với các thuộc tính khác ta được:
– A = income: Gain (S, income) = 0.029
– A = student: Gain (S, student) = 0.151
– A = credit_rating: Gain (S, credit_rating) = 0.048
Thuộc tính age là thuộc tính có độ đo Information Gain lớn nhất. Do
vậy age được chọn làm thuộc tính phát triển tại node đang xét.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 25-
• Với thuộc tính liên tục
Xử lý thuộc tính liên tục đòi hỏi nhiều tài nguyên tính toán hơn thuộc tính rời
rạc. Gồm các bước sau:
1. Kỹ thuật Quick sort được sử dụng để sắp xếp các case trong tập dữ liệu
đào tạo theo thứ tự tăng dần hoặc giảm dần các giá trị của thuộc tính
liên tục V đang xét. Được tập giá trị V = {v1, v2, …, vm}
2. Chia tập dữ liệu thành hai tập con theo ngưỡng θi = (vi + vi+1)/2 nằm
giữa hai giá trị liền kề nhau vi và vi+1. Test để phân chia dữ liệu là test
nhị phân dạng V θi. Thực thi test đó ta được hai tập dữ
liệu con: V1 = {v1, v2, …, vi} và V2 = {vi+1, vi+2, …, vm}.
3. Xét (m-1) ngưỡng θi có thể có ứng với m giá trị của thuộc tính V bằng
cách tính Information gain hay Gain ratio với từng ngưỡng đó. Ngưỡng
có giá trị của Information gain hay Gain ratio lớn nhất sẽ được chọn
làm ngưỡng phân chia của thuộc tính đó.
Việc tìm ngưỡng (theo cách tuyến tính như trên) và sắp xếp tập training
theo thuộc tính liên tục đang xem xét đôi khi gây ra thắt cổ chai vì tốn
nhiều tài nguyên tính toán.
2.2.2. C4.5 có cơ chế riêng trong xử lý những giá trị thiếu
Giá trị thiếu của thuộc tính là hiện tượng phổ biến trong dữ liệu, có thể do lỗi
khi nhập các bản ghi vào cơ sở dữ liệu, cũng có thể do giá trị thuộc tính đó được đánh
giá là không cần thiết đối với case cụ thể.
Trong quá trình xây dựng cây từ tập dữ liệu đào tạo S, B là test dựa trên thuộc
tính Aa với các giá trị đầu ra là b1, b2, ..., bt. Tập S0 là tập con các case trong S mà có
giá trị thuộc tính Aa không biết và Si biểu diễn các case với đầu ra là bi trong test B.
Khi đó độ đo information gain của test B giảm vì chúng ta không học được gì từ các
case trong S0.
Tương ứng với G(S, B), P(S, B) cũng thay đổi,
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 26-
Hai thay đổi này làm giảm giá trị của test liên quan đến thuộc tính có tỉ lệ giá
trị thiếu cao.
Nếu test B được chọn, C4.5 không tạo một nhánh riêng trên cây quyết định
cho S0. Thay vào đó, thuật toán có cơ chế phân chia các case trong S0 về vác tập con Si
là tập con mà có giá trị thuộc tính test xác định theo trong số |Si|/ |S – S0|.
2.2.3. Tránh “quá vừa” dữ liệu
“Quá vừa” dữ liệu là một khó khăn đáng kể đối với học bằng cây quyết định
và những phương pháp học khác. Quá vừa dữ liệu là hiện tượng: nếu không có các
case xung đột (là những case mà giá trị cho mọi thuộc tính là giống nhau nhưng giá trị
của lớp lại khác nhau) thì cây quyết định sẽ phân lớp chính xác toàn bộ các case trong
tập dữ liệu đào tạo. Đôi khi dữ liệu đào tạo lại chứa những đặc tính cụ thể, nên khi áp
dụng cây quyết định đó cho những tập dữ liệu khác thì độ chính xác không còn cao
như trước.
Có một số phương pháp tránh “quá vừa” dữ liệu trong cây quyết định:
• Dừng phát triển cây sớm hơn bình thường, trước khi đạt tới điểm phân lớp
hoàn hảo tập dữ liệu đào tạo. Với phương pháp này, một thách thức đặt ra là
phải ước lượng chính xác thời điểm dừng phát triển cây.
• Cho phép cây có thể “quá vừa” dữ liệu, sau đó sẽ cắt, tỉa cây
Mặc dù phương pháp thứ nhất có vẻ trực quan hơn, nhưng với phương pháp
thứ hai thì cây quyết định được sinh ra được thử nghiệm chứng minh là thành công
hơn trong thực tế, vì nó cho phép các tương tác tiềm năng giữa các thuộc tính được
khám phá trước khi quyết định xem kết quả nào đáng giữ lại. C4.5 sử dụng kỹ thuật
thứ hai để tránh “quá vừa” dữ liệu.
2.2.4. Chuyển đổi từ cây quyết định sang luật
Việc chuyển đổi từ cây quyết định sang luật sản xuất (production rules) dạng
if-then tạo ra những quy tắc phân lớp dễ hiểu, dễ áp dụng. Các mô hình phân lớp biểu
diễn các khái niệm dưới dạng các luật sản xuất đã được chứng minh là hữu ích trong
nhiều lĩnh vực khác nhau, với các đòi hỏi về cả độ chính xác và tính hiểu được của mô
hình phân lớp. Dạng output tập luật sản xuất là sự lựa chọn “khôn ngoan”. Tuy nhiên,
tài nguyên tính toán dùng cho việc tạo ra tập luật từ tập dữ liệu đào tạo có kích thước
lớn và nhiều giá trị sai là vô cùng lớn [12]. Khẳng định này sẽ được chứng minh qua
kết quả thực nghiệm trên mô hình phân lớp C4.5
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 27-
Giai đoạn chuyển dổi từ cây quyết định sang luật bao gồm 4 bước:
• Cắt tỉa:
Luật khởi tạo ban đầu là đường đi từ gốc đến lá của cây quyết định. Một cây
quyết định có l lá thì tương ứng tập luật sản xuất sẽ có l luật khởi tạo. Từng điều kiện
trong luật được xem xét và loại bỏ nếu không ảnh hưởng tới độ chính xác của luật đó.
Sau đó, các luật đã cắt tỉa được thêm vào tập luật trung gian nếu nó không trùng với
những luật đã có.
• Lựa chọn
Các luật đã cắt tỉa được nhóm lại theo giá trị phân lớp, tạo nên các tập con
chứa các luật theo lớp. Sẽ có k tập luật con nếu tập training có k giá trị phân lớp. Từng
tập con trên được xem xét để chọn ra một tập con các luật mà tối ưu hóa độ chính xác
dự đoán của lớp gắn với tập luật đó.
• Sắp xếp
Sắp xếp K tập luật đã tạo ra từ trên bước theo tần số lỗi. Lớp mặc định được
tạo ra bằng cách xác định các case trong tập training không chứa trong các luật hiện tại
và chọn lớp phổ biến nhất trong các case đó làm lớp mặc định.
• Ước lượng, đánh giá:
Tập luật được đem ước lượng lại trên toàn bộ tập training, nhằm mục đích xác
định xem liệu có luật nào làm giảm độ chính xác của sự phân lớp. Nếu có, luật đó bị
loại bỏ và quá trình ước lượng được lặp cho đến khi không thể cải tiến thêm.
2.2.5. C4.5 là một thuật toán hiệu quả cho những tập dữ liệu vừa và nhỏ
C4.5 có cơ chế sinh cây quyết định hiệu quả và chặt chẽ bằng việc sử dụng độ
đo lựa chọn thuộc tính tốt nhất là information-gain. Các cơ chế xử lý với giá trị lỗi,
thiếu và chống “quá vừa” dữ liệu của C4.5 cùng với cơ chế cắt tỉa cây đã tạo nên sức
mạnh của C4.5. Thêm vào đó, mô hình phân lớp C4.5 còn có phần chuyển đổi từ cây
quyết định sang luật dạng if-then, làm tăng độ chính xác và tính dễ hiểu của kết quả
phân lớp. Đây là tiện ích rất có ý nghĩa đối với người sử dụng.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 28-
2.3. Thuật toán SPRINT
Ngày nay dữ liệu cần khai phá có thể có tới hàng triệu bản ghi và khoảng 10
đến 10000 thuộc tính. Hàng Tetabyte (100 M bản ghi * 2000 trường * 5 bytes) dữ liệu
cần được khai phá. Những thuật toán ra đời trước không thể đáp ứng được nhu cầu đó.
Trước tình hình đó, SPRINT là sự cải tiến của thuật toán SLIQ (Mehta, 1996) ra đời.
Các thuật toán SLIQ và SPRINT đều có những cải tiến để tăng khả năng mở rộng của
thuật toán như:
• Khả năng xử lý tốt với những thuộc tính liên tục và thuộc tính rời rạc.
• Cả hai thuật toán này đều sử dụng kỹ thuật sắp xếp trước một lần dữ liệu, và
lưu trữ thường trú trên đĩa (disk – resident data) những dữ liệu quá lớn không
thể chứa vừa trong bộ nhớ trong. Vì sắp xếp những dữ liệu lưu trữ trên đĩa là
đắt [3], nên với cơ chế sắp xếp trước, dữ liệu phục vụ cho quá trình phát triển
cây chỉ cần được sắp xếp một lần. Sau mỗi bước phân chia dữ liệu tại từng
node, thứ tự của các bản ghi trong từng danh sách được duy trì, không cần phải
sắp xếp lại như các thuật toán CART, và C4.5 [13][12]. Từ đó làm giảm tài
nguyên tính toán khi sử dụng giải pháp lưu trữ dữ liệu thường trú trên đĩa.
• Cả 2 thuật toán sử dụng những cấu trúc dữ liệu giúp cho việc xây dựng cây
quyết định dễ dàng hơn. Tuy nhiên cấu trúc dữ liệu lưu trữ của SLIQ và
SPRINT khác nhau, dẫn đến những khả năng mở rộng, và song song hóa khác
nhau giữa hai thuật toán này.
Mã giả của thuật toán SPRINT như sau:
Hình 11 - Mã giả thuật toán SPRINT
SPRINT algorithm:
Partition(Data S) {
if (all points in S are of the same class) then
return;
for each attribute A do
evaluate splits on attribute A;
Use best split found to partition S into S1& S2
Partition(S1);
Partition(S2);
}
Initial call: Partition(Training Data)
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 29-
2.3.1. Cấu trúc dữ liệu trong SPRINT
Kỹ thuật phân chia dữ liệu thành các danh sách thuộc tính riêng biệt lần đầu
tiên được SLIQ (Supervised Learning In Quest) đề xuất. Dữ liệu sử dụng trong SLIQ
gồm: nhiều danh sách thuộc tính lưu trữ thường trú trên đĩa (mỗi thuộc tính tương ứng
với một danh sách), và một danh sách đơn chứa giá trị của class lưu trữ thường trú
trong bộ nhớ chính. Các danh sách này liên kết với nhau bởi giá trị của thuộc tính rid
(chỉ số bản ghi được đánh thứ tự trong cơ sở dữ liệu) có trong mỗi danh sách.
SLIQ phân chia dữ liệu thành hai loại cấu trúc:[14][9]
Hình 12 - Cấu trúc dữ liệu trong SLIQ
• Danh sách thuộc tính (Attribute List) thường trú trên đĩa. Danh sách này gồm
trường thuộc tính và rid (a record identifier).
• Danh sách lớp (Class List) chứa các giá trị của thuộc tính phân lớp tương ứng với
từng bản ghi trong cơ sở dữ liệu. Danh sách này gồm các trường rid, thuộc tính
phân lớp và node (liên kết với node có giá trị tương ứng trên cây quyết định). Việc
tạo ra trường con trỏ trỏ tới node tương ứng trên cây quyết định giúp cho quá trình
phân chia dữ liệu chỉ cần thay đổi giá trị của trường con trỏ, mà không cần thực sự
phân chia dữ liệu giữa các node. Danh sách lớp được lưu trữ thường trú trong bộ
nhớ trong vì nó thường xuyên được truy cập, sửa đổi cả trong giai đoạn xây dựng
cây, và cả trong giai đoạn cắt, tỉa cây. Kích thước của danh sách lớp tỉ lệ thuận với
số lượng các bản ghi đầu vào. Khi danh sách lớp không vừa trong bộ nhớ, hiệu
năng của SLIQ sẽ giảm. Đó là hạn chế của thuật toán SLIQ. Việc sử dụng cấu trúc
dữ liệu thường trú trong bộ nhớ làm giới hạn tính mở rộng được của thuật toán
SLIQ.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 30-
SPRINT sử dụng danh sách thuộc tính cư trú trên đĩa
SPRINT khắc phục được hạn chế của SLIQ bằng cách không sử dụng danh
sách lớp cư trú trong bộ nhớ, SPRINT chỉ sử dụng một loại danh sách là danh sách
thuộc tính có cấu trúc như sau:
Hình 13 - Cấu trúc danh sách thuộc tính trong SPRINT – Danh sách thuộc tính liên
tục được sắp xếp theo thứ tự ngay được tạo ra
Danh sách thuộc tính
SPRINT tạo danh sách thuộc tính cho từng thuộc tính trong tập dữ liệu. Danh
sách này bao gồm thuộc tính, nhãn lớp (Class label hay thuộc tính phân lớp), và chỉ số
của bản ghi rid (được đánh từ tập dữ liệu ban đầu). Danh sách thuộc tính liên tục được
sắp xếp thứ tự theo giá trị của thuộc tính đó ngay khi được tạo ra. Nếu toàn bộ dữ liệu
không chứa đủ trong bộ nhớ thì tất cả các danh sách thuộc tính được lưu trữ trên đĩa.
Chính do đặc điểm lưu trữ này mà SPRINT đã loại bỏ mọi giới hạn về bộ nhớ, và có
khả năng ứng dụng với những cơ sở dữ liệu thực tế với số lượng bản ghi có khi lên tới
hàng tỉ.
Các danh sách thuộc tính ban đầu tạo ra từ tập dữ liệu đào tạo được gắn với
gốc của cây quyết định. Khi cây phát triển, các node được phân chia thành các node
con mới thì các dánh sách thuộc tính thuộc về node đó cũng được phân chia tương ứng
và gắn vào các node con. Khi danh sách bị phân chia thì thứ tự của các bản ghi trong
danh sách đó được giữ nguyên, vì thế các danh sách con được tạo ra không bao giờ
phải sắp xếp lại. Đó là một ưu điểm của SPRINT so với các thuật toán trước đó.
Biểu đồ (Histogram)
RID Age Car Type Risk
0 23 family high
1 17 sport high
2 43 sport high
3 68 family low
4 32 truck low
5 20 family high
Age RID Risk
17 1 high
20 5 high
23 0 high
32 4 low
43 2 high
68 3 low
Car Type RID Risk
family 0 high
sport 1 high
sport 2 high
family 3 low
truck 4 low
family 5 high
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 31-
SPRINT sử dụng biểu đồ để lập bảng thống kê sự phân phối lớp của các bản
ghi trong mỗi danh sách thuộc tính, từ đó dùng vào việc ước lượng điểm phân chia cho
danh sách đó. Thuộc tính liên tục và thuộc tính rời rạc có hai dạng biểu đồ khác nhau.
• Biểu đồ của thuộc tính liên tục
SPRINT sử dụng 2 biểu đồ: Cbelow và Cabove. Cbelow chứa sự phân phối
của những bản ghi đã được xử lý, Cabove chứa sự phân phối của những bản ghi
chưa được xử lý trong danh sách thuộc tính. Hình II-3 minh họa việc sử dụng
biểu đồ cho thuộc tính liên tục
• Biểu đồ của thuộc tính rời rạc
Thuộc tính rời rạc cũng có một biểu đồ gắn với từng node. Tuy nhiển
SPRINT chỉ sử dụng một biểu đồ là count matrix chứa sự phân phối lớp ứng
với từng giá trị của thuộc tính được xem xét.
Các danh sách thuộc tính được xử lý cùng một lúc, do vậy thay vì đòi hỏi các
danh sách thuộc tính trong bộ nhớ, với SPRINT bộ nhớ chỉ cần chứa tập các biểu đồ
như trên trong quá trình phát triển cây.
2.3.2. SPRINT sử dụng Gini-index làm độ đo tìm điểm phân chia tập dữ
liệu “tốt nhất”
SPRINT là một trong những thuật toán sử dụng độ đo Gini-index để tìm thuộc
tính tốt nhất làm thuộc tính test tại mỗi node trên cây. Chỉ số này được Breiman nghĩ
ra từ năm 1984, cách tính như sau:
• Trước tiên cần định nghĩa: gini (S) = 1- ∑pj2
Trong đó: S là tập dữ liệu đào tạo có n lớp; pj là tần xuất của lớp j
trong S (là thương của số bản ghi có giá trị của thuộc tính phân lớp là pj với
tổng số bản ghi trong S)
• Nếu phân chia dạng nhị phân, tức là S được chia thành S1, S2 (SPRINT chỉ
sử dụng phân chia nhị phân này) thì chỉ số tính độ phân chia được cho bởi
công thức sau:
ginisplit(S) = n1/n*gini(S1) + n2/n*gini(S2)
Với n, n1, n2 lần lượt là kích thước của S, S1, S2.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 32-
Ưu điểm của loại chỉ số này là các tính toán trên nó chỉ dựa vào thông tin về
sự phân phối các giá trị lớp trong từng phần phân chia mà không tính toán trên các giá
trị của thuộc tính đang xem xét.
Để tìm được điểm phân chia cho mỗi node, cần quét từng danh sách thuộc tính
của node đó và ước lượng các phân chia dựa trên mỗi thuộc tính gắn với node đó.
Thuộc tính được chọn để phân chia là thuộc tính có chỉ số ginisplit(S) nhỏ nhất.
Điểm cần nhấn mạnh ở đây là khác với Information Gain chỉ số này được tính
mà không cần đọc nội dung dữ liệu, chỉ cần biểu đồ biểu diễn sự phân phối các bản ghi
theo các giá trị phân lớp. Đó là tiền đề cho cơ chế lưu trữ dữ liệu thường trú trên đĩa.
Các biểu đồ của danh sách thuộc tính liên tục, hay rời rạc được mô tả dưới đây.
Với thuộc tính liên tục
Với thuộc tính liên tục, các giá trị kiểm tra là các giá trị nằm giữa mọi cặp 2
giá trị liền kề của thuộc tính đó. Để tìm điểm phân chia cho thuộc tính đó tại một node
nhất định, biểu đồ được khởi tạo với Cbelow bằng 0 và Cabove là phân phối lớp của tất cả
các bản ghi tại node đó. Hai biểu đồ trên được cập nhật lần lượt mỗi khi từng bản ghi
được đọc. Mỗi khi con trỏ chạy gini-index được tính trên từng điểm phân chia nằm
giữa giá trị vừa đọc và giá trị sắp đọc. Khi đọc hết danh sách thuộc tính (Cabove bằng 0
ở tất cả các cột) thì cũng là lúc tính được toàn bộ các gini-index của các điểm phân
chia cần xem xét. Căn cứ vào kết quả đó có thể chọn ra gini-index thấp nhất và tương
ứng là điểm phân chia của thuộc tính liên tục đang xem xét tại node đó. Việc tính gini-
index hoàn toàn dựa vào biểu đồ. Nếu tìm ra điểm phân chia tốt nhất thì kết quả đó
được lưu lại và biểu đồ vừa gắn danh sách thuộc tính đó được khởi tạo lại trước khi xử
lý với thuộc tính tiếp theo.
Hình 14 - Ước lượng các điểm phân chia với thuộc tính liên tục
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 33-
Với thuộc tính rời rạc
Với thuộc tính rời rạc, quá trình tìm điểm phân chia tốt nhất cũng được tính
toán dựa trên biểu đồ của danh sách thuộc tính đó. Trước tiên cần quét toàn bộ danh
sách thuộc tính để thu được số lượng phân lớp ứng với từng giá trị của thuộc tính rời
rạc, kết quả này được lưu trong biểu đồ count matrix. Sau đó, cần tìm tất cả các tập
con có thể có từ các giá trị của thuộc tính đang xét, coi đó là điểm phân chia và tính
gini-index tương ứng. Các thông tin cần cho việc tính toán chỉ số gini-index của bất cứ
tập con nào đều có trong count matrix. Bộ nhớ cung cấp cho count matrix được thu hồi
sau khi tìm ra được điểm phân chia tốt nhất của thuộc tính đó.
Hình 15 - Ước lượng điểm phân chia với thuộc tính rời rạc
Ví dụ mô tả cách tính chỉ số Gini–index
Với tập dữ liệu đào tạo được mô tả trong hình 13, việc tính chỉ số Gini-index để tìm ra
điểm phân chia tốt nhất được thực hiện như sau:
1. Với Thuộc tính liên tục Age cần tính điểm phân chia trên lần lượt các so sánh
sau Age<=17, Age<=20, Age<=23, Age<=32, Age<=43, Age<=68
Tuple count High Low
Age<=17 1 0
Age>17 3 2
G(Age<=17) = 1- (12+02) = 0
G(Age>17) = 1- ((3/5)2+(2/5)2) = 1 - (13/25)2 = 12/25
GSPLIT = (1/6) * 0 + (5/6) * (12/25) = 2/5
Tuple count High Low
Age<=20 2 0
Age>20 2 2
G(Age<=20) = 1- (12+02) = 0
G(Age>20) = 1- ((1/2)2+(1/2)2) = 1/2
G (2/6) * 0 + (4/6) * (1/8) 1/3
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 34-
Tính toán tương tự với các test còn lại Age<=32, Age<=43, Age<=68
So sánh các GSPILT tìm được ứng với từng phân chia của các thuộc tính, GSPLIT
ứng với Age <=23 có giá trị nhỏ nhất. Do vậy điểm phân chia là tại thuộc tính Age
với giá trị phân chia = (23+32) / 2 = 27.5.
Kết quả ta có cây quyết định như hình 5 phần 1.2.1
2.3.3. Thực thi sự phân chia
Sau khi tìm ra điểm phân chia tốt nhất của node dựa trên so sánh gini-index
của các thuộc tính có trên node đó, cần thực thi sự phân chia bằng cách tạo ra các node
con và phân chia danh sách thuộc tính của node cha cho các node con.
Hình 16 - Phân chia danh sách thuộc tính của một node
Tuple count High Low
Age<=23 3 0
Age>23 1 2
G(Age≤23) = 1- (12+02) = 0
G(Age>23) = 1- ((1/3)2+(2/3)2) = 1 - (1/9) - (4/9) = 4/9
GSPLIT = (3/6) * 0 + (3/6) * (4/9) = 2/9
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 35-
Với thuộc tính được chọn (Age như trên hình vẽ) làm thuộc tính phân chia tại
node đó, việc phân chia danh sách thuộc tính này về các node con khá đơn giản. Nếu
đó là thuộc tính liên tục, chỉ cần cắt danh sách thuộc tính theo điểm phân chia thành 2
phần và gán cho 2 node con tương ứng. Nếu đó là thuộc tính rời rạc thì cần quét toàn
bộ danh sách và áp dụng test đã xác định để chuyển các bản ghi về 2 danh sách mới
ứng với 2 node con.
Nhưng vấn đề không đơn giản như vậy với những thuộc tính còn lại tại node
đó (Car Type chẳng hạn), không có test trên thuộc tính này, nên không thể áp dụng các
kiểm tra trên giá trị của thuộc tính để phân chia các bản ghi. Lúc này cần dùng đến một
trường đặc biệt trong các danh sách thuộc tính đó là rids. Đây chính là trường kết nối
các bản ghi trong các danh sách thuộc tính. Cụ thể như sau: trong khi phân chia danh
sách của thuộc tính phân chia (Age) cần chèn giá trị trường rids của mỗi bản ghi vào
một bảng băm (hash table) để đánh đấu node con mà các bản ghi tương ứng (có cùng
rids) trong các danh sách thuộc tính khác được phân chia tới. Cấu trúc của bảng băm
như sau:
Hình 17 - Cấu trúc của bảng băm phân chia dữ liệu trong SPRINT (theo ví dụ các
hình trước)
Phân chia xong danh sách của thuộc tính phân chia thì cũng là lúc xây dựng
xong bảng băm. Danh sách các thuộc tính còn lại được phân chia tới các node con theo
thông tin trên bảng băm bằng cách đọc trường rids trên từng bản ghi và trường Child
node tương ứng trên bảng băm.
Nếu bảng băm quá lớn so với bộ nhớ, quá trình phân chia được chia thành
nhiều bước. Bảng băm được tách thành nhiều phần sao cho vừa với bộ nhớ, và các
danh sách thuộc tính phân chia theo từng phần bảng băm. Quá trình lặp lại cho đến khi
bảng băm nằm trong bộ nhớ.
2.3.4. SPRINT là thuật toán hiệu quả với những tập dữ liệu quá lớn so
với các thuật toán khác
SPRINT ra đời không nhằm mục đích làm tốt hơn SLIQ [9] với những tập dữ
liệu mà danh sách lớp nằm vừa trong bộ nhớ. Mục tiêu của thuật toán này là nhằm vào
những tập dữ liệu quá lớn so với các thuật toán khác và có khả năng tạo ra một mô
Hash table
Rids 1 2 3 4 5 6
Child node L R R R L L
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 36-
hình phân lớp hiệu quả từ đó. Hơn nữa, SPRINT còn được thiết kế để dễ dàng song
song hóa. Quả vậy, việc song song hóa SPRINT khá tự nhiên và hiệu quả với cơ chế
xử lý dữ liệu song song. SPRINT đạt được chuẩn cho việc sắp xếp dữ liệu và tải cân
bằng khối lượng công việc bằng cách phân phối đều danh sách thuộc tính thuộc tính
cho N bộ vi xử lý của một máy theo kiến trúc shared-nothing [7]. Việc song song hóa
SPRINT nói riêng cũng như song song hóa các mô hình phân lớp dữ liệu dựa trên cây
quyết định nói chung trên hệ thống Shared-memory multiprocessor (SMPs) hay còn
được gọi là hệ thống shared-everthing được nghiên cứu trong [10].
Bên cạnh những mặt mạnh, SPRINT cũng có những mặt yếu. Trước hết đó là
bảng băm sử dụng cho việc phân chia dữ liệu, có kích cỡ tỉ lệ thuận với số lượng đối
tượng dữ liệu gắn với node hiện tại (số bản ghi của một danh sách thuộc tính). Đồng
thời bảng băm cần được đặt trong bộ nhớ khi thi hành phân chia dữ liệu, khi kích cỡ
bảng băm quá lớn, việc phân chia dữ liệu phải tách thành nhiều bước. Mặt khác, thuật
toán này phải chịu chi phí vào-ra “trầm trọng”. Việc song song hóa thuật toán này
cũng đòi hỏi chi phí giao tiếp toàn cục cao do cần đồng bộ hóa các thông tin về các chỉ
số Gini-index của từng danh sách thuộc tính.
Ba tác giả của SPRINT đã đưa ra một số kết quả thực nghiệm trên mô hình
phân lớp SPRINT so sánh với SLIQ [7] được thể hiện bằng biểu đồ dưới đây.
Biểu đồ 1- So sánh thời gian thực thi của mô hình phân lớp SPRINT và SLIQ theo kích
thước tập dữ liệu đào tạo
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 37-
Từ biểu đồ trên có thể thấy: với những tập dữ liệu nhỏ (<1 triệu cases) thì thời
gian thực thi của SPRINT lớn hơn so với thời gian thực thi SLIQ. Điều này có thể giải
thích do khi đó danh sách lớp khi dùng thuật toán SLIQ vẫn nằm vừa trong bộ nhớ.
Nhưng với những tập dữ liệu lớn (>1 triệu cases) thì SLIQ không thể thao tác, trong
khi với những tập dữ liệu khoảng hơn 2,5 triệu cases SPRINT vẫn thao tác dễ dàng. Lý
do là SPRINT sử dụng cơ chế lưu trữ liệu thường trú hoàn toàn trên đĩa.
2.4. So sánh C4.5 và SPRINT
Nội dung so
sánh
C4.5 SPRINT
Tiêu chuẩn
lựa chọn
thuộc tính
phân chia
Gain-entropy
Có khuynh hướng làm cô lập lớp
lớn nhất khỏi các lớp khác
Gini-index
Có khuynh hướng chia thành các
nhóm lớp với lượng dữ liệu
tương đương
Cơ chế lưu
trữ dữ liệu
Lưu trú trong bộ nhớ (memory-
resident)
-> Áp dụng cho những ứng dụng
khai phá cơ sở dữ liệu nhỏ (hàng
trăm nghìn bản ghi)
Lưu trú trên đĩa (disk-resdient)
-> Áp dụng cho những ứng dụng
khai phá dữ liệu cực lớn mà các
thuật toán khác không làm được
(hàng trăm triệu - hàng tỉ bản
ghi)
Cơ chế sắp
xếp dữ liệu
Sắp xếp lại tập dữ liệu tương
ứng với mỗi node
Sắp xếp trước một lần. Trong
quá trình phát triển cây, danh
sách thuộc tính được phân chia
nhưng thứ tự ban đầuvẫn được
duy trì, do đó không cần phải
sắp xếp lại.
class A 40
class B 30
class C 20
class D 10
if age < 40
class A 40
class B 30
class C 20
class D 10
yes no
class A 40
class B 30
class C 20
class D 10
if age < 65
class A 40
class D
class B 30
class C 20
yes no
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 38-
Chương 3. CÁC KẾT QUẢ THỰC NGHIỆM
Tác giả sử dụng mô hình phân lớp C4.5 release8 mã nguồn mở do J. Ross
Quinlan viết, tại địa chỉ: để phân tích, đánh giá
mô hình phân lớp C4.5 về kết quả phân lớp và các nhân tố ảnh hưởng đến hiệu năng
của mô hình.
3.1. Môi trường thực nghiệm
Mã nguồn C.45 được cài đặt và chạy thử nghiệm trên Server 10.10.0.10 của
Đại học Công Nghệ.
Cấu hình của Server như sau: bộ vi xử lý Intel ® Xeon™ 2.4GHz, có 2 bộ
xử lý vật lý có thể hoạt động như 4 bộ xử lý logic theo công nghệ hyper-threading,
cache size: 512KB, dung lượng bộ nhớ trong 1GB.
Tập dữ liệu thử nghiệm là tập dữ liệu chứa các thông tin về khách hàng sử
dụng điện thoại di động đã đăng ký sử dụng web portal. Các trường trong tập dữ liệu
gồm có: Các thông tin cá nhân như: Tên tuổi, giới tính, ngày sinh, vùng đăng ký sử
dụng điện thoại, loại điện thoại sử dụng, version của loại điện thoại đó, số lần và thời
gian truy cập web portal để sử dụng các dịch vụ như gửi tin nhắn, gửi logo hay
ringtone... Tập dữ liệu có kích thước khoảng 120000 bản ghi dùng để training và
khoảng 60000 bản ghi được sử dụng để làm tập dữ liệu test.
3.2. Cấu trúc mô hình phân lớp C4.5 release8:
3.2.1. Mô hình phân lớp C4.5 có 4 chương trình chính:
• Chương trình sinh cây quyết định (c4.5)
• Chương trình sinh luật sản xuất (c4.5rules)
• Chương trình ứng dụng cây quyết định vào phân lớp những dữ liệu mới
(consult)
• Chương trình ứng dụng bộ luật sản xuất vào phân lớp những dữ liệu mới
(consultr)
Ngoài ra C4.5 còn có 2 tiện ích đi kèm phục vụ cho quá trình chạy thực nghiệm là:
• csh shell script cho kỹ thuật ước lượng độ chính xác của mô hình phân lớp
cross-validation ('xval.sh')
• Hai chương trình phụ thuộc đi kèm là ('xval-prep' và 'average').
Chi tiết hơn về mô hình phân lớp C4.5 có thể tham khảo tại địa chỉ:
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 39-
3.2.2. Cấu trúc dữ liệu sử dụng trong C4.5
Mỗi bộ dữ liệu dùng trong C4.5 gồm có 3 file:
3.2.2.1. Filestem.names: định nghĩa bộ dữ liệu
Hình 18 - File định nghĩa cấu trúc dữ liệu sử dụng trong thực nghiệm
Mô tả:
• Dòng trên cùng định nghĩa các giá trị phân lớp theo thuộc tính được chọn (ví
dụ trên hình 18 là thuộc tính MOBILE_PRODUCTER_ID)
• Các dòng tiếp theo là danh sách các thuộc tính cùng với tập giá trị của nó
trong tập dữ liệu. Các thuộc tính liên tục được định nghĩa bằng từ khóa
“continuous”
• Chú thích được định nghĩa sau dấu “|”
3.2.2.2. Filestem.data: chứa dữ liệu training
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 40-
Hình 19 - File chứa dữ liệu cần phân lớp
Filestem.data có cấu trúc như sau: mỗi dòng tương ứng với một bản ghi
(cases) trong cơ sở dữ liệu. Mỗi dòng một bộ giá trị theo thứ đã định của các thuộc
tính định nghĩa trong filestem.names. Các giá trị ngăn cách nhau bởi dấu phảy. Giá trị
thiếu (missing value) được biểu diễn bằng dấu “?”.
3.2.2.3. Filestem.test: chứa dữ liệu test
File này chứa dữ liệu test trên mô hình phân lớp đã được tạo ra từ tập dữ liệu
training, và có cấu trúc giống filestem.data
3.3. Kết quả thực nghiệm
3.3.1. `7Một số kết quả phân lớp tiêu biểu:
3.3.1.1. Cây quyết định
Lệnh tạo cây quyết định
$ ./C4.5 -f ../Data/Classes/10-5/class –u >> ../Data/Classes/10-5/class.dt
Tham số tùy chọn:
-f: xác định bộ dữ liệu cần phân lớp
-u: tùy chọn cây được tạo ra được đánh giá trên tập dữ liệu test.
-v verb: mức độ chi tiết của output [0..3], mặc định là 0
-t trials: thiết lập chế độ iteractive với trials là số cây thử
nghiệm. Iteractive là chế độ cho phép tạo ra nhiều cây thử nghiệm bắt
đầu với một tập con dữ liệu được chọn ngẫu nhiên. Mặc định là chế độ
batch với toàn bộ tập dữ liệu được sử dụng để tạo một cây quyết định
duy nhất.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 41-
Cây quyết định có các node trong là các kiểm tra giá trị của thuộc tính được
chọn để phát triển tại node đó. Lá của cây quyết định có định dạng: Giá_trị_phân_lớp
(N/E) hoặc (N). Với N/E là tỉ lệ giữa tổng các case đạt tới lá đó với số case đạt tới lá
đó nhưng thuộc về lớp khác (trong tập dữ liệu đào tạo).
Hình 20 - Dạng cây quyết định tạo ra từ tập dữ liệu thử nghiệm
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 42-
Hình 21 - Ước lượng trên cây quyết định vừa tạo ra trên tập dữ liệu training và tập
dữ liệu test
Sau khi cây quyết định được tạo ra, nó sẽ được ước lượng lại độ chính xác trên
chính tập dữ liệu đào tạo vừa học được, và có thể được ước lượng trên tập dữ liệu test
độc lập với dữ liệu training nếu có tùy chọn từ phía người dùng.
Các ước lượng được thực hiện trên cây khi chưa cắt tỉa và sau khi đã cắt tỉa.
Mô hình C4.5 cũng cho phép truyền các tham số về mức độ cắt tỉa của cây, mặc định
là cắt tỉa 25%.
3.3.1.2. Các luật sản xuất tiêu biểu
Lệnh tạo luật sản xuất khi đã có cây quyết định:
$ ./C4.5rules -f ../Data/Classes/10-5/class -u >> ../Data/Classes/10-
5/class.r
Các tham số tùy chọn –f, -v, -u giống như với lệnh tạo cây quyết định.
Mỗi luật sinh ra gồm có 3 phần:
• Điều kiện phân lớp
• Giá trị phân lớp ( ->class …)
• []: dự đoán độ chính xác của luật. Giá trị này được ước lượng trên tập
training và test (nếu có tùy chọn –u khi sinh luật)
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 43-
Hình 22 - Một số luật rút ra từ bộ dữ liệu 19 thuộc tính, phân lớp loại thiết lập chế độ
giao diện của người sử dụng (WEB_SETTING_ID)
Việc đưa ra được các luật liên quan đến sở thích giao diện sử dụng của khách
hàng giúp ích cho công việc thiết kế, cũng như tạo các loại giao diện phù hợp cho từng
loại đối tượng khách hàng khác nhau. Ví dụ, Rule 233 trong hình 22 cho thấy, nếu
khách hàng đăng ký sử dụng dịch vụ tại Hà Nội, nghề nghiệp thuộc nhóm Other và
sinh năm 1982 thì chế độ giao diện mà người đó sử dụng có mã số là 1. Kết luận này
có độ chính xác là 96,6%.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 44-
Hình 23 - Một số luật rút ra từ bộ dữ liệu 8 thuộc tính, phân lớp theo số hiệu nhà sản
xuất điện thoại (PRODUCTER_ID)
Từ kết quả thực tế hình 23, từ Rule 1021, chúng ta có thể kết luận: nếu khách hàng
làm công việc Supervisory và sinh trong khoảng từ năm 1969 đến 1973 thì loại điện
thoại mà khách hàng dùng có số hiệu là 1 (là điện thoại SAMSUNG). Độ chính xác
của kết luận này là 91,7%.
Những luật như trên giúp cho các nhân viên maketing có thể tìm ra được thị trường
điện thoại di động đối với từng loại đối tượng khách hàng khác nhau, từ đó có các
chiến lược phát triển sản phẩm hợp lý.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 45-
Hình 24 - Một số luật sinh ra từ tập dữ liệu 8 thuộc tính, phân lớp theo dịch vụ điện
thoại mà khách hàng sử dụng (MOBILE_SERVICE_ID)
Ví dụ từ Rule 661: nếu khách hàng là nam (F), nghề nghiệp Engineering, điện
thoại sử dụng là Erricsion (MOBILE_PRODUCTER_ID = 4) và đăng ký năm 2004,
thì dịch vụ mà khách hàng đó sử dụng là gửi logo (MOBILE_SERVICE_ID = 2). Độ
chính xác của luật này là 79,4%.
Từ những luật như vậy, ta có thể thống kê cũng như dự đoán được xu hướng
sử dụng các loại dịch vụ của từng đối tượng khách hàng khác nhau. Từ đó có chiến
lược phát triển dịch vụ khách hàng hiệu quả.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 46-
Hình 25 - Ước lượng tập luật trên tập dữ liệu đào tạo
Sau khi được tạo ra, tập luật được ước lượng lại trên tập training data, hay tập
dữ liệu test (tùy chọn).
Mô tả các một số trường tiêu biểu:
• Rule: số hiệu của luật
• Zize: Kích thước của luật (số các điều kiện so sánh trong phần điều kiện phân
lớp)
• Used: số lượng cases trong tập training áp dụng luật đó. Trường này quy định
tính phổ biến của luật.
• Wrong: số lượng case phân lớp sai -> tỉ lệ phần trăm lỗi
Kết luận
Từ quá trình thực nghiệm, chúng tôi nhận thấy vai trò của quá trình tiền xử lý
dữ liệu là rất quan trọng. Trong quá trình này, cần xác định chính xác những thông tin
gì cần rút ra từ cơ sở dữ liệu đó, từ đó chọn thuộc tính phân lớp phù hợp. Sau đó việc
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 47-
lựa chọn những thuộc tính liên quan là rất quan trọng, nó quyết định mô hình phân lớp
có đúng đắn không, có ý nghĩa thực tế không và có thể áp dụng cho những dữ liệu
tương lai hay không.
3.3.2. Các biểu đồ hiệu năng
Các tham số ảnh hưởng đến hiệu năng của mô hình phân lớp là [6]:
• Số các bản ghi trong tập dữ liệu đào tạo (N)
• Số lượng thuộc tính (A)
• Số các giá trị rời rạc của mỗi thuộc tính (nhân tố nhánh) (V)
• Số các lớp (C)
Chi phí xây dựng cây quyết định là tổng chi phí xây dựng từng node:
T = Σ tnode(i)
Chi phí tốn cho node i được tính bằng tổng các khoản chi phí riêng cho từng công
việc:
tnode(i) = tsingle(i) + tfreq(i) + tinfo(i) + tdiv(i)
Với:
• tsingle(i) là chi phí thực thi việc kiểm tra xem liệu tất cả các case trong tập
dữ liệu đào tạo có thuộc về cùng một lớp không?
• tdiv(i) là chi phí phân chia tập dữ liệu theo thuộc tính đã chọn
• Việc lựa chọn thuộc tính có Information gain lớn nhất trong tập dữ liệu
hiện tại là kết quả của việc tính Information gain của từng thuộc tính. Chi
phí cho quá trình này bao gồm thời gian tính toán tần xuất phân phối theo
các giá trị phân lớp của từng thuộc tính (tfreq(i)) và thời gian để tính
Information gain từ các thông tin phân phối đó (tinfo(i)).
Có thể biểu diễn sự phụ thuộc của các khoản chi phí trên vào các tham số hiệu năng đã
mô tả ở trên như sau:
tfreq = k1 *AiNi
tinfo = k2 * CAiV
tdiv = k3 * Ai
tsingle = k4*Ni
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 48-
Với kj là hằng số có giá trị tùy theo từng ứng dụng cụ thể. Số lượng bản ghi (Ni) và số
lượng thuộc tính (Ai) tương ứng với từng node phụ thuộc vào độ sâu của node đó và
bản thân tập dữ liệu.
Việc xác định chính xác chi phí cho quá trình xây dựng cây quyết định (T) là rất khó
và cần phải biết chính xác hình dáng của cây quyết định, điều này không thể xác định
trong thời gian chạy. Chính vì vậy mà T được đơn giản hóa bằng cách dùng giá trị
trung bình đi kèm với những giả sử về hình dáng của cây và giải các phương trình lặp
cho từng thành phân riêng lẻ của mô hình [6].
Sau đây là các kết quả thực nghiệm đánh giá ảnh hưởng của các tham số hiệu
năng như kích thước tập dữ liệu đào tạo, số lượng thuộc tính, thuộc tính liên tục, và số
giá trị phân lớp tới mô hình phân lớp C4.5:
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 49-
3.3.2.1. Thời gian thực thi phụ thuộc vào kích thước tập dữ liệu đào tạo
Các thử nghiệm đã được tiến hành trên nhiều tập dữ liệu với kích thước, số lượng
thuộc tính và thuộc tính phân lớp khác nhau. Sau đây là các bảng kết quả và biểu đồ
thể hiện sự phụ thuộc đang xét.
Thử nghiệm với tập dữ liệu 2 thuộc tính
Bảng 2 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo 2 thuộc tính
Kích thước
Thời gian tập dữ liệu
xây dựng (giây)
29000 60000 66000 131000 262000
Decision Tree 0.15 0.46 0.47 1.17 2.2
Production Rules 3.21 6.82 8.85 20.51 37.94
0
5
10
15
20
25
30
35
40
29000 60000 66000 131000 262000 (cases)
(s
)
Decision
Tree
Productio
n Rules
Trend line
of
Productio
n rules
Biểu đồ 2 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo 2 thuộc tính
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 50-
Thử nghiệm với tập dữ liệu 7 thuộc tính
Bảng 3 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo 7 thuộc tính
Kích thước
Thời gian tập dữ liệu
xây dựng (giây)
1000 10000 15000 20000 25000 30000 36000
Decision Tree 0.03 0.46 1.90 2.79 5.70 8.31 13.34
Production Rules 0.13 107.1 276.2 709.9 1211.0 2504.8 5999.5
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
1000 10000 15000 20000 25000 30000 36000
Decision
Tree
Productio
n Rules
Trend line
of
Productio
n rules
Biểu đồ 3 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo 7 thuộc tính
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 51-
Thử nghiệm với tập dữ liệu 18 thuộc tính
Bảng 4 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo18 thuộc tính
Kích thước
Thời gian tập dữ liệu
xây dựng (giây)
4000 6000 8500 10000 12000 15000 17500 20000 25000
Decision Tree 0.45 0.64 1.32 1.77 2.37 1.8 2.68 2.98 5.24
Production Rules 43.6 90.77 304.0
7
531.3
4
838.8
8
968.2
4
1584.
63
2927.
56
4617.
23
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
4000 6000 8500 10000 12000 15000 17500 20000 25000
(case)
(s
)
Decision
Tree
Productio
n Rules
Trend Line
of
Productio
n Rules
Biểu đồ 4 - Thời gian xây dựng cây quyết định và tập luật sản xuất phụ thuộc vào kích
thước tập dữ liệu đào tạo18 thuộc tính
Các đánh giá sự phụ thuộc của thời gian thực thi vào kích thước tập dữ liệu
đào tạo đã được tiến hành trên các tập dữ liệu với số lượng thuộc tính khác nhau. Có
thể rút ra các kết luận sau:
• Kích thước tập dữ liệu càng lớn thì thời gian sinh cây quyết định cũng như thời
gian sinh tập luật sản xuất càng lớn. Căn cứ vào các đường trendline của đường
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 52-
biểu diễn thời gian sinh tập luật sản xuất được vẽ thêm trên các biểu đồ, chúng
tôi dự đoán sự phụ thuộc trên được diễn đạt bằng hàm đa thức.
• Các biểu đồ trên cho thấy quá trình sinh luật sản xuất sau từ cây quyết định đã
tạo ra tốn tài nguyên tính toán gấp nhiều lần so với quá trình sinh cây quyết
định. Thực nghiệm cho thấy với những tập dữ liệu cỡ trăm nghìn bản ghi, thời
gian sinh luật sản xuất là khá lâu ( thông thường > 5 giờ). Đó cũng là một trong
những lý do khiến C4.5 không thể áp dụng với những tập dữ liệu lớn. Tập dữ
liệu đào tạo có càng nhiều thuộc tính thì sự chênh lệch về thời gian thực thi giữa
2 quá trình trên càng lớn.
3.3.2.2. Hiệu năng của C4.5 phụ thuộc vào số lượng thuộc tính
Để đánh giá sự phụ thuộc trên, các thử nghiệm đã tiến hành với 3 tập dữ liệu
có 2, 4, và 8 thuộc tính rời rạc, với cùng thuộc tính phân lớp.
Bảng 5 - Thời gian sinh cây quyết định phụ thuộc vào số lượng thuộc tính
3000 6000 16000 23000 32000 40500 55500 65500 96600 131000
2 attributes 0.01 0.02 0.05 0.1 0.18 0.25 0.39 0.47 0.89 1.17
4 attributes 0.12 0.18 0.82 2.18 3.32 5.58 11.83 16.79 33.49 71.52
8 attributes 0.14 0.3 3.56 9.99 23.40 33.36 47.62 80 106.61 185
0
20
40
60
80
100
120
140
160
180
200
30
00
60
00
16
00
0
23
00
0
32
00
0
40
50
0
55
50
0
65
50
0
96
60
0
13
10
00 (cases)
(s
)
2
attributes
4
attributes
8
attributes
Biểu đồ 5 - Sự phụ thuộc thời gian sinh cây quyết định vào số lượng thuộc tính
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 53-
Thời gian C4.5 xây dựng cây quyết định phụ thuộc vào số lượng thuộc tính
qua các khoảng thời gian tfreq, tinfo, tdiv. Số thuộc tính càng nhiều thời gian tính toán để
lựa chọn thuộc tính tốt nhất test tại mỗi node càng lớn, vì vậy thời gian sinh cây quyết
định càng tăng. Do vậy C4.5 bị hạn chế về số lượng thuộc tính trong tập dữ liệu đào
tạo [2]. Đây là một điểm khác biệt so với SPRINT
3.3.2.3. Hiệu năng của C4.5 khi thao tác với thuộc tính liên tục
Bảng 6 - Thời gian xây dựng cây quyết định với thuộc tính rời rạc và thuộc tính liên
tục
3000 6000 16000 22000 31000 40000 55000 65000 96000 131000
3 thuộc tính rời rạc+
1 thuộc tính liên tục
0.12 0.18 0.92 2.18 3.32 5.74 11.83 16.79 33.47 61.52
4 thuộc tính liên tục 0.24 0.66 3.02 5.01 11.56 16.99 30.37 38.16 70.38 125.21
0
20
40
60
80
100
120
140
30
00
60
00
16
00
0
22
00
0
31
00
0
40
00
0
55
00
0
65
00
0
96
00
0
13
10
00
(cases)
(s
)
3 categorical
attributes + 1
continuous
attribute
4 continuous
attributes
Biểu đồ 6 - So sánh thời gian xây dựng cây quyết định từ tập thuộc tính liên tục và từ
tập thuộc tính rời rạc
Như đã phân tích trong thuật toán C4.5 cũng như trong thuật toán phân lớp dữ
liệu dựa trên cây quyết định nói chung, việc thao tác với thuộc tính liên tục chiếm
nhiều tài nguyên tính toán hơn với thuộc tính rời rạc. Do vậy tập dữ liệu có nhiều
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 54-
thuộc tính liên tục ảnh hưởng đáng kể đến thời gian sinh cây quyết định so với tập dữ
liệu có nhiều thuộc tính rời rạc.
3.3.2.4. Hiệu năng của C4.5 khi thao tác với nhiều giá trị phân lớp
Bảng 7 - Thời gian sinh cây quyết định phụ thuộc vào số giá trị phân lớp
3000 6000 16000 23000 31000 40000 55000 65500 96600 131000
4 classes 0.04 0.07 0.22 0.35 0.61 0.97 1.8 2.36 3.68 4.72
28 classes 0.12 0.18 0.82 2.18 3.32 5.74 11.83 16.79 33.49 61.51
0
10
20
30
40
50
60
70
30
00
60
00
16
00
0
23
00
0
31
00
0
40
00
0
55
00
0
65
50
0
96
60
0
13
10
00
(cases)
(s
)
4
classes
28
classes
Biểu đồ 7 - Thời gian sinh cây quyết định phụ thuộc vào số giá trị phân lớp
Càng nhiều giá trị phân lớp thì thời gian tính Information gain cho từng thuộc
tính (tinfo) càng nhiều. Do vậy thời gian sinh cây quyết định càng lâu.
3.4. Một số đề xuất cải tiến mô hình phân lớp C4.5
Từ quá trình nghiên cứu mô hình phân lớp C4.5 cũng như những so sánh với SPRINT
để thấy được ưu nhược điểm của thuật toán. Và từ quá trình thực nghiệm chúng tôi
đưa ra một số đề xuất cải tiến thuật toán C4.5
1. Sinh luật sản xuất là một tính năng mới của C4.5 so với các thuật toán khác.
Hiện nay với cơ sở dữ liệu lớn, tập luật sinh ra là rất dài, ví dụ với tập training
cỡ 30000 cases với 8 thuộc tính, tập luật có thể lên tới 3000 luật. Do đó việc
xem và trích rút thông tin có ích trên tập luật là khó khăn. Trên thực tế đó,
chúng tôi đề xuất tích hợp thêm vào C4.5 module trích chọn tập những luật “tốt
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 55-
nhất” có là những luật có độ chính xác chấp nhận được (mức độ chính xác có
thể do người dùng tùy chọn) và có độ phổ biến cao (là những luật mà áp dụng
được trên nhiều case trong tập dữ liệu thử nghiệm).
2. Sinh luật sản xuất là một tính năng mới, đem lại nhiều lợi ích của C4.5 so với
các thuật toán phân lớp dữ liệu khác. Nhưng quá trình sinh luật sản xuất tốn rất
nhiều tài nguyên tính toán so với quá trình sinh cây quyết định. Do vậy cần
song song hóa giai đoạn sinh luật để cải tiến hiệu năng của C4.5
3. C4.5 bị hạn chế về số lượng thuộc tính trong tập dữ liệu đào tạo, và độ chính
xác của các cây quyết định hay các luật sinh ra nói chung là chưa cao. Cần tập
trung sử dụng các phương pháp cải tiến độ chính xác của mô hình phân lớp như
bagging, boosting.
4. C4.5 thao tác với thuộc tính liên tục lâu hơn thuộc tính rời rạc. Điều này có thể
giải thích bởi: với thuộc tính liên tục có n giá trị đã sẵp xếp, thuật toán cần độ
đo phân chia tại (n-1) ngưỡng nằm giữa 2 giá trị liền nhau trong dãy sắp xếp.
Từ đó mới có thể tìm ra được một ngưỡng tốt nhất để test trên thuộc tính đó.
Trong tập dữ liệu đào tạo, thuộc tính liên tục càng nhiều giá trị, thì tài nguyên
tính toán bỏ ra để thao tác với nó càng nhiều. Hiện nay đã có một số đề xuất cải
tiến cách xử lý với thuộc tính liên tục [3][8], đó là một trong những hướng
nghiên cứu đang nghiên cứu của đề tài.
5. Chúng tôi đề xuất cơ chế sắp xếp trước có sử dụng lược đồ phân phối lớp một
lần như của SPRINT áp dụng vào C4.5. Từ đó tiến tới xây dựng cơ chế lưu trữ
dữ liệu thường trú trên đĩa. Nếu thực hiện được sẽ làm tăng hiệu năng cũng như
khả năng mở rộng của mô hình phân lớp C4.5.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 56-
KẾT LUẬN
Trong khuôn khổ khóa luận tốt nghiệp này, chúng tôi đã nghiên cứu, phân
tích, đánh giá các thuật toán phân lớp dữ liệu dựa trên cây quyết định. Tiêu biểu là 2
thuật toán C4.5 và SPRINT. C4.5 và SPRINT có cách thức lưu trữ dữ liệu và xây dựng
cây quyết định dựa trên những độ đo khác nhau. Do đó hai thuật toán này có phạm vi
ứng dụng vào các cơ sở dữ liệu có kích thước khác nhau.
C4.5 là thuật toán xử lý đầy đủ các vấn đề của quá trình phân lớp dữ liệu: lựa
chọn thuộc tính tốt nhất, lưu trữ phân chia dữ liệu, xử lý giá trị thiếu, tránh quá vừa,
cắt tỉa cây,…Với những lý do đó C4.5 đã trở thành thuật toán phổ biến nhất trong
những ứng dụng vừa và nhỏ. Quá trình triển khai, cài đặt thử nghiệm cùng với các
đánh giá hiệu năng mô hình phân lớp C4.5 đã được tiến hành. Và đã thu được nhiều
kết quả có ý nghĩa thực tiến, cũng như các kết quả gợi mở những hướng nghiên cứu
tiếp theo.
SPRINT là một thuật toán tối ưu cho những cơ sở dữ liệu cực lớn. Những ưu
điểm của SPRINT là tư tưởng của thuật toán khá đơn giản, có khả năng mở rộng cao,
lại rất dễ dàng song song hóa. Do vậy cài đặt và triển khai SPRINT có ý nghĩa khoa
học và có khả năng triển khai ứng dụng và đem lại nhiều lợi ích thực tế.
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 57-
TÀI LIỆU THAM KHẢO
[1] Anurag Srivastava, Eui- Hong Han, Vipin Kumar, Vieet Singh. Parallel
Formulations of Decision-Tree Classification Algorithm. Kluwer Academic Publisher,
1999.
[2] Anurag Srivastava, Vineet Singh, Eui- Hong (Sam) Han, Vipin Kumar. An
Efficient, Scalable, Parallel Classifier for Data mining.
[3] Girija J. Narlikar. A Parallel, Multithreaded Decision Tree Builder. CMU-CS-98-
184. reports-archive.adm.cs.cmu.edu/ anon/1998/CMU-CS-98-184.pdf
[4] Henrique Andrade, Tahsin Kurc, Alan Sussman, Joel Saltz. Decision Tree
Construction for Data Ming on Cluster of Shared-Memory Multiprocessors.
[5] Ho Tu Bao, Chapter 3:Data mining with Decision Tree –
[6] John Darlington, Moustafa M. Ghanem, Yike Guo, Hing Wing To. Performance
Model for Co-odinating Parallel Data Classification
[7] John Shafer, Rakesh Agrawal, Manish Mehta. SPRINT- A Scalable Paralllel
Classifier for Data mining. In Predeeings of the 22nd International Conference on Very
Large Database, India, 1996.
[8] J. R. Quinlan. Improve Used of Continuous Attribute in C4.5. In Joural of Artficial
Intelligence Research 4 (1996) 77-90
[9] Manish Mehta, Rakesh Agrawal, Jorma Rissanen. SLIQ: A Fast Scalable
Classifier for Data mining. IBM Amaden Research Center, 1996.
[10] Mohammed J. Zaki, Ching-Tien Ho, Rekesh Agrawal. Parallel Classification for
Data Mining on Shared-Memory Multiprocessors. IVM Almaden Research Center,
San Jose, CA 95120.
[11] Rajeev Rastogi, Kyuseok Shim (Bell Laboratories). PUBLIC: A Decision Tree
Classifier that Integrates Building and Pruning, 1998.
www.vldb.org/conf/1998/p404.pdf
[12] Richard Kufrin. Generating C4.5 Production Rules in Parallel. In Proceeding of
Fourteenth National Conference on Artificial Intelligence, Providence RI, 1997
Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định
Khóa luận tốt nghiệp – Nguyễn Thị Thùy Linh – K46CA
- 58-
www.almaden.ibm.com/software/quest/Publications/papers/vldb96_sprint.pdf
[13] Ron Kohavi, J. Ross Quinlan. Decision Tree Discovery, 1999
[14] The Morgan Kaufmann Series in Data Management Systems, Jim Gray.
Datamining- Concepts and Techniques, Chapter 7-Classification and Prediction.
Series Editor Morgan Kaufmann Publishers, August 2000
Các file đính kèm theo tài liệu này:
- K46_Nguyen_Thi_Thuy_Linh_Thesis.pdf