Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

Phân lớp dữ liệu với Random Forest trong R

Bài cuối 08-13-2017 09:27 PM của chucnv. 0 trả lời.
Trang 1 trong số 1 (1 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 08-13-2017 09:27 PM

    • chucnv
    • 10 thành viên năng nổ nhất
    • Tham gia 12-05-2008
    • Điểm 9,440

    Phân lớp dữ liệu với Random Forest trong R

    Phân lớp dữ liệu với Random Forest trong R

    chuc180@gmail.com

     Trong các bài toán phân lớp dữ liệu thì Random Forest được sử rất dụng phổ biến dù có tuổi đời rất trẻ (được phát minh bởi Ho năm 1995). Random Forest được đánh giá cao bởi tính chính xác của mô hình. Nhược điểm chính của Random Forest khối lượng tính toán lớn, tuy nhiên với năng lực tính toán ngày càng tăng của máy tính (theo cấp lũy thừa) thì hạn chế của Random Forest không phải là vấn đề lớn.

    Bài viết này giới thiệu về cách triển khai Random Forest với ngôn ngữ R.

    Trong R hiện có ít nhất 3 packages có thể triển khai phân lớp dữ liệu với Random Forest là randomForest, caret và party. Bài viết này sử dụng gói randomForest để triển khai phân lớp dữ liệu trên dataset có tên Germancredit, đây là bộ dữ liệu về về hồ sơ vay của 1000 khách hàng với 61 thuộc tính và biến phân loại (Class) với 2 giá trị là Good và Bad. Mục đích của phân lớp dữ liệu là phân loại hồ sơ vay của khách hàng vào 2 loại là tốt hoặc xấu (Class = Good hoặc Class = Bab).

    Dataset Germencredit được tích hợp trong gói party. Xem chi tiết thông tin về dataset này tại: https://archive.ics.uci.edu/ml/datasets/Statlog+(German+Credit+Data)

    Bước 1. Load các gói cần thiết và dataset

    #Classification with Random Forest

    #Load requirement packages

    library(party) #To use dataset Germancredit

    library(randomForest)

    install.packages("e1071")

    library(e1071)

    #Load dataset GermanCredit integrated in party package

    data(GermanCredit)

    mydata <- GermanCredit

    str(mydata) #show structure of the dataset

    dim(mydata)

    fix(mydata)

    Bước 2. Chia dataset thành 2 phần training (70%) và testing(30%)

    set.seed(1803)

    #Split dataset to training (70%) and testing set (30%)

    ind <- sample(1:2, nrow(mydata), replace=TRUE, prob=c(0.7, 0.3))

    training<- mydata[ind==1,]

    testing<- mydata[ind==2,]

    dim(training)

    dim(testing)

    Bước 3. Huấn luyện mô hình Random Forest với biến phân loại Class

    #Run RandomForest algorithm

    rf.model <- randomForest(Class ~ ., data=training, ntree=500, proximity=TRUE)

    Bước 4. Đánh giá mô hình

    Đánh giá tỷ lệ sai sót huấn luyện (Evaluating training error rate).

    predict_train<- predict(rf.model, newdata = training)

    confusionMatrix(data=predict_train, training$Class)

    Dựa vào Confusion Matrix ta thấy mô hình có khả năng phân loại chính xác 100% (Accuracy =1) các hồ sơ vay (có nghĩa là tỷ lệ sai sót huấn luyện (training error rate)=1-100%=0%). Để đánh giá toàn diện mô hình, ta cần thêm đánh giá testing error rate (tỷ lệ sai sót kiểm định).

    Kiểm định mô hinh

    #Testing model

    predict_test<- predict(rf.model, newdata = testing)

    # Evaluating testing error rate.

    confusionMatrix(data=predict_test, testing$Class)

    Theo Confusion Matrix của kiểm định model ta thấy rằng tỷ lệ sai sót kiểm định (testing error rate) của mô hình là 1-78.69% =21.31%. Một hiện tượng liên quan khi nói đến tỷ lệ sai sót huấn luyện và tỷ lệ sai sót kiểm định trong các mô hình dự báo đó là hiện tượng quá khớp (overfiting), đây là hiện tượng xảy ra khi mô hình xây dựng rất phù hợp với dữ liệu huấn luyện (tỷ lệ sai sót huấn luyện rất thấp) nhưng lại không phù hợp với dữ liệu kiểm định (tỷ lệ sai sót kiểm định cao). So với tỷ lệ sai sót huấn luyện của mô hình ở trên là 0% thì có thể nói mô hình có dấu hiệu của hiện tượng overfiting.

    Đánh giá mức độ quan trong của các biến trong mô hình

    #Evaluate variable importance

    importance(rf.model)

    varImpPlot(rf.model)

     

    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems