1. www.themegallery.comLý thuyết xử lý tín hiệu vô tuyến điện
PHÂN TÍCH
THÀNH PHẦN CƠ BẢN
(PCA - Principal Component Analysis)
Nguyễn Văn Đoàn
Trần Thái Hà
Đồng Văn Hảo
Mai Văn Tá
Hà Tiến Thành
Nguyễn Thị Thủy
Vũ Mạnh Tuấn
(Cao học KTĐT 28A)
1/14
2. Principal component analysis
2/14
NỘI DUNG BÁO CÁO
1. Vai trò PCA trong xử lý tín hiệu nhiều chiều
2. Cơ sở toán học
2.2. Thuật toán PCA
2.1. Một số khái niệm toán học sử dụng trong PCA
3. Ví dụ minh họa thuật toán PCA
4. Ứng dụng
5. Mô phỏng trên Matlab
3. Principal component analysis
Dữ liệu nhiều chiều
Đặt vấn đề
- Dữ liệu nhiều chiều: dữ liệu hình ảnh (image data), dữ liệu video,
dữ liệu audio, dữ liệu văn bản (document data), dữ liệu viết tay
(handwritten data)… Các dữ liệu này được biểu diễn bởi các thuộc
tính không gian, thời gian...
-> Khái niệm: dữ liệu k - chiều là dữ liệu được hoàn toàn xác định bởi
vectơ các giá trị thuộc tính (x1, …, xk) trong không gian k - chiều.
3
1. VAI TRÒ PCA TRONG XỬ LÝ TÍN HIỆU NHIỀU CHIỀU
4. Principal component analysis
Tín hiệu nhiều chiều
• Tín hiệu nhiều chiều là tín hiệu biến thiên theo nhiều hơn 1
biến độc lập.
• Ví dụ:
+ tín hiệu hình ảnh: ~(x,y);
+ tín hiệu tivi đen trắng:~(x,y,t)….
• Xử lý tín hiệu nhiều chiều là việc thực hiện phép toán trên tín
hiệu nhiều chiều, nhằm biến đổi tín hiệu, rút trích thông tin...
4
5. Principal component analysis
Vai trò PCA trong xử lý tín hiệu nhiều chiều
Dữ liệu có số chiều lớn, do đó cần phải tìm cách đưa dữ liệu về
không gian có số chiều nhỏ hơn ->PCA là một trong những phương pháp
như thế, nhưng hơn thế, PCA còn có nhiều đặc tính tốt:
1) Giúp giảm số chiều của dữ liệu;
2) Thay vì giữ lại các trục tọa độ của không gian cũ, PCA xây dựng một
không gian mới ít chiều hơn, nhưng lại có khả năng biểu diễn dữ
liệu tốt tương đương không gian cũ;
3) Các trục tọa độ trong không gian mới là tổ hợp tuyến tính của
không gian cũ;
4) Trong không gian mới, các liên kết tiềm ẩn của dữ liệu có thể được
khám phá, mà nếu đặt trong không gian cũ thì khó phát hiện hơn.
5
6. Principal component analysis
Vai trò PCA trong xử lý tín hiệu nhiều chiều
(Minh họa đặc tính 4)
Khám phá liên kết tiềm ẩn nhờ đổi hệ trục tọa độ,
cách nhìn khác nhau về cùng một dữ liệu.
6
7. Principal component analysis
Vai trò PCA trong xử lý tín hiệu nhiều chiều
Ý tưởng chung: PCA là tìm một không gian mới (với số chiều nhỏ hơn
không gian cũ). 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ể.
• Ví dụ minh họa
7
8. Principal component analysis
8/14
2. CƠ SỞ TOÁN HỌC
2.1. Một số khái niệm toán học sử dụng trong PCA
2.1.1. Các đặc trưng số của vector ngẫu nhiên
a) Kỳ vọng (mean, expected value)
* Ý nghĩa: giá trị “mong muốn”, biểu diễn giá trị trung bình của
một biến.
* Biểu diễn toán học
Với X biến ngẫu nhiên rời rạc:
(1) x i i
i
m E X p x
9. Principal component analysis
9/14
2.1.1. Các đặc trưng số của vector ngẫu nhiên
b) Độ lệch chuẩn (Standard Deviation)
* Ý nghĩa: đo tính biến động của giá trị mang tính thống kê.
Nó cho thấy sự chênh lệch về giá trị của từng thời điểm đánh giá so
với giá trị trung bình.
* Biểu diễn toán học
(2) (t) m (t)xs E X
10. Principal component analysis
10/14
2.1.1. Các đặc trưng số của vector ngẫu nhiên
c) Phương sai (variance)
* Ý nghĩa: phương sai của một biến ngẫu nhiên là thước đo
sự phân tán thống kê của biến đó, nó hàm ý các giá trị của biến đó
thường ở cách giá trị kỳ vọng bao xa.
* Biểu diễn toán học
(3) 22 2
var( ) ( ) ( )xX s E X t m t
11. Principal component analysis
11/14
2.1.1. Các đặc trưng số của vector ngẫu nhiên
d) Hiệp phương sai (covariance)
* Ý nghĩa: hiệp phương sai là độ đo sự biến thiên cùng nhau
của hai biến ngẫu nhiên (phân biệt với phương sai - đo mức độ biến
thiên của một biến).
* Biểu thức toán học
(4) cov( , ) ( ) ( ) Y( ) ( )x yX Y E X t m t t m t
12. Principal component analysis
12/14
2.1.1. Các đặc trưng số của vector ngẫu nhiên
Trường hợp đặc biệt: , khi đó:
(5)
1 2
1
... np p p
n
1
1 n
i
i
g X x
n
2
1
1
n
i
i
x X
s
n
2
2 1
1
n
i
i
x X
n
1
cov(X,Y)
1
n
i x i y
i
x y
n
14. Principal component analysis
14/14
2.1.2. Trị riêng, vector riêng của ma trận hiệp phương sai
a) Ma trận hiệp phương sai (covariance matrix)
X là vector cột, mỗi thành phần Xi là biến ngẫu ngẫu nhiên có
phương sai xác định và E{ Xi }= μi.
=> xây dựng ma trận hiệp phương sai (matrix covariance) với các
thành phần si,j là hiệp phương sai:
(6)
, ,cov( ) ( )( )i j i j i i j js X X E X X
1 1 1 2 1
2 1 2 2 2
1 2
cov(X ,X ) cov(X ,X ) ... cov(X ,X )
cov(X ,X ) cov(X ,X ) ... cov(X ,X )
... ... ... ...
cov(X ,X ) cov(X ,X ) ... cov(X ,X )
n
n
X
n n n n
S
15. Principal component analysis
15/14
2.1.2. Trị riêng, vector riêng của ma trận hiệp phương sai
b) Trị riêng, vector riêng
* Khái niệm
Cho 𝑨 ∈ 𝑪 𝑚x𝑚 là ma trận vuông.
Vector 𝒖 ∈ 𝑪 𝑚 gọi là vector riêng ứng với trị riêng λ ∈ 𝑪 nếu:
(7)Au u
16. Principal component analysis
16/14
2.1.2. Trị riêng, vector riêng của ma trận hiệp phương sai
b) Trị riêng, vector riêng
* Khái niệm
* Tính chất
- Trị riêng là nghiệm của phương trình đặc trưng
det 𝐀 − λ𝑰 = 0
- Một trị riêng có thể có nhiều vector riêng.
- Mỗi vector riêng chỉ ứng với một trị riêng duy nhất
- Mọi trị riêng của A đều khác không thì A khả nghịch
- Nếu λ là trị riêng của A thì λk là trị riêng của Ak
17. Principal component analysis
17/14
2.1.2. Trị riêng, vector riêng của ma trận hiệp phương sai
b) Trị riêng, vector riêng
* Khái niệm
* Tính chất
* Phương pháp giải tìm trị riêng, vector riêng
- Bước 1: giải phương trình đặc trưng tìm trị riêng
det 𝐀 − λ𝑰 = 0
- Bước 2: giải hệ phương trình thuần nhất tìm vector riêng ui
ứng với trị riêng λi.
det 𝐀 − λ𝑰 𝒖 = 𝟎
18. Principal component analysis
18
2.2. THUẬT TOÁN PCA
Cho ma trận
. Các bước của PCA lần lượt như sau:
Bước 1: Tiền xử lí
Bước 2: Xây dựng không gian mới
Bước 3: Chuyển dữ liệu từ không gian ban đầu
vào không gian mới
19. Principal component analysis
19
2.2.THUẬT TOÁN PCA
I. TIỀN XỬ LÍ
- Dữ liệu ban đầu có thể có giá trị thay đổi bất thường, do
vậy cần phải có một bước tiền xử lí để chuẩn hóa giá trị trên
các cột của ma trận X.
- Có 2 cách tiền xử lí thường được dùng cho PCA
1. Centered PCA
2. Normed PCA
20. Principal component analysis
20
2.2. THUẬT TOÁN PCA
I. TIỀN XỬ LÍ
1. Centered PCA
Mang tất cả các feature (của các cột của X) về cùng một gốc tọa độ:
(8)
𝑋 = 𝑥𝑖𝑗
𝑥𝑖𝑗 =
𝑥𝑖𝑗 − 𝑔𝑗
𝑛
𝑔𝑗 =
𝑖=1
𝑛
𝑥𝑖𝑗
𝑛
21. Principal component analysis
21
2.2. THUẬT TOÁN PCA
I. TIỀN XỬ LÍ
2. Normed PCA
Mang tất cả các feature về cùng một gốc tọa độ, đồng thời chuẩn
hóa về cùng một quãng độ lệch chuẩn bằng 1:
(9)
𝑋 = 𝑥𝑖𝑗
𝑥𝑖𝑗 =
𝑥𝑖𝑗 − 𝑔𝑗
𝑛σ𝑗
22. Principal component analysis
22
Xét trận X có kích thước n x p,
Ma trận hiệp phương sai của X:
Tính chất:
- Các thành phần nằm trên đường chéo của SX là phương sai của một
kiểu đo riêng biệt nào đó;
- Các thành phần không nằm trên đường chéo là hiệp phương sai giữa
hai kiểu đo nào đó. (tức là nói lên tính tương quan giữa hai kiểu đo, như
vậy trường hợp tốt nhất là các kiểu đo là không tương quan tức là hiệp
phương sai giữa chúng bằng 0)
𝑋 =
𝑥11 … 𝑥1𝑝
… … …
𝑥 𝑛1 … 𝑥 𝑛𝑝
𝑆 𝑋 =
1
𝑛 − 1
𝑋𝑋 𝑇
2.2. THUẬT TOÁN PCA
23. Principal component analysis
23
Sau khi nhận được ma trận ta cần biến đổi nó về ma trận Y sao cho:
là ma trận đường chéo
Thực chất là tìm phép biến đổi P:
Sử dụng tính chất:
𝑆 𝑌 =
1
𝑛 − 1
𝑌𝑌 𝑇
2.2. THUẬT TOÁN PCA
24. Principal component analysis
24
Đặt:
Người ta chứng minh được: A là ma trận đối xứng và có thể phân tích
dưới dạng
Trong đó E là ma trận gồm các vector riêng của A xếp theo cột, và
Chọn:
Do đó: Thỏa mãn là
ma trận
đường chéo
2.2. THUẬT TOÁN PCA
25. Principal component analysis
25
2.2. THUẬT TOÁN PCA
II. XÂY DỰNG KHÔNG GIAN MỚI
Tính ma trận hiệp phương sai
Tìm trị riêng của V theo thứ tự giảm dần
Và véc tơ riêng tương ứng:
26. Principal component analysis
26
2.2. THUẬT TOÁN PCA
III. CHUYỂN DỮ LIỆU
(TỪ KHÔNG GIAN BAN ĐẦU VÀO KHÔNG GIAN MỚI)
Khi đó tọa độ các điểm trong hệ tọa độ mới là
Xây dựng không gian mới từ k véc tơ đầu tiên (từ
lớn đến nhỏ) trong m véc tơ riêng của V , (k < m)
27. Principal component analysis
27
3. MINH HỌA THUẬT TOÁN PCA
GĐ 1: Tiền xử lí
GĐ 2: Xây dựng không gian mới
GĐ 3: Chuyển dữ liệu từ không gian ban đầu
vào không gian mới
Bước 1: thu thập dữ liệu
Bước 2: chuẩn hóa dữ liệu
Bước 3: xây dựng ma trận hiệp phương sai
Bước 4: xác định trị riêng, vector riêng
Bước 5: lựa chọn các thành phần xây dựng vector đặc trưng
Bước 6: chuyển dữ liệu và không gian mới
35. Principal component analysis
Nhận diện khuôn mặt
Công nghệ thông tin
Sinh học
Tài chính
Giảm kích thước của các dữ liệu
35
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
36. Principal component analysis
Nhận diện khuôn mặt
Ý tưởng chính
• Mục tiêu của phương pháp PCA là “giảm số chiều”
của 1 tập vector sao cho vẫn đảm bảo được “tối đa
thông tin quan trọng nhất” . Tức Feature extraction
(giữ k thuộc tính “mới”) chứ không phải Feature
selection (giữ lại k thuộc tính nguyên gốc ban đầu).
36
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
38. Principal component analysis
• Hệ thống nhận dạng tổng quát
Hình 1: Cấu trúc tổng quát của hệ thống nhận dạng mặt
38
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
39. Principal component analysis
• - Tiền xử lý: Chuẩn hóa kích cỡ giữa ảnh trong
CSDL
- Tách khuôn mặt: khuôn mặt trên ảnh chụp
được tách ra phần mặt, nó sẽ là các khuôn mặt
cần tìm và chức năng trích chọn đặc trưng sẽ
sử dụng các ảnh được tách ra này.
39
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
40. Principal component analysis
- Trích chọn đặc trưng: Tìm ra các đặc trưng chính của
ảnh mặt, từ các đặc trưng này hình thành các vector
đặc trưng, các vector này sẽ được sử dụng để đối
sánh sự giống nhau giữa ảnh mặt cần tìm và ảnh mặt
trong CSDL.
- Đối sánh: Thực hiện việc so sánh giữa các vector đặc
trưng để chọn ra độ tương tự giữa ảnh cần tìm và ảnh
trong CSDL.
40
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
41. Principal component analysis
• Nhận các khuôn mặt từ cơ sở dữ liệu
• Giả sử có M ảnh, khi đó i=1,2...M.
Hình 2: Các ảnh cùng kích thước và mặt ở tâm ảnh
41
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
42. Principal component analysis
• Đầu tiên chúng ta sẽ đọc cơ sở dữ liệu và nhận
vào các ảnh luyện Ii. Các ảnh luyện ở đây đều là
ảnh mặt, chúng có mặt ở tâm ảnh và có cùng
kích thước.
• Sau đó ta tương ứng mỗi ảnh Ii với một vector
Γi
• Ii (ảnh N×N) → Γi (vector N2×1)
42
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
43. Principal component analysis
• Bước 1: Tính toán giá trị trung bình
Giá trị vector trung bình:
(4.1)
• Γi là vector 1 chiều (N2×1) đại diện cho mỗi ảnh.
Ψ là vector trung bình (kích thước N2×1) của
tập tất cả các Γi trên; Ψ còn được gọi là vector
trung bình mặt của tập luyện.
43
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
44. Principal component analysis
• Bước 2: Trừ đi giá trị trung bình
Sai số của các ảnh so với giá trị vector mặt
trung bình
Φi = Γi – Ψ (4.2)
Φi là vector sai số ứng với mỗi ảnh,
44
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
45. Principal component analysis
• Bước 3: Tính ma trận hiệp phương sai
Ma trận hiệp phương sai được tính theo công
thức sau:
(4.3)
Trong đó C là ma trận hiệp phương sai (kích thước
N2×N2):
(4.4)
• A là ma trận N2×M, 𝚽n là giá trị sai số được tính ở
công thức (4.2).
45
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
46. Principal component analysis
Bước 4: Tính các trị riêng và vector đặc trưng của ma trận hiệp
phương sai
Ma trận AAT và ATA luôn có chung trị riêng và vector đặc
trưng thì có liên hệ với nhau bởi biểu thức ui = Avi mà ma trận ATA
lại có số chiều ít hơn hẳn (ma trận M×M) nên ta sẽ chuyển đổi về
ma trận ATA. Sau khi tính toán ta được M vector đặc trưng của
AAT (ui = Avi) tương ứng với M giá trị riêng.
Chuẩn hóa các vector đặc trưng ui về vector đơn vị:
||ui|| =1 (4.5)
46
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
47. Principal component analysis
Bước 5: Lựa chọn các thành phần và xây dựng
vector đặc trưng.
Mỗi khuôn mặt trong tập huấn luyện có thể được
biểu diễn lại là 1 tổ hợp tuyến tính của K vector riêng lớn
nhất:
• (4.6)
ui vector riêng của K vector đặc trưng lớn nhất
wi là các trọng số tương ứng với các vector đặc trưng
47
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
48. Principal component analysis
• Trong đó 𝑤j
i (j=1..K) là các trọng số tương ứng với K
vector đặc trưng,
• 𝛺i là vector đại diện cho khuôn mặt thứ i trong tập
luyện.
48
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
50. Principal component analysis
• Hình ảnh cho thấy, hình ảnh ban đầu sẽ bằng ảnh
trung bình cộng với tổng tất cả các đặc trưng mặt
nhân với trọng số tương ứng.
50
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
51. Principal component analysis
• Chỉ giữ lại K vector riêng trong số M vector nói trên
(ứng với K trị riêng lớn nhất), tất nhiên K<<N2.
• Xác định K.
- Sắp xếp theo thứ tự dãy giảm dần các
eigenvalues tìm được.
- Theo dõi sự biến thiên của dãy trên, khi không
còn biến thiên (hoặc xấp xỉ bằng không) thì lúc đó ta đã
chọn đủ K.
51
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
52. Principal component analysis
• Nhược điểm PCA Eigenfaces
• Trong những trường hợp sau, PCA Eigenfaces
sẽ nhận dạng sai:
• Khác nhau về điều kiện ánh sáng
• Khác nhau về điệu bộ (nghiêng đầu chẳng
hạn…)
• Cảm xúc (cười to, há miệng…)
52
4. ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT
53. Principal component analysis
53
5. MÔ PHỎNG TRÊN MATLAB
%% PCAexam.m
%% Principal Components Analysis
%% Step 1: Get some data
display('%% Step 1: Get some data');
x0 = ([2.5 0.5 2.2 1.9 3.1 2.3 2 1 1.5 1.1])';
y0 = ([2.4 0.7 2.9 2.2 3.0 2.7 1.6 1.1 1.6 0.9])';
X = ([x0, y0])
% plot data
subplot(2,2,1)
plot(x0,y0,'k+');
title('Original PCA data');
line([0 0],[-1 4],'Color','r','LineStyle',':');
line([-1 4],[0 0],'Color','r','LineStyle',':');
grid on;
axis([-1 4 -1 4]);
54. Principal component analysis
54
5. MÔ PHỎNG TRÊN MATLAB
%% Step 2: Normal PCA
display('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
display('%% Step 2: Normal PCA');
mu_x0 = mean(x0) % mean of the x0 values
mu_y0 = mean(y0) % mean of the y0 values
std_x0 = std(x0) % std of the x0 values
std_y0 = std(y0) % std of the y0 values
n = size(x0) % n(1) number of sample
x1 = (x0 - mu_x0)/(std_x0*sqrt(n(1))); %
normal PCA
y1 = (y0 - mu_y0)/(std_y0*sqrt(n(1)));
Xnorm = ([x1, y1])
55. Principal component analysis
55
5. MÔ PHỎNG TRÊN MATLAB
%% Step3: Calculate the covariance matrix
display('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
display('%% Step3: Calculate the covariance matrix');
covar = cov(x1,y1)
56. Principal component analysis
56
5. MÔ PHỎNG TRÊN MATLAB
%% Step 4: Calc. the eigenvectors and eigenvalues
display('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
display('%% Step4: Calculate the eigenvec and eigenval');
[eivec, eival]=eig(covar)
% Plot data
subplot(2,2,2)
% new coordinates
t = -1:1
tval1 = eivec(1,2)/eivec(1,1)*t;
tval2 = eivec(2,2)/eivec(2,1)*t;
plot(t,tval1, t, tval2)
legend('eivec1','eivec2');
hold on;
% normal PCA data
plot(x,y,'k+');
title('Normal PCA data');
line([0 0],[-1 1],'Color','r','LineStyle',':');
line([-1 1],[0 0],'Color','r','LineStyle',':');
grid on
hold off
axis([-1 1 -1 1]);
57. Principal component analysis
57
5. MÔ PHỎNG TRÊN MATLAB
%% Step 5: Choosing components and forming a feature vector
display('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
display('%% Step 5: Choosing components and forming a fea_vector');
respone = input('Number of new coordinates (1 or 2): ');
dim = respone(1);
if (dim == 1)
eivalmax = max(diag(eival))
if eivalmax == eival(1,1)
fea_vector = eivec(:,1)
else
fea_vector = eivec(:,2)
end
end
if (dim == 2)
eivalmax = max(diag(eival))
if eivalmax == eival(1,1)
fea_vector = [eivec(:,1),eivec(:,1)]
else
fea_vector = [eivec(:,2),eivec(:,1)]
end
end
58. Principal component analysis
58
5. MÔ PHỎNG TRÊN MATLAB
%% Step 6: Deriving the new data set
display('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
display('%% Step 6: Deriving the new data set');
Xfinal = ((fea_vector).')*((Xnorm).')
x2 = Xfinal(1,:);
if (dim == 1)
y2 = 0;
else
y2 = Xfinal(2,:);
End
%% (continue...)
59. Principal component analysis
59
5. MÔ PHỎNG TRÊN MATLAB
% Plot data when chosing one eigvalue
subplot(2,2,3)
plot(x1,0,'k+');
title('Final data when chosing one eigvalue ');
line([0 0],[-1 1],'Color','r','LineStyle',':');
line([-1 1],[0 0],'Color','r','LineStyle',':');
grid on;
axis([-1 1 -1 1]);
% Plot data when chosing two eigvalues
subplot(2,2,4)
plot(x2,y2,'k+');
title('Final data when chosing two eigvalues ');
line([0 0],[-1 1],'Color','r','LineStyle',':');
line([-1 1],[0 0],'Color','r','LineStyle',':');
grid on;
axis([-1 1 -1 1]);