Phân lớp dữ liệu bằng cây quyết định trong
ngôn ngữ R
Classification by Decision Tree with R
chuc1803@gmail.com
Cây
quyết định là kỹ thuật được dùng rất phổ biển trong phân lớp dữ liệu (xem thêm
bài viết về cây quyết định tại đây: http://bis.net.vn/forums/t/378.aspx).
Bài viết này giới thiệu kỹ thuật phân lớp dữ liệu bằng cây quyết định trong
ngôn ngữ R.
Data
set: iris (Download tại ĐÂY).
Tools:
R, Package: party, Function: ctree
(Download Code R tại
ĐÂY)
#Load
data set iris
setwd("D:/R") # Dặt lại thư mục làm việc
library("xlsx") # load thư mục đọc file Excel
iris=read.xlsx("iris.xlsx",1, header=T) # Đọc dữ
liệu
attach(iris) # Gán dữ liệu vào phân tích
fix(iris) # Xem và hiệu chỉnh dữ liệu
summary(iris) # Xem thống kê về dữ liệu
#Chia dữ liệu thành 2
phần TrainingData (70%) và TestingData (30%) một cách ngẫu nhiên
ind = sample(2,
nrow(iris), replace=TRUE, prob=c(0.7, 0.3)) # Tạo bộ giá trị ngẫu nhiên
trainData = iris[ind==1,] #Training Data
testData = iris[ind==2,] #Testing Data
library("party") # Load thư viện party
iris_ctree = ctree(Species ~ Sepal.Length + Sepal.Width +
Petal.Length + Petal.Width, data=trainData) # Hàm ctree để xây dựng cây quyết định
với Training Data
print(iris_ctree)# Hiển thị các thông tin về cây quyết định
đã xây dựng
plot(iris_ctree) # Vẽ cây quyết định
plot(iris_ctree, type="simple")
table(predict(iris_ctree), trainData$Species, dnn=c("Prediction", "Actual")) # Kiểm tra kết
quả dự đoán của mô hình
Confusion Matrix của mô hình dự đoán với Training Data.
Kết quả cho thấy mô hình phân lớp rất tốt với độ chính xác 95.5% (=(34+35+36)/(34+35+36+1+4))
testPred = predict(iris_ctree, newdata = testData) # Sử dụng
Testing Data để kiểm tra Model
table(testPred, testData$Species, dnn=c("Prediction", "Actual")) # Kết quả dự đoán với
Testing Data
Kết quả dự đoán với Testing Data là 97.5% (=(16+14+9)/(16+14+9+1))