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

Tiểu luận khai phá dữ liệu Xây dựng tập dữ liệu cho Weka

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 (573.63 KB, 23 trang )

Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
MỤC LỤC
1
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
LỜI NÓI ĐẦU
Chúng em xin chân thành cảm ơn PGS.TS. Đỗ Phúc đã truyền đạt những kiến thức
quý báu từ những kinh nghiệm sống đến những vấn đề khoa học mới nhất trong bộ môn
Khai phá dữ liệu.
Trong những năm gần đây, việc nắm bắt được thông tin được coi là chìa khóa của
kinh doanh. Ai thu thập, phân tích và hiểu được thông tin và hành động được nhờ vào
những thông tin đó là kẻ thắng cuộc trong thời đại thông tin này. Chính vì vậy, việc tạo ra
thông tin và mức tiêu thụ thông tin ngày nay ngày càng gia tăng.
Khai phá dữ liệu (Data Mining) là một lĩnh vực khoa học liên ngành mới xuất hiện
gần đây nhằm đáp ứng nhu cầu này. Các kết quả nghiên cứu cùng với những ứng dụng
thành công trong khai phá dữ liệu, khám phá tri thức cho thấy khai phá dữ liệu là một
lĩnh vực khoa học tiềm năng, mang lại nhiều lợi ích, đồng thời có ưu thế hơn hẳn so với
các công cụ phân tích dữ liệu truyền thống.
Trong phạm vi tiểu luận này, em muốn chia sẽ những khái quát và những hiểu biết
bản thân về phần mềm mã nguồn mở Weka và ví dụ ứng dụng Weka để khai phá dữ liệu,
phân lớp tập dữ liệu các động vật trong vườn thú thành từng loại động vật khác nhau.
2
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
Chương 1: Giới thiệu
1.1 Giới thiệu về khai thác dữ liệu
1.1.1 Khái niệm
Dữ liệu trên thế giới và xung quanh cuộc sống của chúng ta ngày càng tăng, không
có điểm dừng. Máy tính mặt ở khắp nơi nên dữ liệu dễ dàng để lưu những thông tin mà
trước đây chúng ta vứt bỏ đi sau khi xem. Đĩa và lưu trữ trực tuyến không tốn kém làm trì
hoãn quyết định phải làm gì với tất cả các dữ liệu này, đơn giản là có được nhiều bộ nhớ
hơn và giữ lại tất cả. Những dữ liệu được ghi lại đó là các quyết định của, sự lựa chọn
của khách hàng trong các siêu thị, thói quen tài chính của khách hàng, nơi đi và đến, …


Khi khối lượng dữ liệu tăng lên, tỷ lệ người hiểu khối dữ liệu đó giảm đến đáng báo
động. Nằm ẩn trong các dữ liệu này là thông tin có khả ăng hữu ích.
Khai thác dữ liệu là việc thực hiện tự động tìm kiếm trong các kho dữ liệu lớn để
khám các mô hình và xu hướng. Khai thác dữ liệu sử dụng các thuật toán toán học tinh vi
để phân đoạn dữ liệu và đánh giá xác suất của các sự kiện trong tương lai. Khai thác dữ
liệu còn được gọi là khám phá tri thức trong dữ liệu (Knowledge Discovery in Data -
KDD)
Các thuộc tính quan trọng của khai thác dữ liệu là:
- Tự động khám phá các mẫu
- Dự đoán kết quả tương tự
- Tạo ra các thông tin có thể thực hiện
- Tập trung vào các tập dữ liệu và cơ sở dữ liệu lớn
1.1.2 Tự động khám phá
Khai phá dữ liệu được thực hiện bằng việc xây dựng các mô hình. Một mô hình sử
dụng một thuật toán để hoạt động trên một tập hợp các dữ liệu. Khái niệm tự động phát
hiện liên quan đến việc thực hiện các mô hình khai phá dữ liệu.
Các mô hình khai phá dữ liệu có thể được sử dụng để khai phá dữ liệu mà chúng
được xây dựng, nhưng hầu hết các loại mô hình khái quát các dữ liệu mới. Quá trình áp
dụng một mô hình dữ liệu mới được biết đến như scoring.
1.1.3 Dự đoán
Nhiều hình thức khai phá dữ liệu dự đoán. Ví dụ, một mô hình có thể dự đoán thu
nhập dựa trên giáo dục và các yếu tố nhân khẩu học khác.
3
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
Một số hình thức khai phá dữ liệu dự đoán tạo ra quy tắc. Ví dụ, một quy tắc có thể
xác định rằng một người có bằng cử nhân trong một khu vực nhất định có khả năng thu
nhập lớn hơn mức trung bình trong khu vực.
1.1.4 Sự gom nhóm
Các hình thức khai phá dữ liệu xác định các nhóm tự nhiên trong dữ liệu. Ví dụ, một
mô hình có thể xác định các phân đoạn dân số có thu nhập trong một phạm vi nhất định,

có một hồ sơ lái xe tốt, và thuê một chiếc xe mới hàng năm.
1.1.5 Thông tin hữu ích
Khai phá dữ liệu có thể lấy được thông tin hữu từ khối lượng lớn dữ liệu. Ví dụ, thị trấn có thể sử
dụng một mô hình dự báo thu nhập dựa trên nhân khẩu học để phát triển một kế hoạch cho nhà ở
thu nhập thấp. Một cơ quan cho thuê xe hơi có thể sử dụng một mô hình xác định phân khúc
khách hàng để thiết kế một chương trình khuyến mãi nhắm mục tiêu khách hàng giá trị cao.
1.1.6 Khai phá dữ liệu và thống kê
Có rất nhiều chồng chéo giữa khai thác dữ liệu và thống kê. Trong thực tế hầu hết các
kỹ thuật được sử dụng trong khai thác dữ liệu có thể được đặt trong một khuôn khổ thống
kê. Tuy nhiên, kỹ thuật khai thác dữ liệu không giống như các kỹ thuật thống kê truyền
thống.
Phương pháp truyền thống thống kê, nói chung, đòi hỏi rất nhiều sự tương tác của
người dùng để xác nhận sự đúng đắn của một mô hình. Kết quả là, các phương pháp
thống kê có thể được khó khăn để tự động hóa. Hơn nữa, phương pháp thống kê thường
không quy mô tốt để tập hợp dữ liệu rất lớn. Phương pháp thống kê dựa vào thử nghiệm
giả thuyết hoặc tìm kiếm mối tương quan dựa trên nhỏ hơn, các mẫu đại diện của một
dân số lớn hơn.
Phương pháp khai thác dữ liệu phù hợp với dữ liệu lớn và có thể được tự động dễ
dàng hơn. Trong thực tế, các thuật toán khai thác dữ liệu thường yêu cầu các tập dữ liệu
lớn cho việc tạo ra các mô hình chất lượng.
1.1.7 Khai phá dữ liệu và OLAP
OLAP có thể được định nghĩa là phân tích nhanh chóng chia sẻ đa chiều dữ liệu.
OLAP và khai phá dữ liệu là những hoạt động khác nhau nhưng bổ sung cho nhau.
OLAP hỗ trợ các hoạt động như dữ liệu tổng kết, phân bổ chi phí, phân tích chuỗi
thời gian, và phân tích what-if. Tuy nhiên, hầu hết hệ thống OLAP không có khả năng
suy luận quy nạp vượt ra ngoài sự hỗ trợ cho dự báo chuỗi thời gian. Suy luận quy nạp,
4
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
quá trình đạt đến một kết luận chung từ các ví dụ cụ thể, là một đặc tính của khai phá dữ
liệu. Suy luận quy nạp còn được gọi là học tính toán.

Hệ thống OLAP cung cấp một cái nhìn đa chiều của dữ liệu, bao gồm hỗ trợ đầy đủ
cho hệ thống phân cấp. Xem các dữ liệu này là một cách tự nhiên để phân tích các doanh
nghiệp và tổ chức. Khai phá dữ liệu, mặt khác thường là không có một khái niệm về kích
thước và phân cấp.
Khai phá dữ liệu và OLAP có thể được tích hợp trong một số cách. Ví dụ, khai phá
dữ liệu có thể được sử dụng để lựa chọn kích thước cho một khối lập phương, tạo ra giá
trị mới cho một kích thước, hoặc tạo ra các biện pháp mới cho một khối lập phương.
OLAP có thể được sử dụng để phân tích các kết quả khai phá dữ liệu ở các cấp độ khác
nhau của granularity.
Khai phá dữ liệu có thể giúp bạn xây dựng các hình khối thú vị và hữu ích hơn. Ví
dụ, kết quả của khai phá dữ liệu tiên đoán có thể được thêm vào như là các biện pháp tùy
chỉnh để một khối lập phương. Những biện pháp này có thể cung cấp các thông tin như
"có khả năng mặc định" hoặc "có khả năng mua" cho mỗi khách hàng. Quá trình OLAP
sau đó có thể tổng hợp và tóm tắt các khả năng.
1.1.8 Khai phá dữ liệu và kho dữ liệu
Dữ liệu có thể được khai phá cho dù nó được lưu trữ trong các tập tin phẳng, bảng
tính, bảng cơ sở dữ liệu, hoặc một số định dạng lưu trữ khác. Các tiêu chí quan trọng đối
với dữ liệu không phải là định dạng lưu trữ, mà là là khả năng giải quyết được vấn đề.
Làm sạch và chuẩn bị dữ liệu phù hợp là rất quan trọng để khai phá dữ liệu, và một
kho dữ liệu có thể tạo điều kiện thuận lợi cho các hoạt động này. Tuy nhiên, một kho dữ
liệu sẽ không được sử dụng nếu nó không chứa các dữ liệu bạn cần để giải quyết vấn đề.
Với một ngoại lệ, Oracle khai phá dữ liệu đòi hỏi dữ liệu được trình bày theo dạng
single-record. Điều này có nghĩa rằng các dữ liệu cho mỗi bản ghi phải được quy định
trong một hàng duy nhất. Trường hợp ngoại lệ là các dữ liệu được chấp nhận bởi thuật
toán Apriori để tính toán luật kết hợp. Các dữ liệu cho luật kết hợp có thể được trình bày
như là các giao dịch, các dữ liệu cho mỗi trường hợp quy định trên nhiều hàng.
1.2 Giới thiệu về phần mềm mã nguồn mở Weka
1.2.1 Giới thiệu Weka
Khai thác dữ liệu không phải là chỉ đơn thuần là lĩnh vực của các công ty lớn và phần
mềm đắt tiền. Trong thực tế, có một phần của phần mềm mà hầu như tất cả những điều

tương tự như những tính năng đắt tiền của phần mềm - phần mềm được gọi là WEKA .
5
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
WEKA là sản phẩm của Đại học Waikato (New Zealand) và lần đầu tiên được thực hiện
vào năm 1997. Nó sử dụng bản quyền GNU General Public License (GPL). Phần mềm
này được viết bằng ngôn ngữ Java và có một giao diện để tương tác với các tập tin dữ
liệu và xuất ra các kết quả trực quan (như là bảng và các biểu đồ). Nó cũng có một API
thông dụng, vì vậy bạn có thể nhúng WEKA, giống như bất kỳ thư viện khác, trong các
ứng dụng của riêng bạn để những thứ như nhiệm vụ khai thác dữ liệu phía máy chủ tự
động.
Weka là một tập hợp các thuật toán máy học tập cho các nhiệm vụ khai thác dữ liệu.
Các thuật toán có thể được áp dụng trực tiếp vào dữ liệu hoặc gọi từ mã Java của riêng
bạn. Weka chứa các công cụ cho:
- Tiền xử lý dữ liệu (Pre-processing on data)
- Phân lớp (Classification)
- Hồi quy (Regression)
- Gom nhóm (Clustering)
- Luật kết hợp (Association Rules)
- Trực quan hóa (Visualization).
Nó cũng rất phù hợp cho việc phát triển các chương trình máy học máy mới.
Website của phần mềm Weka: />1.2.2 Giao diện Weka Explorer
Cách dễ nhất để sử dụng Weka là thông qua một giao diện người dùng đồ họa được
gọi là Explorer. Điều này cho phép truy cập đến tất cả các chức năng bằng cách sử dụng
menu và form.
1.2.2.1 Xây dựng dữ liệu cho Weka
Dữ liệu có thể được nhập vào từ một tập tin có khuôn dạng: ARFF, CVS, hoặc từ
một cơ sở dữ liệu thông qua JDBC. Phương pháp ưa tiên của Weka để tải dữ liệu theo
định dạng tập tin ARFF (File Format Attribute-Relation File Format), tập tin này có thể
xác định các loại dữ liệu được nạp, sau đó cung cấp các dữ liệu chính nó. Trong tập tin,
bạn xác định mỗi cột và mỗi cột có chứa những gì. Trong trường hợp của mô hình hồi

quy, bạn bị giới hạn một cột NUMERIC hoặc một cột DATE . Cuối cùng, bạn cung cấp
mỗi dòng dữ liệu trong một định dạng phân cách bằng dấu phẩy.
Ví dụ: định dạng của tập dữ liệu
6
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
1.2.2.2 Tiền xử lý dữ liệu
Một số công cụ tiền xử lý dữ liệu của Weka được gọi là filters:
- Rời rạc hóa (Discretization): Một số kỹ thuật như khai thác luật kết hợp có thể
được thực hiện trên dữ liệu phân lớp. Điều này đòi hỏi phải thực hiện rời rạc
trên các thuộc tính số hoặc liên tục.
- Chuẩn hóa (Normalization):
- Lấy mẫu (Re-sampling)
- Lựa chọn thuộc tính (Attribute selection)
- Chuyển đổi (Transforming) và kết hợp (Combining) các thuộc tính
- …
1.2.2.3 Các bộ phân lớp
Các bộ phân lớp (Classifiers) của Weka tương ứng với các mô hình dự đoán các đại
lượng kiểu định danh (phân lớp) hoặc các đạ lượng kiểu số (hồi quy/dự đoán)
Một số kỹ thuật phân lớp được hỗ trợ bởi Weka:
- Phân lớp Naive Bayes và mạng Bayesian (Naïve Bayesclassifier and Bayesian
networks)
- Cây quyết định (Decision trees)
- Phân lớp dựa trên cá thể cần được phân lớp (Instance-based Classifiers)
- Máy phân lớp sử dụng vectơ hỗ trợ (Support Vector Machines)
- Mạng Nơ-ron (Neural networks)
- …
Lựa chọn các tùy chọn cho việc kiểm tra:
7
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
- Use trainning set: Bộ phân lớp học được sẽ được đánh giá trên tập học

- Supplied test set: Sử dụng một tập dữ liệu khác (với tập học) để cho việc đánh
giá.
- 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 lớp học được sẽ được đánh giá bởi phương pháp cross-
validation.
- Percentage split: Chỉ định tỷ lệ phân chia tập dữ liệu đối với việc đánh giá.
- Output model: Hiển thị bộ phân lớp học được
- Output per-class stats: hiển thị các thông tin thống kê về percision/recall đối với
mỗi lớp
- Output confusion matrix: hiển thị thông tin về ma trận lỗi phân lớp (confusion
matrix) đối với phân lớp học được
- Store predictions for visualization: các dự đoán của bộ phân lớp được lưu lại
trong bộ nhớ, để có thể được hiển thị sau đó
- Output predictions: hiển thị chi tiết các dự đoán đối với tập kiểm tra
- Cost-sensitive evaluation: các lỗi (của bộ phân lớp) được xác định dựa trên ma
trận chi phí (cost matrix) chỉ định
- Random seed for Xval / % Split: chỉ dịnh giá trị random seed được sử dụng cho
quá trình lựa chọn ngẫu nhiên các ví dụ cho tập kiểm tra.
Result list: cung câp một số tính năng hữu ích:
- Save model: lưu lại mô hình tương ứng với bộ phân lớp học được vào trong một
tập tin nhị phân
- Load model: đọc lại một mô hình đã được học trước đó từ một tập nhị phân
- Re-evaluate model on current test set: đánh giá một mô hình (bộ phân lớp) học
được trước đó đối với tập kiểm ta (test set) hiện tại
- Visualize classifier errors: hiển thị cửa sổ biểu đồ thể hiện các kết quả của việc
phân lớp
1.2.2.4 Các bộ phân cụm (Clustering)
Các bộ phân cụm (Cluster Builders) của WEKA tương ứng với các mô hình tìm các
nhóm của các ví dụ tương tự dối với một tập dữ liệu. Các kỹ thuật phân cụm được Weka
hỗ trợ như: Expectation maximization (EM), K-Means, … Các bộ phân cụm có thể được

hiển thị kết quả và so sánh với các cụm (lớp) thực tế.
Lựa chọn chế độ phân cụm (cluster mode):
- Use tranning set: các cụm học được sẽ được kiểm tra đối với tập học
- Supplied test set: sử dụng một tập dữ liệu khác để kiểm tra các cụm học được
8
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
- Percentage split: chỉ định tỷ lệ phân chia tập dữ liệu ban ddầu cho việc xây dựng
tập kiểm tra
- Classes to clusters evaluation: so sánh độ chính xác của các cụm học được đối
với các lớp được chỉ định
Store clusters for visualization: Lưu lại các bộ phân lớp trong bộ nhớ, để có thể hiển
thị sau đó
Ignore attributes: Lựa chọn các thuộc tính sẽ không tham gia vào quá trình học các cụm
1.2.2.5 Luật kết hợp (Association Rules)
Để lựa chọn một mô hình (giải thuật) phát hiện luật kết hợp
Associator output: hiển thị các thông tin quan trọng:
- Run information: các tùy chọn đối với mô hình phát hiện luật kết hợp, tên của
tập dữ liệu, số lượng các ví dụ, các thuộc tính
- Associator model (full trainning set): biểu diễn (dạng text) của tập các luật kết
hợp được phát hiện
o Độ hỗ trợ tối thiểu (mininum support)
o Độ tin cậy tối thiểu (minimum confidence)
o Kích thước của các tập mục thường xuyên (large/frequent itemsets)
o Liệt kê các luật kết hợp tìm được
1.2.2.6 Lựa chọn thuộc tính (Attribute selection)
Để xác định những thuộc tính nào là quạn trọng nhất
Trong Weka, một phương pháp lựa chọn thuộc tính bao gồm 2 phần:
- Attribute Evaluator: để xác định một phương pháp đsanh giá mức độ phù hợp
của các thuộc tính
Ví dụ: correlation-based, wrapper, information gain, chisquared,…

- Search Method: để xác định một phương pháp (thứ tự) xét các thuộc tính
Ví dụ: best-first, random, exhaustive, ranking, …
1.2.2.7 Hiển thị dữ liệu
- Hiển thị dữ liệu rất cần thiết trong thực tế: giúp để xác định mức đọ khó khăn
của bài toán học
- Weka có thể hiển thị: Mỗi thuộc tính riêng lẻ (1-D visualization), mỗt cặp thuộc
tính (2-D visualization)
- Các giá trị (các nhãn) lớp khác nhau sẽ được hiển thị bằng các màu khác nhau
9
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
- Thanh trượt Jitter hỗ trợ việc hiển thị rõ ràng hơn, khi có quá nhiều ví dụ (điểm)
tập xung quanh một vị trí trên biểu đồ
- Tính năng phóng to/thu nhỏ ( bằng cách tăng/giảm giá trị của Plotsize và
Pointsize)
1.2.3 Cách sử dụng Weka
Weka có 3 giao điện đồ họa để sử dụng: Explorer, Experimenter, KnowledgeFlow.
Cách dễ nhất để sử dụng Weka là thông qua một giao diện người dùng đồ họa
được gọi là Explorer. Điều này cho phép truy cập đến tất cả các chức năng bằng cách sử
dụng menu và form. Ví dụ, bạn có thể nhanh chóng đọc trong một tập dữ liệu từ một tập
tin ARFF (hoặc spreadsheet) và xây dựng một cây quyết định từ nó. Nhưng học cây
quyết định chỉ là khởi đầu: nhiều thuật toán khác để khám phá. Giao diện Explorer sẽ
giúp bạn làm việc đó.Nó hướng dẫn bạn bằng cách đưa ra sự lựa chọn menu, bằng cách
buộc bạn phải làm việc trong một trật tự thích hợp các lựa chọn cho đến khi chúng được
áp dụng và bằng cách điền vào các form. Công cụ tool-tips hiển thị cửa sổ mô tả khi con
trỏ chuột đi qua các mục trên màn hình để giải thích những gì họ làm. Giá trị mặc định
hợp lý đảm bảo rằng bạncó thể nhận được kết quả mà chỉ cần công sức bỏ ra nhỏ nhất,
nhưng bạn sẽ phải suy nghĩ về những gì bạn đang làm để hiểu kết quả có ý nghĩa gì.
Giao diện Knowledge Flow cho phép bạn thiết kế cấu hình cho trực tiếp xử lý dữ
liệu. Một bất lợi cơ bản của giao diện Explorer là nó nắm giữ tất cả mọi thứ trong bộ nhớ
chính khi bạn mở một tập dữ liệu, nó ngay lập tức tải tất cả lên bộ nhớ. Điều này có nghĩa

rằng Explorer chỉ có thể được áp dụng cho các vấn đề kích thước nhỏ đến trung bình.
Tuy nhiên, Weka chứa một số thuật toán gia tăng có thể được sử dụng để xử lý các bộ dữ
liệu rất lớn. Giao diện Knowledge Flow cho phép bạn kéo hộp thoại về các thuật toán học
và nguồn dữ liệu quanh màn hình và kết chúng lại với nhau thành cấu hình bạn mong
10
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
muốn. Nó cho phép bạn chỉ định một dòng dữ liệu bằng cách kết nối các thành phần đại
diện cho nguồn dữ liệu, công cụ tiền xử lý, các thuật toán học, phương pháp đánh giá, và
mô-đun trực quan. Nếu các bộ lọc và các thuật toán học có khả năng học tập gia tăng, dữ
liệu sẽ được nạp và xử lý từng bước.
Giao diện thứ ba của Weka là Experimenter, giao diện này được thiết kế để giúp
bạn trả lời cơ bản câu hỏi thực tế khi áp dụng các kỹ thuật phân lớp và hồi quy: phương
pháp và các giá trị tham số nào làm việc tốt nhất cho các vấn đề nhất định? Thường
không có cách nào để trả lời câu hỏi này một độ ưu tiên, và một lý do chúng tôi phát triển
phần mềm là để cung cấp một môi trường cho phép Weka người sử dụng để so sánh một
loạt các kỹ thuật học. Điều này có thể được thực hiện tương tác bằng cách sử dụng giao
diện Explorer. Tuy nhiên, giao diện Experimenter cho phép bạn tự động hóa quá trình
bằng cách làm cho nó dễ dàng để chạy phân lớp và các bộ lọc với các cài đặt tham số
khác nhau trên một bộ dữ liệu, thu thập số liệu thống kê hiệu suất, và để thực hiện các
kiểm tra quan trọng. Người dùng cao cấp có thể sử dụng Experimenter để phân phối tải
các phép tính toán trên nhiều máy tính bằng cách sử dụng Java để gọi phương thức từ xa
(Remote Method Invocation - RMI). Bằng cách này, bạn có thể thiết lập Experimenter
thống kê quy mô lớn và để chúng chạy.
Đằng sau những giao diện tương tác nằm các chức năng cơ bản của Weka, Weka
có thể được truy cập ở dạng thô bằng cách nhập vào các lệnh văn bản, cho phép truy cập
cho tất cả mọi ngườicác tính năng của hệ thống. Khi bạn mở ứng dụng Weka, bạn phải
lựa chọn trong số bốn giao diện người dùng khác nhau: Explorer, Knowledge Flow,
Experimenter, và giao diện dòng lệnh (Command Line Interface - CLI). Hầu hết mọi
người ban đầu chọn Explorer để đơn giản.
11

Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
Chương 2: Chức năng phân lớp sử dụng trong Weka
2.1 Phân lớp dữ liệu trong Weka
Phân lớp (còn được gọi là cây phân lớp hoặc cây quyết định) là một thuật toán
khai thác dữ liệu tạo ra một hướng dẫn từng bước làm thế nào để xác định sản lượng của
một trường hợp dữ liệu mới. Cây nó tạo ra là chính xác rằng: một cây mà mỗi nút trong
cây đại diện cho một vị trí mà một quyết định phải được tạo ra dựa trên dữ liệu đầu vào
và sau đó di chuyển đến nút tiếp theo và tiếp theo cho đến khi tới nút lá cho biết dự đoán
đầu ra.
Ví dụ: Từ dữ liệu thô đầu vào là bảng dữ liệu quyết định đi chơi tennis dựa vào
thời tiết
12
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
Cây phân lớp đơn giản này tìm cách trả lời câu hỏi "Bạn sẽ hiểu cây phân loại
không?" Tại mỗi nút, bạn trả lời các câu hỏi và di chuyển vào chi nhánh đó cho đến khi
tới nút lá, tại đó mà câu trả lời là có hoặc không. Mô hình này có thể được sử dụng cho
bất kỳ trường hợp dữ liệu không rõ, và bạn có thể dự đoán liệu trường hợp dữ liệu không
biết này sẽ học các cây phân loại bằng cách yêu cầu họ chỉ có hai câu hỏi đơn giản. Đó là
dường như lợi thế lớn của một cây phân loại nó không đòi hỏi phải có rất nhiều thông tin
về các dữ liệu để tạo ra một cây mà có thể là rất chính xác và rất nhiều thông tin.
Một trong những khái niệm quan trọng của cây phân loại là khái niệm của việc sử
dụng một "tập huấn luyện" để tạo ra các mô hình. Điều này giúp làm một tập dữ liệu với
13
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
giá trị đầu ra được biết và sử dụng dữ liệu này để xây dựng mô hình. Sau đó, bất cứ khi
nào chúng ta có một tập dữ liệu mới, với giá trị đầu ra không rõ, chúng tôi đặt nó thông
qua các mô hình và đưa ra các dữ liệu dự đoán.Tất cả điều này giống như trong mô hình
hồi quy. Tập huấn luyện được chia thành hai phần: khoảng 60-80% của các dữ liệu và đặt
nó vào tập huấn luyện, được sử dụng để tạo ra các mô hình; sau đó, nhận các dữ liệu còn
lại và đặt nó vào một tập kiểm tra, tập này sẽ được sử dụng ngay lập tức sau khi tạo mô

hình để kiểm tra tính chính xác của mô hình vừa được tạo ra.
Tại sao là đây là bước mở rộng quan trọng trong mô hình này? Vấn đề này được
gọi là overfitting: Nếu chúng ta cung cấp các dữ liệu quá nhiều vào mô hình tạo ra, mô
hình sẽ thực sự được tạo ra hoàn hảo, nhưng chỉ dành cho dữ liệu đó thôi. Hãy nhớ rằng:
Chúng ta muốn sử dụng mô hình để dự đoán những điều chưa biết trong tương lai, chúng
ta không muốn mô hình dự đoán những điều chúng ta đã biết. Đây là lý do tại sao chúng
ta tạo ra một tập kiểm tra. Sau khi tạo ra các mô hình, chúng ta kiểm tra để đảm bảo rằng
sự chính xác của mô hình chúng tôi xây dựng không giảm với các thiết lập thử nghiệm.
Điều này đảm bảo rằng mô hình của chúng tôi sẽ dự đoán chính xác giá trị tương lai vô
định. Chúng ta sẽ thấy điều này trong các thao tác sử dụng WEKA.
Điều này sẽ mang đến một một trong những khái niệm quan trọng của cây phân
lớp: khái niệm cắt tỉa (prunning). Prunning liên quan đến việc loại bỏ các nhánh của cây
phân lớp. Tại sao lại muốn loại bỏ thông tin từ cây? Điều này là do các khái niệm về
overfitting. Khi bộ dữ liệu phát triển lớn hơn và số thuộc tính phát triển lớn hơn, chúng ta
có thể tạo ra các cây trở nên ngày càng phức tạp. Về mặt lý thuyết, có thể có một cây với
leaves = (rows * attributes) . Điều đó sẽ không giúp chúng ta ở tất cả các dự đoán chưa
biết trong tương lai, vì nó hoàn toàn phù hợp cho dữ liệu huấn luyện hiện tại. Chúng ta
muốn tạo ra một sự cân bằng. Chúng ta muốn cây của chúng ta đơn giản càng tốt, với
các nút càng ít càng tốt. Nhưng chúng ta cũng muốn nó được là chính xác nhất có thể.
Cuối cùng, việc nâng cao về phân loại trước khi sử dụng WEKA là khẳng định sai
và phủ định sai (false positive và false negative). Về cơ bản, một khẳng định sai là một ví
dụ dữ liệu nơi mà các mô hình chúng ta đã tạo ra dự đoán nó phải là tích cực, nhưng thay
vào đó, giá trị thực tế là tiêu cực. Ngược lại, phủ định sai là một ví dụ dữ liệu mô hình dự
đoán nó phải được tiêu cực, nhưng giá trị thực tế là tích cực.
Những lỗi này cho thấy có vấn đề trong mô hình của chúng ta, như là mô hình
phân lớp không chính xác một số dữ liệu. Trong khi một số phân lớp không chính xác có
thể được mong đợi, thì việc tạo ra mô hình để xác định tỷ lệ phần trăm chấp nhận được
lỗi là những gì. Ví dụ, nếu các kiểm tra theo dõi nhịp tim ở bệnh viện, rõ ràng, bạn sẽ yêu
cầu một tỷ lệ lỗi rất thấp. Mặt khác, nếu bạn chỉ sử dụng khai thác dữ liệu đơn giản trong
14

Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
một bài viết về khai thác dữ liệu nào đó, việc chấp nhận được tỷ lệ phần trăm lỗi của bạn
có thể cao hơn nhiều. Để thực hiện việc này thậm chí còn thêm một bước nữa, bạn cần
phải quyết định % phủ định sai, so với khẳng định sai có thể chấp nhận được. Ví dụ một
mô hình thư rác: khẳng định sai (một thực tế e-mail mà được gọi là spam) có lẽ là nguy
hiểm hơn rất nhiều hơn so với một phủ định sai (thư rác nhận được dán nhãn không phải
spam). Trong một ví dụ như thế này, bạn có thể đánh giá một tối thiểu là tỷ lệ 100/1 phủ
định sai trên khẳng định để có thể chấp nhận được.
2.2 Xây dựng tập dữ liệu cho Weka
Dữ liệu có thể được nhập vào từ một tập tin có khuôn dạng: ARFF, CVS, hoặc từ
một cơ sở dữ liệu thông qua JDBC. Phương pháp ưa tiên của Weka để tải dữ liệu theo
định dạng tập tin ARFF (File Format Attribute-Relation File Format), tập tin này có thể
xác định các loại dữ liệu được nạp, sau đó cung cấp các dữ liệu chính nó. Trong tập tin,
bạn xác định mỗi cột và mỗi cột có chứa những gì. Trong trường hợp của mô hình hồi
quy, bạn bị giới hạn một cột NUMERIC hoặc một cột DATE . Cuối cùng, bạn cung cấp
mỗi dòng dữ liệu trong một định dạng phân cách bằng dấu phẩy.
Ví dụ: định dạng của tập dữ liệu
2.3 Ứng dụng phân lớp trong Weka
Sự phát triển của các ứng dụng khai thác dữ liệu chẳng hạn như phân lớp và phân
nhóm đã cho thấy sự cần thiết phải các thuật toán học được áp dụng cho các dữ liệu quy
mô lớn. Trong phần này trình bày sự so sánh khác nhau kỹ thuật phân lớp bằng cách sử
dụng WEKA. WEKA là một phần mềm mã nguồn mở bao gồm một tập hợp các thuật
toán máy học cho các nhiệm vụ khai thác dữ liệu. Mục đích của phần này là để điều tra
việc thực hiện phân lớp khác nhau hoặc phương pháp phân nhóm cho một tập hợp các dữ
15
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
liệu lớn. Các thuật toán hoặc các phương pháp thử nghiệm các thuật toán Bayes Network,
Radial Basis Function, Pruned Tree, Single Conjunctive Rule Learner and Nearest
Neighbors.
2.3.1 Dữ liệu đầu vào

Sử dụng tập dữ liệu của sở thú để phân lớp nhóm động vật. Cơ sở dữ liệu đầu vào
gồm 2 tập tin: zoo.data và zoo.names (Nguồn: />learning-databases/zoo/ )
Mô tả dữ liệu:
- Đây là một cơ sở dữ liệu đơn giản có chứa 17 thuộc tính giá trị Boolean. Thuộc
tính “type” là thuộc tính lớp.
- Số các trường hợp :101
- Số các thuộc tính: 18 (animal name, 15 Boolean attributes, 2 numerics)
- Thông tin thuộc tính: (tên và kiểu dữ liệu)
1. animal name: Unique for each instance
2. hair Boolean
3. feathers Boolean
4. eggs Boolean
5. milk Boolean
6. airborne Boolean
7. aquatic Boolean
8. predator Boolean
9. toothed Boolean
10. backbone Boolean
11. breathes Boolean
12. venomous Boolean
13. fins Boolean
14. legs Numeric (set of values: {0,2,4,5,6,8})
15. tail Boolean
16. domestic Boolean
17. catsize Boolean
18. type Numeric (integer values in range [1,7])
- Dữ liệu được chia ra làm 7 lớp nhưa sau:
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
16
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
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
Từ hai tập tin zoo.data và zoo.names, ta tạo ra tập tin theo định dạng ARFF để
Weka có thể đọc được.
2.3.2 Phân lớp dữ liệu bằng Weka
- Tiền xử lý:
o Mở giao diện Explorer
o Mở tập tin zoo.arff vừa mới tạo ra
17
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
o Nhấn Visualize All để xem biểu đồ bộ dữ liệu Zoo
- Phân lớp bằng Navie Bayes
o Mở tab Classify
18
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
o Chọn thuật toán Naive Bayes trong mục Classifier
o Trong mục Test option, ta dùng Cross-validation Folds 10. Đâ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.
o Chọn thuộc tính phân lớp là (Nom) type
o Nhấn vào Start để tiến hành phân lớp. Kết quả:
 Phân được 7 lớp : mammal, bird, reptile, fish, amphibian, insect,
invertebrate
 Phân loại chính xác: 95,0495 % các trường hợp
 Phân loại không chính xác: 4,9505 % các trường hợp
19
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
=== Summary ===
Correctly Classified Instances 96 95.0495 %
Incorrectly Classified Instances 5 4.9505 %
Kappa statistic 0.9352
Mean absolute error 0.0153
Root mean squared error 0.098
Relative absolute error 6.9784 %
Root relative squared error 29.693 %
Total Number of Instances 101
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.951 0 1 0.951 0.975 1 mammal
1 0 1 1 1 1 bird
0.4 0 1 0.4 0.571 0.994 reptile
1 0.034 0.813 1 0.897 1 fish
1 0.021 0.667 1 0.8 1 amphibian
1 0 1 1 1 1 insect
1 0 1 1 1 1 invertebrate
0.95 0.005 0.963 0.95 0.947 1 Weighted Avg.
=== Confusion Matrix ===

a b c d e f g < classified as
39 0 0 2 0 0 0 | a = mammal
0 20 0 0 0 0 0 | b = bird
0 0 2 1 2 0 0 | c = reptile
0 0 0 13 0 0 0 | d = fish
0 0 0 0 4 0 0 | e = amphibian
0 0 0 0 0 8 0 | f = insect
1 0 0 0 0 0 10 | g = invertebrate
- Phân lớp bằng J48
o Cùng dữ liệu nhập vào ở trên, trong tab Classify, Chọn thuật toán J48
trong Classifier.
20
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
o Chọn Cross validation Folds trong mục Test options là 10
o Chọn thuộc tính để phân lớp là type
o Nhấn Start để thực thi phân lớp. Kết quả
 Phân được 7 lớp : mammal, bird, reptile, fish, amphibian, insect,
invertebrate
 Phân loại chính xác: 92.0792 % các trường hợp
 Phân loại không chính xác: 7.9208 % các trường hợp
=== Summary ===
Correctly Classified Instances 93 92.0792 %
Incorrectly Classified Instances 8 7.9208 %
Kappa statistic 0.8955
Mean absolute error 0.0225
Root mean squared error 0.14
Relative absolute error 10.2478 %
Root relative squared error 42.4398 %
Total Number of Instances 101
=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1 0 1 1 1 1 mammal
1 0 1 1 1 1 bird
0.6 0.01 0.75 0.6 0.667 0.793 reptile
1 0.011 0.929 1 0.963 0.994 fish
0.75 0 1 0.75 0.857 0.872 amphibian
0.625 0.032 0.625 0.625 0.625 0.92 insect
0.8 0.033 0.727 0.8 0.762 0.986 invertebrate
0.921 0.008 0.922 0.921 0.92 0.976 Weighted Avg.
=== Confusion Matrix ===
a b c d e f g < classified as
21
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
41 0 0 0 0 0 0 | a = mammal
0 20 0 0 0 0 0 | b = bird
0 0 3 1 0 1 0 | c = reptile
0 0 0 13 0 0 0 | d = fish
0 0 1 0 3 0 0 | e = amphibian
0 0 0 0 0 5 3 | f = insect
1 0 0 0 0 2 8 | g = invertebrate
2.3.3 Nhận xét
- Sau khi phân lớp bằng 2 thuật toán: Naïve Beyes và J48, ta thấy thuật toán
Naïve Bayes thực hiện bài toán phân lớp hiệu quả hơn.
- Thuật toán J48 cho ra giao diện đồ họa về cây phân lớp, từ đây ta rút ra được kết
luận về các luật về 7 lớp động vật:
22
Bài thu hoạch: Môn Khai phá dữ liệu Cao học CNTT khóa 6
Chương 3: Kết luận
Cây phân loại là tạo ra một cây với các nhánh, các nút, và lá cho phép chúng ta lấy
điểm dữ liệu không rõ và cho xuống cây, áp dụng các thuộc tính của các điểm dữ liệu cho

cây cho đến khi đạt được một lá và đầu ra của dữ liệu có thể được xác định. Chúng ta đã
học được rằng để tạo ra một mô hình phân loại cây tốt, chúng ta cần phải có một dữ liệu
hiện có với dữ liệu đầu ra rõ, từ đó chúng ta có thể xây dựng mô hình của chúng ta.
Chúng ta cũng thấy rằng chúng ta cần phải phân chia dữ liệu thành hai phần: một tập
huấn luyện, được sử dụng để tạo ra các mô hình và thiết lập một thử nghiệm, được sử
dụng để xác minh rằng mô hình là chính xác và không overfitted.
23

×