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

Phân tích thành phần chính với R

Bài cuối 08-02-2017 10:18 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-02-2017 10:18 PM

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

    Phân tích thành phần chính với R

    Phân tích thành phần chính với R

    (Principal Component Analysis in R)

    chuc1803@gmail.com

    Phân tích thành phần chính (PCA - Principal Component Analysis) là kỹ thuật thường được sử dụng khi làm việc với các dataset nhiều chiều. PCA giúp làm giảm số chiều thường rất lớn của dữ liệu mà vẫn giữ lại được các thông tin cần thiết của bộ dữ liệu ban đầu. Mục tiêu của PCA là tìm một không gian mới với số chiều nhỏ hơn không gian cũ (số chiều trong không gian mới thường là 2 hoặc 3 chiều). Trong đó các trục tọa độ trong không gian mới được xây dựng sao cho trên mỗi trục độ biến thiên của dữ liệu trên đó là lớn nhất có thể (maximize the variability).

    Mục đích chính của PCA:

    1.     Giảm số chiều của dữ liệu (Dimensionality Reduction)

    2.     Trực quan hóa dữ liệu (Data Visualization) đối với các dataset có nhiều chiều thông tin.

    3.     Chuyển đổi dataset ban đầu với số chiều (biến) lớn thành dataset mới số chiều ít hơn nhưng vẫn đảm bảo giữ lại nhiều thông tin nhất, không ảnh hưởng đến độ chính xác của các mô hình dự báo.

    4.     PCA giúp xây dựng các nhân tố (factor) mới bằng cách tổ hợp tuyến tính các biến ban đầu.

    5.     Các thành phần chính không có mối tương quan tuyến tính với nhau

    6.     PCA giúp khám phá những thông tin mới mà có thể bị các chiều thông tin cũ che mất.

    Hạn chế của PCA:

    Chỉ phù hợp với dữ liệu số (numeric)

    Nhạy cảm với các dữ liệu bất thường Outlier

    Do PCA biến đổi hoàn toàn dựa trên trên phép biến đổi tuyến tính nên không phù hợp với các mô hình phi tuyến.

    Bài viết này minh họa cách sử dụng R để phân tích thành phần chính (PCA)

    Dataset minh họa

    Wine dataset (xem mô tả ở đây)

    Wine dataset là bộ dữ liệu từ kết quả phân tích hóa học của 13 thành phần được tìm thấy trong các loại rượu vang ở Ý. Dataset này được tích hợp trong gói “HDClassif”
    Download code R phân tích PCA tại ĐÂY

    Bước 1. Cài đặt gói “HDClassif” và load dữ liệu

    install.packages("HDclassif")

    library(HDclassif)

    data(wine)

    fix(wine)

    dim(wine)

    str(wine)

     

    Trong dataset wine ban đầu, 13 thành phần hóa học được đặt tên V1 đến V13, để dễ hiểu hơn ta đổi tên dataset theo mô tả trên trang UCI. (https://archive.ics.uci.edu/ml/datasets/Wine) như sau:

    names(wine) <- c("Type", "Alcohol", "Malic acid", "Ash", "Alcalinity of ash",

    "Magnesium", "Total phenols", "Flavanoids", "Nonflavanoid phenols","Proanthocyanins", "Color intensity", "Hue", "OD280/OD315 of diluted wines","Proline")

    Bước 2.  Sử dụng hàm prcomp trong  stats để phân tích PCA

     

    install.packages("stats")

    library(stats)

    wine_pca <- prcomp(wine, center = TRUE, scale = TRUE)

    summary(wine_pca)

    Kết quả phân tích PCA cho biết 2 thành phần đầu tiên (PC1 & PC2) giải thích được 57% sự biến thiên của toàn bộ dữ liệu.

     

    Trực quan hóa dữ liệu sử dụng 2 thành phần đầu tiên

    biplot(wine_pca, col = c("gray", "red"))

    Những loại rượu có các thành phần hóa học của 13 thuộc tính càng tương tự nhau thì được xếp càng gần nhau. Ví dụ rượu số 4 và 19 nằm gần nhau (góc dưới trái) có nghĩa là 13 thành phần hóa học của 2 loại rượu này rất giống nhau.

     

    Để kiểm tra, ta xem các thành phần hóa học của rượu số 4 và 19 bằng lệnh sau:

    wine[c(4, 19),]

    Các mũi tên màu đỏ (vectors) trong đồ thị trên có nghĩa là gì? Để dễ nhìn các vector này ta sử dụng đồ thị sau:

     

    biplot(wine_pca, xlabs = rep("", nrow(wine)))

    Các vector này cho biết mối quan hệ giữa các biến ban đầu và các thành phần chính, độ dài của vector cho biết độ mạnh của mối tương quan của biến ban đầu với thành phần chính.

     

    Từ khóa đại diện: , ,
    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems