III. Phân tích thành ph n chính (PCA) trong Python ầ
3.2 Phân tích thành phần chính (PCA) để trực quan hóa dữ liệu
3.2.1 T i t p d ả ệ ữliệu Iris
Bộ d u Iris là m t trong nh ng b d ữliệ ộ ữ ộ ữliệu scikit-learning đi kèm với nó
không yêu c u t i xu ng b t k tầ ả ố ấ ỳ ệp nào t các traừ ng web. Đoạn code dưới đây
3.2.2 Chu n hóa dẩ ữ liệu
Vì PCA mang l i m t không gian con tạ ộ ối đa hoá phương sai dọc theo các tr c, ụ
nên vi c chu n hoá d ệ ẩ ữliệu là vi c r t c n thiệ ấ ầ ết, đặc biệt nếu nó được đo trên các thang đo khác nhau. PCA được th c hi n theo quy mô, vì v y c n chia t l ự ệ ậ ầ ỷ ệ các tính năng trong dữ liệu trước khi áp d ng PCA. S d ng StandardScaler ụ ử ụ
chuyển đổi dữ liệu sang thang đo đơn vị (giá trị trung bằng=0, phương sai=1), đây là yêu cầu hi u su t tệ ấ ối ưu đối v i thu t toán Machine-Learning. ớ ậ
3.2.3 Phép chi u PCA sang 2D ế
Đối v i t p d ớ ậ ữliệu Iris, ban đầu có 4 c t (chiộ ều dài đài hoa, chiều rộng đài hoa,
chiều dài cánh hoa, chi u rề ộng cánh hoa). Trong đoạn code dưới đây, mã chiếu
dữ liệu g c 4 chi u thành 2 chi u. ố ề ề
3.2.4 Tr c quan hóa phép chi u 2D ự ế Vẽ biểu đồ dữ liệu 2 chi u ề
Phương sai được hi u là s cho ta biể ẽ ết bao nhiêu thông tin được mã hoá thành
mỗi thành phần chính. Khi ta đổi t không gian b n chi u sang không gian hai ừ ố ề
chiều thì điều này là quan tr ng, n u s d ng các thu c tính ta s ọ ế ử ụ ộ ẽ nhìn ra điều
Thành ph n chính ch yầ ủ ếu đầu tiên chứa 72.77% phương sai và các thành phần
chính ti p theo ch a 23.03%, t ng c a hai thành ph n chế ứ ổ ủ ầ ứa 95.8% phương sai.
3.3. Phân tích thành phần chính (PCA) đểtăng tốc thuật toán Machine-
Learning
Đây cũng là một trong nh ng ữ ứng d ng quan trụ ọng nh t c a PCA. Ta ph i s ấ ủ ả ử
dụng t p d ậ ữliệu có s u r t lốliệ ấ ớn để áp d ng PCA. Ta tham kh o D án ụ ả ự
Python – nh n d ng ch s vi t tay v i b d ậ ạ ữ ố ế ớ ộ ữliệu có s n trên các trang web là ẵ Cơ sở dữ liệu MNIST. B d u ch a 784 cộ ữliệ ứ ột tính năng (784 kích thước), 60.000 hình nh hu n luy n các ch s vi t tay t ả ấ ệ ữ ố ế ừ 0 đến 9 và 10.000 hình nh ả để thử nghiệm. Thông s ố Số liệu Nhãn Giá tr s nguyên t ị ố ừ 0 đến 255 3.3.1 T i d ả ữliệu xuống Sử d ng các hàm có sụ ẵn trong python để tải d ữliệu v ề và đọc ra k t qu . ế ả
Các tính năng có kích thước 784 chi u g m m i hình ề ồ ỗ ảnh là 28 x 28, và nhãn chỉ đơn giản là các s t ố ừ 0 đến 9.
3.3.2 Tách d ữliệu thành các t p huậ ấn luyện và ki m tra ể
Giả s d ng d u g c cho t p h p th nghi m là 1/7 và 6/7 d u còn l i là ử ụ ữliệ ố ậ ợ ử ệ ữliệ ạ được hu n luy n. ấ ệ
3.3.3 Chu n hóa dẩ ữ liệu
Tương tự như chuẩn hoá d ữliệu của PCA để trực quan hoá d u, ta có th ữliệ ể chuyển đổi dữ liệu sang quy mô đơn vị (giá trị trung bình=0 và phương sai=1). StandardScaler giúp chuẩn hoá các tính năng của t p d u. Áp d ng biậ ữliệ ụ ến đổi cho c t p hu n luy n và t p ki m tra. ả ậ ấ ệ ậ ể
3.3.4 Các bước sử dụng PCA mà để tăng tốc thuật toán Machine Learning (hồi quy Logistic).
Sử dụng thư viện Sklearn, áp d ng m t thu t toán Machine Learning mà b n ụ ộ ậ ạ chọn cho d ữliệu đã chuyển đổi. T o m t phiên b n c a mô hình. Áp d ng bi n ạ ộ ả ủ ụ ế đổi cho c t p hu n luy n và t p kiả ậ ấ ệ ậ ểm tra.
Các bước s d ng: ử ụ
• Nhập mô hình mu n s d ng. Trong sklearn, t t c các mô hình machine ố ử ụ ấ ả learning được triển khai dưới dạng các l p python ớ
• Tạo m t phiên b n c a mô hình. ộ ả ủ
• Huấn luy n mô hình trên d ệ ữliệu, lưu trữ thông tin học được t d u. Mô ừ ữliệ hình này đang tìm hiểu mối quan h gi a ch s (X) và nhãn (Y). ệ ữ ữ ố
• Dự đoán nhãn của d ữliệu m i. S dớ ử ụng thông tin mà mô hình đọc được trong quá trình hu n luyấ ện mô hình. Đoạn code dưới đây dự đoán cho một lần quan sát.
3.3.5 S thành phố ần, phương sai, bảng thời gian
pd.DataFrame(data = [[1.00, 784, 48.94, .9158], [.99, 541, 34.69, .9169], [.95, 330, 13.89, .92], [.90, 236, 10.56, .9168], [.85, 184, 8.85, .9156]], columns = ['Variance Retained', 'Number of Components', 'Time (seconds)',
IV. Ứng dụng:
- Giảm kích thước c a d u. ủ ữliệ
- N u ta có th gi m s chi u v 2 ho c 3 chi u, ta có th dùng các loế ể ả ố ề ề ặ ề ể ại đồthị để hiểu thêm v d ề ữliệu mà mình đang có, giúp ta nhìn dữ liệu trực quan hơn.
- X lý vử ấn đề tương quan giữa các bi n trong d ế ữliệu ban đầu b ng cách s d ng các ằ ử ụ biến mới trong không gian mà phương pháp PCA tìm được để mô tả d u. ữliệ
4.1 Chúng ta s bẽ ắt đầu b ng m t ví dằ ộ ụ mang tính ch t minh hấ ọa tr c quan: ự
Chúng ta có 2 bi n X và X ế 1 2có tương quan (tuyến tính), được biểu di n bễ ằng đồ thị sau:
Ta bi t r ng khi th c hiế ằ ự ện các phân tích đa biến mà trong đó các biến có tương quan với nhau là r t khó ch u! ấ ị
Ta th y r ng d ấ ằ ữliệu trên tr c mụ ới đã giảm s ự tương quan đáng kể (bi n Y và Y g n ế 1 2 ầ như không tương quan), và sự thay đổi c a d ủ ữliệu ph thu c ph n l n vào bi n Y1, ụ ộ ầ ớ ế ta có th ểchỉ dùng m t biếộ n Y1 để biểu di n d ễ ữliệu, điều này giúp ta gi m s chi u ả ố ề dữ liệu mà không làm gi m quá nhiả ều “phương sai” của d ữliệu. Đây cũng chính là tư tưởng của phương pháp PCA. Sau đây chúng ta sẽ làm rõ hơn về mặt lý thuyết của phương pháp này.
Giảm chi u d u hình ề ữliệ ảnh.
Giả s ta có m t t p dử ộ ậ ữ liệu nhi u ề ảnh có kích thước rất lớn. Khả năng lưu trữ của server là có h n. Trong tình hu ng này làm thạ ố ể nào để ảm kích thướ gi c c a bủ ộ ảnh vừa với dung lượng server mà thông tin của các bức ảnh v n gi ẫ ữ được một lượng l n. ớ Câu tr l i s có sau khi khi ta th c hành nén m t bả ờ ẽ ự ộ ức ảnh b ng thu t toán truncated ằ ậ SVD.
* N n t ng toán hề ả ọc cho phương pháp PCA:
Cho bi n ng u nhiên X ế ẫ có p chi u, X=(xề 1,…,xp) mô t dả ữ liệu ban đầu và ta có ma trận hiệp phương sai là:
S= ( sij)1 ≤i ≤p, 1 ≤j≤ p
Ta tìm các bi n ng u nhiên m i y có d ng là t h p tuy n tính c a các thành ph n ế ẫ ớ ạ ổ ợ ế ủ ầ của X sao cho y có phương sai càng lớn càng t t (ch a nhi u thông tin), v m t hình ố ứ ề ề ặ thức ta vi t l i vế ạ ấn đề trên: Tìm y có d ng ạ y=∑pi=1aixi sao cho Var(y) l n nh t có ớ ấ thể. Không m t tính tấ ổng quát và để đơn giản tính toán, ta gi s k v ng cả ử ỳ ọ ủa các thành ph n trong X ầ là 0 và phương sai bằng 1, lúc đó ta có:
Var(y)=∑p =1∑pi j=1aiajsij=aTSa, v i a=(aớ 1,..,ap) và aTa=1
Như vậy, ta c n gi i bài toán tầ ả ối ưu với điều ki n biên: max aTSa vệ ới điều ki n ệ biên aTa=1 bằng phương pháp nhân tử Largrange ta chuy n bài toán này ể thành:Max aTSa−λ(1−aTa) nên ta có a là nghi m c a ệ ủ Sa=λa, dễ thấy: a chính là vectơ riêng, còn λ chính là trị riêng tương ứng của ma trận S.
Chú ý: S là ma trận đối xứng nửa xác định dương (symmetric positive semidefinite), và do đó có các trị riêng không âm và các vectơ riêng lập thành h ọtrực giao.
Giả s S p ử có trị riêng (λi)1≤i≤p và p vecto riêng (a(i))1≤i≤p tương ứng,do điều kiện aTa=1 nên ta th y ấ (a(i))1≤i≤p là họ cơ sở trực chu n trong không gian m ẩ ới. Ta thấy phương sai của hình chi u c a d ế ủ ữliệu ban đầu lên cơ sở thứ i (a(i)) chính là tr riêng thị ứ i (λi), như vậy ta xác định các thành ph n chính dầ ựa theo độ ớ l n của giá trị riệng. Ví d : thành ph n quan tr ng nh t, là hình chi u c a dụ ầ ọ ấ ế ủ ữ liệu lên vecto riêng ng v i trứ ớ ị riêng l n nh ớ ất.
Ngoài ra ta có: ∑pi=1λi=∑pi=1sii là tổng phương sai, người ta hay dùng λi∑pi=1λi để thể hiện mức độ phản ánh dữ liệu g c theo thành phần thứ i, ví ố dụ: ta có tổng phương sai là 2 (∑pi=1λi), trị riêng c a thành ph n th 1 là 0.4, có th ủ ầ ứ ể hiểu là thành ph n th 1 th hiầ ứ ể ện được 0.4/2*100 phần trăm phương sai của dữ liệu, trị riêng của thành ph n th 2 là 0.3, có ầ ứ thể ể hi u là thành ph n th 2 th hiầ ứ ể ện được 0.3/2*100 phần trăm phương sai của d ữliệu, có th nhể ận định thành ph n th 1 quan ầ ứ trọng hơn thành phần thứ 2.
4.2 Ví d miêu t cách tính toán PCA b ng Matlab: ụ ả ằ
-Giả s ta có d ử ữliệu g c g m có 3 bi n (3 c t), ta ố ồ ế ộ khai báo dưới dạng ma tr n trong ậ Matlab như sau:
A = [269.8 38.9 50.5 272.4 39.5 50.0 270.0 38.95 0.5 272.0 39.35 0.2 269.8 38.9 50.5 269.8 38.9 50.5 268.2 38.6 50.2 268.2 38.6 50.8 267.0 38.2 51.1 267.8 38.4 51.0 273.6 39.6 50.0 271.2 39.1 50.4 269.8 38.9 50.5 270.0 38.9 50.5 270.0 38.9 50.5 ];
-Ta chú ý: lúc xây d ng lý thuyự ết ở trên ta đã giả sử trung bình c a các bi n trong ủ ế dữ liệu ban đầu bằng 0 và phương sai bằng 1, nên việc đầu tiên ta ph i làm là chu n ả ẩ hóa (standardization), ta có th dùng hàm zscore trong Matlab: ể
B=zscore(A)
-Ta có thể tính ma tr n hiậ ệp phương sai bằng hàm cov trong Matlab, và tìm tr riêng ị cũng như các vecto riêng tương ứng b ng hàm eig ằ
[VD] = eig(cov(B))
-Lúc này V là m t ma trộ ận v i các c t là các vecto riêng, D là m t ma trớ ộ ộ ận chéo chứa các trị riêng tương ứng.Để đơn giản, Matlab có hàm princomp:
[COEFF SCORE LATENT] = princomp(B)
-COEFF tương tự như ma trận V v i các c t là các vecto riêng, LATENT là vecto ớ ộ chứa các tr riêng, vàSCORE là nh c a d ị ả ủ ữliệu trong cơ sở m ới.
SCORE=B*COEFF
Sử d ng l nh cumsum(LATENT) / sum(LATENT) ụ ệ ta được vectơ: 0.9375 0.9978 1.0000
Có th hi u rể ể ằng:thành ph n th nhầ ứ ất (cơ sở mới) giải thích được kho ng 94% ả phương sai, thành phần thứ nh t và th 2 k t h p s giấ ứ ế ợ ẽ ải thích được hơn 99% phương sai.
4.3 Các ví d khác: ụ
Ví d 1: Nh n d ng ch s vi t tay: ụ ậ ạ ữ ố ế
⚫ Mục tiêu: Nh n bi t các ch s 0 ~ 9 d a trên hình ậ ế ữ ố ự ảnh.
⚫ Dữ liệu thô: Hình ảnh được chia t l ỷ ệ phân đoạn t ừ mã ZIP năm chữ s . ố
⚫ 16 x 16 bản đồ thang độ xám tám bit
⚫ Cường độ pixel n m trong kho ng tằ ả ừ 0 (đen) đến 255 (tr ng). ắ
⚫ Dữ liệu đầu vào: đại di n cho m i hình ệ ỗ ảnh dưới dạng vectơ chiều cao x R . ԑ 256 PCA có th giúp b n chuyể ạ ển đổi dữ liệu hình ảnh có kích thước cao thành các thành phần chính của kích thước thấp hơn.
Ví d 2: Nh n d ng khuôn mụ ậ ạ ặt:
Hiệu ứng c ng d n c a chín thành ph n chính, thêm m t máy tính t i m t thộ ồ ủ ầ ộ ạ ộ ời điểm, cho "bu n". Chúng ta càng s d ng nhi u thành phồ ử ụ ề ần chính thì độ phân giải càng t Tuy nhiên, 4 ho c 5 thành ph n chính dốt. ặ ầ ẫn đến một đánh giá tốt về một
biểu hi n bu n. ệ ồ Đó là một sự giảm kích thước đáng kể khi xem xét s ố lượng biến ban đầu là s pixel cho m t hình. ố ộ
Tại sao giảm kích thước?
⚫ Computational: nén d ữliệu => hi u qu ệ ảthời gian / không gian.
⚫ Thống kê: ít th ứ nguyên hơn => khái quát tốt hơn.
⚫ Trực quan: hi u c u trúc c a d u. ể ấ ủ ữliệ
⚫ Phát hi n bệ ất thường: mô t d ả ữliệu bình thường, phát hiện các điểm bất thường. Khi đối m t v i các tình huặ ớ ống liên quan đến d u chiữliệ ều cao, điều t nhiên là ự cân nh c vi c chi u nh ng d ắ ệ ế ữ ữliệu đó lên không gian con có chiều thấp hơn mà không làm m t thông tin quan tr ng ấ ọ
⚫ Lựa chọn biến còn được g i là ọ lựa chọn đối tượng.
⚫ Shrinkage: h i quy Ridge và Lasso. ồ
⚫ Tạo một t p h p gi m các biậ ợ ả ến đổi tuy n tính ho c phi tuy n tính c a các bi n ế ặ ế ủ ế đầu vào, còn được g i là ọ trích xuất đặc trưng, ví d PCA. ụ
TÀI LI U THAM KH O: Ệ Ả
[1] https://vi.wikipedia.org/wiki/Phép_phân_tích_thành_ph n_chính ầ
[2] https://online.stat.psu.edu/stat508/book/export/html/639?source=post_page--- 8489b46c2ae0---
[3] https://tuanvanle.wordpress.com/2013/12/25/gioi-thieu-ve-phuong-phap- principal-component-analysis-pca-va-mot-so-ung-dung-trong-tai-chinh-phan-i/ [4]https://machinelearningcoban.com/2017/06/15/pca/