Tải bản đầy đủ (.doc) (27 trang)

TIỂU LUẬN MÔN HỌC KHAI PHÁ DỮ LIỆU: Sử dụng phần mềm weka khai phá bộ dữ liệu Zoo thực hiện bài toán phân lớp

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

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN

***********

TIỂU LUẬN MÔN HỌC KHAI PHÁ DỮ LIỆU
Đề bài: Sử dụng phần mềm weka khai phá bộ dữ liệu Zoo
thực hiện bài toán phân lớp

Giảng viên hướng dẫn: Hồ Nhật Quang
Họ và tên sinh viên:
Lớp :

Nguyễn Thị Lan Anh
Công nghệ phần mềm 6


Tiểu luận mơn khai phá dữ liệu
[Pick the date]

I.Tìm hiểu công cụ Weka dùng trong khai phá dữ liệu:
1. Giới thiệu:
Weka là môi trường thử nghiệm khai phá dữ liệu do các nhà khoa học thuộc trường Đại
học Waitako, NZ, khởi xướng và được sự đóng góp của rất nhiều nhà nghiên cứu trên thế
giới. Weka là phần mềm mã nguồn mở, cung cấp công cụ trực quan và sinh động cho mọi
người tìm hiểu về khai phá dữ liệu. Weka còn cho phép các giải thuật học mới phát triển có
thể tích hợp vào mơi trường của nó. Hệ thống được viết bằng java. Nó chạy được hầu hết
trên tất cả hệ điều hành.
Weka cung cấp nhiều giải thuật khác nhau với nhiều phương thức cho quá trình xử lý để
ước lượng kết quả bằng sơ đồ cho bất kì một dữ liệu nào.
Weka cung cấp những tính năng chính sau:


+ Bao gồm nhiều cơng cụ đa dạng để thay đổi tập dữ liệu, xử lý dữ liệu, giải thuật học
và phương pháp đánh giá.
+ Giao diện đồ họa người dùng (trực quan hóa dữ liệu).
+ Mơi trường để so sánh các giải thuật học.
Bạn có thể xử lý trước tập dữ liệu, cho vào trong một sơ đồ, và phân chia các lớp kết quả
và thực hiện nó mà khơng cần viết bất cứ một chương trình nào.
Weka lấy dữ liệu từ các file có định dạng .arff, nó được phát sinh từ một file hoặc một
bảng cơ sở dữ liệu.
2. Cài đặt chương trình:
- Link download: />- Sau khi Download chương trình Weka về, bạn tiến hành cài đặt theo các bước:
2.1 Chạy file setup:

Page 2


Tiểu luận môn khai phá dữ liệu
2.2 Chọn Next:

[Pick the date]

2.3 Chọn I Agree:

2.4 Chọn Next:

Page 3


Tiểu luận môn khai phá dữ liệu
2.5 Chọn Next:


[Pick the date]

2.6 Chọn Next:

2.7 Click chọn Install để tiến hành cài đặt:

Page 4


Tiểu luận môn khai phá dữ liệu
2.8 Kết thúc quá trình cài đặt:

[Pick the date]

Giao Diện của chương trình:

Hình 1: Giao diện Weka
3. Các thành phần của chương trình:
Trong phần Application có 4 phần:
• Explorer: Sử dụng Menu lựa chọn. Explorer chỉ sử dụng cho bộ dữ liệu vừa và
nhỏ. (tập chung vào phần này)
• Experimenter: Cho phép người dùng thực hiện những bài tập cơ bản : Cho phép
người dùng thực hiện những bài tập cơ bản khi ứng dụng phân lớp và kĩ thuật hồi
quy, với những công việc có giá trị, phương pháp và tham số tốt nhất cho vấn đề đã
cho.
• KnowledgeFlow: cho phép người dùng kéo thả những chiếc hộp tượng trưng cho
các giải thuật và dữ liệu để kết nối chúng lại với nhau và đưa ra cấu trúc.
• Simple CLI:Sử dụng câu lệnh.

Page 5



Tiểu luận mơn khai phá dữ liệu
[Pick the date]
Hình 2: Màn hình giao diện Explorer
3.1 Chức năng của các Tab:
1. Preprocess: Tiền xử lý dữ liệu.
2. Classify: Để huấn luyện và kiểm tra các mơ hình học máy (phân loại, hoặc
hồi quy/dự đoán).
3. Cluster: Tạo phân cụm cho cơ sở dữ liệu.
4. Associate: Tạo luật kết hợp cho dữ liệu và đánh giá chúng.
5. Select attributes: Lựa chọn những thuộc tính liên quan nhất trong tập dữ
liệu.
6. Visualize: Nhìn thấy sự khác nhau hai chiều của dữ liệu và sự tuơng tác
giữa chúng.
Chúng ta đi vào tìm hiểu một số tab:

3.2 Preprocess: ( Đưa dữ liệu vào)
Tab Preprocess có các nút:
i)

Nút

: Mở các file dữ liệu có sẵn trong máy.

ii)

Nút

: Mở file từ máy khác.


iii)

Nút

: Đọc dữ liệu từ một cơ sở dữ liệu.

iv)

Nút

: Phần mềm tự tạo ra dữ liệu cho bạn theo những

sự lựa chọn của bạn.
- Sử dụng nút

bạn có thể đọc các tập tin ở nhiều định dạng như: định dạng

ARFF, định dạng CSV…
- Cách chuyển dữ liệu về dạng file .csv tìm hiểu ở bài “Vài hướng dẫn về Weka”
Link: o/showthread.php?994-10HCB-_V%E0i-hng-dn-v-Weka!

Page 6


Tiểu luận môn khai phá dữ liệu
- Ở bài này mình chọn Dataset: zoo

[Pick the date]


Link: />Sau khi chuyển sang file .csv, ta có màn hình giao diện như sau:

3.3 Tab preprocess:
Trong cửa sổ của Preprocess có 4 vùng:
3.1.1.Vùng Filter: Cho bạn biết được giải thuật dùng để tiền xử lý dữ liệu đang được sử
dụng.
Bạn có thể thay đổi giải thuật đó bằng cách click vào button
3.1.2.Vùng Current Relation (Các mối quan hệ hiện tại)

Page 7


Tiểu luận mơn khai phá dữ liệu





[Pick the date]
Relation (Quan hệ): Cho biết tên của bảng dữ liệu
Instances (Trường hợp): Số lượng các bản ghi
Attributes (Những thuộc tính): Số lượng các thuộc tính trong dữ liệu.
Sum of weights: Tởng trọng lượng của mỡi bản ghi.

Ví dụ: Khi file đã được mở, màn hình sẽ được thể hiện trong hình, trong vùng Current
Relation:

Cho biết về tên bảng bảng dữ liệu:
Trong trường hợp này bảng dữ liệu có tên là Zoo nó có 101 bản ghi và 18 thuộc tính.
3.1.3. Vùng Attributes (Những thuộc tính)

Ở dưới hộp Current Relation là hộp Attributes:
Tên các thuộc tính ở bảng sau và ta có thể chọn những thuộc tính khác bằng cách click
chuột vào nó.

Có bốn nút để thay đổi sự chọn lựa:
Page 8


Tiểu luận mơn khai phá dữ liệu
[Pick the date]
• All: Tất cả đều được chọn.
• None: Tất cả các hộp đều khơng được chọn.
• Invert: Những thuộc tính trước đây khơng được chọn sẽ trở thành được chọn và
ngược lại.
• Pattern: Cho phép người dùng lựa chọn các thuộc tính bằng cách nhập tên thuộc
tính vào.
3.1.4. Vùng Selected Attribute:

a. Name: Tên thuộc tính.
b. Type: Kiểu dữ liệu của thuộc tính đó.
c. Missing: cho biết số lượng và phần trăm tương ứng của số bản ghi có giá
trị rỗng trong thuộc tính.
d. Distinct: Cho biết số lượng các giá trị trong thuộc tính.
e. Unique: cho biết số lượng và phần trăm tương ứng của các giá trị không
bị lặp lại trong tḥc tính.
Sau khi đưa dữ liệu vào, bạn có thể thự hiện các thao tác để xử lý dữ liệu trước khi thực
hiện những công việc khác như phân cụm, tạo cây quyết định, luật kết hợp… Để thực hiện
xử lý dữ liệu trước hết bạn click vào button
trong cây thưc mục đổ xuống như hình dưới đây:


Page 9

, một cây thư mục đổ xuống,


Tiểu luận môn khai phá dữ liệu
[Pick the date]

4 .Tab Classify:
Trong tab này có 4 vùng là
4.1.Classifier:

Vùng này cho biết tên của thuật toán phân loại đang được chọn, mặc định là zero. Ta có
thể thay đổi thuật tốn bằng cách click chuột vào

trong vùng này và chọn một

thuật toán mà bạn muốn. Để thay đổi các thuộc tính cho thuật toán, click chuột trái (hoặc
click chuột phải rồi chọn Show properties…) vào dòng chữ bên phải button

Page
10


Tiểu luận môn khai phá dữ liệu
4.2.Vùng Test Opions:

[Pick the date]

Vùng này cho phép bạn lựa chọn các kiểu kiểm tra như:

- Use training set: Dữ liệ được đào tạo
- Supplied test set: Dữ liệu kiểm tra
- Cross-validation: Tập dữ liệu sẽ được chia đều thành k tập (folds) có kích thước xấp
xỉ nhau, và bộ phân loại học được sẽ được đánh giá bởi phương pháp crossvalidation.
- Percentage split: phần trăm dữ liệu học và kiểm tra.
Ngoài ra trong vùng này cịn có button

cho phép bạn thiết lập một số tham

số khác.
4.3.Vùng Result List
Vùng này chứa danh sách các kết quả đạt được sau khi thực hiện việc phân lớp.
Trong danh sách này bạn có thể chọn một kết quả vào nhấp chuột phải vào kết quả đó sẽ
xuất hiện một danh sách cho phép bạn chọn như hình sau:

i) View in main window: Mở kết quả ở vùng classifies output

Page
11


Tiểu luận môn khai phá dữ liệu
[Pick the date]
ii) View in separate window: Mở kết quả ở một cửa sổ khác
iii) Save result buffer: Lưu kết quả vào bộ nhớ
iv) Delete result buffer: Xóa kết quả
v)

Visualize tree: Mở cây quyết định


4.4.Vùng Classifier output: Đây là nơi hiển thị kết quả sau khi thực hiện phân lớp.

II. Áp dụng vào bài tốn:
1.Mơ tả dữ liệu Zoo:
Link: />Gồm 2 file: zoo.data, zoo.names
Đặc điểm

Nhiều chiều

dataset:
Đặc điểm

Số trường

101

Lĩnh vực:

Cuộc sống

17

Ngày đưa

15-5-1990

hợp:
Rõ ràng, int

thuộc tính:


Số thuộc

Phân loại

lên:

Những giá trị Khơng

Số lượt truy

thiếu:

Nhiệm vụ:

tính:

cập Web:

40383

Chia dữ liệu ra gồm 7 lớp như sau:
Class# -- Set of animals:
====== ====================================================
1 -- (41) aardvark, antelope, bear, boar, buffalo, calf, cavy, cheetah, deer, dolphin, elephant,
fruitbat, giraffe, girl, goat, gorilla, hamster, hare, leopard, lion, lynx, mink, mole,
mongoose, opossum, oryx, platypus, polecat, pony, porpoise, puma, pussycat, raccoon,
reindeer, seal, sealion, squirrel, vampire, vole, wallaby,wolf
2 -- (20) chicken, crow, dove, duck, flamingo, gull, hawk, kiwi, lark, ostrich, parakeet,
penguin, pheasant, rhea, skimmer, skua, sparrow, swan, vulture, wren

Page
12


Tiểu luận môn khai phá dữ liệu
[Pick the date]
3 -- (5) pitviper, seasnake, slowworm, tortoise, tuatara
4 -- (13) bass, carp, catfish, chub, dogfish, haddock, herring, pike, piranha, seahorse, sole,
stingray, tuna
5 -- (4) frog, frog, newt, toad
6 -- (8) flea, gnat, honeybee, housefly, ladybird, moth, termite, wasp
7 -- (10) clam, crab, crayfish, lobster, octopus, scorpion, seawasp, slug, starfish, worm

- Cơ sở dữ liệu gồm có chứa 17 thuộc tính với kiểu Boolen.
- “Type” cũng là tên thuộc tính của lớp.
- Có 1 vấn đề xảy ra là đối tượng “frog” có thể có hai trường hợp có thể hiểu là “con
ếch” và “cơ gái”.
- Giá trị các thuộc tính thiếu: khơng
- Cần chia làm 7 lớp như phần trên.
Các thuộc tính:
STT

Tên thuộc tính

Dịch

Kiểu

1


animal name

Tên động vật

Unique for each
instance.

2

hair

Lơng

Boolean

3

feathers

Tóc

Boolean

4

eggs

Trứng

Boolean


5

milk

Sữa

Boolean

6

airborne

Bay

Boolean

7

aquatic

Sống dưới nước

Boolean

8

predator

Thú ăn thịt


Boolean

9

toothed

Có răng

Boolean

10

backbone

Xương sống

Boolean

11

breathes

Thở, hơ hấp

Boolean

Page
13



Tiểu luận môn khai phá dữ liệu
12

venomous

[Pick the date]
Nọc độc

13

fins

vây

Boolean

14

legs

chân

Numeric (set of

Boolean

values:{0,2,4,5,6,8})
15


tail

Đi

Boolean

16

domestic

Ni trong nhà

Boolean

17

catsize

Boolean

type

Numeric (integer
values in range [1,7])

18

2.Bài tốn đặt ra:
2.1.Xử lý dữ liệu dạng thô:
Dữ liệu đã cho ở dạng zoo.data, zoo.names cần chuyển về dạng file .csv ta làm như sau:

- Chuyển file zoo.data coppy vào notepad rồi lưu lại ở dạng zoo.text
- Mở Exel để chuyển đổi dữ liệu theo cột và sau đó chèn thêm các thuộc tính tương
ứng theo hàng ở đầu file Exel rồi Save as ở dạng file .csv thì Weka mới đọc được.
- Làm các bước trên theo
link: o/showthread.php?994-10HCB-_V%E0i-hng-dn-v-Weka!
- Ở bài này mình có sẵn file .arff
Qua link />2.2.Tiến hành phân lớp:
u cầu bài toán dữ liệu bao gồm 101 tên của các con vật giờ muốn phân chúng thành
7 lớp và đặt tên cho các lớp đó, chứ khơng phải ký hiệu [1, 7] như trong dữ liệu thô.
Khi xuất ra Exel thì trong file đó:

Page
14


Tiểu luận môn khai phá dữ liệu
[Pick the date]
- Type: dạng số [1, 7] thành -> tên class: mammal - động vật có vú, bird - gia cầm,
reptile - lồi bò sát, fish - cá, amphibian - lưỡng cư, insect – cơn trùng, invertebrate
– động vật khơng xương sống.
3.Tìm hiểu về phân lớp – Classify:
3.1.Quá trình khai phá dữ liệu:
Quá trình khai phá dữ liệu bắt đầu bằng cách xác định chính xác vấn đề cần giải
quyết. Sau đó sẽ xác định các dữ liệu liên quan dùng để xây dựng giải pháp. Bước tiếp
theo là thu thập các dữ liệu có liên quan và xử lý chúng thành định dạng sao cho các
thuật tốn khai phá dữ liệu có thể hiểu được. Về lý thuyết thì có vẻ rất đơn giản nhưng
khi thực hiện thì đây thực sự là một q trình rất khó khăn, gặp phải nhiều vướng mắc
như dữ liệu phải được sao ra nhiều bản (nếu được chiết suất vào các tệp), quản lý tập
các tệp dữ liệu, phải lặp đi lặp lại nhiều lần toàn bộ q trình (nếu mơ hình dữ liệu thay
đổi) ...

Bước tiếp theo là chọn thuật toán khai phá dữ liệu thích hợp và thực hiện việc khai
phá để tìm được các mẫu có ý nghĩa dưới dạng biểu diễn tương ứng với các ý nghĩa đó.
Thơng thường các mẫu được biểu diễn dưới dạng luật phân loại, cây quyết định, luật sản
xuất, biểu thức hồi quy, ...

Page
15


Tiểu luận môn khai phá dữ liệu
[Pick the date]

3.2 Chọn thuật toán:
Bayes: Thuật toán NaiveBayes

Naive Bayes là một trong những phương pháp phân lớp dựa vào xác suất điển hình nhất
trong khai thác dữ liệu và tri thức.
Phân lớp Naive Bayesian :
Giả thuyết Naive : thuộc tính là độc lập
P(x1,...,xk|C)=P(x1|C)...P(xk|C)
Nếu thuộc tính thứ i là xát thực :
P(xi |C) được ước lượng như là tần suất tương đối của những mẫu có giá trị xi như
là thuộc tính thứ i trong lớp C.
Nếu thuộc tính thứ i là liên tục P(xi |C) được ước lượng thông qua hàm mật độ
Gaussian .Việc tính tốn là dễ dàng trong cả hai trường hợp .Ví dụ play-tennis :
phân lớp X .Cho mẫu chưa được thấy như sau X=<rain,hot,high,false>

P(X|p).P(p)=P(rain|p).P(hot|p).P(high|p).P(false|p).P(p) = 3/9.2/9.3/9.6/9.9/14=0.010582
P(rain|n).P(hot|n).P(high|n).P(false|n).P(n)=2/5.2/5.4/5.5/14=0.018286
Mẫu X được phân lớp vào lớp n.


Page
16


Tiểu luận môn khai phá dữ liệu
[Pick the date]
Giải thuật Nạve Bayes viết bằng mã giả như sau:

Trees: Thuật tốn J48
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).
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:

Page
17


Tiểu luận môn khai phá dữ liệu
[Pick the date]
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 tốn phân lớp như ID3, J48, C4.5, CART (Classification and Regression
Tree),… Việc chọn thuật tố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 tốn như J48, C4.5 có hiệu quả hơn đối với các
dữ liệu Qualititive value (ordinal, Binary, nominal).
3.3 Tìm hiểu Cross-validation:
Để tránh việc trùng lặp giữa các tập kiểm thử (một số ví dụ cùng xuất hiện trong các tập kiểm thử
khác nhau)

- k-fold cross-validation.
+Tập tồn bộ các ví dụ D được chia thành k tập con không giao nhau
(gọilà “fold”) có kích thước xấp xỉ nhau.
+ Mỗi lần (trong số k lần) lặp, một tập con được sử dụng làm tập kiểm thử,
và (k-1) tập con còn lại được dùng làm tập huấn luyện.
+ k giá trị lỗi (mỗi giá trị tương ứng với một fold) được tính trung bình cộng để thu
được giá trị lỗi tổng thể.
- Các lựa chọn thông thường của k: 10, hoặc 5
- Thông thường, mỗi tập con (fold) được lấy mẫu phân tầng (xấp xỉ phân bố lớp) trước
khi áp dụng quá trình đánh giá Cross-validation.
- Phù hợp khi ta có tập ví dụ D vừa và nhỏ.

Page
18


Tiểu luận môn khai phá dữ liệu
[Pick the date]


4.Thực hiện:
Giai đoạn tiền xử lý:

Page
19


Tiểu luận môn khai phá dữ liệu
[Pick the date]

Biểu đồ mô tả dataset Zoo:

Page
20


Tiểu luận môn khai phá dữ liệu
[Pick the date]

5.Tiến hành Phân lớp:
1. NaiveBayes:
Chọn Classify->Choose -> Naive Bayesnet, chọn cả cross-validate (folds: 10) -> Start

Ta được kết quả:

Page
21



Tiểu luận môn khai phá dữ liệu
[Pick the date]

Kết quả:
- Phân loại được 7 lớp và xác định tên của các lớp mammal - động vật có vú, bird - gia
cầm, reptile - lồi bị sát, fish - cá, amphibian - lưỡng cư, insect – côn trùng,
invertebrate – động vật khơng xương sống.
- Correctly Classified Instances
96
95.0495 %
Có 96 Trường hợp phân lớp đúng chiếm 95.0495 %
- Incorrectly Classified Instances
5
4.9505 %
Có 5 trường hợp phân lớp sai chiếm 4.9505 %
2. J48:
Classfy - > Choose -> classifiers-> trees -> J48. Chọn Cross-validation (folds: 10)

Page
22


Tiểu luận mơn khai phá dữ liệu
[Pick the date]

Ta có kết quả như sau:

Kết quả:
- Correctly Classified Instances
93

92.0792 %
Có 93 Trường hợp phân lớp đúng chiếm 92.0792 %
- Incorrectly Classified Instances
8
7.9208 %
Page
23


Tiểu luận mơn khai phá dữ liệu
[Pick the date]
Có 8 trường hợp phân lớp sai chiếm 7.9208 %

III. Kết luận:
So sánh NaiveBayes và J48 qua các cách test, ta thu được bảng giá trị sau: Có tổng 101
trường hợp.
- NaiveBayes:
Test

Correctly Classified

Incorrectly Classified

Instances (Đúng)

Instances (Sai)

Use Training set

101


0

Cross-validation

96

5

45

5

Correctly Classified

Incorrectly Classified

Instances

Instances

Use Training set

100

1

Cross-validation

93


8

41

9

(folds:10)
Percentange split (50%)
- J48:
Test

(folds:10)
Percentange split (50%)

Như vậy sử dụng thuật toán NaiveBayes sẽ thực hiện bài toán phân lớp hiệu quả hơn dùng
cây quyết định.

Page
24


Tiểu luận môn khai phá dữ liệu
[Pick the date]

Page
25



×