Bài này sẽ thể hiện lịch sử hình thành, bối cảnh nghiên cứu, xu hướng của PCA của những năm gần đây, và cách thức chạy cũng như nguyên lí của phương pháp này.. Nhóm cũng thực hiện một bà
Trang 1ĐẠ I HỌC QU C GIA TP H CHÍ MINH Ố Ồ
TRƯỜNG ĐẠI HỌC BÁCH KHOA
<ĐẠI S TUY N TÍNH> BÁO CÁO BÀI T P L N Ố Ế Ậ Ớ
ĐỀ TÀI:
“PHÂN TÍCH PCA ĐỂ GIẢM CHIỀU DỮ LIỆU”
LỚP: AN01, NHÓM: 5
Sinh viên th c hi n: ự ệ
1 Khoan Nguy ễn Hưng
2 Nguy n Hoàng Khánh ễ
3 Mai Qu c Khôi ố
4 Lý Minh Thiên
5 Nguy ễn Hưng Thịnh
GVHD : PHAN THỊ KHÁNH VÂN
Thành ph Hố ồ Chí Minh 1/2024 –
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
<ĐẠI S TUY N TÍNH> BÁO CÁO BÀI T P L N Ố Ế Ậ Ớ
ĐỀ TÀI:
“PHÂN TÍCH PCA ĐỂ GIẢM CHIỀU DỮ LIỆU”
LỚP: AN01, NHÓM: 5
Sinh viên th c hi n ự ệ Mã s sinh viên ố
Khoan Nguy ễn Hưng
Nguy n Hoàng Khánh ễ
Mai Qu c Khôi ố
Lý Minh Thiên
Nguy ễn Hưng Thịnh
2314049
2311516
2311672
2313214
2313289
Thành ph Hố ồ Chí Minh 1/2024 –
Trang 3TÓM TẮT BÁO CÁO
Báo cáo này nhằm mục đích nghiên cứu phương pháp Principal Component Analysis (PCA) Bài này sẽ thể hiện lịch sử hình thành, bối cảnh nghiên cứu, xu hướng của PCA của những năm gần đây, và cách thức chạy cũng như nguyên lí của phương pháp này Nhóm cũng thực hiện một bài mẫu với code được xây dựng trên Matlab để thể hiện độ chính xác, tin cậy, tiện lợi của phương pháp trong việc giảm chiều dữ liệu
Trang 4MỤC L C Ụ
TÓM TẮT BÁO CÁO 2
I GIỚI THIỆU 4
1.1 Bối cảnh lịch sử nghiên cứu 4
1.2 Xu hướng liên quan đến nghiên cứu 5
1.3 Yêu cầu đề tài 7
II CƠ SỞ LÍ THUYẾT 8
2.1 Gía trị trung bình 8
2.2 Ma trận hiệp phương sai 8
2.3 Trị riêng, vecto riêng 9
2.4 Phép chiếu vuông góc 9
III THUẬT TOÁN 9
IV CODE MATLAB 11
4.1 Code 11
4.2 Kết luận 15
V DANH MỤC TÀI LIỆU 15
Trang 5
I GIỚI THIỆU
1.1 B i c nh l ố ả ị ch s nghiên c u ử ứ
• Năm 1901, Karl Pearson, một nhà thống kê người Anh, đưa ra ý tưởng đầu tiên của PCA trong b i c nh nghiên c u v ố ả ứ ề biến thiên d ữ liệu đa chiều Pearson nh n ra rậ ằng khi chúng ta di chuy n vào mể ột không gian m i sao cho ớ trục chính của không gian đó là hướng tối đa của biến thiên, ta có th ể giảm chiều
dữ liệu mà v n gi l i thông tin quan trẫ ữ ạ ọng
• Ý tưởng cơ bản của Pearson là tìm ra những hướng trong không gian d ữ liệu mà dọc theo đó biến thiên là l n nhớ ất Các hướng này được g i là "thành ọ phần chính," và ông nh n m nh r ng chúng giúp bi u di n d u m t cách hiấ ạ ằ ể ễ ữ liệ ộ ệu quả hơn
• Trong thập kỷ 1930, Harold Hotelling, m t nhà toán h c và nhà th ng kê ộ ọ ố người Mỹ, không chỉ m rở ộng ý tưởng của Pearson mà còn đặt tên lại nó là
"Phân Tích Thành Ph n Chính." Ông Hotelling ch ng minh r ng PCA không ch ầ ứ ằ ỉ
là một phương pháp giảm chiều dữ liệu mà còn là m t công c m nh m ộ ụ ạ ẽ để ể hi u cấu trúc ẩn và mối quan hệ trong d ữ liệu đa chiều
• Ông Hotelling đưa ra bài báo "Analysis of a Complex of Statistical
Variables into Principal Components," nơi ông giới thiệu và định nghĩa rõ ràng
về PCA Bài báo này không ch mô t v ỉ ả ề việc gi m chi u d ả ề ữ liệu mà còn thảo luận về việc áp d ng PCA trong viụ ệc phân tích đa biến và ứng dụng trong th ng ố
kê
• Quan trọng nhất, ông Hotelling l a ch n m t tên g i phù hự ọ ộ ọ ợp để thể hiện tính ch t "phân tích thành ph n chính" cấ ầ ủa phương pháp, từ đó đặt nền móng cho s phát triự ển và ng d ng r ng rãi c a PCA trong th i k sau này ứ ụ ộ ủ ờ ỳ
Trang 61.1.3 Phát Tri n Thu t Toán và Quy Trình Tính Toán (1950s): ể ậ
• Giai đoạn sau đó, đặc biệt là trong những năm 1950, PCA phát triển mạnh
m v i s n l i c a máy tính Thu t toán và quy trình tính toán cho PCA tr ẽ ớ ự tiệ ợ ủ ậ ở nên rõ ràng và th c tự ế, thúc đẩy s ự ứng d ng trong th c t ụ ự ế
• Từ những năm 1950 trở đi, PCA trở thành m t công c ộ ụ phổ biến trong nhiều lĩnh vực như thống kê, xử lý tín hi u, h c máy, sinh h c, kinh t , và nhiệ ọ ọ ế ều lĩnh vực khoa học khác
• Với s ti n triự ế ển đáng kể trong công ngh và kh ệ ả năng xử lý d ữ liệu, PCA ngày càng tr nên m nh m ở ạ ẽ và đa dạng trong ứng dụng Các bi n th c a PCA, ế ể ủ như Kernel PCA, cũng đã được phát triển để xử lý những trường h p ph c tợ ứ ạp
• PCA không chỉ là một công cụ trong th ng kê mà còn tr thành m t phố ở ộ ần quan tr ng trong h c máy và trí tu nhân tọ ọ ệ ạo Nó được s d ng r ng rãi trong ử ụ ộ việc giảm chi u d u và trích xuề ữ liệ ất đặc trưng
1.1.6 S ự Tiệ n L i C a PCA Trong X Lý D ợ ủ ử ữ Liệ u L n (2010s - ớ
Nay):
• Với s bùng nổ của d ự ữ liệ ớu l n, PCA ti p t c gi vai trò quan tr ng trong ế ụ ữ ọ việc giảm chi u d u hi u qu , giúp gi m khề ữ liệ ệ ả ả ối lượng tính toán và tăng hiệu suất
• PCA không chỉ là một kỹ thuật th ng kê, mà là mố ột hành trình dài hơi của
sự sáng t o và phát triạ ển trong lĩnh vực phân tích d u và h c máy, t ữ liệ ọ ừ những ý tưởng đầu tiên đến sự ứng d ng m nh m trong th ụ ạ ẽ ế giới hiện đại
1.2 Xu hướng liên quan đến nghiên cứu
1.2.1 M ục đích giả m chi u d ề ữ liệu
• Những bộ d u lữ liệ ớn thường tiêu t n nhi u b ố ề ộ nhớ lưu trữ và thời gian huấn luyện Do đó khi đối mặt v i nh ng b d ớ ữ ộ ữ liệu kích thước lớn chúng ta thường tìm cách gi m chi u d ả ề ữ liệu t không gian cao chi u (high ừ ề
dimensionality) xu ng không gian th p chi u (low dimensionality) mà v n gi ố ấ ề ẫ ữ được những đặc trưng chính của dữ liệu nhưng tiết kiệm được chi phí huấn luy n và d báo ệ ự
Trang 7• Lấy m t ví dụ, giả s bộ ử ạn đang cần phân lo i tác v ạ ụ ảnh v i 1000 nhãn ớ mục tiêu và kích thướ ảnh đầc u vào là 1000x1000x3 Như vậy nếu véc tơ hóa
ma trận ảnh ta thu được một véc tơ với kích thước 3 triệu chiều Để xây d ng ự
m t mộ ạng thần kinh nơ ron nông (shallow neural network)v i m t layer k t nớ ộ ế ối toàn b 3 triộ ệu điểm ảnh này tới 1000 nhãn m c tiêu s c n s ụ ẽ ầ ố lượng tham s là ố
3 tỷ Đây là một mạng nơ ron có kích thước quá lớn và thường vượt quá khả năng tính toán của các máy tính thông thường Nếu huấn luyện được m t mộ ạng
nơ ron khổng lồ như vậy thì kh ả năng mô hình gặp hiện tượng overfitting cũng rất cao Khi đối mặt v i tình hu ng này chúng ta có th s dớ ố ể ử ụng các phương pháp gi m chi u d ả ề ữ liệu để đạt được hiệu quả tính toán và tránh overfitting
• Những bộ d u cao chiữ liệ ều cũng thường xuất hi n trong d ệ ữ liệu d ng ạ bảng (tabular data) Thông thường chúng ta sẽ không sử dụng toàn b các biộ ến
đầu vào mà th c hi n x p h ng mự ệ ế ạ ức độ quan trọng của chúng nh m l c ra mằ ọ ột phần nhỏ các biến được coi là quan tr ng nh t và lo i b ọ ấ ạ ỏ những biến nhiễu Để xếp h ng mạ ức độ quan trọng của bi n b n có th xem l i nế ạ ể ạ ội dung chương lựa chọn đặc trưng Một cách khác cũng thường được th c hiự ện đó là giảm chiều dữ liệu Phương pháp này không yêu cầu phải lo i b b t kì m t biạ ỏ ấ ộ ến đầu vào nào
mà t t c chúng s ấ ả ẽ được t n dậ ụng nhằm t o ra nh ng biạ ữ ến đượ ổ ợc t h p tuyến tính t chúng ừ
• Trong bài toán phân cụm, các phương pháp giảm chiều d u có th ữ liệ ể biến
đổ ữ ệi d li u v không gian hai chi u ho c ba chi u nh m bi u di n d ề ề ặ ề ằ ể ễ ữ liệu một cách trực quan Thông qua đó phát hiện được những bất thường d ữ liệu
(anomaly detection) và nh n bi t phân b c m trong nh ng bài toán h c không ậ ế ố ụ ữ ọ giám sát
• Trong bài viết này chúng ta cùng tìm hi u v ể ề thuật toán PCA, một phương pháp r t hi u qu trong gi m chi u d ấ ệ ả ả ề ữ liệu
• Phương pháp giảm chiều dữ liệu thông thường được chia thành cách tiếp cận tuy n tính và phi tuy n tính Các cách ti p cế ế ế ận cũng được chia thành chọn đặc tính (feature selection) và trích chọn đặc trưng (feature extraction) Giảm chi u d u có th ề ữ liệ ể được s dử ụng cho giảm nhi u (noise reduction), ễ trực quan hóa d u (data visualization), phân tích c m, ho c là mữ liệ ụ ặ ột bước trung gian để tạo điều kiện thu n l i cho các phân tích khác ậ ợ
• PCA là phương pháp tuyến tính thông d ng nhụ ất để giảm chi u d u ề ữ liệ PCA th c hi n mự ệ ột phép biến đổi tuy n tính, chuy n d u sang không gian ế ể ữ liệ
Trang 8thấp chiều hơn Khi thực hiện biến đổi, PCA tối đa hóa variance dữ liệu ở không gian thấp chiều
• Trong thực tế, ta s d ng ma trử ụ ận covariance (và đôi khi cả ma trận tương quan) và tính các eigenvector c a ma tr n Eigenvector có eigenvalue l n nhủ ậ ớ ất (thành ph n chính - ầ principle component) được chọn để tái t o mạ ột lượng variance l n c a d u Nh ng eigenvectors ti p theo còn có th ớ ủ ữ liệ ữ ế ể được s dử ụng
để mô tả các tính ch t và bi u hi n lý h c cấ ể ệ ọ ủa không gian ch a d ứ ữ liệu
Phép biến đổ ạo ra những ưu điểm sau đối với dữ liệu: i t
1.Gi m chi u hi u quả ề ệ ả: PCA giúp gi m sả ố lượng bi n gi l i trong d ế ữ ạ ữ liệu
mà v n gi ẫ ữ được lượng thông tin quan trọng nhất Điều này giúp gi m kích ả thước của d u, giữ liệ ảm độ phứ ạc t p tính toán, và cải thi n hi u su t mô hình ệ ệ ấ 2.Lo i b ạ ỏ đồng bi n (collinearity):ế Trong trường h p có s ợ ự tương quan
m nh gi a các biạ ữ ến đầu vào, PCA có th giúp lo i b ể ạ ỏ đồng biến, giúp mô hình học tốt hơn và tránh vấn đề đa cộng tuyến
3.Gi m noise:ả Các thành ph n chính c a dầ ủ ữ liệu thường ch a thông tin quan ứ trọng hơn, trong khi các thành phần ít quan tr ng có th ọ ể chứa nhiễu PCA có th ể giúp gi m nhiả ễu b ng cách gi l i các thành ph n quan trằ ữ ạ ầ ọng nhất
4.Gi m chi u d u cho vi c tr c quan hóa:ả ề ữ liệ ệ ự Trong các bài toán hi n th ể ị
đồ thị, giảm chi u d ề ữ liệu giúp d ễ dàng hơn trong việc trực quan hóa và hiểu được c u trúc c a d ấ ủ ữ liệu
• Tuy nhiên, cũng có những trường hợp mà PCA có th không phù h p, ví ể ợ
dụ như khi các biến không độc lập tuyến tính, ho c khi gi l i m t s ặ ữ ạ ộ ố lượng thành ph n chính quá ít có th dầ ể ẫn đến m t mát thông tin quan trấ ọng Đố ới i v
m i vỗ ấn đề ụ thể, vi c l a ch c ệ ự ọn phương pháp giảm chiều dữ liệu nên được xem xét k ỹ lưỡng để đảm bảo r ng nó phằ ản ánh đúng cấu trúc c a d ủ ữ liệu và đáp ứng
m c tiêu c a mô hình hóa ụ ủ
1.3 Yêu c ầu đề tài
1/ Mô t ả cơ sở lý thuy t c a PCA ế ủ
2/ Nêu các bước chi tiết dùng PCA để giảm chi u d u ề ữ liệ
3/ Thực hành: Input là m t file f tùy ý Sộ ố hóa file f Phân tích PCA Gi m chiả ều
dữ liệu Đánh giá sai số
Trang 94/ S n ph m: là mả ẩ ột phần m m (code matlab, ho c python, ) có kh ề ặ ả năng giảm chi u c a mề ủ ột file d u tùy ý ữ liệ
II CƠ SỞ LÍ THUYẾT
2.1 Gía tr trung bình ị
• Giá trị trung bình là bình quân toán học đơn giản của một tập hợp g m hai ồ hoặc nhi u s T p h p có n ph n t x cề ố ậ ợ ầ ử ó giá tr ị trung bình được tính:
1
𝑛 ∑ 𝑥𝑖 𝑛 𝑖=1
2.2 Ma tr n hi ậ ệp phương sai
2.2.1 Định nghĩa
• Ma trận hiệp phương sai của tập hợp m bi n ng u nhiên là m t ma trế ẫ ộ ận vuông hạng (m × m), trong đó các phần tử nằm trên đường chéo (t trái sang ừ phải, t trên xuừ ống dướ ần lượt là phương sai tương ứng của các bi n này i) l ế Công thức:
𝐶 =𝑁 − 1 (𝑋1 𝑇− 𝑋𝑚)(𝑋𝑇− 𝑋𝑚)𝑇 Với 𝑋 là ma trận có N hàng được đổi sang ma tr n hiậ ệp phương sai và 𝑋𝑚 là ma trận trung bình của 𝑋
2.2.2 Tính ch t ấ
1 Ma tr n hiậ ệp phương sai là ma trận đối xứng thực và các tr riêng c a S là các ị ủ
số thực không âm
2 Ma tr n hiậ ệp phương sai luôn chéo hóa trực giao được
3 Trên đường chéo c a ma tr n hiủ ậ ệp phương sai là phương sai của các vector
𝑥1 2, 𝑥 , … , 𝑥𝑛 (ph n t ầ ử𝑎𝑖𝑗 là hiệp phương sai của 𝑥𝑖 và 𝑥𝑗)
4 T ng các ph n t ổ ầ ử trên đường chéo c a ma trủ ận hiệp phương sai là phương sai của bảng d u ữ liệ
5 T ng các trổ ị riêng c a ma tr n hiủ ậ ệp phương sai là trace ma tr n ậ
Trang 106 Các vector riêng c a ma tr n hiủ ậ ệp phương sai tạo ra hệ trực chu n ẩ
2.3 Tr riêng, vecto riêng ị
2.3.1 Định nghĩa
• Một vectơ riêng hay vectơ đặc trưng của một biến đổi tuy n tính là mế ột vectơ khác vectơ không mà được nhân v i m t h s ớ ộ ệ ố vô hướng khi biến đổi tuyến tính đó được áp dụng lên nó H s ệ ố vô hướng tương ứng, thường được ký hiệu là 𝜆 được gọi là giá trị riêng
𝐴𝑥 = 𝜆𝑥 Nếu phương trình trên thỏa mãn thì v i A là mâ tr n b t kì thì x là vecto riêng ớ ậ ấ ứng với trị riêng 𝜆
• Để tìm trị riêng ta đi giải:
det 𝐴 −( 𝜆𝐼) = 0
Có tr ị riêng ta đi tìm vector riêng bằng cách tìm các vector cơ sở của 𝐴 − 𝜆𝐼
2.3.2 Tính ch t ấ
1 Trong một không gian vectơ đa chiều, vectơ riêng không bị quay đi
2 Một vectơ riêng tương ứng với một giá trị riêng thực khác 0 có cùng phương sau khi nó được kéo dài ra bởi phép biến đổi và giá tr riêng là h s nhân ị ệ ố
2.4 Phép chi u vuông góc ế
• Phép chi u là m t biế ộ ến đổi tuyến tính t m𝑃 ừ ột không gian vectơ vào chính nó sao cho 𝑃2= 𝑃
Công th c: ứ 𝑝𝑟𝐹(𝑥) = 𝐹 𝐹( 𝑇𝐹)−1𝐹𝑇𝑥, với F là ma trận các vecto cơ sở xếp theo c t ộ
III THU T TO Ậ ÁN
1) Cho dữ liệ u c n gi m chi u là ầ ả ề ma trận v𝑋 ới n hàng là s ố điểm trong không gian
và m c t là s ộ ố chiều và ma tr n ậ 𝑋 trong ℝ𝑚
Trang 112) Chuyển v ma tr n ị ậ 𝑋 thành ma trận 𝑋𝑇 và tính giá trị trung bình của từng hàng
bằng công thức ∑ 𝑎𝑛𝑗=1 𝑖𝑗với i là vị trí hàng, j là vị trị cột của phần tử
3) Xây dựng ma trận trung bình 𝑋𝑚 với các phần tử cùng hàng là giá trị trung bình của hàng đó
4) Xây dựng ma tr n hiậ ệp phương sai 𝐶 =𝑁−11(𝑋𝑇− 𝑋𝑚)(𝑋𝑇− 𝑋𝑚)𝑇
5) Tìm các trị riêng của ma trận hiệp phương sai bằng công thức det(𝐶 − 𝜆𝐼) = 0
với 𝐼 là ma trận đơn vị cùng c p vấ ới 𝐶
6) Tìm các vector cơ sở trong không gian null ng vứ ới mỗi 𝜆
7) Đổi các vector cơ sở thành các vector đơn vị
8) Xếp các trị riêng theo giá trị giảm dần 𝜆1> 𝜆 > ⋯ > 𝜆2 𝑚
9) Chọn k trị riêng ban đầu và k vector riêng đơn vị ứng với các trị riêng này (với k
là số chiều giảm xuống)
10) Lập ma tr n có các cậ 𝐴 ột là các vector riêng đã chọn, ma tr n ậ 𝐴 sẽ là một không gian con thuộc 𝑅𝑘
11) Chiếu (𝑋𝑇− 𝑋𝑚) xu ng không gian con b ng phép chi u ố 𝐴 ằ ế ra ma trận [𝑋] 12) Đổi tọa độ của (𝑋𝑇− 𝑋𝑚) qua không gian con 𝐴 bằng công thức:
[ ]𝑋𝐴= 𝑓(𝐸)𝐸−1[𝑋]
Với 𝐸 là ma trận các vector cơ sở đơn vị ế x p theo cột, 𝑓(𝐸) là ma tr n mà các ậ vector trong 𝐸 sau khi đổi tọa độ
13) Tỉ lệ phương sai được tình bằng công thức ∑∑𝑘𝑖=1𝜆𝑖
𝜆 𝑖 𝑚 𝑖=1
Trang 12IV CODE MATLAB
4.1 Code
Đề bài: Thống kê bảng điểm bằng hệ trục xOy và th ể hiện nhóm h c lọ ực
file_path = 'C:\Users\PC\Downloads\dsach pca.xlsx';
% Ki m tra xem t p t n t i hay không ể ệ ồ ạ
Hình 1 File input excel
Trang 13if ~isfile(file_path)
error('T p không t n t i.'); ệ ồ ạ
end
% Đọc dữ liệu t t p Excel ừ ệ
data = readmatrix(file_path, 'Range', 'C2:E29');
% Trung bình hóa d u ữ liệ
mean_data = mean(data);
centered_data = data - mean_data;
% Tính ma tr n hiậ ệp phương sai
covariance_matrix = cov(centered_data);
% Tính giá tr riêng và vector riêng ị
[eigenvectors, eigenvalues] = eig(covariance_matrix);
% S p x p gi m d n giá tr riêng và vector riêng ắ ế ả ầ ị
[eigenvalues, indices] = sort(diag(eigenvalues), 'descend'); eigenvectors = eigenvectors(:, indices);
% Ch n s ọ ố lượng thành ph n chính ầ
num_components = 2;
selected_eigenvectors = eigenvectors(:, 1:num_components);
% Chi u d u lên các thành phế ữ liệ ần chính đã chọn
Trang 14reduced_data = centered_data * selected_eigenvectors;
% Tính t l ỷ ệ phương sai giữ lại cho m i thành ph n chính ỗ ầ
explained_variance = diag(eigenvalues);
explained_variance_ratio = explained_variance / sum(explained_variance);
% Lưu kết quả giả m chiều dữ li u ệ
save('reduced_data.mat', 'reduced_data');
% Hi n th Scree Plot ể ị
figure;
bar(explained_variance_ratio * 100);
title('Scree Plot');
xlabel('Thành ph n chính'); ầ
ylabel('T l ỷ ệ phương sai giữ lại (%)');
ylim([0 100]);
% Xác định màu sắc d a trên giá tr c a thành ph n chính 1 ự ị ủ ầ
colors = zeros(size(reduced_data, 1), 3);
% Màu đỏ cho giá tr -2 ị <
colors(reduced_data(:, 1) < -2, : ) = repmat([1, 0, 0], sum(reduced_data(:, 1) < -2), 1);
% Màu vàng cho -2 <= giá tr <= 2 ị
colors(-2 <= reduced_data(:, 1) & reduced_data(:, 1) <= 2, : ) = repmat([1, 1, 0], sum(-2 <= reduced_data(:, 1) & reduced_data(:, 1) <= 2), 1);