Tải bản đầy đủ (.pdf) (23 trang)

BÀI TIỂU LUẬN- KHAI PHÁ DỮ LIỆU- 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 (2.94 MB, 23 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 : Bài toán phân lớp






Giáo viên hướng dẫn:
Sinh viên thực hiện :

Lớp :
Hồ Nhật Quang
Nguyễn Thị Ngân
HTTT9

Hà Nội Năm 2014
MỤC LỤC
LỜI MỞ ĐẦU 3
I. Tóm lược lý thuyết về phân lớp (Classification) 4
II. Bài toán: 4
1. Mô tả bài toán 5
2. Xử lý dữ liệu 6

3. Quy trình huấn luyện và kiểm thử 6
4. thực hiện bài toán phân lớp với weka: 9
5. Kết quả thực nghiệm 22
KẾT LUẬN 23
















LỜI MỞ ĐẦU
Sự phát triển của công nghệ thông tin và việc ứng dụng công nghệ thông tin
trong nhiều lĩnh vực của đời sống, kinh tế xã hội trong nhiều năm qua cũng đồng
nghĩa với lượng dữ liệu đã được các cơ quan thu thập và lưu trữ ngày một tích luỹ
nhiều lên. Họ lưu trữ các dữ liệu này vì cho rằng trong nó ẩn chứa những giá trị

nhất định nào đó. Tuy nhiên, theo thống kê thì chỉ có một lượng nhỏ của những dữ
liệu này (khoảng từ 5% đến 10%) là luôn được phân tích, số còn lại họ không biết
sẽ phải làm gì hoặc có thể làm gì với chúng nhưng họ vẫn tiếp tục thu thập rất tốn
kém với ý nghĩ lo sợ rằng sẽ có cái gì đó quan trọng đã bị bỏ qua sau này có lúc
cần đến nó. Mặt khác, trong môi trường cạnh tranh, người ta ngày càng cần có
nhiều thông tin với tốc độ nhanh để trợ giúp việc ra quyết định và ngày càng có
nhiều câu hỏi mang tính chất định tính cần phải trả lời dựa trên một khối lượng dữ
liệu khổng lồ đã có. Với những lý do như vậy, các phương pháp quản trị và khai
thác cơ sở dữ liệu truyền thống ngày càng không đáp ứng được thực tế đã làm phát
triển một khuynh hướng kỹ thuật mới đó là Kỹ thuật phát hiện tri thức và khai
phá dữ liệu (KDD - Knowledge Discovery and Data Mining).
Kỹ thuật phát hiện tri thức và khai phá dữ liệu đã và đang được nghiên

cứu, ứng dụng trong nhiều lĩnh vực khác nhau ở các nước trên thế giới, tại Việt
Nam kỹ thuật này tương đối còn mới mẻ tuy nhiên cũng đang được nghiên cứu và
dần đưa vào ứng dụng.Phát hiện tri thức 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 là một bước trong qui
trình phát hiện tri thức gồm có các thuật toán khai thác dữ liệu chuyên dùng dưới
một số qui đị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. Nói một cách khác, mục đích của phát hiện tri thức và khai
phá dữ liệu chính là tìm ra các mẫu và/hoặc các mô hình đang tồn tại trong các cơ
sở dữ liệu nhưng vẫn còn bị che khuất bởi hàng núi dữ liệu.
Môn học “Khai phá dữ liệu” cung cấp cho sinh viên công nghệ thong tin cái
nhìn tổng quan về phát hiện tri thức và khai phá dữ liệu. Với những kiến thức đã

học, trong bài tiểu luận môn học em tập trung vào các thuật toán phân lớp với bài
toán cụ thể là “Nhận dạng ký tự”. Bài toán được thực hiện bằng công cụ weka, bộ
mã nguồn mở khá hiệu quả hiện nay.

I. Tóm lược lý thuyết về phân lớp (Classification)
Trong lĩnh vực máy học (machine Learning) và nhận dạng (pattern recognition),
bài toán phân lớp (classification) đề cập đến các thuật toán (algorithms) nhằm xác
định lớp (class) của đối tượng đã cho sẽ thuộc về lớp nào trong các lớp đã cho
trước (Given Categories). Một điều cần chú ý là khác với bài toán phân cụm
(clustering), dữ liệu dùng để xây dựng mô hình (Training Data) trong bài toán phân
lớp phải được xác định lớp trước (pre-Labeled).
Qui trình Train và Test một classifier

- Dữ liệu để xây dựng mô hình: dữ liệu gốc (original dataset), dữ liệu này
phải có thuộc tính phân lớp gọi là categorical attribute
- Dữ liệu gốc sẽ được chia thành 2 phần là Training Set (để xây dựng
model) và Testing Set (để kiểm định Model)
- Cuối cùng là tính toán lỗi để đánh giá Model



II. Bài toán:
1. Mô tả bài toán
Bài toán “Nhận dạng ký tự” là một bài toán phân lớp khá phức tạp, đã được sử
dụng trong mô hình phân lớp thích nghi ở Hà Lan. Trong mô hình này ta sử dụng

tập dữ liệu “letter-recognition” gồm 20.000 hình ảnh ký tự có tính đơn nhất được
tạo ra một cách ngẫu nhiên từ các hình ảnh dạng pixel trong tổng số 26 chữ cái
viết hoa từ 20 phông chữ khác nhau.Các phông đại diện đầy đủ các loại bao gồm
cả script, in nghiêng, serif, và Gothic. Các đặc trưng của mỗi ký tự trong số 20.000
ký tự đã được tóm lược thành 16 thuộc tính số nguyên. Mỗi hình ảnh ký tự trong số
26 ký tự trọng tâm của bảng chữ cái tiếng Anh được biểu diễn dạng khối hình chữ
nhật dạng pixel đen và trắng. Hình ảnh các ký tự dựa trên 20 kiểu chữ khác nhau
và mỗi ký tự nằm trong 20 kiểu này.
Các thuộc tính là:
1. lettr các ký tự (26 giá trị từ A đến Z)
2. x-box vị trí nằm ngang của hình hộp chữ nhật (integer)
3. y-box vị trí thẳng đưng của hình hộp chữ nhật (integer)

4. width chiều rộng của hình hộp chữ nhật (integer)
5. high chiều cao của hình hộp chữ nhật (integer)
6. onpix tổng số pixel hiển thị trong ảnh ký tự (integer)
7. x-bar giá trị trung bình x của các pixel hiển thị trong hình hộp
(integer)
8. y-bar giá trị trung bình y của các pixel hiển thị trong hình
(integer)
9. x2bar trung bình biến x (integer)
10. y2bar trung bình biến y (integer)
11. xybar trung bình tương quan xy (integer)
12. x2ybr trung bình của x * x * y (integer)
13. xy2br trung bình của x * y * y (integer)

14. x-ege số cạnh trung bình từ trái sang phải (integer)
15. xegvy tương quan của cạnh x với y (integer)
16. y-ege số cạnh trung bình từ trên xuống dưới (integer)
17. yegvx tương quan của cạnh y với x (integer)

Ví dụ về các hình ảnh ký tự:


Yêu cầu bài toán: từ bộ dữ liệu như trên tiến hành nhận dạng ký tự viết hoa bằng
phương pháp phân lớp.

2. Xử lý dữ liệu

- Bộ dữ liệu được sử dụng: letter-recognition.
- Bộ dữ liệu được lấy từ nguồn:

- Xử lý: dữ liệu ban đầu có dạng file letter-recognition.data, không sử dụng
được trong bộ mã nguồn mở weka nên chuyển đổi file về dạng .csv
- Bộ dữ liệu gồm 20000 bảng ghi với 17 thuộc tính.
- Chuẩn hóa dữ liệu bằng cách rời rạc hóa các thuộc tính của dữ liệu.

3. Quy trình huấn luyện và kiểm thử
a. Kỹ thuật Cross Validation (CV) trong Training and Testing Phase
Đây là kỹ thuật chủ yếu được sử dụng trong xây dựng predictive Model. Trong
đó dữ liệu gốc sẽ được chia thành n phần bằng nhau (n-fold), và quá trình

Train/Test Model thực hiện lặp lại n lần. Tại mỗi lần Train/Test Model, 1 phần dữ
liệu dùng để Test và (n-1) phần còn lại dùng để Train.
(Người ta đã chứng minh 10-fold Cross –Validation là tối ưu)
Ví dụ: Hình dưới đây mô tả CV với 3-fold sử dụng bộ dữ liệu Iris


Bài toán được giải quyết bằng kỹ thuật phân lớp với hai quá trình: huấn
luyện dữ liệu và kiểm thử.
a. Huấn luyện dữ liệu:
Bộ dữ liệu trên được chia thành 2 file là file huấn luyện (train) và file kiểm thử
(test) theo từng kỹ thuật cụ thể. Ví dụ: sử dụng kỹ thuật Cross Validation hoặc chia
bộ dữ liệu theo tỷ lệ 70%(14000) train và 30%(6000) test. Chương trình lần lượt

duyệt qua 16000 thành phần huấn luyện với 5 lần rời nhau, tạo ra luật mới, điều
chỉnh những thành phần không phù hợp và chỉnh sửa luật cho phù hợp.
b. Kiểm thử
Quá trình kiểm thử được thực hiện qua các bước sau:
- So sánh vector đặc trưng của thành phần kiểm thử với những đặc trưng đặc
biệt của mỗi bộ phân lớp tạo được ở trên
- Lựa chọn một cách thiết lập đối sánh bao gồm tất cả các bộ phân lớp thỏa
điều kiện với vector đặc trưng cần kiểm tra.
- Tính giá trị cho mỗi bộ phân lớp.
- Nếu trong trường hợp học, chỉnh sửa kết quả thống kê của một hoặc nhiều
bộ phân lớp.
- Nếu trong trường hợp kiểm tra, loại bỏ những luật không tốt và tạo ra những

luật mới tùy theo thuật toán tạo luật
- Lựa chọn bảng ghi tiếp theo cần kiểm tra và lặp lại bước 1.
4. thực hiện bài toán phân lớp với weka:
Phần này trình bày xây dựng mô hình phân lớp với phần mềm Weka, trên bộ
dữ liệu letter-recognition.csv đã giới thiệu ở trên.

Việc lựa chọn thuật toán nào để có một model tốt phụ thuộc rất nhiều yếu
tố, trong đó cấu trúc của dataset có ý nghĩa quan trọng đến việc lựa chọn thuật
toán. Ví dụ thuật toán cây hồi qui phân loại (CART – Classification And
Regression Tree) và J48 cho kết quả tốt trên các dữ liệu kiểu số (Numerical Data),
trong khi đó thuật toán ID3 cho kết quả tốt đối với dữ liệu định danh (nominal
Data).

Các nhà nghiên cứu về khai phá dữ liệu đã phát triển một số các thuật toán
cho việc tạo ra cây quyết định sử dụng trong bài toán phân lớp. Trong bài toán này
thuật toán c4.5 được sử dụng khá tốt, trong weka là J48.


- Giao diện chính của chương trình: nạp dữ liệu dang file .
Chọn
Explorer

Các biểu đồ tương ứng với các thuộc tính
Nạp file dữ liệu letter-
recognition.csv

Mô tả dữ liệu
Mô tả thuộc
tính

Sau khi nạp dữ liệu, chọn Tab classify để chọn các mô hình phân loại. Ở đây ta sẽ
sử dụng và so sánh hiệu quả của 2 mô hình phân lớp của cây quyết định (Decision
tree) là J48 và mô hình MultilayerPerceptron của mạng Neuron (Neural network)
- Mô hình phân lớp của cây quyết định (Decision tree) là J48










+ sử dụng kỹ thuật Cross-validation để chia dữ liệu train và test
Chọn J48

 Kết quả kiểm thử
Liệt kê thông tin tổng quát về mức độ chính xác của bộ phân loại trong thử
nghiệm vừa thực thi.


Chi tiết kết quả độ chính xác của bộ phân loại trên từng phân lớp.
Chọn Folds là
10
Bắt đầu xây
dựng mô hình
Hiển thị kết
quả





















+ Sử dụng kỹ thuật percentage split để phân chia dữ liệu train/test


Kết quả kiểm thử:

Chọn dữ liệu
train là 70%










- Mô hình MultilayerPerceptron của mạng Neuron (Neural network)












Chọn
MultilayerPerceptron

Quá trình xây dựng mô hình huấn luyện MultilayerPerceptron sử dụng kỹ thuật
Cross-validation



Kết quả kiểm thử dữ liệu



5. Kết quả thực nghiệm
- Trong cùng một thuật toán phân lớp C4.5 với 2 kỹ thuật phân chia dữ liệu
Cross-validation và Percentage Split với tỷ lệ 70%
Kỹ thuật Phân lớp đúng Phân lớp sai Số mẫu
Cross-validation 88.115% 11.885% 20000
Percentage Split 86.8% 13.2% 14000
Theo bảng thống kê như trên thì quá trình phân loại sử dụng cây quyết định J48

thì kỹ thuật Cross-validation tốt hơn cả
- So sánh 2 mô hình phân lớp
Mô hình Phân lớp đúng Phân lớp sai Số mẫu
J48 88.115% 11.885% 20000
MultilayerPercaptron 82.195 17.805% 20000
Vậy: Đối với bài toán phân lớp nhận dạng ký tự chúng ta sử dụng mô hình J48
là hiệu quả hơn, cho kết quả phân lớp tốt hơn.


KẾT LUẬN
Bài toán phân lớp là bài toán cơ bản và quan trọng trong Khai phá dữ liệu.
Trong bài toán “Nhận dạng ký tự”,với kết quả như trên mô hình phân lớp J48 được

sử dụng khá hiệu quả.
Với bài toán đưa ra em đã xử lý được một số vấn đề đã được trình bày trong
bài. Tuy nhiên, vẫn còn nhiều thiếu sót trong quá trình làm bài. Em rất mong nhận
được sự góp ý của thầy. Em chân thành cảm ơn.

×