Bài tập lớn môn Đại số tuyến tính đề tài số 4 "Ứng dụng SVD giảm chiều dữ liệu"

Bài tập lớn môn Đại số tuyến tính đề tài số 4 "Ứng dụng SVD giảm chiều dữ liệu" giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao. Mời bạn đọc đón xem!

ĐẠI HC QUC GIA THÀNH PH H CHÍ MINH TRƯỜNG ĐẠI HC BÁCH KHOA
ĐẠI S TUYN TÍNH (MT1015)
BÁO CÁO BÀI TP LỚN ĐỀ TÀI S 4
ng Dng SVD Gim Chiu D Liu
lOMoARcPSD|36782889
Mc lc
1 Gii thiu v đề tài ..................................................................................................................................... 2
2 CƠ SỞ LÝ THUYT ....................................................................................................................................... 2
2.1 Mt s khái niệm cơ bản ................................................................................................................... 2
2.1.1 Tr riêng và vector riêng ca ma trn vuông .......................................................................... 2
2.1.2 Ma trn trc giao ................................................................................................................... 4
2.1.3 Chéo hóa ma trn .................................................................................................................. 5
2.1.4 Singular Values ....................................................................................................................... 7
2.2 Phát biu SVD .................................................................................................................................... 8
3 ÁP DNG SVD VÀO NÉN D LIU ............................................................................................................... 9
3.1 Các bước c th để gim chiu d liu ............................................................................................. 9
3.2 Ví d c th ...................................................................................................................................... 10
3.3 ng dng ca SVD vào nén nh ...................................................................................................... 12
4 ÁP DNG TRÊN MATLAB .......................................................................................................................... 12
4.1 Phn code matlab ............................................................................................................................ 12
4.2 Ví d minh ha ................................................................................................................................ 13
lOMoARcPSD|36782889
1 Gii thiu v đ tài
n nh mt k thut hóa các nh, s hóa nhm gim s ng các bit
d liệu để biu din nh. Mục đích của vic nén nh s mã hoá các d liu
nh v mt dng thu gn, ti thiu hoá c s bit dùng để biu din nh, nhm
giảm dung lượng lưu trữ gim ti thiu thi gian truyn ảnh đng thi
chúng ta vẫn đảm bảo được chất lượng ca nh. hai cách nén nh nén
không mt thông tin (lossless image compression) nén mt thông tin
(lossy image compression). Trong thc tế, để th nén được nhiu nh s,
người ta thường áp dụng các phương pháp nén mt mát thông tin vic
này không đồng nghĩa với vic làm mt nét ca nh. SVD (Singular Value
Decomposition) một phương pháp để phân tích mt ma trn bt k thành
tích ca ba ma trn thành phần. Phương pháp này được phát trin da trên
nhng kiến thức đã biết t ma trn trc giao ma trận đường chéo để tìm
đưc mt ma trn xp x mi ma trn gốc. Phân tích SVD thường được dùng
để trích chọn các đặc trưng bền vng nhiu ng dụng trong nh vc hình
hc vi phân, hi qui tuyến tính, kh nhiu âm thanh, x lý hình nh, các thut
toán nén gim chiu d liu. Hiện nay được ng dng ph biến trong h
thng giao thông vn ti ca nhiều nước nhằm đảm bo truyền thông tin đưc
nhanh chóng, gim độ tr, tiết kiệm dung lượng cho các camera giám sát, nhn
din bin s, kiểm soát ra vào bãi đỗ xe, nhn din tc nghẽn giao thông, đều
ng dụng SVD để nén d liu hình nh.
đây, chúng ta sẽ nói v ng dng ca SVD trong vic gim chiu d liệu, đặc
bit trong nén nh, nén file.
2 CƠ SỞ LÝ THUYT
2.1 Mt s khái niệm cơ bản
2.1.1 Tr riêng và vector riêng ca ma trn vuông
Cho A là mt ma trn cp n, nếu s vô hướng λ vector x = 0 R
n
tha mãn:
Ax = λx
thì
λ
đưc gi là **tr riêng** ca A và
x
là **vector riêng** tương ứng
vi tr riêng đó.
lOMoARcPSD|36782889
Tính cht
1.Nếu x mt vector riêng ca A ng vi λ thì kx, k = 0 cũng vector riêng
ng vi tr riêng đó.
Chng minh. Ta có:
Ax = λx kx
Ax = kx λx
k λx = λ kx λ kx = λx
Do k = 0 nên ta có:
λ kx = λx kx = x
Vy
kx
cũng là một vector riêng ca
A
ng vi tr riêng
λ
.
2.Mi ma trn vuông bc
n
đều có
n
tr riêng (k c lp) và có thcác s
phc.
Chng minh. Ta th s dng định Cayley-Hamilton. Định này cho biết
rng:
P(A) = 0
vi P(x) là đa thức đặc trưng của A.
Mặt khác, đa thức đặc trưng ca A n h số. Do đó, P(A) n nghim,
bao gm nghim thc và nghim o.
x
1
,x
2
,...,x
n
các nghim ca P(x). Nếu x
1
,x
2
,...,x
m
các nghim thc x
m
+ 1,...,x
n
các nghim o, thì các nghim thc là các tr riêng ca A.
lOMoARcPSD|36782889
Vy mi ma trn vuông bc
n
đều có
n
tr riêng (k c lp) thcác
s phc.
3.Vi ma trận đối xng, tt c các tr riêng đều là các s thc.
Chng minh. Ta có th s dụng định lý spectral cho ma trận đối xng.
Định lý này cho biết rng:
A = U · D · U
T
vi
U
là ma trn các vector riêng ca
A
D
là ma trận đường chéo
cha các tr riêng ca
A
.
Do
U
ma trn thc nên
U
T
cũng ma trận thực. Do đó, ma trận
D
cũng
là ma trn thc.
Vy tt c các tr riêng ca
A
đều là các s thc.
2.1.2 Ma trn trc giao
Ma trn vuông A bậc được gi là ma trn trc giao nếu:
A
T
= A
1
hoc
A
T
A = AA
T
= I
Trong đó I là ma trận đơn vị bậc tương ng vi bc ca ma trn A.
Ma trn trc giao th hin phép xoay ca một vectơ (phép xoay không làm
thay đổi tích vô hướng gia 2 vector):
Ví d, cho ma trn
là ma trn trc giao.
lOMoARcPSD|36782889
b xoay 90 độ theo chiều kim đồng h bi ma trn A.
b xoay 90 độ theo chiều ngược kim đồng h bi ma trn A.
Chng minh:
Để chng minh rng A là ma trn trc giao, ta cn chng minh rng A tha
mãn hai phương trình sau:
A
T
= A
1
(1)
A
T
A = AA
T
= I (2)
Chứng minh phương trình (1):
Ta có:
AT = (AT)1 = (A1)T
= A1
Chứng minh phương trình (2): Ta có:
A
T
A = A(A
T
)A
= A(A
1
)A =
A2
= I
Như vậy, ta đã chứng minh được rng A là ma trn trc giao.
2.1.3 Chéo hóa ma trn
Cho A là mt ma trn vuông cp n, xét ma trn kh nghch P cp n và ma trn
đưng chéo D, ta có:
D = PAP
1
P là ma trn làm chéo hóa ma trn A, còn D là dng chéo ca ma trn A.
lOMoARcPSD| 36782889
Quá trình chéo hóa là quá trình tìm các ma trn P và D trên.
Trong đó,
*
A
ma trn vuông cp
n
*
P
ma trn kh nghch cp
n
*
D
ma trn
đưng chéo cp
n
Gii thích:
Phương trình D = PAP
1
đưc gọi là phương trình chéo hóa ca ma trn A.
Ma trn
P
ma trn làm chéo hóa ma trn
A
. các ct các vector
riêng ca ma trn
A
, được chuẩn hóa theo vectơ đơn vị.
Ma trn
D
là dng chéo ca ma trn
A
. Nó có các phn t trên đường chéo
là các giá tr riêng ca ma trn
A
.
Quá trình chéo hóa:
Quá trình chéo hóa quá trình tìm các ma trn
P
D
thỏa mãn phương
trình D = PAP
1
.
nhiều cách để thc hin quá trình chéo hóa. Mt cách ph biến s
dụng phương pháp Jacobi.
Phương pháp Jacobi:
- Phương pháp Jacobi được thc hiện như sau:
1. Khi to ma trn
P
là ma trận đơn vị.
2. Lp lại các bước sau cho đến khi ma trn
A
đưc chéo hóa: * Chn
mt giá tr riêng
λ
i
ca ma trn
A
.
* Tìm vector riêng
v
i
ca ma trn
A
tương ứng vi giá tr riêng
λ
i
.
* Cp nht ma trn
P
theo công thc sau:
nếu
ij =
1 nếu
lOMoARcPSD|36782889
2.1.4 Singular Values
det(AλI) = 0
Trong đó,
*
A
ma trn vuông cp
n
*
λ
giá tr riêng ca ma trn
A
*
I
ma trn
đơn vị cùng bc vi ma trn
A
Lấy căn bậc hai ca
λ
, ta được các giá tr đưc gi là Singular Value ca ma
trn
A
:
σ
i
= pλ
i
Gii thích:
Phương trình detA ΛI= 0 là phương trình đặc trưng ca ma trn A. Nó có
n nghiệm, tương ứng vi n giá tr riêng ca ma trn A.
Lấy căn bậc hai ca các giá tr riêng
λ
i
, ta được các giá tr
σ
i
. Các giá tr này
đưc gi là các giá tr riêng ca ma trn A.
Ví d:
Gi s ma trn A có dng sau:
Ta có:
Giải phương trình:
λ2
Vy
lOMoARcPSD|36782889
σ
1
= √λ
1
= √1 σ
2
= √λ
2
= √3
2.2 Phát biu SVD
Mt ma trn
A
m
×
n
bt k đều có th đưc phân tích thành dng:
Trong đó:
A
là ma trận đầu vào bt k.
U V là ma trn trc giao (t phép tính AA
T
A
T
A).
Σ là ma trận đường chéo không vuông có cùng kích thưc vi ma trn A,
vi các phn t nằm trên đường chéo là Singular values ca ma trn A.
Trong đó, σ
1
σ
2
≥ ··· ≥ σ
r
≥ 0 (vi r là rank ca ma trn A).
lOMoARcPSD|36782889
3 ÁP DNG SVD VÀO NÉN D LIU
3.1 Các bước c th để gim chiu d liu
đây chúng ta sẽ s dụng phương pháp ct ngn ma trn (Truncated SVD)
được coi phương pháp xấp x hng ma trn tt nht (Best lowrank
Approximation).
Viết li biu thức (1) dưới dng tng các ma trn:
vi
σ
1
σ
2
≥ ··· ≥ σ
i
r
i
T
, vi0.
1
i r, là mt ma trn có rank bng 1.
Chú ý rng mi
u v
Vi 1
k r
, đặt , các giá tr trên đường chéo là không âm. Chú ý rng
trong ma trn
Σ
tích ma trnvà có giá tr gim dn
A
σ1 σ2 ··· iσmang giá tr ln, các giá tr
cònr ≥ 0. Đa số khi chúng ta phân thì ch một lượng nh σ
lại thường rt nhgn bng 0. Khi chúng ta b bt mt s giá tr
σ
i
(k < i <
r) rt bé phía sau thì giá tr ca A gần như không thay đổi. Do đó ta có thể xp
x ma trn
A
bng tng ca
k
(
k < r
) ma trn có rank bng 1:
lOMoARcPSD|36782889
Như vậy ta thy ta có th chọn độ sai s ca d liu ph thuc vào
k
.
Vi
k
càng ln thì sai s ca d liệu càng ít nhưng
k
vẫn bé hơn rank
A
.
3.2 Ví d c th
Cho ma trn:
SVD ca ma trn A được xác định bi A = UΣV
T
, trong đó U ma trn trc
giao bên trái, Σ là ma trn chứa các singular values trên đường chéo chính, và
V
T
là ma trn trc giao bên phi.
c 1: Xây dng ma trn U và V
- Ma trn U:
+ Tính A
T
A
+ Tìm vectơ riêng của A
T
A
**Tr riêng:
det(A
T
· A λI) = 0
**Vector riêng tương ứng:
det(A
T
· A λI)X = 0
Giải phương trình trên ta được 2 vector vi các giá tr tương ứng:
lOMoARcPSD|36782889
Ma trn U:
- Ma trn V:
+ Tính AA
T
Tương tự, ta cũng tìm tr riêng và vectơ riêng của
AA
T
Ma trn
V:
c 2: Xây dng ma trn
Σ
Vì ma trận A có kích thước 2x2 nên ma trn Σ cũng có kích thước tương tự vi
đưng chéo là các singular values ca
AA
T
hoc
A
T
A
Chúng ta cn tính các singular values t tr riêng ca
A
T
A
hoc
AA
T
.
Do đó, các trị ca A
T
A λ
1
= 53.07 λ
2
= 0.92.
Các singular values được tính bng cách lấy căn bậc hai ca các tr riêng
này:
Vy, ta có th phân rã A bằng phương pháp SVD:
lOMoARcPSD|36782889
3.3 ng dng ca SVD vào nén nh
Chúng ta có th nén nh vì thông tin trong bc nh sp xếp ngu nhiên mà có
trt t, cu trúc c th tùy thuc vào tng nh. thế, nếu phân tích, s
hóa được tính trt t, cấu trúc đó thì chúng ta thể b bt nhng phn thông
tin kém quan trọng đ biu din truyền đi với s ợng ít bit hơn so với nh
gc vẫn đảm bảo tính đầy đủ cn thiết ca nh. Khi nhận được thông tin
v nh, qtrình gii mã s sp xếp, t chc lại được bc nh xp x gn chính
xác so vi nh gc vn tha mãn chất lượng yêu cu. Nén nh (nén mt
thông tin) là phương pháp giảm dung lượng nh bng cách loi b các phn ít
quan trng trong ảnh đã được s hóa. Phân tích SVD với đặc tính xác đnh
đưc các phn t s tp trung thông tin cao ca nh nên th đưc s
dng trong nén nh. Khi mt hình nh được chuyển đổi bng SVD, không
b nén. Nhưng do d liu sau khi phân tích thì nhng giá tr đầu tiên đã một
ng ln thông tin hình nh, chúng ta th ch s dng mt vài giá tr ln
nhất đ th hin hình nh thì kết qu đạt được cũng sẽ không nhiu khác
bit so vi bn gc.
4 ÁP DNG TRÊN MATLAB
4.1 Phn code matlab
‘tenfile’ tên của file ta nhp vào img =
imread(’tenfile’); img_gray =
rgb2gray(img); [U, S, V] =
svd(double(img_gray));
k1 = 5; % S lượng giá tr singular để gi li ln 1 k2 = 10; % S
lượng giá tr singular để gi li ln 2 k3 = 20; % S lượng giá tr
singular để gi li ln 3
U_approx1 = U(:, 1:k1);
S_approx1 = S(1:k1, 1:k1); V_approx1 = V(:, 1:k1); img_approx1 = U_approx1 * S_approx1 * V_approx1’;
approx_error1 = norm(double(img_gray) - img_approx1, ’fro’) / norm(double(img_gray)
lOMoARcPSD|36782889
U_approx2 = U(:, 1:k2);
S_approx2 = S(1:k2, 1:k2); V_approx2 = V(:, 1:k2); img_approx2 = U_approx2 * S_approx2 * V_approx2’;
approx_error2 = norm(double(img_gray) - img_approx2, ’fro’) / norm(double(img_gray)
U_approx3 = U(:, 1:k3);
S_approx3 = S(1:k3, 1:k3); V_approx3 = V(:, 1:k3); img_approx3 = U_approx3 * S_approx3 * V_approx3’;
approx_error3 = norm(double(img_gray)-img_approx3,’fro’) / norm(double(img_gray),’f fprintf(’Sai số
xp x ln 1: %e\n’, approx_error1); fprintf(’Sai số xp x ln 2: %e\n’, approx_error2); fprintf(’Sai số xp
x ln 3: %e\n’, approx_error3);
figure;
subplot(2, 2, 1), imshow(img), title(’Hình ảnh gốc’); subplot(2, 2, 2),
imshow(uint8(img_approx1)), title(’Lần 1 gim chiều’); subplot(2, 2, 3),
imshow(uint8(img_approx2)), title(’Lần 2 gim chiều’); subplot(2, 2, 4),
imshow(uint8(img_approx3)), title(’Lần 3 gim chiều’);
4.2 Ví d minh ha
- d 1:
+ Đánh giá sai số:
Sai s xp x ln 1: 1.837305e-01
Sai s xp x ln 2: 1.709546e-01
Sai s xp x ln 3: 1.563930e-01
+ Tng quát:
lOMoARcPSD|36782889
- d 2:
+ Đánh giá sai số:
Sai s xp x ln 1: 9.306113e-02
Sai s xp x ln 2: 6.696519e-02
Sai s xp x ln 3: 4.522223e-02
+ Tng quát:
lOMoARcPSD|36782889
lOMoARcPSD| 36782889
| 1/17

Preview text:


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI SỐ TUYẾN TÍNH (MT1015)
BÁO CÁO BÀI TẬP LỚN ĐỀ TÀI SỐ 4
Ứng Dụng SVD Giảm Chiều Dữ Liệu lOMoARcPSD| 36782889 Mục lục
1 Giới thiệu về đề tài ..................................................................................................................................... 2
2 CƠ SỞ LÝ THUYẾT ....................................................................................................................................... 2
2.1 Một số khái niệm cơ bản ................................................................................................................... 2
2.1.1 Trị riêng và vector riêng của ma trận vuông .......................................................................... 2
2.1.2 Ma trận trực giao ................................................................................................................... 4
2.1.3 Chéo hóa ma trận .................................................................................................................. 5
2.1.4 Singular Values ....................................................................................................................... 7
2.2 Phát biểu SVD .................................................................................................................................... 8
3 ÁP DỤNG SVD VÀO NÉN DỮ LIỆU ............................................................................................................... 9
3.1 Các bước cụ thể để giảm chiều dữ liệu ............................................................................................. 9
3.2 Ví dụ cụ thể ...................................................................................................................................... 10
3.3 Ứng dụng của SVD vào nén ảnh ...................................................................................................... 12
4 ÁP DỤNG TRÊN MATLAB .......................................................................................................................... 12
4.1 Phần code matlab ............................................................................................................................ 12
4.2 Ví dụ minh họa ................................................................................................................................ 13 lOMoARcPSD| 36782889 1
Giới thiệu về đề tài
Nén ảnh là một kỹ thuật mã hóa các ảnh, số hóa nhằm giảm số lượng các bit
dữ liệu để biểu diễn ảnh. Mục đích của việc nén ảnh số là mã hoá các dữ liệu
ảnh về một dạng thu gọn, tối thiểu hoá cả số bit dùng để biểu diễn ảnh, nhằm
giảm dung lượng lưu trữ và giảm tối thiểu thời gian truyền ảnh và đồng thời
chúng ta vẫn đảm bảo được chất lượng của ảnh. Có hai cách nén ảnh là nén
không mất thông tin (lossless image compression) và nén có mất thông tin
(lossy image compression). Trong thực tế, để có thể nén được nhiều ảnh số,
người ta thường áp dụng các phương pháp nén có mất mát thông tin vì việc
này không đồng nghĩa với việc làm mất nét của ảnh. SVD (Singular Value
Decomposition) là một phương pháp để phân tích một ma trận bất kỳ thành
tích của ba ma trận thành phần. Phương pháp này được phát triển dựa trên
những kiến thức đã biết từ ma trận trực giao và ma trận đường chéo để tìm
được một ma trận xấp xỉ mới ma trận gốc. Phân tích SVD thường được dùng
để trích chọn các đặc trưng bền vững và có nhiều ứng dụng trong lĩnh vực hình
học vi phân, hồi qui tuyến tính, khử nhiễu âm thanh, xử lý hình ảnh, các thuật
toán nén và giảm chiều dữ liệu. Hiện nay được ứng dụng phổ biến trong hệ
thống giao thông vận tải của nhiều nước nhằm đảm bảo truyền thông tin được
nhanh chóng, giảm độ trễ, tiết kiệm dung lượng cho các camera giám sát, nhận
diện biển số, kiểm soát ra vào bãi đỗ xe, nhận diện tắc nghẽn giao thông, đều
ứng dụng SVD để nén dữ liệu hình ảnh.
Ở đây, chúng ta sẽ nói về ứng dụng của SVD trong việc giảm chiều dữ liệu, đặc
biệt trong nén ảnh, nén file. 2 CƠ SỞ LÝ THUYẾT 2.1
Một số khái niệm cơ bản 2.1.1
Trị riêng và vector riêng của ma trận vuông
Cho A là một ma trận cấp n, nếu số vô hướng λ và vector x = 0̸ ∈ Rn thỏa mãn: Ax = λx
thì λ được gọi là **trị riêng** của A và x là **vector riêng** tương ứng với trị riêng đó. lOMoARcPSD| 36782889 Tính chất
1.Nếu x là một vector riêng của A ứng với λ thì kx, k = 0̸ cũng là vector riêng
ứng với trị riêng đó. Chứng minh. Ta có: Ax = λx kx
Ax = kx λx
k λx = λ kx λ kx = λx
Do k = 0̸ nên ta có:
λ kx = λx kx = x
Vậy kx cũng là một vector riêng của A ứng với trị riêng λ.
2.Mọi ma trận vuông bậc n đều có n trị riêng (kể cả lặp) và có thể là các số phức.
Chứng minh. Ta có thể sử dụng định lý Cayley-Hamilton. Định lý này cho biết rằng: P(A) = 0
với P(x) là đa thức đặc trưng của A.
Mặt khác, đa thức đặc trưng của A n hệ số. Do đó, P(A) có n nghiệm,
bao gồm nghiệm thực và nghiệm ảo.
x1,x2,...,xn
là các nghiệm của P(x). Nếu x1,x2,...,xm là các nghiệm thực và xm + 1,...,xn
các nghiệm ảo, thì các nghiệm thực là các trị riêng của A. lOMoARcPSD| 36782889
Vậy mọi ma trận vuông bậc n đều có n trị riêng (kể cả lặp) và có thể là các số phức.
3.Với ma trận đối xứng, tất cả các trị riêng đều là các số thực.
Chứng minh. Ta có thể sử dụng định lý spectral cho ma trận đối xứng.
Định lý này cho biết rằng:
A = U · D · UT
với U là ma trận các vector riêng của A D là ma trận đường chéo
chứa các trị riêng của A.
Do U là ma trận thực nên UT cũng là ma trận thực. Do đó, ma trận D cũng là ma trận thực.
Vậy tất cả các trị riêng của A đều là các số thực. 2.1.2 Ma trận trực giao
Ma trận vuông A bậc được gọi là ma trận trực giao nếu: AT = A−1 hoặc
ATA = AAT = I
Trong đó I là ma trận đơn vị bậc tương ứng với bậc của ma trận A.
Ma trận trực giao thể hiện phép xoay của một vectơ (phép xoay không làm
thay đổi tích vô hướng giữa 2 vector): Ví dụ, cho ma trận là ma trận trực giao. lOMoARcPSD| 36782889
bị xoay 90 độ theo chiều kim đồng hồ bởi ma trận A.
bị xoay 90 độ theo chiều ngược kim đồng hồ bởi ma trận A. Chứng minh:
Để chứng minh rằng A là ma trận trực giao, ta cần chứng minh rằng A thỏa mãn hai phương trình sau: AT = A−1 (1) và
ATA = AAT = I (2)
Chứng minh phương trình (1): Ta có:
AT = (AT)−1 = (A−1)T = A−1
Chứng minh phương trình (2): Ta có:
ATA = A(AT)A
= A(A−1)A = A2 = I
Như vậy, ta đã chứng minh được rằng A là ma trận trực giao. 2.1.3 Chéo hóa ma trận
Cho A là một ma trận vuông cấp n, xét ma trận khả nghịch P cấp n và ma trận đường chéo D, ta có:
D = PAP −1
P là ma trận làm chéo hóa ma trận A, còn D là dạng chéo của ma trận A. lOMoAR cPSD| 36782889
Quá trình chéo hóa là quá trình tìm các ma trận P và D ở trên. Trong đó,
* A là ma trận vuông cấp n * P là ma trận khả nghịch cấp n * D là ma trận
đường chéo cấp n Giải thích:
Phương trình D = PAP −1 được gọi là phương trình chéo hóa của ma trận A.
Ma trận P là ma trận làm chéo hóa ma trận A. Nó có các cột là các vector
riêng của ma trận A, được chuẩn hóa theo vectơ đơn vị.
Ma trận D là dạng chéo của ma trận A. Nó có các phần tử trên đường chéo
là các giá trị riêng của ma trận A. Quá trình chéo hóa:
Quá trình chéo hóa là quá trình tìm các ma trận P D thỏa mãn phương
trình D = PAP −1.
Có nhiều cách để thực hiện quá trình chéo hóa. Một cách phổ biến là sử dụng phương pháp Jacobi. Phương pháp Jacobi:
- Phương pháp Jacobi được thực hiện như sau:
1. Khởi tạo ma trận P là ma trận đơn vị.
2. Lặp lại các bước sau cho đến khi ma trận A được chéo hóa: * Chọn
một giá trị riêng λi của ma trận A.
* Tìm vector riêng vi của ma trận A tương ứng với giá trị riêng λi.
* Cập nhật ma trận P theo công thức sau: nếu ij = 1 nếu lOMoARcPSD| 36782889 2.1.4 Singular Values
det(AλI) = 0 Trong đó,
* A là ma trận vuông cấp n * λ là giá trị riêng của ma trận A * I là ma trận
đơn vị cùng bậc với ma trận A
Lấy căn bậc hai của λ, ta được các giá trị được gọi là Singular Value của ma trận A: σi = pλi Giải thích:
Phương trình detA − ΛI= 0 là phương trình đặc trưng của ma trận A. Nó có
n nghiệm, tương ứng với n giá trị riêng của ma trận A.
Lấy căn bậc hai của các giá trị riêng λi, ta được các giá trị σi. Các giá trị này
được gọi là các giá trị riêng của ma trận A. Ví dụ:
Giả sử ma trận A có dạng sau: Ta có: Giải phương trình: λ2 Vậy lOMoARcPSD| 36782889
σ1 = √λ 1 = √1 σ2 = √λ 2 = √3 2.2 Phát biểu SVD
Một ma trận Am×n bất kỳ đều có thể được phân tích thành dạng: Trong đó:
A là ma trận đầu vào bất kỳ.
U V là ma trận trực giao (từ phép tính AAT ATA).
• Σ là ma trận đường chéo không vuông có cùng kích thước với ma trận A,
với các phần tử nằm trên đường chéo là Singular values của ma trận A.
Trong đó, σ1 ≥ σ2 ≥ ··· ≥ σr ≥ 0 (với r là rank của ma trận A). lOMoARcPSD| 36782889 3
ÁP DỤNG SVD VÀO NÉN DỮ LIỆU 3.1
Các bước cụ thể để giảm chiều dữ liệu
Ở đây chúng ta sẽ sử dụng phương pháp cắt ngắn ma trận (Truncated SVD)
được coi là phương pháp xấp xỉ hạng ma trận tốt nhất (Best lowrank Approximation).
Viết lại biểu thức (1) dưới dạng tổng các ma trận:
với σ1 ≥ σ2 ≥ ··· ≥ σiriT≥, với0. 1 ≤ i r, là một ma trận có rank bằng 1.
Chú ý rằng mỗi u v
Với 1 ≤ k r, đặt
, các giá trị trên đường chéo là không âm. Chú ý rằng trong ma trận Σ
tích ma trậnvà có giá trị giảm dầnA σ1 ≥ σ2 ≥ ··· ≥mang giá trị lớn, các giá trị
cònr ≥ 0. Đa số khi chúng ta phân thì chỉ một lượng nhỏ σ
lại thường rất nhỏ và gần bằng 0. Khi chúng ta bỏ bớt một số giá trị σi (k < i <
r) rất bé phía sau thì giá trị của A gần như không thay đổi. Do đó ta có thể xấp
xỉ ma trận A bằng tổng của k (k < r) ma trận có rank bằng 1: lOMoARcPSD| 36782889
Như vậy ta thấy ta có thể chọn độ sai số của dữ liệu phụ thuộc vào k.
Với k càng lớn thì sai số của dữ liệu càng ít nhưng k vẫn bé hơn rank A. 3.2 Ví dụ cụ thể Cho ma trận:
SVD của ma trận A được xác định bởi A = UΣV T, trong đó U là ma trận trực
giao bên trái, Σ là ma trận chứa các singular values trên đường chéo chính, và
V T là ma trận trực giao bên phải.
Bước 1: Xây dựng ma trận U và V - Ma trận U: + Tính ATA
+ Tìm vectơ riêng của ATA **Trị riêng:
det(AT · A λI) = 0
**Vector riêng tương ứng:
det(AT · A λI)X = 0
Giải phương trình trên ta được 2 vector với các giá trị tương ứng: lOMoARcPSD| 36782889 Ma trận U: - Ma trận V: + Tính AAT
Tương tự, ta cũng tìm trị riêng và vectơ riêng của AAT Ma trận V:
Bước 2: Xây dựng ma trận Σ
Vì ma trận A có kích thước 2x2 nên ma trận Σ cũng có kích thước tương tự với
đường chéo là các singular values của AAT hoặc ATA
Chúng ta cần tính các singular values từ trị riêng của ATA hoặc AAT.
Do đó, các trị của ATA λ1 = 53.07 và λ2 = 0.92.
Các singular values được tính bằng cách lấy căn bậc hai của các trị riêng này:
Vậy, ta có thể phân rã A bằng phương pháp SVD: lOMoARcPSD| 36782889 3.3
Ứng dụng của SVD vào nén ảnh
Chúng ta có thể nén ảnh vì thông tin trong bức ảnh sắp xếp ngẫu nhiên mà có
trật tự, có cấu trúc cụ thể tùy thuộc vào từng ảnh. Vì thế, nếu phân tích, số
hóa được tính trật tự, cấu trúc đó thì chúng ta có thể bỏ bớt những phần thông
tin kém quan trọng để biểu diễn và truyền đi với số lượng ít bit hơn so với ảnh
gốc mà vẫn đảm bảo tính đầy đủ cần thiết của ảnh. Khi nhận được thông tin
về ảnh, quá trình giải mã sẽ sắp xếp, tổ chức lại được bức ảnh xấp xỉ gần chính
xác so với ảnh gốc và vẫn thỏa mãn chất lượng yêu cầu. Nén ảnh (nén mất
thông tin) là phương pháp giảm dung lượng ảnh bằng cách loại bỏ các phần ít
quan trọng trong ảnh đã được số hóa. Phân tích SVD với đặc tính xác định
được các phần tử có sự tập trung thông tin cao của ảnh nên có thể được sử
dụng trong nén ảnh. Khi một hình ảnh được chuyển đổi bằng SVD, nó không
bị nén. Nhưng do dữ liệu sau khi phân tích thì những giá trị đầu tiên đã có một
lượng lớn thông tin hình ảnh, chúng ta có thể chỉ sử dụng một vài giá trị lớn
nhất để thể hiện hình ảnh thì kết quả đạt được cũng sẽ không có nhiều khác biệt so với bản gốc. 4 ÁP DỤNG TRÊN MATLAB 4.1 Phần code matlab
‘tenfile’ là tên của file ta nhập vào img = imread(’tenfile’); img_gray = rgb2gray(img); [U, S, V] = svd(double(img_gray));
k1 = 5; % Số lượng giá trị singular để giữ lại lần 1 k2 = 10; % Số
lượng giá trị singular để giữ lại lần 2 k3 = 20; % Số lượng giá trị
singular để giữ lại lần 3 U_approx1 = U(:, 1:k1);
S_approx1 = S(1:k1, 1:k1); V_approx1 = V(:, 1:k1); img_approx1 = U_approx1 * S_approx1 * V_approx1’;
approx_error1 = norm(double(img_gray) - img_approx1, ’fro’) / norm(double(img_gray) lOMoARcPSD| 36782889 U_approx2 = U(:, 1:k2);
S_approx2 = S(1:k2, 1:k2); V_approx2 = V(:, 1:k2); img_approx2 = U_approx2 * S_approx2 * V_approx2’;
approx_error2 = norm(double(img_gray) - img_approx2, ’fro’) / norm(double(img_gray) U_approx3 = U(:, 1:k3);
S_approx3 = S(1:k3, 1:k3); V_approx3 = V(:, 1:k3); img_approx3 = U_approx3 * S_approx3 * V_approx3’;
approx_error3 = norm(double(img_gray)-img_approx3,’fro’) / norm(double(img_gray),’f fprintf(’Sai số
xấp xỉ lần 1: %e\n’, approx_error1); fprintf(’Sai số xấp xỉ lần 2: %e\n’, approx_error2); fprintf(’Sai số xấp
xỉ lần 3: %e\n’, approx_error3); figure;
subplot(2, 2, 1), imshow(img), title(’Hình ảnh gốc’); subplot(2, 2, 2),
imshow(uint8(img_approx1)), title(’Lần 1 giảm chiều’); subplot(2, 2, 3),
imshow(uint8(img_approx2)), title(’Lần 2 giảm chiều’); subplot(2, 2, 4),
imshow(uint8(img_approx3)), title(’Lần 3 giảm chiều’); 4.2 Ví dụ minh họa - Ví dụ 1: + Đánh giá sai số:
Sai số xấp xỉ lần 1: 1.837305e-01
Sai số xấp xỉ lần 2: 1.709546e-01
Sai số xấp xỉ lần 3: 1.563930e-01 + Tổng quát: lOMoARcPSD| 36782889 - Ví dụ 2: + Đánh giá sai số:
Sai số xấp xỉ lần 1: 9.306113e-02
Sai số xấp xỉ lần 2: 6.696519e-02
Sai số xấp xỉ lần 3: 4.522223e-02 + Tổng quát: lOMoARcPSD| 36782889 lOMoAR cPSD| 36782889