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

Trích chọn thuộc tính trong R

Bài cuối 07-27-2017 09:08 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
  • 07-27-2017 09:08 PM

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

    Trích chọn thuộc tính trong R

    Trích chọn thuộc tính trong R

    chuc1803@gmail.com

    Trích chọn thuộc tính hay còn gọi là trích chọn đặc trưng (feature selection| feature extraction) là một bước tiền xử lý quan trọng trong khai phá dữ liệu, giúp đánh giá được mức độ tác động (quan trọng) của các thuộc tính để từ đó chọn ra được tập thuộc tính tốt nhất để xây dựng mô hình, giúp làm tăng hiệu suất và rút ngắn thời gian huấn luyện mô hình.

    Bài viết này giới thiệu cách sử dụng package caret trong R để minh họa vấn đề trích chọn thuộc tính, cụ thể:

    ·         Làm sao để loại bỏ các thuộc tính thừa trong dataset.

    ·         Làm sao để xếp hạng (rank) các thuộc tính trong dataset theo mức độ quan trọng của chúng.

    ·         Làm sao để chọn được các thuộc tính trong dataset sử dụng phương pháp Recursive Feature Elimination (RFE).

    Dataset minh họa là dữ liệu về bệnh đái tháo đường của các phụ nữ mang thai, xem mô tả chi tiết về dataset Pima Indians Diabetes tại ĐÂY

     

    1.    Làm sao để loại bỏ các thuộc tính thừa trong dataset.

    ##Remove Redundant Features

    # ensure the results are repeatable

    set.seed(7)

    #install package mlbench

    install.packages("mlbench")

    # load the library

    library(mlbench)

    library(caret)

    # load the data

    data(PimaIndiansDiabetes)

    fix(PimaIndiansDiabetes)

    # calculate correlation matrix

    correlationMatrix <- cor(PimaIndiansDiabetes[,1:8])

    # summarize the correlation matrix

    print(correlationMatrix)

    library(psych)

    pairs.panels(PimaIndiansDiabetes)

    # find attributes that are highly corrected (ideally >0.75)

    highlyCorrelated <- findCorrelation(correlationMatrix, cutoff=0.5)

    # print indexes of highly correlated attributes

    print(highlyCorrelated)

    Theo kết quả trên thì thuộc tính thứ 8 (Age) bị loại vì có tương quan cao 
    với thuộc tính pregnant (hệ số tương quan =0.54434123 lớn hơn cutoff=0.5)

    2.    Làm sao để xếp hạng (rank) các thuộc tính trong dataset theo mức độ quan trọng của chúng.

    Mức độ quan trọng của thuộc tính trong dataset được ước lượng từ việc xây dựng mô hình. Một số phương pháp thường dùng để đánh giá mực độ quan trọng của các thuộc tính như sử dụng ROC curve hoặc LVQ(Learning Vector Quantization)

    Trong ví dụ này sử dụng LVQ để đánh giá mực độ quan trong của các thuộc tính.

    ##Rank Features By Importance

    # ensure results are repeatable

    set.seed(7)

    # load the library

    library(mlbench)

    library(caret)

    install.packages("e1071")

    library(e1071)

    # load the dataset

    data(PimaIndiansDiabetes)

    # prepare training scheme

    control <- trainControl(method="repeatedcv", number=10, repeats=3)

    # train the model

    model <- train(diabetes~., data=PimaIndiansDiabetes, method="lvq", preProcess="scale", trControl=control)

    # estimate variable importance

    importance <- varImp(model, scale=FALSE)

    # summarize importance

    print(importance)

    # plot importance

    plot(importance)

     

    Kết quả đánh giá chỉ ra rằng 3 thuộc tính quan trọng nhất là glucose, mass và age và thuộc tính insulin là ít quan trọng nhất.

    3.    Làm sao để chọn được các thuộc tính trong dataset sử dụng phương pháp Recursive Feature Elimination.

    Một phương pháp trích chọn thuộc tính phổ biến được cung cấp trong gói caret của R có tên là Recursive Feature Elimination (RFE).

    Sau đây minh họa việc sử dụng RFE để trích chọn thuộc tính trong dataset Pima Indians Diabetes. Thuật toán Random Forest được sử dụng trên mỗi vòng lặp để đánh giá model. Thuật toán được cấu hình để đánh giá trên tất cả các tập con có thể của tập thuộc tính trng dataset. Trong ví dụ này tất cả 8 thuộc tính đều được chọn, mặc dù trong đồ thị ta có thể thấy rằng chỉ có 4 thuộc tính cho kết quả có thể so sánh được. (Xem hình)

    ##Feature Selection

    # ensure the results are repeatable

    set.seed(7)

    # load the library

    library(mlbench)

    library(caret)

    # load the data

    data(PimaIndiansDiabetes)

    # define the control using a random forest selection function

    control <- rfeControl(functions=rfFuncs, method="cv", number=10)

    # run the RFE algorithm

    results <- rfe(PimaIndiansDiabetes[,1:8], PimaIndiansDiabetes[,9], sizes=c(1:8), rfeControl=control)

    # summarize the results

    print(results)

    # list the chosen features

    predictors(results)

    # plot the results

    plot(results, type=c("g", "o"))

     

     

     

     

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