PHÂN LỚP DỮ LIỆU BẰNG
CÂY QUYẾT ĐỊNH VÀ NAÏVE BAYES TRONG SQL SERVER ANALYSIS SERVICES
chuc1803@gmail.com
Bài viết này giới thiệu
kỹ thuật phân lớp dữ liệu dựa vào cây quyết định và Naïve Bayes trong khai phá
dữ liệu.
Dữ liệu dùng để minh họa
cho 2 kỹ thuật này là dữ liệu về thời tiết của 14 ngày như sau:
SQL Script tạo CSDL minh họa (Copy and run)
IF EXISTS (SELECT name FROM sys.tables WHERE name = N'ClassificationExample')
DROP TABLE dbo.ClassificationExample;
create table dbo.ClassificationExample
(
PKey integer identity(1,1) Primary Key,
Outlook varchar(8) not null,
Temperature varchar(4) not null,
Humidity varchar(6) not null,
Windy varchar(5) not null,
Play varchar(3) not null
)
insert into dbo.ClassificationExample values ('sunny','hot','high','FALSE','no')
insert into dbo.ClassificationExample values ('sunny','hot','high','TRUE','no')
insert into dbo.ClassificationExample values ('overcast','hot','high','FALSE','yes')
insert into dbo.ClassificationExample values ('rainy','mild','high','FALSE','yes')
insert into dbo.ClassificationExample values ('rainy','cool','normal','FALSE','yes')
insert into dbo.ClassificationExample values ('rainy','cool','normal','TRUE','no')
insert into dbo.ClassificationExample values ('overcast','cool','normal','TRUE','yes')
insert into dbo.ClassificationExample values ('sunny','mild','high','FALSE','no')
insert into dbo.ClassificationExample values ('sunny','cool','normal','FALSE','yes')
insert into dbo.ClassificationExample values ('rainy','mild','normal','FALSE','yes')
insert into dbo.ClassificationExample values ('sunny','mild','normal','TRUE','yes')
insert into dbo.ClassificationExample values ('overcast','mild','high','TRUE','yes')
insert into dbo.ClassificationExample values ('overcast','hot','normal','FALSE','yes')
insert into dbo.ClassificationExample values ('rainy','mild','high','TRUE','no')
Phân
lớp dữ liệu bằng cây quyết định (Decision Tree)
Xem thêm về lý thuyết về
cây quyết định tại đây (http://bis.net.vn/forums/t/378.aspx)
Bước 1. Khởi động SQL
Server Data Tools và tạo một Analysis Project có tên ClassificationExample như sau:
Trong cửa sổ Solution
Explorer tạo mới 1 Data Source như sau
Tiếp tục tạo Data
Source View như sau:
Trong cửa sổ Solution
Explorer tạo mới Data Mining structure cây quyết định như sau:
Chọn các thuộc tính
Key, Input và Predict cho mô hình như sau:
Chọn dữ liệu để test mô hình. Dữ liệu để xây dựng (training)
và kiểm tra (testing) mô hình có thể dùng chung 1 data set và thông thường dữ
liệu để test model là 30%. Nếu dữ liệu để test model trong 1 data set khác hoặc
muốn dùng 100% dữ liệu để training model thì để testing data bằng 0.
Thiết lập các tham số để
chạy mô hình: Right Click vào Model và chọn Set Algorithm Parameters
Thiết lập lại các tham
số như sau:
Thực hiện (Deploy) mô
hình: Right Click vào model và chọn Deploy. Kết quả cây quyết định như sau:
Mạng phụ thuộc của mô
hình
Phân
lớp dữ liệu bằng Naïve Bayes
Xem thêm về lý thuyết phân lớp dữ liệu bằng Naïve Bayes
tại đây: (http://bis.net.vn/forums/t/390.aspx)
Trong Solution
Explorer, chọn Mining Structures, Tạo mới một Mining Structure như sau:
Tiếp theo xác định
Input, Key, Predict, Testing data thiết lập tương tự như cây quyết định
Thiết lập tham số cho thuật toán như sau:
Kết quả mô hình phân lớp
bằng Naïve Bayes như sau:
Mạng
phụ thuộc
Sự
khác biệt giữa các thuộc tính
Sau
khi xây dựng mô hình phân lớp dữ liệu, ta có thể sử dụng mô hình đã xây dựng để
dự đoán dữ liệu chưa biết.
Giả
sử ta có dữ liệu về thời tiết của một ngày như sau:
Humidity: normal; Outlook: Sunny; Temperature:
mild; Windy: False
Bây ta sử dụng mô hình phân lớp Naïve Bayes vừa xây
dựng để dự đoán với thời tiết này thì có khả năng người ta có đến sân chơi thể
thao hay không (Play = Yes hoặc No)
Trong Tab Mining Model Prediction chọn Select Case
Table chọn bảng dữ liệu input và bấm OK. Chú ý ánh xạ (Mapping) giữa các cột của
Model và các cột của bảng dữ liệu input cho đúng (xem hình sau)
Right
Click và Input Table và chọn Singleton Query
Thiết kế query dự đoán như sau, xem kết quả thì bấm
Result trên góc trên trái của window design
Kết quả dự đoán: Play =Yes với xác suất 0.72
Cửa sổ Soluttion
Explorer của Data Mining Project “ClassificationExample”