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.
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.
Một số đặc tính của PCA được kể đến như:
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.
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).
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.
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).
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:
\(PC_{1} = a_{1}X_{1} + a_{2}X_{3} + a_{4}X_{5} + ...a_{k}X_{k}\)
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
Variable | Description |
---|---|
CONT | Number of contacts of lawyer with judge |
PREP | Preparation for trial |
INTG | Judicial integrity |
FAMI | Familiarity with law |
DMNR | Demeanor |
ORAL | Sound oral rulings |
DILG | Diligence |
WRIT | Sound written rulings |
CFMG | Case flow managing |
PHYS | Physical ability |
DECI | Prompt decisions |
RTEN | Worthy of retention |
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:
Xác định số lượng thành phần chính qua kinh nghiệm và lý thuyết.
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%)
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.
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.
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)
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.
library(psych)
fa.parallel(USJudgeRatings[,-1],
n.obs=302,
fa="pc", n.iter=100,
show.legend=FALSE,
main="Scree plot with parallel analysis")
## Parallel analysis suggests that the number of factors = NA and the number of components = 1
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.
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
## 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:
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%.
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.)
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.
plot(pc)
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.