23
be Bài tập lớn Kho Dữ Liệu Và Khai Phá Dữ Liệu Đề tài mining: PHÂN LOẠI ĐỘNG VẬT TRONG VƯỜN THÚ Giảng viên: Nguyễn Quỳnh Chi Nhóm 3 1.Vũ Đình Triển 2.Nguyễn Thị Nga HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN

Vu - Copy

Embed Size (px)

Citation preview

Page 1: Vu - Copy

be

Bài tập lớn

Kho Dữ Liệu Và Khai Phá Dữ Liệu

Đề tài mining: PHÂN LOẠI ĐỘNG VẬT TRONG VƯỜN THÚ

Giảng viên: Nguyễn Quỳnh ChiNhóm 3

1. Vũ Đình Triển2. Nguyễn Thị Nga3. Vũ Minh Trang

Lớp : D07HTTT1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

Page 2: Vu - Copy

1.Mục đích bài

Trong vườn thú có rất nhiều loại động vật với những đặc điểm khác nhau .Nhiệm vụ của bài toán là Phân Loại các loại động vật trong vườn thú xem chúng thuộc lớp nào trong các lớp: động vật có vú, chim, bò sát, cá, lưỡng cư, côn trùng, không xương sống ? Dựa vào cơ sở dữ liệu thu được về các con thú cùng các đặc điểm của chúng ,chúng ta sẽ xây dựng một cây ( sử dụng thuật toán J48 – tương tự C4.5 ) dùng tool WEKA, từ cây ta suy ra được các luật để phân loại các con thú. Trên cơ sở đó ta kiểm tra xem luật xây dựng có đúng hay không bằng cách sử dụng một tập các con vật đã biết trước được lớp, áp dụng luật xây dựng được để xem chúng thuộc lớp nào ,nếu kết quả trùng với loại ban đầu thì ta kết luận luật là đúng .Từ các luật thu được có thể áp đụng đế dự đoán xem các con vật mới hay các con vật chưa biết sẽ thuộc loài nào? Trên cơ sở đó để có những phương pháp nuôi dưỡng hay nghiên cứu …. phục vụ nhu cầu nào đó của con người.

2. Mô tả dữ liệu

Tập dữ liệu Zoo.arff thu thập được qua việc khảo sát nhiều con vật khác nhau trong vườn thú Mapperley Nottingham bởi Richard Forsyth cùng các cộng sự ,ngày 5/15/1990.Dữ liệu về các loại động vật với đặc điểm có tóc, lông vũ, có sữa, trứng, trên không, dưới nước, có nọc độc… để rút ra kết luận đây là động vật có vú, chim, bò sát, cá, lưỡng cư, côn trùng, không xương sống….

Tập dữ liệu Zoo.arff có 101 mẩu cùng với 18 thuộc tính( cũng chính là các thuộc tính phân lớp) có trong tập dữ liệu.

Bảng miêu tả tên, kiểu dử liệu, các giá trị của từng thuộc tính:

Stt Tên thuộc tính Kiểu dử liệu Các giá trị

1 animal name Unique for each instance2 hair Nominal True, false3 feathers Nominal True, false4 eggs Nominal True, false5 milk Nominal True, false6 airborne Nominal True, false7 aquatic Nominal True, false8 predator Nominal True, false9 toothed Nominal True, false

10 backbone Nominal True, false11 breathes Nominal True, false12 venomous Nominal True, false

Page 3: Vu - Copy

13 fins Nominal True, false14 legs Nominal Numeric( set of value: {0,2,4,6,8} )15 tail Nominal True, false16 domestic Nominal True, false17 catsize Nominal True, false18 type Nominal Numeric( interger values in range [1,7] )

Ý nghĩa của từng thuộc tính trong bối cảnh của tập dử liệu

1) Animal name: Unique for each instance

2) Hair: true/false3) Feathers: true/false4) Eggs: true/false5) Milk: true/false6) Airborne: true/false7) Aquatic: true/false8) Predator: true/ false9) Toothed: true/false10) Backbone: true/false11) Breathes: true/false12) Venomous: true/false13) Fins: true/false14) legs: numeric15) tail: true/ false16) domestic : true/false17) catsize: true/false18) type: numeric

1) Tên con v t: M i tên đ nh danh duyậ ỗ ị nh t cho 1 con v t.ấ ậ

2) Tóc : có, không3) Lông vũ : có, không4) Đ tr ng: có, khôngẻ ứ5) S a: có, khôngữ6) S ng trên c n: đúng, saiố ạ7) S ng d i n c: đúng, saiố ướ ướ8) Là côn trùng: đúng, sai9) Có răng: có, không.10) Có x ng s ng: có, không.ươ ố11) Hô h p: có, không.ấ12) Có n c đ c: có, khôngọ ộ13) Có cánh: có cánh, không14) S chân: {0,2,4,6,8} ố15) Đuôi: có, không16) Có gia đình : có, không.17) Catsize18) Lo i l p ( giá tr s nguyên trongạ ớ ị ố

d i [1,7]).ả

3.Tiền xử lý dữ liệu Dữ liệu đã được làm sạch Không có giá trị thiếu trong tập dử liệu Thuộc tính phân lớp là thuộc tính 18 (type)

Tỉ lệ phân lớp là:o Mammal : 41o Bird : 20o Reptile : 5

Page 4: Vu - Copy

o Fish : 13o Amphibian : 4o Insert : 8o Invertebrate : 10

Chạy tool trong WEKA

4. Phân tích dùng WEKA

a. Vấn đề trọng tâm :Xuất phát từ những nhận định trên, đồ án này nhắm tới mục đích đưa ra một phương pháp phân loại linh hoạt hơn, thuyết phục hơn. Yêu cầu của phương pháp này là có thể đảm nhận tốt vai trò cố vấn, hỗ trợ các chuyên viên tín dụng trong việc đưa ra quyết định cho vay, xử lý dựa trên các thông tin (có thể chưa đầy đủ) từ khách hàng và từ các mẫu thống kê đáng tin cậy.

b.Chi tiết thuật toán C4.5 được áp dụng :b1.Đôi nét về giải thuật C4.5 :

Page 5: Vu - Copy

C4.5 là thuật toán dùng để xây dựng cây quyết định được được đề xuất bởi Ross Quinlan. C4.5 là sự mở rộng của thuật toán ID3, với 1 số những cải tiến:

cho phép dữ liệu đầu vào ở các thuộc tính là liên tục cho phép thao tác với các thuộc tính có dữ liệu không xác định (do bị mất mát dữ

liệu, …)đưa ra phương pháp “cắt tỉa” cây và giản lược các luật để phù hợp với những bộ

dữ liệu lớn

b2.Mô hình cây quyết định

Các nút trên cây quyết định bao gồm 2 loại: _ nút lá: mỗi nút là sẽ tương ứng với 1 class, thuộc tính dùng để phân loại, khi

phân loại trường hợp mới, bộ dữ liệu của trường hợp này sẽ được đưa qua cây để kiểm tra, khi đạt đến 1 nút lá tương ứng với class của nút đó sẽ là kết quả phân loại của nút đó

_ nút trong (internal node): mỗi node trong sẽ tương ứng với 1 thuộc tính dùng để kiểm tra ở trong nút đấy,

+) với những thuộc tính có tập giá trị là rời rạc thì tập giá trị của thuộc tính đó sẽ được dùng để kiểm tra và xác định nút con tiếp theo sẽ duyệt đến

+) với những nút ứng với thuộc tính có tập giá trị liên tục, mỗi nút này sẽ có 1 giá (hoặc 1 vài) giá trị được gọi là mốc, giá trị mốc sẽ được dùng để so sánh với giá trị thuộc tính tương ứng của trường hợp cần phân loại Cây quyết định có thể sử dụng để phân loại 1 trường hợp bằng cách xuất phát từ nút gốc, duyệt qua tất cả các nút con đến khi gặp nút là thì dừng và đưa ra kết quả phân loại. Đối với những nút không phải là lá (nút trong – internal node)

c.Triển khai vào bài toán c1. dữ liệu đầu vào:

Page 6: Vu - Copy

Đầu vào của thuật toán là 1 tập các bản ghi, mỗi bản ghi bao gồm các thuộc tính, dựa vào các thuộc tính này ta có thể dùng. Các thuộc tính của bảng này có thể được chia ra thành các dạng sau: • thuộc tính Boolean: • thuộc tính Numeric:• thuộc tính Unique for each instanceDữ liệu đầu vào được chia thành 2 tập:

1 tập dùng cho quá trình dùng cho quá trình “huấn luyện” để xây dựng cây – gọi là training data set

1 tập dùng cho quá trình kiểm tra, đánh giá cây quyết định vừa được xây dựng – gọi là test data set

c2. Xây dựng cây quyết định Cj, khi đó cây quyết định sẽ chỉ có 1 node tương ứng với bảng T này và với mọi bản ghi test được đưa vào phân loại thì cây này sẽ cho ra cùng 1 giá trị phân loại Cj

_ nếu cây T không có 1 bản ghi nào, khi đó cây T cũng chỉ bao gồm 1 nút, tuy nhiên class tương ứng với nút này được xác định từ thông tin không thuộc T

_ nếu cây T chứa các bản ghi có thuộc tính class gồm nhiều giá trị khác nhau, khi đó ta sẽ thành những bảng con sao cho thuộc tính class trong bảng con đó có giá trị đồng nhất giống nhau.

Việc xây dựng cây quyết định trong thuật toán C4.5 sử dụng phương pháp của Hunt. Ký hiệu các class (các thuộc tính chứa kết quả đánh giá) là {C1, C2, … ,Ck} và bảng chứa các bản ghi trong tập training ký hiệu là T, ứng với mỗi bảng T ta sẽ có 3 trường hợp sau: • tất cả các bản ghi trong T đều thuộc 1 class xác định

_ nếu cây T không có 1 bản ghi nào, khi đó cây T cũng chỉ bao gồm 1 nút, tuy nhiên class tương ứng với nút này được xác định từ thông tin không thuộc T

_ nếu cây T chứa các bản ghi có thuộc tính class gồm nhiều giá trị khác nhau, khi đó ta sẽ thành những bảng con sao cho thuộc tính class trong bảng con đó có giá trị đồng nhất giống nhau. Giả sử ta chọn 1 thuộc tính X bao gồm 1 tập n các giá trị {O1, O2, … , On} dùng để phân chia bảng T thành n bảng con {T1, T2, …, Tn}, với mỗi bảng con này ta lại tiếp tục phân chia theo 1 thuộc tính nào đó để cuối cùng các mảng con đều có giá trị thuộc tính class là giống nhau.

Theo như cách chúng ta xây dựng cây như trên việc quan trọng nhất đó là việc tại mỗi bước phải chọn 1 thuộc tính sao cây được xây dựng sau này là tối ưu nhất – theo nghĩa là nhỏ nhất có thể và số phân đoạn được chia ra là ít nhất. Vì vậy tại mỗi bước ta phải chọn 1 thuộc tính hợp lý để chia bảng T. Việc chọn thuộc tính này có thể được thực hiện bằng cách quét tất cả các cây có thể được xây dựng, sau đó chọn cây tối ưu nhất! Tuy nhiên cách vét cạn này đòi hỏi chi phí rất lớn! có 1 cách khác nhằm xác định được 1 cây tốt nhất đó là sử dụng thuật toán tham lam (greedy algorithm) và thuật toán C4.5 sử dụng Gain criterion và Gain criterion ratio

Những chuẩn này dựa trên lý thuyết về thông tin Gain criterion và Gain criterion ratio:

Việc chọn chọn ra thuộc tính tốt nhất tại mỗi bước dùng để phân chia bảng T cần sử dụng 1 đại lượng, đại lượng này phải có giá trị lớn nhất khi thuộc tính được chọn là đúng đắn (tại bước đó), và giá trị nhỏ nhất khi đại lượng này là không tốt (tại 1 bước xác

Page 7: Vu - Copy

định). Một đại lượng thỏa mãn đó là lượng thông tin mong đợi là sẽ được cung cấp bởi 1 thuộc tính nào đó (được đề xuất lần đầu tiên bởi Shannon và Weaver). Để có thể hiểu được khái niệm thông tin có thể nghĩ nó như là 1 câu trả lời cho 1 câu hỏi. Lượng thông tin chứa trong 1 câu trả lời phụ thuộc vào tri thức trước đó.

Thuộc tính liên tục: Đối với thuộc tính liên tục, ta cần xác định 1 mốc dùng để phân chia bảng các bản

ghi thành 2 tập. thuật toán sử dụng trong C4.5 để xác định mốc: _ sắp xếp các bản ghi trong bảng đó theo thứ tự từ tăng dần theo giá trị của thuộc

tính cần xác định mốc, giả sử tập sau khi sắp xếp là {V1, V2, …,Vn}_ xác định các điểm chính giữa của các đoạn xác định bởi (Vi, Vi+1)_ phân chia bảng đang xét thành 2 phần dựa theo các điểm đó, sau đó xác định

gain criterion ratio ứng với từng cách phân chia này_ chọn giá trị mà gain criterion ratio ứng với điểm đó có giá trị lớn nhất làm điểm

mốcĐánh giá hiệu quả phân lớp của thuật toán đối với tập dữ liệu được cho theo hai phương pháp là cross- validation và percentage split.

Các tham số của j48

Page 8: Vu - Copy

- binarySplits -- Whether to use binary splits on nominal attributes when building the trees.Có hay không sử dụng phân tách nhị phân ở trong các thuộc tính nominal khi xây dựng cây.

- collapseTree -- Có hay không các thành phần được bỏ đi mà không giảm bớt lỗi training.

- confidenceFactor – Mức tin tưởng để quyết định xem có xén tỉa hay không

- debug -- Nếu thiết lập là true, sự phân lớp có thể cho ra các thông tin bổ xung tới màn hình console

- minNumObj --Số lượng nhỏ nhất các thể hiện trên mỗi nút lá.

Page 9: Vu - Copy

- numFolds --.Định rõ lượng dữ liệu sử dụng cho việc giảm bớt lỗi xén tỉa. Một fold được sử dụng cho việc xén tỉa, phần còn lại sử dụng cho việc phát triển cây.

- reducedErrorPruning – Có hay không xén tỉa giảm bớt lỗi được sử dụng thay thế xén tỉa C4.5

Cross-validation :- Một kỹ thuật được sử dụng để kiểm tra hiệu xuất của mô hình tiên đoán.

Cross- validation tiên đoán sự ăn khớp của một mô hình tới một tập giả thiết hợp lệ (Test set) khi mà ta không có sẵn tập hợp lệ tường minh.

- Một loại cross- validation thường dùng là k-folds cross-validation : Tập mẫu ban đầu được phân chia ngẫu nhiên tới k tập mẫu con. Với k tập mẫu con này, một mẫu đơn được dùng như dữ liệu đánh giá cho việc kiểm tra mô hình, và k-1 tập mẫu còn lại được sử dụng như dữ liệu training. Tiến trình đánh giá chéo được lặp lại k lần ( tham số Folds in weka). Lấy trung bình k kết quả thu được ta có một đánh giá cho mô hình.

Ưu điểm của phương pháp này là việc lặp lại ngẫu nhiên các mẫu con được sử dụng cho cả training và testing, và đúng một lần.

Sau khi chạy thuật toán theo phương pháp Cross-Validation thì dù tham số Folds có giá trị là bao nhiêu thì kết quả thu được không thay đổi ,vẫn đạt được hiệu quả phân lớp cao nhất là 100% với số mẫu test là 8124.

Percentage split: Cho biết tỉ lệ phân chia là bao nhiêu % thì đạt hiệu quả phân lớp cao nhất. - Tỷ lệ phân chia cho biết số mẫu được chọn cho tập huấn luyện và số mẫu

được chọn cho tập test.Vd: Percentage split =20% nghĩa là 20% mẫu dùng test set và 40% mẫu dùng cho training set

1) Lần test thứ 1:với tỉ lệ phân chia là 60% thì ta có bảng thống kế sau:

Page 10: Vu - Copy

2) Lần test thứ 2 : với tỉ lệ phân chia > 60% là 65% thì ta có bảng thống kế sau:

3) Lần test thứ 3: với tỉ lệ phân chia > 66% là 70% thì ta có bảng thống kế sau:

Page 11: Vu - Copy

4) Lần test thứ 4: với tỉ lệ phân chia > 60% là 75% thì ta có bảng thống kế sau:

5) Lần test thứ 5: với tỉ lệ phân chia > 60% là 80% thì ta có bảng thống kế sau:

Page 12: Vu - Copy

6) Lần test thứ 5: với tỉ lệ phân chia > 60% là 85% thì ta có bảng thống kê sau:

7) Lần test thứ 7 : với tỉ lệ phân chia > 60% là 90% thì ta có bảng thống kế sau:

Page 13: Vu - Copy

8) Lần test thứ 8 : với tỉ lệ phân chia > 60% là 95% thì ta có bảng thống kế sau:

Page 14: Vu - Copy

9) Lần test thứ 9 : với tỉ lệ phân chia <60% là 55% thì ta có bảng thống kế sau

10) Lần test thứ 10: với tỉ lệ phân chia <60% là 50% thì ta có bảng thống kế sau

Page 15: Vu - Copy

11) Lần test thứ 10: với tỉ lệ phân chia <60% là 45% thì ta có bảng thống kế sau

12) Lần test thứ 10: với tỉ lệ phân chia <60% là 40% thì ta có bảng thống kế sau

Page 16: Vu - Copy

13) Lần test thứ 10: với tỉ lệ phân chia <60% là 35% thì ta có bảng thống kế sau

14) Lần test thứ 10: với tỉ lệ phân chia <60% là 30% thì ta có bảng thống kế sau

Page 17: Vu - Copy

15) Lần test thứ 10: với tỉ lệ phân chia <60% là 25% thì ta có bảng thống kế sau

Qua nhiều lần test ,ta thấy với tỉ lệ phân chia =60% thì đạt hiệu quả phân lớp cao nhất. Tóm lại với phương pháp test bằng Percentage Slit với tham số 60% thì đạt hiệu quả phân lớp cao nhất.

5. Các luật rút ra từ cây quyết định

R1 : ( FEATHERS = TRUE ) => BIRD

R2 :( (FEATHERS = FALSE ) (MILK =TRUE ) )=> MAMMAL

R3 : :( (FEATHERS = FALSE ) (MILK = FALSE ) (BACKBONE = TRUE ) (FINS = TRUE ) ) => FISH

Page 18: Vu - Copy

R4 : ( (FEATHERS = FALSE ) (MILK = FALSE ) (BACKBONE = TRUE ) (FINS =FALSE ) (AQUATIC = TRUE )) => AMPHIBIAN

R5 : ( (FEATHERS = FALSE ) (MILK = FALSE ) (BACKBONE = TRUE ) (FINS =FALSE ) (AQUATIC = FALSE )) => REPTILE

R6 : ( (FEATHERS = FALSE ) (MILK = FALSE ) (BACKBONE =FALSE ) (AIRBORNE = TRUE ) ) => INSECT

R7 : ( (FEATHERS = FALSE ) (MILK = FALSE ) (BACKBONE =FALSE ) (AIRBORNE = FALSE )) => INVERTEBRATE

Ý nghĩa thực tế là

1. Nếu các động vật mà có lông vũ thì nó thuộc lớp chim.2. Nếu các động vật không có lông vũ và có sữa thì nó thuộc lớp động vật có

vú.3. Nếu các động vật không có lông vũ , không có sữa , có xương sống và có

vây thì thuộc lớp động vật dưới nước.4. Nếu các động vật không có lông vũ , không có sữa , có xương sống , không

có vây và nó sống dưới nước thì nó thuộc lớp lưỡng cư.5. Nếu các động vật không có lông vũ , không có sữa , có xương sống , không

có vây và nó không sống dưới nước thì nó thuộc lớp bò sát.6. Nếu các động vật không có lông vũ , không có sữa ,không có xương sống

và sống trên cạn thì nó thuộc lớp côn trùng.7. Nếu các động vật không có lông vũ , không có sữa ,không có xương sống

và không sống trên cạn thì nó thuộc lớp động vật không có xương sống.