Professional Documents
Culture Documents
Trước khi đi vào nội dung của luận văn, em xin bày tỏ lòng biết ơn chân thành tới
toàn thể giáo viên của Trường Đại học Quy Nhơn nói chung và của Khoa Toán-Thống
kê nói riêng vì đã tận tâm dạy bảo em trong suốt quá trình em theo học tại trường,
và đặc biệt là sự định hướng dẫn dắt của TS Lâm Thị Thanh Tâm đối với đề tài khóa
luận này.
Nhân dịp này em cũng xin được gửi những lời cảm ơn đến những người bạn, đặc
biệt là những người thân trong gia đình đã luôn giúp đỡ em hết mình, luôn động viên,
cổ vũ tinh thần và tạo điều kiện thuận lợi giúp em có thể hoàn thành được khoá luận
tốt nghiệp này.
Trong quá trình viết báo cáo này mặc dù đã được chỉnh sửa nhiều lần nhưng không
thể tránh khỏi việc thiếu sót và gây cho người đọc cảm giác khó hiểu. Em xin chân
thành cảm ơn nếu nhận được sự góp ý từ các quý thầy cô, anh chị và bạn bè để có thể
chỉnh sửa luận văn được tốt hơn.
i
Mục lục
Lời cảm ơn i
Lời mở đầu iv
Một số ký hiệu vi
ii
4.2 Phân tích SVD trong xử lí ảnh . . . . . . . . . . . . . . . . . . . . . . 27
iii
Lời mở đầu
Trong thời đại công nghệ thông tin phát triển mạnh mẽ ngày nay, việc thu thập và xử
lý dữ liệu ngày càng trở nên quan trọng và cần thiết. Các phương pháp phân tích dữ
liệu như phân rã giá trị suy biến (SVD) và phân tích thành phần chính (PCA) đóng
vai trò quan trọng trong việc giải quyết các vấn đề liên quan đến dữ liệu lớn và đa
chiều. Những phương pháp này không chỉ giúp giảm kích thước dữ liệu mà còn giúp
khai thác thông tin hữu ích từ dữ liệu gốc. SVD và PCA đã và đang được ứng dụng
rộng rãi trong nhiều lĩnh vực khoa học và kỹ thuật, chẳng hạn như xử lý hình ảnh,
phân tích dữ liệu, nhận dạng mẫu, thống kê, v.v.
Trong luận văn này, chúng tôi tập trung nghiên cứu về các phương pháp phân tích
dữ liệu như phân rã giá trị suy biến (SVD) và phân tích thành phần chính (PCA),
cũng như một số ứng dụng của chúng trong các bài toán thực tế. Mục tiêu chính của
luận văn là tìm hiểu về các tính chất cơ bản, cách tính và ứng dụng của SVD và PCA
trong việc giải quyết các vấn đề liên quan đến dữ liệu.
Đối tượng nghiên cứu trong luận văn này là phương pháp phân rã giá trị suy biến
(SVD) và phân tích thành phần chính (PCA). Ngoài lời cảm ơn, mục lục, lời mở đầu
và một số ký hiệu, luận văn được chia làm bốn chương chính:
Chương 1: Kiến thức cơ bản. Trong chương này, chúng tôi trình bày một số kiến
thức cơ sở về đại số tuyến tính, giải tích và thống kê, nhằm chuẩn bị cho việc tìm hiểu
về SVD và PCA.
Chương 2: Phân rã giá trị suy biến (SVD). Trong chương này, chúng tôi giới thiệu
về SVD, cách tính SVD và mối quan hệ giữa SVD và giá trị riêng của ma trận. Ngoài
ra, chúng tôi cũng trình bày một số ứng dụng của SVD trong việc giải quyết các bài
toán thực tế.
Chương 3: Phân tích thành phần chính (PCA). Trong chương này, chúng tôi giới
iv
thiệu về PCA, cách tính PCA và mối quan hệ giữa PCA và SVD. Chúng tôi cũng sẽ
trình bày một số ứng dụng của PCA trong việc giảm kích thước dữ liệu, phân tích dữ
liệu và các bài toán khác.
Chương 4: Ứng dụng của SVD và PCA trong các bài toán thực tế. Chương này sẽ
trình bày một số ví dụ cụ thể về việc áp dụng SVD và PCA trong các bài toán thực
tế như xử lý hình ảnh, nhận dạng mẫu, phân tích dữ liệu và thống kê.
Luận văn tốt nghiệp này được hoàn thành dưới sự hướng dẫn của TS. lâm Thị
Thanh Tâm. Nhân dịp này, tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy/cô hướng dẫn,
đã không chỉ hỗ trợ tôi trong việc nghiên cứu khoa học mà còn tận tình giúp đỡ và
tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình làm đề tài. Tôi cũng xin chân
thành cảm ơn tập thể lớp Toán Ứng Dụng K42, khoa Toán và THống kê Trường Đại
học Quy Nhơn đã giúp đỡ và tạo mọi điều kiện thuận lợi cho tôi hoàn thành khóa học
cùng với luận văn này.
Cuối cùng, tôi xin chân thành cảm ơn gia đình, bạn bè, những người thân yêu đã
luôn quan tâm, giúp đỡ và ủng hộ tôi trong suốt quá trình học tập và thực hiện luận
văn này. Dù đã cố gắng hết sức, nhưng do thời gian và năng lực có hạn, luận văn không
tránh khỏi những thiếu sót và hạn chế. Rất mong nhận được sự góp ý và chỉ bảo của
quý thầy cô, quý bạn đồng nghiệp để luận văn tốt nghiệp này được hoàn thiện hơn.
Tôi xin chân thành cảm ơn.
v
Một số ký hiệu
vi
Chương 1
1.1 Ma trận
.
Định nghĩa 1.1.1. Ma trận cỡ m × n là một bảng gồm mn số thực được sắp xếp
thành m dòng và n cột. Ma trận thường được kí hiệu như sau
a11 a12 a13 · · · ··· ··· a1n
a21 a22 a23 · · · · · · · · · a2n
A=
.. .. .. ..
,
. ··· ··· ···
. . .
am1 am2 a13 · · · · · · · · · amn
hoặc
a a12 a13 ··· ··· ··· a1n
11
··· ··· ···
a21 a22 a23 a2n
A=
.. .. .. ..
,
··· ··· ···
. . . .
am1 am2 a13 ··· · · · · · · amn
hoặc A = (aij )m×n , trong đó aij là phần tử của ma trận nằm trên dòng i, cột j, với
i = 1, 2, . . . , m, và j = 1, 2, . . . , n.
Khi m = n, ta gọi ma trận cỡ m × m là ma trận vuông cấp m. Các phần tử a11 ,
a22 , . . . , amm nằm trên một đường thẳng được gọi đường chéo chính của ma trận.
1
Định nghĩa 1.1.2. Ma trận đơn vị cấp n là ma trận vuông cấp n có mọi phần tử nằm
trên đường chéo chính bằng 1, các phần tử khác bằng 0 . Ta ký hiệu ma trận đơn vị
cấp n bởi In và nó có dạng như sau
1 0 ··· 0
1 ··· 0
0
In = .. .. . . ..
. .
. .
0 0 ... 1
Trong trường hợp không cần chú ý đến cấp của ma trận, ta ký hiệu ma trận đơn vị
bởi I .
Định nghĩa 1.1.3. Ma trận đường chéo là ma trận vuông có các phần tử nằm trên
đường chéo chính khác 0, các phần tử nằm ngoài đường chéo chính bằng 0 . Ma trận
đường chéo có dạng như sau
a11 0 ... 0
a22 · · ·
0 0
D= .. .. . . ..
.
. . .
0 0 . . . amm
Ma trận chỉ có một dòng được gọi là vector dòng. Ma trận chỉ có một cột được gọi
là vector cột.
Định nghĩa 1.1.4. Ma trận vuông A cấp n được gọi là ma trận khả nghịch nếu tồn
tại một ma trận A′ vuông cấp n thỏa mãn AA′ = A′ A = In . Ma trận A được gọi là
ma trận nghịch đảo của ma trận A, và được ký hiệu là A−1
Định nghĩa 1.1.5. Cho ma trận A = (aij )m×n . Ma trận chuyển vị của A, ký hiệu là
AT , có dạng AT = (aji )n×m .
Ma trận vuông A được gọi là ma trận đối xứng nếu AT = A, và được gọi là ma
trận phản đối xứng nếu AT = −A.
Định nghĩa 1.1.6. Ma trận vuông A được gọi là ma trận trực giao nếu AT A =
AAT = I
Pn
Nhận xét: (i) Ma trận A = [aij ]n×n là ma trận trực giao khi và chỉ khi k=1 aik ajk =
δij , với δij là kí hiệu Kronecker.
2
(ii) Ma trận trực giao A là khả nghịch và AT = A−1 .
(iii) Ma trận A trực giao khi và chỉ khi các vector cột và các vector hàng của A
tạo thành các hệ trực chuẩn.
Định nghĩa 1.1.7. Cho A là một ma trận vuông cấp n. Định thức của ma trận A,
ký hiệu là det(A) hay |A| là một giá trị được xác định bằng công thức
trong đó Aik = (−1)i+k det (Mik ), với Mik là ma trận vuông cấp n − 1 nhận được
từ ma trận A bằng cách bỏ đi dòng thứ i và cột thứ k. Đại lượng Aik được gọi là phần
bù đại số của aik .
Nhận xét:
- Định thức cấp một: Nếu A =(a11 ) thì
det(A) = a11 .
a b
- Định thức cấp hai: Nếu A = thì det(A) = ad − bc.
c d
Định nghĩa 1.1.9. Định thức con cấp cao nhất, khác 0 của ma trận A được gọi là
định thức con cơ sở của ma trận A. Một ma trận A có thể có nhiều định thức con cơ
sở cùng cấp.
Hạng của ma trận A là cấp của định thức con cơ sở. Ký hiệu hạng của ma trận A
là rank(A).
Nhận xét: Cho A là ma trận cấp m×n, B là ma trận cấp n×l. (i) Nếu rank(B) = n
thì rank(A · B) = rank(A).
(ii) Nếu rank(A) = n thì rank(A.B) = rank(B).
Định nghĩa 1.1.10. Vết của ma trận vuông A cấp n được xác định bằng tổng các
phần tử trên đường chéo chính của ma trận A, và được ký hiệu là Tr(A).
3
1.2 Vector riêng- Giá trị riêng
Định nghĩa 1.2.1. Cho A là ma trận vuông cấp n. Khi đó đa thức bậc n của biến λ
được xác định như sau
a11 − λ a12 ... a1n
a22 − λ
a21 ... a2n
PA (λ) = det(A − λI) = .. .. .. ..
.
. . .
. . . ann − λ
an1 an2
được gọi là đa thức đặc trưng của ma trận A. Các nghiệm của đa thức PA (λ) được
gọi là các giá trị riêng của ma trận A.
Vector u ∈ Rn được gọi là vector riêng ứng với giá trị riêng λ của ma trận A nếu
thỏa Au = λu.
Nhận xét:
(i) Nếu λ là một giá trị riêng của A thì det(A − λI) = 0. Khi đó hệ phương trình
thuần nhất
x
1
..
(A − λI) . = 0
xn
có vô số nghiệm.
(ii) Mỗi giá trị riêng có thể có nhiều vector riêng.
(iii) Mỗi vector riêng chỉ ứng với một giá trị riêng duy nhất.
(iv) Nếu λ = 0 là một giá trị riêng của ma trận A thì A không khả nghịch. Ngược
lại, nếu mọi giá trị riêng của A đều khác 0 thì ma trận A khả nghịch.
4
riêng của A, và các vector cột của U là các vetor riêng của A tương ứng với các giá
trị riêng đó. Tức là, nếu
D = diag (λ1 , λ2 , . . . , λn )
và
h i
U= (1) (2) (n)
u | u ... ... u
uT1 uT1 Au1 uT1 AU1 λ1 0
UT AU = A (u1 − U1 ) = = = D.
UT1 UT1 Au1 UT1 AU1 0 D1
5
Điều này chứng tỏ A = UDUT , với U là ma trận trực giao cấp n và D = diag (λ1 , λ2 , . . . , λn ) .
Đây được gọi là phân tích giá trị riêng của ma trận A (Eigen value decomposition,
EVD).
6
Chương 2
Trong chương này, chúng tôi trình bày cơ sở của phân tích giá trị kì dị của ma trận,
thuật toán phân tích giá trị kì dị, và trình bày một số tính chất của ma trận liên quan
đến phân tích giá trị kì dị của nó.
7
Định lý 2.2.1. Cho A là một ma trận có cấp m × n. Khi đó, mọi giá trị riêng của ma
trận AT A đều không âm.
Chứng minh. Dễ thấy AT A là một ma trận đối xứng. Theo Định lí 1.3.1, mọi giá
trị riêng của AT A đều là số thực. Với mỗi giá trị riêng λ của AT A, giả sử v là véc tơ
riêng tương ứng. Khi đó
AT Av = λv
Để ý rằng ta có thể chọn v là véc tơ đơn vị, i.e. ∥v∥ = 1. Với cách chọn như vậy,
ta nhận được
Do vậy, λ ⩾ 0. Ta có định nghĩa và cách xác định các giá trị kì dị của một ma trận
như sau
Định lý 2.2.2. Mọi ma trận A cỡ m × n bất kì đều có phân tích SVD có dạng
A = UDVT
Chứng minh. Vì AT A là ma trận đối xứng nên theo Định lí 2.2.1 n giá trị riêng
λ1 , . . . , λn của nó đều không âm. Do đó tồn tại r ⩽ n sao cho λ1 ⩾ λ2 ⩾ λr > 0 và
8
λj = 0 với j > r. Khi đó ma trận A có các giá trị kì dị là σ1 ⩾ σ2 ⩾ · · · ⩾ σr ⩾ 0, và
σj = 0 với j > r.
Chọn vi ∈ Rn , i = 1, 2, . . . , n, là các vetor riêng tương ứng với λi sao cho vi là các
vetor đơn vị. Đặt V = (v1 , v2 , . . . , vn ), với vi là các vector cột. Khi đó V là ma trận
trực giao.
Avi
Với σi , 1 ⩽ i ⩽ r, là các giá trị kì dị dương của A, đặt ui = σi
,i = 1, 2, . . . , r. Khi
đó ui là vector đơn vị trong Rm .
Xây dựng ma trận U = (u1 , u2 , . . . , um ), với uj = 0, r < j ⩽ m. Ta có U là ma
trận trực giao.
Ta chứng minh A = UDVT , hay AV = UD.
Ta có
= UD
Vậy A = UDVT
Trong trường hợp rank(A) = r < n, thì SVD của X có dạng "chặt cụt" như sau:
X = Ur Sr VrT
trong đó Ur , Vr lần lượt là ma trận được tạo bởi r cột đầu tiên của U, V , và Sr là
ma trận con cấp r × r được tạo bởi r hàng đầu tiên và r cột đầu tiên của S. Khai triển
(2.3) được gọi là phân tích SVD "chặt cụt" của X.
Định lý 2.2.3 (Về dạng khai triển của phân tích giá trị kì dị). Cho A là ma
trận cỡ m × n bất kì. Khi đó
trong đó σi là các giá trị kì dị dương của ma trận A, ui là các vector kì dị trái và
vi là các vector kì dị phải của ma trận A.
Chứng minh. Ta có
9
v1T
Dr×r . . . 0
v2T
.. ..
T
UDV = [u1 , u2 , . . . , um ]
. ... . ..
.
0 ... 0
vnT
v1T
T
v
2
..
Dr×r . . . 0
.
.. ..
= [u1 , u2 , . . . , ur , ur+1 , . . . , um ] .. T
.
. . vr
T
0 ... 0 vr+1
..
.
vnT
v1T v1T
σ ... 0
1 v2T
h i
v2T
. .
= [u1 , u2 , . . . , ur ] .. . . . ..
.. + ur+1 ur+2 . . . um
[0]
..
.
.
0 . . . σr
T T
vr vn
v1T
σ ... 0
1 v2 T
.. . . .
. ..
= [u1 , u2 , . . . , ur ] . ..
.
0 . . . σr
vrT
v1T
v2T
T T T
= [σ1 u1 , . . . , σr ur ] .. = σ1 u1 v1 + σ2 u2 v2 + · · · + σr ur vr .
.
T
vr
10
√
của A là σi = λi , i = 1, n và D = diag (σ1 , σ2 , . . . , σn )
- Bước 2. Tương ứng với mỗi giá trị riêng λi , tìm véctơ riêng vi ∈ Rn sao cho
AT A − λI vi = 0. Từ đó tìm được ma trận trực giao V cấp n chứa các véctơ kì dị
phải của A.
- Bước 3. Xác định các véctơ kì dị trái của A theo công thức
1
ui = Avi
σi
Bổ sung n − r véctơ ur+1 , . . . , un vào hệ {u1 , u2 , . . . , ur } sao cho {u1 , u2 , . . . , un } lập
thành một cơ sở trực chuẩn của Rn . Từ đó nhận được ma trận trực giao U chứa các
véctơ kì dị trái của A, và
A = UDVT
Ví dụ
1 0
Tìm SVD của ma trận A = 1 0 . Lời giải.
0 1
Bước 1: Tìm các giá trị kì dị củ ma trận A
Ta có
1 0
1 1 0
2 0
AT A = 1 0 =
0 0 1 0 1
0 1
Giải phương trình det AT A − λI = 0, ta tìm đượccác giá trị riêng λ của AT A là
√
λ1 = 2, λ2 = 1. Do đó các giá trị kì dị của A là σ1 = 2, σ2 = 1. Suy ra
√
2 0
D=
0 1
11
T
Giải
phương
A
trình A − λI v = 0 ta tìm được các véctơ riêng tương ứng là
1 0
v1 = và v2 = . Từ đó suy ra
0 1
1 0
VT =
0 1
và
1 0 0
1 0
u2 = Av1 = 1 0 = 0
σ2
1
0 1 1
Do đó
√1 0
2
U=
1
√
2
0
0 1
12
A = UDVT
Khi đó, hạng của A đúng bằng số các giá trị kì dị dương của A.
Chứng minh. Giả sử r là số các giá trị kì dị dương của A. Đặt Ur = [u1 , u2 , . . . , ur ],
Vr = [v1 , v2 , . . . , vr ]. Do tính chất của hạng của ma trận và tính trực giao của U, V
ta suy ra
Do đó
Định lý 2.4.2. Cho A là một ma trận có cỡ m × n. Giả sử A có phân tích SVD dưới
dạng khai triển là
A = σ1 u1 v1T + · · · + σr ur vrT
Ak = σ1 u1 v1T + · · · + σk uk vkT
Ta có
13
T T
u1 u1 u u1 u1
1
u2 u2
u2 u2 u2
.. = Ik và rank .. = rank
= k.
.. .. ..
.
.
. . .
uk uk uk uk uk
Xét rank σ1 v1T , σ2 v2T , . . . , σk vkT . Ta có
Do đó
σ1 σ1 0 ... 0
T T
σ2 0 σ2 . . . 0
σ1 v1 , . . . , σk vk (v1 , v2 , . . . , vk ) = ..
Ik =
.. .. . . ..
=B
.
. . . .
σk 0 0 . . . σk
o
T
2
DVT T
2F =
VDT
2F =
DT ∥2F = σ12 +σ22 +· · ·+σr2
T
2
∥A∥2F = UDV F = ∥DV
F =
Vậy
14
q
∥A∥2F = σ12 + · · · + σr2
15
Chương 3
16
3.2 Ý tưởng
Giả sử dữ liệu ban đầu là x ∈ Rm và dữ liệu đã được giảm chiều là z ∈ Rr với
r < m. Cách đơn giản nhất để giảm chiều dữ liệu từ m về r < m là chỉ cần giữ lại r
phần tử quan trọng nhất. Có hai câu hỏi được đặt ra ở đây. Câu hỏi thứ nhất, làm
thế nào để xác định tầm quan trọng của mỗi chiều dữ liệu? Câu hỏi thứ hai, nếu tầm
quan trọng của các chiều dữ liệu là như nhau, ta cần bỏ đi chiều nào?
Để trả lời câu hỏi thứ nhất, ta quan sát Hình 2.2a. Giả sử các điểm dữ liệu có
thành phần thứ hai (phương đứng) giống hệt nhau hoặc sai khác nhau rất ít (phương
sai nhỏ). Như vậy thành phần này hoàn toàn có thể được lược bỏ đi, và ta ngầm hiểu
rằng nó sẽ được xấp xỉ bằng kỳ vọng của thành phần đó trên toàn bộ các điểm dữ liệu.
Ngược lại, việc làm này nếu được áp dụng lên thành phần thứ nhất (phương ngang) sẽ
khiến lượng thông tin bị mất đi rất nhiều do sai số xấp xỉ quá lớn. Vì vậy, lượng thông
tin theo mỗi thành phần có thể được đo bằng phương sai của dữ liệu trên thành phần
đó. Tổng lượng thông tin có thể được coi là tổng phương sai trên toàn bộ các thành
phần.
Câu hỏi thứ hai tương ứng với trường hợp Hình 2.2b. Trong cả hai chiều, phương
sai của dữ liệu đều lớn, việc bỏ đi một trong hai chiều đều dẫn đến việc lượng thông
tin bị mất đi là rất lớn. Tuy nhiên, quan sát ban đầu của chúng ta là nếu xoay trục
tọa độ đi một góc phù hợp, một trong hai chiều dữ liệu có thể được giảm đi vì dữ liệu
có xu hướng phân bố xung quanh một đường thẳng.
thêm 2 hình zô Hình 2.2: Ví dụ về phương sai của dữ liệu trong không gian hai
chiều. (a) Chiều thứ hai có phương sai (tỉ lệ với độ rộng của đường hình chuông) nhỏ
hơn chiều thứ nhất. (b) Cả hai chiều có phương sai đáng kể. Phương sai của mỗi chiều
là phương sai của thành phần tương ứng được lấy trên toàn bộ dữ liệu. Phương sai tỉ
lệ thuận với độ phân tán của dữ liệu. Ý tưởng chính của PCA: Tìm một hệ trực chuẩn
mới sao cho trong hệ này, các thành phần quan trọng nhất nằm trong r thành phần
đầu tiên.
PCA là một phương pháp đi tìm một phép xoay trục tọa độ để được một hệ trục
tọa độ mới sao cho trong hệ mới này, thông tin của dữ liệu chủ yếu tập trung ở vài
thành phần. Phần còn lại chứa ít thông tin hơn có thể được lược bỏ.
17
3.3 Phân tích thành phần chính
Về mặt hình thức, cho ma trận dữ liệu X ∈ Rm×n với mỗi giá trị đã được chuẩn
hóa sao cho mỗi cột có giá trị trung bình là 0 và phương sai là 1 . PCA của X với r
thành phần là tìm ma trận trực giao A ∈ Rm×r và ma trận B ∈ Rn×r sao cho X có
thể biểu diễn được dưới dạng ma trận
X = AB T + E
trong đó ∥E∥2 đạt giá trị nhỏ nhất. Ma trận A được gọi là ma trận thành phần,
và các cột của nó là các thành phần chính. Ma trận B được gọi là ma trận tải, các tải
trọng là các trọng số cho phép tái cấu trúc các biến ban đầu dưới dạng tổ hợp tuyến
tính của các thành phần chính. Cặp (A, B) được gọi là nghiệm PCA.
Ngoài ra, PCA được trình bày theo một cách khác dưới dạng véctơ như sau:
r
X
X= ai bTi + E
i=1
Điều này cho thấy PCA là xấp xỉ X với tổng của r ma trận có hạng 1 . Mục tiêu của
2
PCA là làm giảm tối thiểu ∥E∥2 =
X − AB T
. Vì rank AB T ≤ r nên AB T là SVD
1
"chặt cụt" của X, nghĩa là nếu Ur Sr (Vr )T là SVD "chặt cụt" của X thì A = m 2 Ur và
1
B T = m− 2 Sr (Vr )T . Số lượng thành phần tối thiểu phù hợp là số giá trị kì dị khác 0
của X, hay là hạng của X. Vì vậy, không cần thiết phải lấy số thành phần r lớn hơn
số lượng biến n. Trên thực tế, r thường được lấy nhỏ hơn nhiều so với n.
Do thứ tự giảm dần của các giá trị kì dị của X trong SVD, thành phần chính
đầu tiên giải thích phương sai nhiều nhất có thể và từng thành phần chính tiếp theo
giải thích phương sai với ràng buộc là nó trực giao (không tương quan với các thành
1
phần trước đó). Khi đó tổng phương sai được giải thích là tr BB T = tr m− 2 Sr2 với
tr (Sr2 ) là tổng bình phương của r giá trị kì dị lớn nhất của X.
sectionTìm các thành phần chính của bài toán PCA thông qua SVD
Pm
Xét một vectơ x bất kì. Thành phần chính là tổ hợp tuyến tính s = i=1 wi xi có
chứa càng nhiều phương sai của dữ liệu đầu vào càng tốt. Như vậy, thành phần chính
đầu tiên được định nghĩa bằng trực giác là tổ hợp tuyến tính của các biến quan sát,
trong đó có phương sai lớn nhất.
18
Chúng ta cần đưa ra ràng buộc cho chuẩn của vectơ w = (w1 , w2 , . . . , wm ). Để đơn
giản, chúng ta ràng buộc w có chuẩn bằng 1 , tức là
v
u m
uX
∥w∥ = t wi2 = 1
i=1
Các ràng buộc khác về giá trị chuẩn của w chúng ta có thể đưa về ràng buộc trên.
Chú ý rằng phương sai của một tổ hợp tuyến tính bất kì đều có thể được tính thông
qua ma trận hiệp phương sai của dữ liệu. Xét một tổ hợp tuyến tính wT x = m
P
i=1 wi xi .
n 2 o
wT x wT x wT x = E wT xxT w = wT E xxT
E =E
= wT Cw
trong đó C = E xxT là ma trận hiệp phương sai. Vì vậy, bài toán cơ bản PCA
được xác định như sau:
max wT Cw
w:∥w∥=1
Vì C là ma trận đối xứng nên theo Định lí phổ của ma trận đối xứng, tồn tại ma
trận trực giao U ∈ Rm×n và ma trận đường chéo D = diag (λ1 , . . . , λn ) ∈ Rn×n sao cho
C = U DU T , trong đó λ1 , . . . , λn là các giá trị riêng của C, và các véctơ cột của U là
các véctơ riêng của C ứng với giá trị riêng đó. Thực hiện đổi biến v = U T w. Khi đó ta
nhận được
n
X
T T T T
w Cw = w U DU w = v Dv = vi2 λi
i=1
Vì U trực giao nên ∥v∥ = ∥w∥, do đó, v có ràng buộc ∥v∥ = 1. Tiếp tục thực hiện
phép đổi biến mi = vi2 , i = 1, . . . , n. Khi đó ràng buộc ∥v∥ = 1 tương đương với ràng
buộc mi ≥ 0 và ni=1 mi = 1. Bài toán được chuyển sang dạng
P
n
X n
X
max mi λi , với mi ≥ 0, mi = 1.
i=1 i=1
Rõ ràng, bài toán cho thấy giá trị lớn nhất tìm được khi mi tương ứng với λi lớn
nhất bằng 1 và các mi còn lại bằng 0 . Kí hiệu i∗ là chỉ số của giá trị riêng lớn nhất.
19
Trở lại biến w, điều này tương đương với w bắt đầu từ vectơ riêng thứ i∗ , tức là cột
thứ i∗ của U. Như vậy, thành phần chính đầu tiên được tìm một cách dễ dàng thông
qua phân tích giá trị riêng.
Do các vectơ riêng của ma trận đối xứng là trực giao nên việc tìm thành phần chính
thứ hai đồng nghĩa với việc tối đa hóa phương sai sao cho vi∗ vẫn bằng 0 . Điều này
thực sự tương đương với việc tạo w trực giao mới cho vectơ riêng đầu tiên. Như vậy,
về mặt mi , chúng ta có bài toán tối ưu hóa tương tự nhưng với ràng buộc mi∗ = 0. Rõ
ràng, nghiệm của bài toán tối ưu đó thu được khi w bằng với vectơ riêng tương ứng
với giá trị riêng lớn nhất thứ hai. Lôgic này áp dụng cho thành phần chính thứ k.
Do đó, tất cả các thành phần chính có thể được tìm thấy bằng cách đặt các vectơ
riêng ui , i = 1, . . . , n trong U sao cho các giá trị riêng giảm dần. Chúng ta hãy giả sử
U được định nghĩa như vậy. Khi đó thành phần chính thứ i có dạng
si = uTi x
Lưu ý rằng tất cả các λi đều không âm đối với ma trận hiệp phương sai.
và
(AQ)T (AQ) = QT AT AQ = QT Ir Q = QT Q = Ir
20
(AQ)(BQ)T = AQQT B T = AIr B T = AB T
và
X − AQQT B T
2 =
X − AB T
2
1 1
A = m 2 Ur , B T = m− 2 Sr (Vr )T
- Bước 3: Nếu nghiệm (A, B) chưa tốt thì chọn phép quay Q, với Q là ma trận trực
giao cấp r, ta tìm được nghiệm của mô hình PCA là (AQ, BQ)
21
Chương 4
4.1 Ứng dụng của SVD trong bài toán xấp xỉ hạnh
thấp tốt nhất của ma trận
Về lí thuyết, khi làm việc với ma trận, ta cần nắm được toàn bộ những thông tin
về ma trận đó. Tuy nhiên, trong thực tế có những ma trận cấp rất lớn với nhiều phần
tử, lượng thông tin cần xử lí nhiều khiến ta rất khó khăn khi tiếp cận. Vấn đề đặt ra
là, làm thế nào để ta cần loại bỏ, giảm tải bớt những thông tin, số liệu không cần thiết
mà vẫn đảm bảo giữ lại những số liệu, những thông tin đặc trưng của ma trận, nhằm
giúp cho công việc nghiên cứu được thuận tiện và đơn giản hơn. Nói cách khác, ta cần
tìm một ma trận có hạng nhỏ hơn xấp xỉ với ma trận đã cho. Một trong những công
cụ có thể giúp ta tìm được ma trận xấp xỉ đó chính là SVD. Trong chương này, chúng
ta sẽ cùng tìm hiểu về ứng dụng của SVD trong bài toán xấp xỉ hạng thấp tốt nhất
của ma trận.
ho A là một ma trận cấp m × n bất kì, rank(A) = r. Giả sử A có phân tích SVD
dạng khai triển là
r
X
A= σi ui viT
i=1
22
k
X
Ak = σi ui viT
i=1
Khi đó, rank (Ak ) = k. Hơn nữa, Ak chính là ma trận xấp xỉ tốt nhất có hạng bằng
k của A theo cả hai chuẩn là chuẩn Frobenius và chuẩn 2. Ta có hai định lí quan trọng
sau
∥A − B∥F ⩾ ∥A − Ak ∥F .
Bổ đề 4.1.1. Giả sử A là một ma trận cấp m × n bất kì, rank(A) = r, A có phân tích
SVD dạng khai triển là
r
X
A= σi ui viT
i=1
k k
X 2 X 2
∥Ax∥2F ⩽ σk2 ∥x∥2F + σi2 viT x − σk2 viT x .
i=1 i=1
Chứng minh. Theo phân tích SVD dạng khai triển của A ta có
r
X r
X r
X
σi ui ViT x = σi ui ViT x = σi ViT x ui
Ax =
i=1 i=1 i=1
r k r
X 2 X 2 X 2
∥Ax∥2F = σi2 ViT x ⩽ σi2 ViT x + σk2 ViT x .
i=1 i=1 i=k+1
Mặt khác
2 2 2 2
2
σk2 ki=1 ViT x +σk2 ri=k+1 ViT x = σk2 ri=1 ViT x ⩽ σk2 ni=1 ViT x = σk2
VT x
F =
P P P P
σk2 ∥x∥2F
Do đó,
23
r k
X 2 X 2
σk2 ViT x ⩽ σk2 ∥x∥2F − σk2 ViT x
i=k+1 i=1
Vậy
k k
X 2 X 2
∥Ax∥2F ⩽ σk2 ∥x∥2F + σi2 ViT x − σk2 ViT x
i=1 i=1
k
X
B= xi yiT
i=1
k
! k
! k k
!
X X X X
BBT − ABT − BAT = xi yiT yi xTi −A yi xTi − xi yiT AT
i=1 i=1 i=1 i=1
k
X k
X k
X k
X k
X
= xi xTi − xi yiT AT − Ai xTi + Ai yiT AT − Ai yiT AT
i=1 i=1 i=1 i=1 i=1
Xk k
X k
X
xi xTi − yiT AT − Ayi xTi − yiT AT − Ayi yiT AT
=
i=1 i=1 i=1
Xk k
X
(xi − Ayi ) xTi − yiT AT − Ayi yiT AT
=
i=1 i=1
Xk k
X
= (xi − Ayi ) (xi − yi A)T − (Ayi ) (ayi )T .
i=1 i=1
Vì
k
! k
X X
Tr (xi − Ayi ) (xi − yi A)T = ∥xi − Ayi ∥2F ⩾ 0
i=1 i=1
nên suy ra
24
k
X k
X
T
B∥2F T
∥Ayi ∥2F
∥A − = Tr AA + Tr (xi − Ayi ) (xi − yi A) −
i=1 i=1
Xk
⩾ Tr AAT − ∥Ayi ∥2F .
i=1
Pk
Tiếp theo, ta đánh giá số hạng i=1 ∥Ayi ∥2F trong bất đẳng thức (∗ ). Theo Bổ đề
3.2 .2 ta có
k k
X 2 X 2
∥Ayi ∥2F ⩽ σk2 + σi2 ViT yi − σk2 VVT yi .
i=1 i=1
k k
" k k
#
2 2 2
X
X X X
Ayj
⩽ kσk2 + σi2 ViT yj − σk2 ViT yj
j=1 j=1 i=1 i=1
k
" k
#
X X 2
= kσk2 + σi2 − σk 2
ViT yj
j=1 i=1
k
" k
#
X X 2
σk2 σi2 σk2 ViT yj
= + −
i=1 j=1
k
" k
#
X X 2
= σk2 + σi2 − σk 2
viT yj .
i=1 j=1
Mặt khác,
k n
X 2 X 2
2
2
ViT yj ⩽ ViT yj =
ViT Y
F =
ViT
F = 1
j=1 j=1
k k
Ayj
2 ⩽
X
X
F
σk2
j=1 i=1
k k
X X
∥A − B∥2F ⩾ Tr AAT − ∥Ayi ∥2F ⩾ ∥A∥2F − σi2 .
i=1 i=1
Pk
Khi B = Ak = i=1 σi ui ViT , ta có
25
r
X
A − Ak = σi ui ViT
i=k+1
Từ đó suy ra
r
X r
X k
X k
X
∥A − Ak ∥2F = σi2 = σi2 − σi2 = ∥A∥2F − σi2 .
i=k+1 i=1 i=1 i=1
Điều này chứng tỏ Ak chính là xấp xỉ hạng k tốt nhất của ma trận A theo chuẩn
Frobenius.
Định lí 3.2.3. Giả sử A là ma trận cỡ m × n bất kì, với rank(A) = r và A có khai
triển kì dị SVD là
r
X
A= σi ui ViT
i=1
∥A − B∥2 ⩾ σk+1
Pk
Dấu " =" xảy ra khi B = Ak = i=1 σi ui ViT .
Chúng minh. Giả sử tồn tại ma trận B có rank(B) ⩽ k và ∥A − B∥2 < σk+1 . Vì
rank(B) ⩽ k nên tồn tại một không gian con W cỡ r − k sao cho với mọi w ∈ W thì
Bw = 0.
Do đó với mọi w ∈ W thì Aw = (A − B)w và
Mặt khác, tồn tại một không gian con U có chiều là k + 1 được xây dựng từ k + 1
giá trị kì dị đầu tiên của ma trận A sao cho
26
Khi đó dim(U + W) = (r − k) + (k + 1) = r + 1 > r. Do đó tồn tại V ̸= 0 và
V ∈ U ∩ W. Suy ra ∥AV∥2 < σk+1 ∥V∥2 và ∥AV∥ ⩾ σk+1 ∥V∥2 . Điều này không thể
xảy ra. Vì vậy giả thiết phản chứng ban đầu là sai.
Vậy với mọi ma trận B cỡ m × n bất kì có rank(B) ⩽ k thì ∥A − B∥2 ⩾ σk+1 .
Khi B = Ak thì ∥A − Ak ∥2 = σk+1 . Điều này chứng tỏ Ak chính là xấp xỉ hạng k
tốt nhất của A theo chuẩn 2 .
A = σ1 u1 V1T + · · · + σr ur VrT
Theo như chứng minh ở Định lí 3.2.1, với mỗi giá trị k < r thì Ak = σ1 u1 V1T + · · · +
σk uk VkT là xấp xỉ hạng k tốt nhất của A.
Ví dụ, k = 20 thì ma trận Ak thể hiện các dữ liệu của A tương ứng với 20 giá trị
kì dị đầu tiên. Như vậy, ta chỉ cần lưu trữ 20 giá trị kì dị, 20 vector ui , 20 vector Vi ,
tương đương với 12420 số. Tương tự như vậy với hai ma trận B và C, số lượng các số
27
phải lưu trữ là 37260 số. Rõ ràng phân tích SVD đã giúp giảm tải một lượng thông tin
cần lưu trữ một cách đáng kể.
Trong Python, ta có thể hiệu chỉnh độ nét của hình ảnh theo tham số k tùy chọn.
Ta xét ví dụ sau
28