1. PCA - Principal Components
Analysis
https://rpubs.com/vudt1993/257891
Đặng Tuấn Vũ
March 12, 2017
1 Giới thiệu
Trong bài viết này tôi xin chia sẻ đến người đọc phương pháp phân tích thành phần chính
(Principal Component Analysis - PCA), đây là một phương pháp được sử dụng thường xuyên khi
các nhà phân tích thống kê phải đối mặt với những bộ số liệu với số chiều lớn (big data). Vậy
làm thể nào để giảm thiểu chiều dữ liệu mà vẫn không mất đi thông tin và giữ lại được những
thông tin cần thiết cho việc xây dựng các mô hình thì mời mọi người theo dõi bài viết dưới đây
để hiểu rõ hơn phương pháp của PCA cũng như việc ứng dụng R trong PCA đối với dữ liệu ngân
hàng.
Hình ảnh minh họa cho PCA:
Cùng là 1 chú lạc đà, tuy nhiên với các cách nhìn khác nhau (trục thông tin), chúng ta lại có
những cách thu nhận thông tin khác nhau và cho ta những kết luận khác nhau.
2. 2 Phân tích thành phần chính.
2.1 Khái niệm.
PCA là phương pháp biến đổi giúp giảm số lượng lớn các biến có tương quan với nhau thành tập
ít các biến sao cho các biến mới tạo ra là tổ hợp tuyến tính của những biến cũ không có tương
quan lần nhau. Ví dụ, chúng ta có 100 biến ban đầu có tương quan tuyến tính với nhau, khi đó
chúng ta sử dụng phương pháp PCA xoay chiều không gian cũ thành chiều không gian mới mà ở
đó chỉ còn 5 biến không có tương quan tuyến tính mà vẫn dữ được nhiều nhất lượng thông tin từ
nhóm biến ban đầu.
2.2 Đặc tính PCA.
Một số đặc tính của PCA được kể đến như:
1. Giúp giảm số chiều dữ liệu - Giúp visualization khi dữ liệu có quá nhiều chiều thông tin.
2. Do dữ liệu ban đầu có số chiều lớn (nhiều biến) thì PCA giúp chúng ta xoay trục tọa độ
xây một trục tọa độ mới đảm bảo độ biến thiên của dữ liệu và giữ lại được nhiều thông
tin nhất mà không ảnh hưởng tới chất lượng của các mô hình dự báo. (Maximize the
variability).
3. Do PCA giúp tạo 1 hệ trục tọa độ mới nên về mặt ý nghĩa toán học, PCA giúp chúng ta
xây dựng những biến factor mới là tổ hợp tuyến tính của những biến ban đầu.
4. Trong không gian mới, có thẻ giúp chúng ta khám phá thêm những thông tin quý giá mới
khi mà tại chiều thông tin cũ những thông tin quý giá này bị che mất (Điển hình cho ví dụ
về chú lạc đà phía trên).
2.3 Mô hình PCA.
Xét tập không gian (dữ liệu) k biến, k biến này được biểu qua j thành phần chính sao cho (j < k).
Xét thành phần chính đầu tiên có dạng:
PC1=a1X1+a2X3+a4X5+...akXkPC1=a1X1+a2X3+a4X5+...akXk
Thành phần chính đầu tiên chứa đựng hầu hết thông tin từ k biến ban đầu (được hình thành là 1
tổ hợp tuyến tính của các biến ban đầu) và lúc này tiếp tục xét thành phần chính thứ 2 được biểu
diễn tuyến tính từ k biến ban đầu tuy nhiên thành phần chính thứ 2 phải không trực giao với
thành phần chính ban đầu hay (thành phần chính thứ 2 không có mối tương quan tuyến tính với
thành phần chính đầu tiên). Về lý thuyết chúng ta có thể xây dựng nhiều thành phần chính từ
nhiều biến ban đầu. Tuy nhiên chúng ta cần tìm được trục không gian sao cho ít thành phần nhất
mà có thể biểu diễn được hầu hết thông tin từ những biến ban đầu
3. 2.4 Ví dụ về PCA.
Dữ liệuđâuvào: “Xếphạng của các luậtsư thẩm phántại tòa án tối cao Hoa Kì”, bao gồm43
quansát và 12 biếnđịnhlượng.
Variable Description
CONT Numberof contacts of lawyerwithjudge
PREP Preparationfortrial
INTG Judicial integrity
FAMI Familiaritywithlaw
DMNR Demeanor
ORAL Soundoral rulings
DILG Diligence
WRIT Soundwrittenrulings
CFMG Case flowmanaging
PHYS Physical ability
DECI Promptdecisions
RTEN Worthyof retention
Code
data1 <- USJudgeRatings
names(data1) <- tolower(names(data1))
Trước khi đi vào thuật toán xác định số thành phần chính trong PCA, chúng ta điểm qua
1 vài tiêu chí có sẵn để quyết định số thành phần chính cần giữ lại:
o Xác định số lượng thành phần chính qua kinh nghiệm và lý thuyết.
o Lựa chọn số lượng thành phần chính dựa vào khả năng giải thích cho toàn bộ các
biến bán đầu ( thông thưởng tỷ lệ giải thích tích lũy trên 80%)
o Lựa chọn số lượng thành phần chính bằng cách kiểm tra các giá trị riêng thông
qua ma trận tương quan giữa các biến.
Hầu hết, cách tiếp cận để xác định số lượng thành phần chính bằng cách xác định giá trị
riêng thông qua ma trận hệ số tương quan giữa dần đến khi số lượng thành phần chính
bằng số biến). Kaiser - Harris đề xuất, thành phần chính được xác định khi giá trị riêng
có giá trị lớn hơn 1.
4. Trong kiểm định Cattell Scree biểu diễn số lượng thành phần chính với giá trị riêng, được
mô tả:
Những thành phần chính mà có giá trị riêng lớn hơn 1 hoặc được giá trị riêng lớn hơn lớn hơn
đường nét đứt đỏ (thực hiện mô phỏng) thì ở đây có thể lựa chọ 1 thích phần chính cho tất cả các
biến.
Thực hiệnphântích PCA trước hếtta cần cài đặt package psych.
Trong đó:
- r: ma trận hệ số tương quan giữa các biến.
- nfactors: Số lượng thành phần chính (mặc định bằng 1)
- rotate: phép quay trục (mặc định varimax,...)
- scores: xác định tính toán scores của các thành phần chính (mặc định F)
Các bước thực hiệnphântích thành phầnchính với R:
Bước 1: Sử dung lược đồ Scree plot để xác định số thành phần chính của tập dữ liệu.
Code
library(psych)
fa.parallel(USJudgeRatings[,-1],
n.obs=302,
fa="pc", n.iter=100,
show.legend=FALSE,
main="Scree plot with parallel analysis")
5. ## Parallel analysis suggests that the number of factors = NA and the
number of components = 1
Kếtquả từ biểuđồ Scree cho thấy,với nhữngbiếnnàythì chúng ta nêngiữlại 1 thành phần
chính.
Lưu ý: Tùy thuộc vào mục đích mà ta lựa chọn số thành phần chính cho phù hợp, giải pháp trên
chỉ là 1 phương pháp đưa ra số thành phần chính gợi ý. (Số thành phần chính càng nhiều thì càng
giải thích đầy đủ hơn cho tập hợp các biến ban đầu).
Bước 2: Thực hiện phân tích PCA với 2 thành phần chính.
Code
library(psych)
pc <- principal(USJudgeRatings[,-1],
nfactors = 1,
rotate = "varimax")
pc
## Principal Components Analysis
## Call: principal(r = USJudgeRatings[, -1], nfactors = 1, rotate =
"varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
6. ## PC1 h2 u2 com
## INTG 0.92 0.84 0.1565 1
## DMNR 0.91 0.83 0.1663 1
## DILG 0.97 0.94 0.0613 1
## CFMG 0.96 0.93 0.0720 1
## DECI 0.96 0.92 0.0763 1
## PREP 0.98 0.97 0.0299 1
## FAMI 0.98 0.95 0.0469 1
## ORAL 1.00 0.99 0.0091 1
## WRIT 0.99 0.98 0.0196 1
## PHYS 0.89 0.80 0.2013 1
## RTEN 0.99 0.97 0.0275 1
##
## PC1
## SS loadings 10.13
## Proportion Var 0.92
##
## Mean item complexity = 1
## Test of the hypothesis that 1 component is sufficient.
##
## The root mean square of the residuals (RMSR) is 0.04
## with the empirical chi square 6.21 with prob < 1
##
## Fit based upon off diagonal values = 1
Nhận xét:
o PCA1 giải thích 92% sự biến động của các biến ban đầu, do chỉ xác định với 1
thành phần chính (với rotation = “none”) nên tổng sư giải thích cũng chính bằng
92%.
o Kết quả ở cột PC1 là giá trị trọng số (loading) của các biến ban đầu tạo nên PC1.
(Nó biến diễn mối tương quan của các biến với mỗi thành phần chính ở đây thấy
rằng các biến ban đầu là có tương quan cao với thành phần chính đầu tiên.)
o SS loading: chính giá trị trị riêng của các thành phần chính. (đây cũng là tiêu
chính để đánh giá số thành phần chính trong không gian vector.)
-Visualization kết quả phân tích.
Code
plot(pc)
7. 2.5 Kết luận:
Trong bài viết này tôi đã giới thiệu đến người đọc tư tưởng của phân tích thành phần chính
(PCA) cũng như phương pháp để phân tích PCA với R (giảm số chiều dữ liệu).
Người đọc có thể tự thực hành với những bộ dữ liệu có sẵn trong R.
3 Tài liệu tham khảo
1. https://phvu.net/2011/10/05/pca-principal-component-analysis/
2. http://www.sthda.com/english/wiki/factominer-and-factoextra-principal-component-
analysis-visualization-r-software-and-data-mining
3. https://cran.r-
project.org/web/packages/HSAUR/vignettes/Ch_principal_components_analysis.pdf