Professional Documents
Culture Documents
----
HÀ NỘI 04-05
KHOA CÔNG NGHỆ THÔNG TIN
----
Tên đề tài: Khai phá dữ liệu với cây quyết định và thuật toán ID3
Lớp:KHMT1-K9
Nhóm thực hiện
Trần Thái Thanh – MSV:0941060051
Phạm Văn Minh –MSV:0941060064
Nguyễn Văn Hải -MSV: 0941060079
LỜI CẢM ƠN
Để hoàn thành bài báo cáo thực tập này, trước hết, em xin cảm ơn các thầy giáo, cô
giáo Khoa Công nghệ thông tin Trường Đại học Công Nghiệp Hà Nội, những người đã
dạy dỗ, trang bị cho em những kiến thức chuyên môn trong bốn năm học,và giúp chúng
em hiểu rõ hơn các lĩnh vực đã nghiên cứu để hoàn thành đề tài được giao.
Em xin bày tỏ lòng biết ơn xâu sắc nhất tới thầy giáo Tiến sĩ Đỗ Văn Tuấn, người
đã hướng dẫn, chỉ bảo tận tình để em hoàn thành quá trình thực tập.
Xin cảm ơn bạn bè và gia đình đã động viên cổ vũ, đóng góp ý kiến, trao đổi, động
viên trong suốt quá trình học cũng như làm tốt nghiệp, giúp em hoàn thành đề tài đúng
thời hạn.
Phát hiện tri thức (Knowledge Discovery) trong các cơ sở dữ liệu là một qui trình
nhận biết các mẫu hoặc các mô hình trong dữ liệu với các tính năng: hợp thức, mới, khả
ích, và có thể hiểu được.
Còn khai thác dữ liệu (data mining) là một ngữ tương đối mới, nó ra đời vào khoảng
những năm cuối của của thập kỷ 1980. Có rất nhiều định nghĩa khác nhau về khai phá dữ
liệu. Giáo sư Tom Mitchell đã đưa ra định nghĩa của khai phá dữ liệu như sau: “Khai phá
dữ liệu là việc sử dụng dữ liệu lịch sử để khám phá những qui tắc và cải thiện những
quyết định trong tương lai.”. Với một cách tiếp cận ứng dụng hơn, tiến sĩ Fayyad đã phát
biểu: ”Khai phá dữ liệu thường được xem là việc khám phá tri thức trong các cơ sở dữ
liệu, là một quá trình trích xuất những thông tin ẩn, trước đây chưa biết và có khả năng
hữu ích, dưới dạng các quy luật, ràng buộc, qui tắc trong cơ sở dữ liệu.”. Còn các nhà
thống kê thì xem " khai phá dữ liệu như là một quá trình phân tích được thiết kế thăm dò
một lượng cực lớn các dữ liệu nhằm phát hiện ra các mẫu thích hợp và hoặc các mối quan
hệ mang tính hệ thống giữa các biến và sau đó sẽ hợp thức hoá các kết quả tìm được bằng
cách áp dụng các mẫu đã phát hiện được cho tập con mới của dữ liệu".
Nói tóm lại: khai phá dữ liệu là một bước trong quy trình phát hiện tri thức gồm có
các thụât toán khai thác dữ liệu chuyên dùng dưới một số quy định về hiệu quả tính toán
chấp nhận được để tìm ra các mẫu hoặc các mô hình trong dữ liệu.
Page | 1
1.2 Quá trình phát triển tri thức từ cơ sở dữ liệu.
Quá trình phát hiện tri thức có thể chia thành các bước như sau:
Page | 2
1.2.1 Hình thành và định nghĩa bài toán.
Đây là bước tìm hiểu lĩnh vực ứng dụng và hình thành bài toán, bước này sẽ quyết
định cho việc rút ra những tri thức hữu ích, đồng thời lựa chọn các phương pháp khai phá
dữ liệu thích hợp với mục đích của ứng dụng và bản chất của dữ liệu.
Bước này thường chiếm nhiều thời gian nhất trong quá trình khám phá tri thức.
2. Khử sự trùng lắp: các đối tượng dữ liệu trùng lắp sẽ bị loại bỏ đi. Kỹ thuật này
không được sử dụng cho các tác vụ có quan tâm đến phân bố dữ liệu.
3. Giảm nhiễu: nhiễu và các đối tượng tách rời khỏi phân bố chung sẽ bị loại đi
khỏi dữ liệu.
4. Chuẩn hoá: miền giá trị của dữ liệu sẽ được chuẩn hoá.
5. Rời rạc hoá: các dạng dữ liệu số sẽ được biến đổi ra các giá trị rời rạc.
6. Rút trích và xây dựng đặc trưng mới từ các thuộc tính đã có.
Giảm chiều: các thuộc tính chứa ít thông tin sẽ được loại bỏ bớt.
Page | 3
Bước thứ nhất là hiểu các tri thức đã tìm được, đặc biệt là làm sáng tỏ các mô tả và
dự đoán.Trong bước này, kết quả tìm được sẽ được biến đổi sang dạng phù hợp với lĩnh
vực ứng dụng và dễ hiểu hơn cho người dùng.
Khai phá dữ liệu được định nghĩa như một quá trình phát hiện mẫu trong dữ liệu, quá
trình này có thể là tự động hay bán tự động, song phần nhiều là bán tự động. Các mẫu
được phát hiện thường hữu ích theo định nghĩa:các mẫu mang lại cho người sử dụng một
lợi thế nào đó, thường là lợi ích về kinh tế.
Khai phá dữ liệu giống n//hư quá trình tìm ra và mô tả mẫu dữ liệu. Dữ liệu như là
một tập hợp các vật hay sự kiện, còn đầu ra của quá trình khai phá dữ liệu thường là
những dự báo của các vật hay các sự kiện mới.
Khai phá dữ liệu được áp dụng trong các cơ sở dữ liệu quan hệ, giao dịch, cơ sở dữ
liệu không gian, cũng như các kho dữ liệu phi cấu trúc, mà điển hình là World Wide
Web.
Khám phá tri thức là quá trình nhận biết các mẫu hoặc các mô hình trong dữ liệu với
các tính chất: Đúng đắn, mới, khả ích và có thể hiểu được. Khai phá dữ liệu là một bước
trong quá trình khám phá tri thức bao gồm các thuật toán khai phá dữ liệu chuyên dùng
Page | 4
dưới một số quy định về hiệu quả tính toán chấp nhận được để tìm ra các mẫu và các mô
hình trong dữ liệu.
Như vậy, mục đích của khám phá tri thức và khai phá dữ liệu là tìm ra các mẫu hoặc
mô hình đang tồn tại trong các cơ sở dữ liệu nhưng vẫn còn bị khuất bởi số lượng dữ liệu
khổng lồ. Nhiệm vụ của khai phá dữ liệu.
Page | 5
Giai đoạn thứ ba này là giai đoạn hay bị sao lãng, nhưng thực tế nó là một bước rất
quan trọng trong quá trình khai phá dữ liệu. Một số lỗi thường mắc phải trong khi gom dữ
liệu là dữ liệu không đầy đủ hoặc không thống nhất, thiếu chặt chẽ. Vì vậy dữ liệu thường
chứa các giá trị vô nghĩa và không có khả năng kết nối dữ liệu. Ví dụ Sinh viên có
tuổi=200. Giai đoạn thứ ba này nhằm xử lý các dữ liệu như trên(dữ liệu vô nghĩa, dữ liệu
không có khả năng kết nối). Những dữ liệu dạng này thường được xem là thông tin dư
thừa, không có giá trị. Bởi vậy đây làmột quá trình rất quan trọng. Nếu dữ liệu không
được làm sạch- tiền xử lý - chuẩn bị trước thì sẽ gây nên những kết quả sai lệch nghiêm
trọng về sau.
Knowledge base
Page | 6
- Thành phần chứa tri thức miền, được dùng để hướng dẫn quá trình
tìm kiếm, đánh giá các mẫu kết quả được tìm thấy.
- Tri thức miền có thể là các phân cấp khái niệm, niềm tin của người
sử dụng, các ràng buộc hay các ngưỡng giá trị, siêu dữ liệu, …
Data mining engine
- Thành phần chứa các khối chức năng thực hiện các tác vụ khai phá
dữ liệu.
User interface
- Thành phần hỗ trợ sự tương tác giữa người sử dụng và hệ thống khai
phá dữ liệu.
+ Người sử dụng có thể chỉ định câu truy vấn hay tác vụ khai phá dữ liệu.
+ Người sử dụng có thể được cung cấp thông tin hỗ trợ việc tìm kiếm, thực hiện
khai phá dữ liệu sâu hơn thông qua các kết quả khai phá trung gian.
+ Người sử dụng cũng có thể xem các lược đồ cơ sở dữ liệu/kho dữ liệu, các cấu
trúc dữ liệu; đánh giá các mẫu khai phá được; trực quan hóa các mẫu này ở các dạng
khác nhau.
- Kỹ thuật khai phá dữ liệu mô tả: có nhiệm vụ mô tả các tính chất hoặc các
đặc tính chung của dữ liệu trong CSDL hiện có. Một số kỹ thuật khai phá
trong nhóm này là: phân cụm dữ liệu (Clustering), tổng hợp
(Summarisation), trực quan hoá (Visualization), phân tích sự phát triển và
độ lệch (Evolution and deviation analyst),….
- Kỹ thuật khai phá dữ liệu dự đoán: có nhiệm vụ đưa ra các dự đoán dựa
vào các suy diễn trên cơ sở dữ liệu hiện thời. Một số kỹ thuật khai phá
trong nhóm này là: phân lớp (Classification), hồi quy (Regression), cây
quyết định (Decision tree), thống kê (statictics), mạng nơron (neural
network), luật kết hợp,….
Page | 7
1.4.1.Phân lớp dữ liệu (tranformation)
Mục tiêu của phân lớp dữ liệu đó là dự đoán nhãn lớp cho các mẫu dữ liệu. Quá
trình gồm hai bước: xây dựng mô hình, sử dụng mô hình để phân lớp dữ liệu( mỗi mẫu
1 lớp). Mô hình được sử dụng để dự đoán nhãn lớp khi mà độ chính xác của mô hình
chấp nhận được.
1.4.5Hồi quy
Phương pháp hồi quy tương tự như là phân lớp dữ liệu. Nhưng khác ở chỗ nó dùng
để dự đoán các giá trị liên tục còn phân lớp dữ liệu dùng để dự đoán các giá trị rời rạc.
Page | 8
1.4.6Mạng Nơron
Đây là một trong những kỹ thuật khai phá dữ liệu được ứng dụng phổ biến hiện
nay. Kỹ thuật này phát triển dựa trên một nền tảng toán học vững vàng, khả năng huấn
luyện trong kỹ thuật này dựa trên mô hình thần kinh trung ương của con người.
Kết quả mà mạng nơron học được có khả năng tạo ra các mô hình dự báo, dự đoán
với độ chính xác và độ tin cậy cao. Nó có khả năng phát hiện ra được các xu hướng
phức tạp mà kỹ thuật thông thường khác khó có thể phát hiện ra được. Tuy nhiên
phương pháp mạng nơ ron rất phức tạp và quá trình tiến hành nó gặp rất nhiều khó
khăn: đòi hỏi mất nhiều thời gian, nhiều dữ liệu, nhiều lần kiểm tra thử nghiệm.
Việc xây dựng các thuật toán di truyền mô phỏng sinh học nhằm tìm ra các giải
pháp tốt nhất bao gồm các bước sau:
1. Tạo ra cơ chế mã di truyền dưới dạng các xâu của một bảng mã
ký tự hạn chế.
2. Thiết lập môi trường nhân tạo trên máy tính có các giải pháp có
thể tham gia “đấu tranh sinh tồn” với nhau để xác định độ đo thành
công hay thất bại, hay còn gọi là “hàm thích nghi”.
3. Phát triển các “phép lai ghép” để các giải pháp kết hợp với nhau.
Khiđó các xâu mã di truyền của giải pháp cha và mẹ bị cắt đi và
xếp lại, trong quá trình sinh sản như vậy các kiểu đột biến có thể
được áp dụng.
Cung cấp một quần thể các giải pháp ban đầu tương đối đa dạng và để máy tính thực
hiện “cuộc chơi tiến hóa” bằng cách loại bỏ các giải pháp từ mỗi cá thể và thay thế
chúng bằng các con cháu hoặc các đột biến của các giải pháp tốt. Thuật toán sẽ kết thúc
khi một họ các giải pháp thành công được sinh ra.
Page | 9
CHƯƠNG 2: CÂY QUYÊT ĐỊNH VÀ THUẬT TOÁN
ID3
Cây quyết định (Decision Tree) là một cây phân cấp có cấu trúc được dùng để
phân lớp các đối tượng dựa vào dãy các luật (series of rules). Các thuộc tính của đối
tượng (ngoại trừ thuộc tính phân lớp – Category attribute) có thể thuộc các kiểu dữ liệu
khác nhau (Binary, Nominal, ordinal, quantitative values) trong khi đó thuộc tính phân
lớp phải có kiểu dữ liệu là Binary hoặc Ordinal.
Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes)
của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các đối tượng chưa biết
(unseen data)
Bài viết này chỉ trình bày ứng dụng cây quyết định vào giải quyết bài toán phân
lớp. Nếu bạn quan tâm đến lý thuyết về xây dựng cây quyết định như thế nào (các thuật
toán xây dựng cây quyết định), các bạn có thể tìm đọc thêm các tài liệu khác hoặc đón
đọc bài viết tiếp theo
Để giúp các bạn ứng dụng được cây quyết định trong bài toán phân lớp chúng
ta cùng bắt đầu với ví dụ dưới đây:
Ta có dữ liệu (training data) về 10 đối tượng (người). Mỗi đối tượng được mô tả
bởi 4 thuộc tính là Gender, Car Ownership, Travel Cost/Km, Income Level và 1
thuộc tính phân loại (category attribute) là Transportation mode. Trong đó thuộc tính
Gender có kiểu binary, thuộc tính Car Ownership có kiểu Quantitative integer (0,1),
Travel Cost/Km và Income Level có kiểu dữ liệu Ordinal.
Tranining data cho biết sự lựa chọn về loại phương tiện vận chuyển (car, bus,
train) của khách dựa vào 4 thuộc tính đã cho (xem bảng).
Page | 10
Attributes Classes
Travel
Car Income Transportation
Gender Cost
ownership Level mode
($)/km
Male 0 Cheap Low Bus
Male 1 Cheap Medium Bus
Female 1 Cheap Medium Train
Female 0 Cheap Low Bus
Male 1 Cheap Medium Bus
Male 0 Standard Medium Train
Female 1 Standard Medium Train
Female 1 Expensive High Car
Male 2 Expensive Medium Car
Female 2 Expensive High Car
Dựa vào Training Data ở trên, chúng ta có thể tạo ra cây quyết định như sau
Chú ý rằng trong cây quyết định trên, thuộc tính “Income Level” không xuất
hiện trong cây bởi vì dựa vào training data đã cho, thuộc tính “Travel Cost/Km” sẽ
sinh ra cây quyết định tốt dùng để phân loại tốt hơn “Income Level”
Làm sao để sử dụng cây quyết định trong dự đoán lớp của các dữ liệu chưa
biết
Mục đích chính của cây quyết định là dùng để dự đoán lớp (xác định lớp) của
các đối tượng chưa biết (unseen data). Giả sử rằng ta có dữ liệu về 3 người với các giá
Page | 11
trị dữ liệu đã biết về các thuộc tính Gender, Car Ownership, Travel Cost/Km, Income
Level. Tuy nhiên ta chưa biết họ sẽ chọn phương tiện vận chuyển nào (Car, Bus,
Train). Nhiệm vụ của chúng ta là sử dụng cây quyết định đã tạo ra để dự đoán (predict)
Alex, Buddy và Cherry sẽ chọn phương tiện vận chuyển nào dựa vào 4 thuộc tính của
họ. Dữ liệu dưới đây còn được gọi là Testing Data.
Travel
Person Car Income Transportation
Gender Cost
name ownership Level Mode
($)/km
Alex Male 1 Standard High ?
Buddy Male 0 Cheap Medium ?
Cherry Female 1 Cheap High ?
Chúng ta bắt đầu từ node gốc của cây (root node) từ thuộc tính Travel Cost/Km,
ta thấy rằng nếu Travel Cost/Km là Expensive thì người đó sẽ chọn phương tiện
là Car. Nếu Travel Cost/Km là standard thì họ sẽ chọn phương tiện vận chuyển
là Train. Nếu Travel Cost/Km là Cheap thì cây quyết định cần tới giá trị của
trường Gender của người đó, nếu Gender là Male thì chọn Bus, nếu giới tính
là Female thì cây quyết định cần kiểm tra xem người đó có sử hữu bao nhiêu xe hơi
(Car Ownership). Nếu số xe hơi sở hữu là 0 thì người đó sẽ chọn xe Bus, nếu số xe hơi
sở hữu là 1 thì người đó sẽ chọn Train.
Theo cây quyết định trên, các luật (Series of Rules) được sinh ra từ cây quyết định
dùng để dự đoán như sau:
Rule 3 : If Travel cost/km is cheap and gender is male then mode = bus
Rule 4 : If Travel cost/km is cheap and gender is female and she owns no car then
mode = bus
Rule 5 : If Travel cost/km is cheap and gender is female and she owns 1 car then mode
= train
Dựa vào các luật này, việc dự đoán lớp cho các dữ liệu chưa biết (unseen data
hay Testing data) rất đơn giản. Trong ví dụ này, Alex có giá trị của thuộc tính Travel
Cost/Km là Standard nên sẽ chọn phương tiện là Train (Rule 2) mà không cần quan
tâm đến các thuộc tính khác của Alex. Buddy có giá trị của thuộc tính Travel
Cost/Km là Cheap và Gender của anh ta là Male nên anh ta sẽ chọn Bus (Rule
Page | 12
3). Cheery cũng có giá trị thuộc tính Travel Cost/Km là Cheap
nhưng Gender là Female và sở hữu 1 xe hơi cho nên theo cây quyết định trên (Rule
5) cô ta sẽ chọn phương tiện là Train.
Kết quả phân lớp bằng cây quyết định như sau:
Cây quyết định là một phương pháp phân lớp rất hiệu quả và dễ hiểu. Tuy nhiên
có một số chú ý khi sử dụng cây quyết định trong xây dựng các mô hình phân lớp như
sau:
Hiệu của phân lớp của cây quyết định (Series of Rules) phụ thuộc rất lớn vào
training data. Chẳn hạn cây quyết định được tạo ra bởi chỉ giới hạn 10 samples training
data trong ví dụ trên thì hiệu quả ứng dụng cây quyết định để dự đoán các trường hợp
khác là không cao (thường training data phải đủ lớn và tin cậy) và vì vậy ta không thể
nói rằng tập các luật (Series of Rules) được sinh ra bở cây quyết định trên là tập luật tốt
nhất.
Có rất nhiều thuật toán phân lớp như ID3, J48, C4.5, CART (Classification and
Regression Tree),… Việc chọn thuật toán nào để có hiệu quả phân lớp cao tuy thuộc
vào rất nhiều yếu tố, trong đó cấu trúc dữ liệu ảnh hưởng rất lớn đến kết quả của các
thuật toán. Chẳn hạn như thuật toán ID3 và CART cho hiệu quả phân lớp rất cao đối
với các trường dữ liệu số (quantitative value) trong khi đó các thuật toán như J48, C4.5
có hiệu quả hơn đối với các dữ liệu Qualititive value (ordinal, Binary, nominal).
- Thuật toán ID3 được phát biểu bởi Quinlan (trường đại học Syney,
Australia) và được công bố vào cuối thập niên 70 của thế kỷ 20. Sau đó,
thuật toán ID3 được giới thiệu và trình bày trong mục Induction on decision
trees, machine learning năm 1986. ID3 được xem như là một cải tiến của
CLS với khả năng lựa chọn thuộc tính tốt nhất để tiếp tục triển khai cây tại
mỗi bước. ID3 xây dựng cây quyết định từ trên- xuống (top -down) [5].
Page | 13
2.2.1 Entropy đo tính thuần nhất của tập dữ liệu
- Được dùng để đo tính thuần nhất của một tập dữ liệu. Entropy của một tập S
được tính theo công thức:
Trong trường hợp các mẫu dữ liệu có hai thuộc tính phân lớp
“yes” (+) và no (-). Kí hiệu P+ là để chỉ tỷ lẹ các mẫu có giá trị
của thuộc tính quyết định là “yes”, và P- là tỷ lệ các mẫu có giá
trị của thuộc tính quyết định là “no” trong tập S.
Trường hợp tổng quát, dối với tập con S có n phân lớp thì ta
có công thức sau:
n
Entropy ( S ) ( Pi log 2 ( Pi ))
i 1
TH1: Nếu tất cả các mẫu thành viên trong tập S đều thuộc cùng
một lớp thì Entropy(S)=0.
TH2: Nếu trong tập S có số mẫu phân bố đều nhau vào các lớp
thì Entropy(S)=1.
- Độ lợi thông tin (tên Tiếng Anh: Information Gain – viết tắt: Gain) là đại
lượng dùng để đo tính hiệu quả cảu một thuộc tính được lựa chọn cho việc
Page | 14
phân lớp. Đại lượng này được thông qua hai giá trị là Information và
Entropy.
- Cho tập dữ liệu S gồm có n thuộc tính Ai (i=1, 2 … n)
Giá trị Information của thuốc tính Ai kí hiệu là Information(Ai) được xác
định bởi công thức:
n
Information( Ai ) log 2 ( Pi ) Entropy ( S )
i 1
Giá trị Gain của thuộc tính A trong tập S kí hiệu là Gain(S, A) và được tính
theo công thức sau:
Sv
Gain( S , A) Information( A) Entropy ( A) Entropy ( S )
vvalue ( A ) S
Entropy( Sv )
Trong đó:
S là tập hợp ban đầu với thuộc tính A. Các giá trị của v tương ứng là
các giá trị của thuộc tính A.
Sv bằng tập hợp con của tập S mà có thuộc tính A mang giá trị v.
|Sv| là số phần tử của tập Sv.
|S| là số phần từ của tập S.
Trong quá trính xây dựng cây quyết định theo thuật toán ID3 tại mỗi bước
triển khai cây, thuộc tính được chọn để triển khai là thuốc tính có giá trị Gain
lớn nhất
Page | 15
2.2.3 Ví dụ minh họa
Page | 16
Page | 17
Page | 18
Sau khi xây dựng cây, ta có thể rút ra các luật tương ứng bằng cách duyệt các đường đi
trên cây từ nút gốc đến nút lá, mỗi đường đi ứng với một luật:
IF Quốc tịch = Đức AND Gia cảnh = Độc thân THEN Nhóm = A;
Page | 19
IF Quốc tịch = Đức AND Gia cảnh = Có gia đình THEN Nhóm = B;
Người có vóc dáng nhỏ,mang quốc tịch Pháp, có gia đình thì thuộc nhóm A
Page | 20
CHƯƠNG 3 : GIỚI THIỆU VỀ CÔNG CỤ WEKA
Weka là công cụ phần mềm viết bằng Java, phục vụ lĩnh vực học máy và khai phá dữ
liệu.
Page | 21
.Weka – Các môi trường chính
+ Explorer (Chúng ta sử dụng chủ yếu cái này): Môi trường cho phép sử dụng tất cả
các khả năng của weka để khám phá dữ liệu.
+ Experiment: Môi trường cho phép tiến hành các thí nghiệm và thực hiện các kiểm tra
hệ thống (statistical tests) giữa các mô hình học máy.
+ KnowledgeFlow: Môi trường cho phép các tương tác kéo/thả để thiết kế các bước
(các thành phần) của một thí nghiệm.
+ Simple CLI: Giao diện đơn giản kiểu dòng lệnh (như MS-DOS)
+ Workbench: Môi trường kết hợp tất cả giao diện GUI thành một giao diện duy nhất.
Mô tả dữ liệu:
+ Bao gồm: 6 attribute
+ Số bản ghi: 151 bản ghi
Page | 23
Page | 24
Page | 25