Phân lớp dữ liệu data classification là việc phân loại các mẫu dữ liệu vào một trong các nhóm đã xác định trước sao cho đặc tính của mẫu dữ liệu gần với đặc tính của nhóm đó nhất.. Bước
Trang 1MỤC LỤC
Trang
LỜI NĨI ĐẦU 1
CHƯƠNG I PHƯƠNG PHÁP PHÂN LỚP BAYES 2
1 Phân lớp là gì? 2
2 Phương pháp phân lớp Bayes 3
2.1 Tổng quan 3
2.2 Định lý Bayes 4
2.3 Phân lớp Nạve Bayes (NBC) 6
2.4 Phương pháp sửa lỗi Laplace 7
2.5 Ưu khuyết điểm 9
2.5.1 Ưu điểm 9
2.5.2 Khuyết điểm 10
CHƯƠNG II CÀI ĐẶT THỬ NGHIỆM VÀ KẾT QUẢ 11
1 Cài đặt thử nghiệm 11
1.1 Các lớp cấu trúc cơ sở dữ liệu (gĩi dataset) 11
1.2 Các lớp mơ hình và thuật tốn phân lớp NaiveBayesian (gĩi model) 12
2 Kết quả thử nghiệm 16
CHƯƠNG III KẾT LUẬN 20
TÀI LIỆU THAM KHẢO 21
Trang 2LỜI NĨI ĐẦU
Cùng với sự phát triển nhanh chĩng, vượt bậc của ngành cơng nghiệp máy tính, nhu cầu của người dùng đối với máy tính ngày một cao hơn, khơng chỉ giải quyết những cơng việc lưu trữ, tính tốn bình thường, người dùng cịn mong đợi máy tính cĩ khả năng thơng minh hơn, cĩ thể giải quyết vấn đề như con người Theo đĩ, bất kỳ một lĩnh vực nào cũng ứng dụng cơng nghệ tri thức vào quá trình hoạt động, từ đĩ lượng dữ liệu khơng ngừng tăng lên một cách bùng nổ Mỗi cơng ty, doanh nghiệp phải lưu trữ hệ thống cơ sở dữ liệu đa dạng, khổng lồ Tuy nhiên, vấn đề bất cập hiện nay là chúng ta đang “ngập” trong biển dữ liệu nhưng lại “đĩi” tri thức
Chính vì vậy, vấn đề đặt ra là liệu chúng ta cĩ thể khai thác được gì từ những biển
dữ liệu tưởng chừng như vơ nghĩa đĩ? Do đĩ, khai mỏ dữ liệu - Data Mining ra đời như một hướng giải quyết hữu hiệu cho vấn đề trên, giúp khai thác, rút trích ra những thơng tin, tri thức hữu ích từ các cơ sở dữ liệu đĩ Trong lĩnh vực khai phá dữ liệu, phân lớp dữ liệu giúp phân loại các mẫu dữ liệu nhằm mơ tả các lớp quan trọng hay
dự đốn khuynh hướng dữ liệu trong tương lai Qua đĩ, các nhà lãnh đạo sẽ đánh giá các tri thức để xem xét xây dựng chiến lược hoạt động phù hợp trong tương lai
Chính vì lợi ích thực tiễn trên mà phân lớp được ứng dụng rộng rãi trong nhiều lĩnh vực, đặc biệt là thương mại Cĩ nhiều phương pháp phân lớp dữ liệu, trong đĩ Nạve Bayes là phương pháp được triển khai rộng rãi vì sự đơn giản, dễ triển khai và hiệu quả khá cao Tiểu luận này là kết quả lĩnh hội được sau khi học mơn Cơng nghệ tri thức và ứng dụng, đặc biệt là phần khai mỏ dữ liệu Tiểu luận chủ yếu trình bày các
vấn đề chính về thuật tốn phân lớp dữ liệu Nạve Bayes và tiến hành cài đặt thuật tốn này bằng ngơn ngữ Java với gĩi thư viện OpenCSV
Em xin chân thành cảm ơn GS TSKH Hồng Văn Kiếm, giảng viên mơn Cơng
nghệ Tri thức và Ứng dụng, đã truyền đạt cho chúng em những kiến thứ quý báu về mơn học, giúp chúng em cĩ cái nhìn xa hơn về một thời đại cơng nghệ và sự phục vụ của các hệ tri thức
Do kiến thức cịn hạn hẹp, nên tiểu luận khơng tránh khỏi những sai sĩt nhất định Kính mong Thầy gĩp ý giúp em hồn thiện tiểu luận cũng như cũng cố vốn kiến thức của bản thân Em xin chân thành cảm ơn!
Trang 3CHƯƠNG I PHƯƠNG PHÁP PHÂN LỚP BAYES
1 Phân lớp là gì?
Phân lớp dữ liệu (data classification) là việc phân loại các mẫu dữ liệu vào một trong các nhóm đã xác định trước sao cho đặc tính của mẫu dữ liệu gần với đặc tính của nhóm đó nhất
Phần lớp dữ liệu gồm hai bước: xây dựng mô hình và vận hành mô hình
Bước 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 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
Hình 1: Xây dựng mô hình
Bước 2: Vận hành mô hình nhằm mục đích xác định lớp của dữ liệu 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ểu kiểm tra được đem so sánh với kết quả phân lớp của mô hình
Độ chính xác (accuracy) của bộ phân lớp trên tập kiểm tra cho trước là phần trăm của các mẫu trong tập kiểm tra được bộ phân lớp xếp 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
sampl test of number total
sample test classified correctly
Accuracy
Trang 4Mục đích của Nạve Bayes: cho biết mẫu dữ liệu mới thuộc vào lớp nào với độ chính xác cao nhất cĩ thể
Dữ liệu đầu vào: tập dữ liệu huấn luyện, mẫu dữ liệu mới cần kiểm tra
Dữ liệu đầu ra: phân lớp của mẫu dữ liệu cần kiểm tra
Thơng thường, giải thuật Nạve Bayes giả định rằng tất cả các thuộc tính (biến) đều quan trọng như nhau và độc lập với nhau Tức là, nếu cĩ sự hiện diện hay vắng mặt của một thuộc tính sẽ khơng làm ảnh hưởng đến sự hiện diện hay vắng mặt của thuộc tính khác
Ví dụ như: một quả táo cĩ thể xem là một quả táo khi nĩ cĩ: màu là đỏ, hình dạng
là cầu, đường kính là khoảng 3 inch, … Nếu thiếu đi thuộc tính hình dạng là cầu thì hai thuộc tính cịn lại vẫn đĩng gĩp độc lập vào xác suất để xác định là quả táo
Mặc dù giải thuật Nạve Bayes khá đơn giản nhưng trong thực tế lại cho kết quả khá tốt Năm 2006, một thống kê so sánh tồn diện cho thấy phân lớp Nạve Bayes cho kết quả tốt hơn các giải thuật phân lớp khác, chẳng hạn như sự tăng của cây cối và rừng tự phát
Lợi thế của Nạve Bayes là cĩ thể ước tính các thơng số (trung bình và phương sai của các thuộc tính – biến ) cần thiết cho việc phân lớp chỉ cần nhờ vào một tập dữ liệu huấn luyện nhỏ Giả định các biến là độc lập với nhau nên khi một thuộc tính thay đổi
Trang 5thì chỉ cần xác định lại các thơng số thuộc tính đĩ chứ khơng cần phải xác định lại thơng số tồn bộ thuộc tính
Ứng dụng của định lý Bayes thường dựa trên một giả thiết cĩ tính triết học Bayesian probability ngầm định rằng độ bất định và kỳ vọng cĩ thể tính tốn được giống như là xác suất Định lí Bayes được đặt theo tên của Reverend Thomas Bayes (1702—1761), người nghiên cứu cách tính một phân bố với tham số là một phân bố nhị phân Người bạn của ơng, Richard Price, chỉnh sửa và giới thiệu cơng trình năm
1763, sau khi Bayes mất, với tựa đề An Essay towards solving a Problem in the Doctrine of Chances Pierre-Simon Laplace mở rộng kết quả trong bài luận năm 1774 Bayes Thoerem được triển khai rất rộng rãi trong Data Mining vì dễ hiểu, dễ triển khai Tuy nhiên, Bayes Theorem giả thiết rằng các biến trong mơ hình là độc lập nhau Nếu các biến khơng độc lập nhau thì Bayes Theorem cho kết quả thiếu chính xác Hiện nay cĩ rất nhiều Data Mining Software triển khai Nạve Bayes Classifier như Weka, XMMiner, StatSoft,…
2.2 Định lý Bayes
Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên C khi biết
sự kiện liên quan E đã xảy ra Xác suất này được ký hiệu là P(C|E), và đọc là “xác suất của C nếu cĩ E” Đại lượng này được gọi xác suất cĩ điều kiện hay xác suất hậu nghiệm vì nĩ được rút ra từ giá trị được cho của E hoặc phụ thuộc vào giá trị đĩ
posterior t
cons g normalizin
prior likelihood
E P
C P C E P E C
tan _
) (
) ( )
| ( )
| (
Từ đĩ dẫn tới
)()
|()(
)()
|(C E P E P C E P E C P C
P(C|E): Xác suất xảy ra C khi E đã xảy ra
P(E|C): Xác suất xảy ra E khi C đã xảy ra Đại lượng này gọi là khả năng
(likelihood) xảy ra E khi biết C đã xảy ra
P(C): Xác suất xảy ra C, khơng quan tâm đến B Đây được gọi xác suất tiên nghiệm (prior), nĩ là "tiên nghiệm" theo nghĩa rằng nĩ khơng quan tâm đến bất kỳ thơng tin nào về B
P(E): Xác suất xảy ra E, khơng quan tâm đến C Đại lượng này cịn gọi là
hằng số chuẩn hĩa (normalising constant), vì nĩ luơn giống nhau, khơng
Trang 6phụ thuộc vào sự kiện A đang muốn biết
Theo định lí Bayes, xác suất xảy ra C khi biết E sẽ phụ thuộc vào 3 yếu tố:
Xác suất xảy ra C của riêng nó (prior), không quan tâm đến E Kí hiệu là P(C) và đọc là xác suất của C Đây được gọi là xác suất biên duyên hay xác suất tiên nghiệm, nó là “tiên nghiệm” (trước khi kiểm chứng) theo nghĩa rằng nó không quan tâm đến bất kỳ thông tin nào về E
Xác suất xảy ra E của riêng nó, không quan tâm đến C Kí hiệu là P(E) và đọc là “xác suất của E” Đại lượng này còn gọi là hằng số chuẩn hóa (normalising constant), vì nó luôn giống nhau, không phụ thuộc vào sự kiện C đang muốn biết
Xác suất xảy ra E khi biết C xảy ra Kí hiệu là P(E|C) và đọc là "xác suất của E nếu có C" Đại lượng này gọi là khả năng (likelihood) xảy ra E khi biết C đã xảy ra Chú ý không nhầm lẫn giữa khả năng xảy ra E khi biết C
và xác suất xảy ra C khi biết E
Ví dụ minh họa
75% người mắc bệnh quai bị thì bị cúm Tỉ lệ một người bình thường mắc bệnh quai bị là 1/15000 Tỉ lệ một người bình thường mắc bệnh cúm là 1/1000 Hỏi: Nếu một người đang mắc bệnh cúm thì xác suất người đó cũng mắc bệnh quai bị là bao nhiêu?
Xác suất một người bình thường mắc bệnh quai bị: P(C) = 1/15000
Xác suất một người bình thường mắc bệnh cúm: P(E) = 1/1000
Như vậy:
P(E)
P(C)C)
|P(E)
|
E C P
Trang 71
)15000
14
3()
|(C E
P
2.3 Phân lớp Nạve Bayes (NBC)
Gọi F (field) là các thuộc tính của tập dữ liệu
Gọi E (evidence) = (E1, E2, E3, …, En) là các giá trị quan sát (thu thập) ứng với từng thuộc tính E là mẫu dữ liệu điều kiện
Gọi C (class) là thuộc tính phân lớp dữ liệu (C cĩ bao nhiêu giá trị khác nhau thì dữ liệu sẽ phân thành bấy nhiêu lớp tương ứng)
Cơng thức Nạve Bayes như sau:
)(
)
|(
)
|()
|()(
)
|
E P
C C E P C
C E P C C E P C C P E C
E C C P
C C E P C
C P E C C P
)
| ( )
( )
| (
Trong đĩ:
K: giá trị quy định cho Ck là thuộc tính phân lớp nào
P(E): tổng xác suất mà mẫu dữ liệu điều kiện E cĩ thể xảy ra trên tất cả các giá trị của thuộc tính phân lớp hay tổng các likelihood(C = Ck)
P
1
)
|(
)( K quy định cho Ck thay đổi lần lượt ứng với từng thuộc tính phân lớp
1
)
|(
: ứng với normalzing_contant = tổng các likelihood(C = Ck)
P(CC k |E): ứng với posterior
Nên ta cĩ thể biểu diễn:
t cons g
normalizin
prior likelihood
posterior
tan_
Trang 8Mô tả như sau:
Các xác suất tính bằng thống kê tần suất:
Xác suất một phân lớp xảy ra
P(Ck) = P(C = Ck) = (số mẫu thuộc lớp Ck)/(tổng số mẫu)
Xác suất một giá trị quan sát (của một thuộc tính) xảy ra ứng với một phân lớp
Ri(ei | Ck) = P(Ei = ei | C = Ck) = (số mẫu trong lớp Ck Ei = ei)/(số mẫu của lớp Ck) trong đó:
+ Ei: thuộc tính thứ i + ei: giá trị trong thuộc tính Ei
2.4 Phương pháp sửa lỗi Laplace
Ei: thuộc tính thứ I; ei: giá trị trong thuộc tính Ei
Tập dữ liệu huấn luyện ghi nhận các ngày đi chơi và không đi chơi với thời tiết dựa trên các thuộc tính: Ngoài trời, Nhiệt độ, Gió Thuộc tính phân lớp là: đi chơi
Trang 9Ngày Ngoài trời Nhiệt độ Gió Đi chơi
Cho mẫu dữ liệu điều kiện (E) như sau:
Với mẫu dữ liệu điều kiện như trên, ta có nên đi chơi ?
Từ bảng thống kê tần suất: Rngoài trời(Nắng,Có ) = P(Ngoài trời = Nắng | Có) = 0/2
Vì xác suất không thể bằng 0 nên ta phải dùng kỹ thuật sửa lỗi Laplace Ta sẽ có bảng thống kê tần suất mới như sau:
Bảng thống kê tần suất sau khi sửa lỗi Laplace:
Trang 10Thuộc tính Giá trị quan sát
302,0P(E)
prior(có)(có)
likelihood)
312,0P(E)
(không)prior
(không)likelihood
Như vậy: P(C = “Có” | E) < P(C = “Không”|E) nên xác suất lựa chọn không
đi chơi là cao hơn
2.5 Ưu khuyết điểm
2.5.1 Ưu điểm
Dễ hiểu, cài đặt nhanh do giả định các thuộc tính là độc lập
Cho kết quả khá chính xác trong thực tế mặc dù chịu những giả thuyết về
Trang 11tính độc lập thống kê của thuộc tính
Phân lớp khơng yêu cầu phải ước lượng một cách chính xác
Cĩ thể ước tính các thơng số (trung bình và phương sai của các thuộc tính – biến ) cần thiết cho việc phân lớp chỉ cần nhờ vào một tập dữ liệu huấn luyện nhỏ
Chạy được cả trong trường hợp một số mẫu bị thiếu dữ liệu
2.5.2 Khuyết điểm
Giả thiết về tính độc lập điều kiện của các thuộc tính làm giảm độ chính xác
Dữ liệu cĩ nhiều thuộc tính dư thừa thì Nạve Bayes khơng cịn hiệu quả
Dữ liệu liên tục cĩ thể khơng tuân theo phân phối chuẩn
Trang 12CHƯƠNG II CÀI ĐẶT THỬ NGHIỆM VÀ KẾT QUẢ
Mã nguồn chương trình gồm 2 gĩi: gĩi dataset chứa các cấu trúc dữ liệu cần xử lý
và gĩi model chứa mơ hình và thuật tốn phân lớp Nạve Bayesian
dataset model
Hình 1: Mơ hình 2 gĩi dataset và model
1.1 Các lớp cấu trúc cơ sở dữ liệu (gĩi dataset)
Hình 2: Các lớp cấu trúc dữ liệu – Gĩi dataset
a Lớp Attribute: biểu diễn một thuộc tính trong bộ dữ liệu
- Các thuộc tính:
o String name: tên thuộc tính
o String value: giá trị thuộc tính
Trang 13o Boolean isPredict: thể hiện thuộc tính này có phải là thuộc tính cần tiên
đoán không (nếu thuộc tính này là thuộc tính cần tiên đoán thì gía trị sẽ được gán bằng true)
b Lớp Itemlist: biểu diễn một dòng trong bộ dữ liệu, bao gồm một tập hợp
o getItem(int i): lấy thuộc tính thứ i trong danh sách
o addItem(Attribute a): thêm thuộc tính a vào danh sách
c Lớp TrainingDataset/TestingDataset: biểu diễn bộ dữ liệu đào tạo/thử
o readFromCSVFile(String filename): đọc dữ liệu từ file csv và đưa vào
bộ dữ liệu đào tạo/thử nghiệm
o setPredictAttID(int i): gán thuộc tính tiên đoán cho bộ dữ liệu đào tạo qua chỉ số i
o setPredictAttName(String name): gán thuộc tính tiên đoán cho bộ dữ liệu qua tên thuộc tính
o getPredicAttID(): lấy chỉ số của thuộc tính tiên đoán
1.2 Các lớp mô hình và thuật toán phân lớp NaiveBayesian (gói model)
Trang 14Hình 4: Các lớp mô hình (gói model)
a Lớp BayesianAttribute: Chứa một thuộc tính tương ứng với một lớp trong
mô hình phân lớp (ví dụ: thuộc tính Tuổi trong lớp Độ an toàn = Có)
- Các thuộc tính:
o String name: tên thuộc tính
o String className: tên lớp
o ArrayList<values>: danh sách các giá trị của thuộc tính
o HashTable<String, Integer> frequencyTable: bảng băm thống kê tần suất xuất hiện của mỗi giá trị của thuộc tính name xuất hiện trong lớp className: có key là giá trị của thuộc tính, và value là số lần xuất hiện của giá trị key tương ứng với lớp classname
Ví dụ 1: Xét bộ dữ liệu về thông tin khách hàng của một ngân hàng có các
thuộc tính Tuổi, Thu nhập, Nghề nghiệp, Tình trạng sở hữu nhà, Độ an toàn Trong
đó, Độ an toàn là thuộc tính cần tiên đoán, có 2 giá trị Có và Không Vậy thuộc tính
với thuộc tính Tuổi ta có 02 đối tượng BayesianAttribute tương ứng với 2 lớp Có và Không Dưới đây là minh họa về thuộc tính Tuổi tương ứng với lớp Có
Thuộc tính Giá trị
className Co values <Tre, Trung Nien, Gia>
Trang 15frequencyTable Key Value
Tuoi = Tre | Co 20 Tuoi = Trung Nien |
o laplaceCorrection(): sửa lỗi Laplace cho thuộc tính tương ứng với một
lớp khi không tìm thấy một key (ví dụ: Tuoi = Thanh nien | Co), khi đó
thêm key chưa tìm thấy vào bảng tần suất xuất hiện frequencyTable, gán value bằng 1 cho key đó, và tăng tần suất xuất hiện của tất cả các key còn lại trong bảng frequencyTable lên 1
b Lớp NaiveBayesianModel: biểu diễn một mô hình phân lớp NaiveBayes
đã được đào tạo Mô hình chứa số liệu thống kê về tần suất xuất hiện của tất
cả các giá trị của các thuộc tính tương ứng với các lớp trong dữ liệu đào tạo
- Thuộc tính:
o TrainingDataset trainingData: bộ dữ liệu đào tạo
o ArrayList<String> classes: danh sách tên các lớp cần tiên đoán
o int classCount: số lượng các lớp cần tiên đoán
o ArrayList<BayesianAttribute> countTable: danh sách các đối tượng kiểu BayesianAttribute chứa tần suất xuất hiện của các giá trị thuộc tính tương ứng với các tên lớp trong toàn bộ dữ liệu đào tạo
Ví dụ 2: Với bộ dữ liệu đã nên trong bộ Ví dụ 1, countTable sẽ chứa 8 đối tượng
kiểu BayesianAttribute bao gồm: