I. Mô tảCho cơ sở dữ liệu về những người chơi Games , chúng ta sẽ nghiên cứu gói dữ liệu này để rút ra phương hướng phát hành , thu phí và thị trường phát triển game ngày nay . Đây là một vấn đề khá được quan tâm , trong đó đại bộ phận là giới trẻBộ dữ liệu là bản ghi về những người chơi games trong đó bao gồm : giới tính, Thể loại game , yêu cầu cấu hình máy tính , mức phí chơi , nhà phát hành game và kết luận là họ có chơi game đó hay không . Thuật toán phân lớp sẽ được lựa chọn áp dụng trên bộ dữ liệu này.II. Thực nghiệm trên WEKA1. Tiền xử lý dữ liệu:Trong qui trình khai phá dữ liệu, công việc xử lý dữ liệu trước khi đưa vào các mô hình là rất cần thiết, bước này làm cho dữ liệu có được ban đầu qua thu thập dữ liệu (gọi là dữ liệu gốc original data) có thể áp dụng được (thích hợp) với các mô hình khai phá dữ liệu (data mining model) cụ thể. Các công việc cụ thể của tiền xử lý dữ liệu bao gồm những công việc như:oFiltering Attributes: Chọn các thuộc tính phù hợp với mô hìnhoFiltering samples: Lọc các mẫu (instances, patterns) dữ liệu cho mô hìnhoClean data: Làm sạch dữ liệu như xóa bỏ các dữ liệu bất thường (Outlier) Transformation: Chuyển đổi dữ liệu cho phù hợp với các mô hình như chuyển đổi dữ liệu từ numeric qua nomial hay ordinaloDiscretization (rời rạc hóa dữ liệu): Nếu bạn có dữ liệu liên tục nhưng một vài mô hình chỉ áp dụng cho các dữ liệu rời rạc (như luật kết hợp ) thì bạn phải thực hiện việc rời rạc hóa dữ liệu.
Trang 1Học viện kỹ thuật quân sự Khoa Công nghệ thông tin
BÁO CÁO MÔN HỌC KHAI PHÁ DỮ LIỆU
Đề tài: Sử
dụng phần mềm weka khai phá bộ dữ liệu Gamers
với thuật toán phân lớp
Giáo viên hướng dẫn: Hồ Nhật Quang Sinh Viên: Trần Anh Tú
Lớp : HTTT6
I Mô tả
Trang 2Cho cơ sở dữ liệu về những người chơi Games , chúng ta sẽ nghiên cứu gói
dữ liệu này để rút ra phương hướng phát hành , thu phí và thị trường phát triển game ngày nay Đây là một vấn đề khá được quan tâm , trong đó đại
bộ phận là giới trẻ
Bộ dữ liệu là bản ghi về những người chơi games trong đó bao gồm : giới tính, Thể loại game , yêu cầu cấu hình máy tính , mức phí chơi , nhà phát hành game và kết luận là họ có chơi game đó hay không Thuật toán phân lớp sẽ được lựa chọn áp dụng trên bộ dữ liệu này.
II Thực nghiệm trên WEKA
1 Tiền xử lý dữ liệu:
Trong qui trình khai phá dữ liệu, công việc xử lý dữ liệu trước khi đưa vào các mô hình là rất cần thiết, bước này làm cho dữ liệu có được ban đầu qua thu thập dữ liệu (gọi là dữ liệu gốc original data) có thể áp dụng được (thích hợp) với các mô hình khai phá dữ liệu (data mining model) cụ thể Các công việc cụ thể của tiền xử lý dữ liệu bao gồm những công việc như:
o Filtering Attributes: Chọn các thuộc tính phù hợp với mô
hình
o Filtering samples: Lọc các mẫu (instances, patterns) dữ
liệu cho mô hình
o Clean data: Làm sạch dữ liệu như xóa bỏ các dữ liệu bất thường (Outlier) Transformation: Chuyển đổi dữ liệu cho phù hợp với
các mô hình như chuyển đổi dữ liệu từ numeric qua nomial hay ordinal
o Discretization (rời rạc hóa dữ liệu): Nếu bạn có dữ liệu liên
tục nhưng một vài mô hình chỉ áp dụng cho các dữ liệu rời rạc (như luật kết hợp ) thì bạn phải thực hiện việc rời rạc hóa dữ liệu
Trang 3Trong bài toán hiện tại , các bước tiền xử lý dữ liệu cụ thể như sau:
- Khởi động WEKA Explorer Chọn cơ sở dữ liệu parkinsons.csv bằng cách chọn OpenFile… chọn kiểu dữ liệu CSV data file (*.csv) rồi chọn đường dẫn
tới file game.csv
Trang 4Sau khi đã tải xong cơ sở dữ liệu ,ta sẽ thấy xuất hiện trên cửa số
Preprocess của WEKA như sau:
Tab bên trái là danh sách các thuộc tính , Tab bên phải là chi tiết từng thuộc tính được trỏ vào
Trích chọn thuộc tính trong Weka
- Trong WEKA, một phương pháp lựa chọn thuộc tính (Attribute
selection) bao gồm2 phần:
o Attribute Evaluator Để
Trang 5xác định một phương pháp đánh giá mức • Attribute Evaluator Để xác định một phương pháp đánh giá mức
độ phù hợpcủa các thuộc tính
+ Vd: correlation-based, wrapper, information gain, chisquared squared,…
o Search Method Để xác
định mộtphương pháp (thứ tự) xét các thuộc tính
+ Vd: best-first, random, exhaustive, ranking,…
- Trong bộ dữ liệu đang sử dụng, có thể có nhiều thuộc tính không cần để xem xét 1 người có bị bệnh về tuyến giáp hay không, ví
dụ như: , ta sử dụng công cụ trích chọn thuộc tính như sau:
- Mở weka, chọn mở cơ sở dữ liệu game.arff, ta có màn hình
Preprocess
- Chọn tab “Select attributes”, trong mục “Attribute Evaluaror” chọn
WrapperSubsetEval, trong mục Classifier chọn NaiveBayes
Trong mục Search Method chọn GredySteepWise , ở select box thứ 3 chọn giá trị True và Start , ta sẽ thu được kết quả
Trang 6=== Run information ===
Evaluator: weka.attributeSelection.WrapperSubsetEval -B weka.classifiers.bayes.NaiveBayes -F 5 -T 0.01 -R 1
Search:weka.attributeSelection.GreedyStepwise B T
-1.7976931348623157E308 -N -1
Relation: game-weka.filters.unsupervised.attribute.Remove-R1 Instances: 151
Attributes: 6
GioiTinh
Trang 7LoaiGame
ThuPhi
CauHinh
NhaPhatHanh
QuyetDinh
Evaluation mode:evaluate on all training data
=== Attribute Selection on all input data ===
Search Method:
Greedy Stepwise (backwards).
Start set: all attributes
Merit of best subset found: 0.368
Attribute Subset Evaluator (supervised, Class (nominal): 6 QuyetDinh): Wrapper Subset Evaluator
Learning scheme: weka.classifiers.bayes.NaiveBayes
Scheme options:
Accuracy estimation: classification error
Number of folds for accuracy estimation: 5
Selected attributes: 1,2,3,4,5 : 5
GioiTinh
LoaiGame
ThuPhi
CauHinh
NhaPhatHanh
Trong gói dữ liệu này ,thuộc tính “STT” ở đây biểu thị số thứ tự , không
cần thiết cho quá trình khai phá dữ liệu nên ta sẽ loại bỏ nó đi , các bước loại bỏ như sau :
Trong panel Filter > Choose > filters >unsupervised > attribute > Remove
Trang 8Bước tiếp theo là bấm vào textbox ngay bên phải nút “Choose” và điền vào giá trị 1 (đây
là index của thuộc tính "STT" trong file dữ liệu) Chú ý rằng tùy chọn "invertSelection"
phải được thiết lập là false
Ngay sau khi bấm apply ,thuộc tính "STT" sẽ bị loại bỏ
Ta có màn hình bên dưới
Trang 9Tới đấy ta Save cơ sở dữ liệu này thành file có dạng *.arff để thực hiện thuật toán phân
lớp ( mục save ở phía trên bên phải của weka )
2.Thuật toán phân lớp
Thực hiện thuật toán
- Trong bài toán này, ta sẽ áp dụng thử 2 thuật toán phân lớp,
đó là: cây quyết định (Decision tree) là J48 và SimpleCART và
mô hình MultilayerPerceptron của mạng Neuron (Neural network)
=== Run information ===
a Kết quả khi J48 với các thông số như sau (chia dữ liệu thành 10 phần)
Trang 10=== Run information ===
Scheme:weka.classifiers.trees.J48 -C 0.25 -M 2 Relation:
game-weka.filters.unsupervised.attribute.Remove-R1 Instances: 151
Attributes: 6
GioiTinh
LoaiGame
ThuPhi
CauHinh
NhaPhatHanh
QuyetDinh
Test mode:10-fold cross-validation
=== Classifier model (full training set) ===
J48 pruned tree
-NhaPhatHanh = VNG: Co (63.0/19.0)
NhaPhatHanh = VTC: Co (36.0/11.0)
NhaPhatHanh = FPT
| ThuPhi <= 4: Khong (22.0/7.0)
| ThuPhi > 4
| | LoaiGame = NhapVai
| | | GioiTinh <= 0: Co (2.0)
| | | GioiTinh > 0: Khong (3.0)
| | LoaiGame = Bansung
| | | GioiTinh <= 0
| | | | ThuPhi <= 5: Co (2.0)
| | | | ThuPhi > 5: Khong (2.0)
| | | GioiTinh > 0: Co (3.0)
| | LoaiGame = TheThao: Khong (5.0/2.0)
| | LoaiGame = ChienThuat: Co (13.0/4.0)
Trang 11Number of Leaves : 10 Size of the tree : 16 Time taken to build model: 0 seconds
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances 87 57.6159 % Incorrectly Classified Instances 64 42.3841 % Kappa statistic -0.0138
Mean absolute error 0.4741 Root mean squared error 0.5155 Relative absolute error 100.7457 % Root relative squared error 106.3026 % Total Number of Instances 151
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.83 0.842 0.619 0.83 0.709 0.45 Co
0.158 0.17 0.36 0.158 0.22 0.45 Khong
Weighted Avg 0.576 0.588 0.521 0.576 0.524 0.45
=== Confusion Matrix ===
a b < classified as
78 16 | a = Co
48 9 | b = Khong
Theo cây quyết định ở kết quả trên, khi đưa ra một bộ dữ liệu mới, ta sẽ xác định được kết quả là người này có quyết định sẽ chơi game mới hay không
b Kết quả chạy thuật toán theo mô hình MultilayerPerceptron của mạng Neuron
Correctly Classified Instances 74 49.0066 %
Trang 12Incorrectly Classified Instances 77 50.9934 %
Kappa statistic -0.0813
Mean absolute error 0.5007
Root mean squared error 0.6412
Relative absolute error 106.393 %
Root relative squared error 132.2168 %
Total Number of Instances 151
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.585 0.667 0.591 0.585 0.588 0.45 Co
0.333 0.415 0.328 0.333 0.33 0.45 Khong Weighted Avg 0.49 0.572 0.492 0.49 0.491 0.45
=== Confusion Matrix ===
a b < classified as
55 39 | a = Co
38 19 | b = Khong
c Kết quả khi J48 với các thông số như sau (khai thác trên 40% dữ liệu)
=== Run
information ===
Scheme:weka.classifiers.trees.J48 -C 0.25 -M 2
Relation: game-weka.filters.unsupervised.attribute.Remove-R1
Trang 13Instances: 151
Attributes: 6
GioiTinh
LoaiGame
ThuPhi
CauHinh
NhaPhatHanh
QuyetDinh
Test mode:split 60.0% train, remainder test
=== Classifier model (full training set) ===
J48 pruned tree
-NhaPhatHanh = VNG: Co (63.0/19.0)
NhaPhatHanh = VTC: Co (36.0/11.0)
NhaPhatHanh = FPT
| ThuPhi <= 4: Khong (22.0/7.0)
| ThuPhi > 4
| | LoaiGame = NhapVai
| | | GioiTinh <= 0: Co (2.0)
| | | GioiTinh > 0: Khong (3.0)
| | LoaiGame = Bansung
| | | GioiTinh <= 0
| | | | ThuPhi <= 5: Co (2.0)
| | | | ThuPhi > 5: Khong (2.0)
| | | GioiTinh > 0: Co (3.0)
| | LoaiGame = TheThao: Khong (5.0/2.0)
| | LoaiGame = ChienThuat: Co (13.0/4.0)
Number of Leaves : 10
Size of the tree : 16
Time taken to build model: 0 seconds
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances 36 60 % Incorrectly Classified Instances 24 40 % Kappa statistic 0.1628
Mean absolute error 0.4661
Root mean squared error 0.523
Trang 14Relative absolute error 99.2617 %
Root relative squared error 109.5509 %
Total Number of Instances 60
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.625 0.45 0.735 0.625 0.676 0.587 Co
0.55 0.375 0.423 0.55 0.478 0.587 Khong Weighted Avg 0.6 0.425 0.631 0.6 0.61 0.587
=== Confusion Matrix ===
a b < classified as
25 15 | a = Co
9 11 | b = Khong
d Kết quả khi J48 với các thông số như sau (khai thác trên 50% dữ liệu)
=== Run information
===
Scheme:weka.classifiers.trees.J48 -C 0.25 -M 2
Relation: game-weka.filters.unsupervised.attribute.Remove-R1
Instances: 151
Attributes: 6
GioiTinh
LoaiGame
ThuPhi
CauHinh
NhaPhatHanh
QuyetDinh
Test mode:split 50.0% train, remainder test
=== Classifier model (full training set) ===
Trang 15J48 pruned tree
-NhaPhatHanh = VNG: Co (63.0/19.0)
NhaPhatHanh = VTC: Co (36.0/11.0)
NhaPhatHanh = FPT
| ThuPhi <= 4: Khong (22.0/7.0)
| ThuPhi > 4
| | LoaiGame = NhapVai
| | | GioiTinh <= 0: Co (2.0)
| | | GioiTinh > 0: Khong (3.0)
| | LoaiGame = Bansung
| | | GioiTinh <= 0
| | | | ThuPhi <= 5: Co (2.0)
| | | | ThuPhi > 5: Khong (2.0)
| | | GioiTinh > 0: Co (3.0)
| | LoaiGame = TheThao: Khong (5.0/2.0)
| | LoaiGame = ChienThuat: Co (13.0/4.0)
Number of Leaves : 10
Size of the tree : 16
Time taken to build model: 0.01 seconds
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances 34 45.3333 %
Incorrectly Classified Instances 41 54.6667 %
Kappa statistic -0.1402
Mean absolute error 0.4893
Root mean squared error 0.5156
Relative absolute error 103.8292 %
Root relative squared error 107.0988 %
Total Number of Instances 75
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.521 0.667 0.581 0.521 0.549 0.427 Co 0.333 0.479 0.281 0.333 0.305 0.427 Khong Weighted Avg 0.453 0.599 0.473 0.453 0.461 0.427
=== Confusion Matrix ===
Trang 16a b < classified as
25 23 | a = Co
18 9 | b = Khong
Đánh giá kết quả :
Việc lựa chọn thuật toán để phân tích dataset rất quan trọng , mỗi dataset thích hợp với loại thuật toán khác nhau
Chẳng hạn như 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)
Kết quả cho thấy việc chia dữ liệu thành các gói để phân tích cho kết quả khá xấp xỉ nhau