1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo bài tập lớn môn đại số tuyến tính chủ đề phương pháp phân tích singular value decomposition (SVD) và một số ứng dụng

20 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phương pháp phân tích Singular Value Decomposition (SVD) và một số ứng dụng
Tác giả Nhóm Authors
Người hướng dẫn TS. Nguyễn Hữu Hiệp
Trường học Trường Đại học Bách Khoa – ĐHQG-HCM
Chuyên ngành Đại số tuyến tính
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2021
Thành phố Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 1,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương trình dùng để phân tích SVD của ma trận tùy ý và dùngđểnéndữliệu...12 1... Giả sử ma trận đối xứng A có các vector riêng x,y ứng với các giá trị riêng phân biệtλ,γ.Khiđó:... Singu

Trang 1

KhoaKỹthuậtHóahọc&Khoahọcứngdụng

BÁOCÁO BÀITẬPLỚN Môn:Đạisốtuyếntính

Chủ đề 4: P h ư ơ n g phápphântích SingularValueDecomposition(SVD)vàmộtsốứngdụng

Giảng viên: TS.NguyễnHữuHiệpNh

óm:L05_ĐSTT_18

TP.HồChíMinh,tháng12năm2021

Trang 2

Danhsáchthànhviên:

Trang 3

A Cơsởlýthuyết 4

1. Hệtrực giaovàhệtrựcchuẩn 4

 Địnhnghĩa: 4

 Tính chất: 4

1 Giátrịriêng,vectorriêngcủamộtmatrận 4

 Định nghĩa: 4

 Tính chất: 4

 Cáchtìmtrị riêng vàvectorriêng: 5

2 Chéohóamatrận 5

 Định Nghĩa: 5

 Tính chất: 5

3 SingularValueDecompositionSVD) 6

5.NguồngốctêngọiSingularValueDecomposition 7

B MộtsốứngdụngcủaSVD 9

1. Giảmchiềudữliệu 9

2. Nénảnh 9

3. PCA 12

C Chương trình dùng để phân tích SVD của ma trận tùy ý và dùngđểnéndữliệu 12

1. Code 12

2. Kếtquảcode 13

*Đồthịtính toánsailệchkhinénảnh: 19

D Nguồnthamkhảo 19

Trang 4

1 Hệ trực giaovàhệ trực chuẩn:

Đ ị n h n g h ĩ a :

 Vectorxđược gọilà vuônggócvớivector y, kýhiệux⊥ynếu (x,y)=0

VectorxđượcgọilàvuônggócvớitậphợpconM,kýhiệulàx⊥Mn ế u ∀ y∈M

thìx⊥y

MộttậphợpconMđượcgọilàhọtrựcgiaonếu∀ x,y∈M v à x≠yt h ì x⊥y

MộttậphợpconMđượcgọilàhọtrựcchuẩn,nếuMlàhọtrựcgiaovà∀ x∈M

thì‖x‖=1

Tí n h ch ất:

 U-1=UT:nghịchđảocủamộtmatrậntrựcgiaochínhlàchuyểnvịcủanó

 NếuUlàmatrậntrựcgiaothìchuyểnvịcủanóUTcũnglàmộtmatrậntrựcgiao

2. Giá trị riêng, vector riêng củamột matrận:

Đ ị n h n g h ĩ a :

 ChoA∈Mn(K).Sốλ0∈KđượcgọilàgiátrịriêngcủamatrậnA,nếutồntạivectorX0≠0s aochoA.X0=λ0.X0

 VectorX0đượcgọilàvectorriêngcủamatrậnAtươngứngvớigiátrịriêngλ0.

Tín h ch ất:

 Mỗivectorriêngcómộtgiátrịduynhất

 NếuxlàvectorriêngứngvớigiátrịriêngλcủamatrậnvuôngAthìk.xcũnglàvectorriêng ứng vớiλ

 Nếu λlàgiátrịriêngcủamatrận vuôngAthìλncũnglàgiátrịriêngcủamatrậnAn

 Mộtmatrậnđốixứng:A=AT,thìcácvectorriêngvuônggócvớinhau

Giả sử ma trận đối xứng A có các vector riêng x,y ứng với các giá trị riêng phân biệtλ,γ.Khiđó:

Trang 5

11 22 33

λ.xT.y=(λ.x)T.y= (A.x)T.y=xT.AT.y=xT.A.y=xT.γ.y=γ.xT.y

¿>¿(λ –γ).xT.y=0

¿>¿xT.y=0

Cá ch t ìm tr ị r i ê n g và v e ctor r iê n g :

Tìm trịriêng:

Giảiphươngtrình:det(A-λI)=0¿>λkl àcáctrịriêngcủaA

Lưu ý: matrậnvuôngcấp3thìtìmλkbằngcách:

−λ3+Tr(A)λ2−(A+A+A)λ+det(A)=0

Tìmvectorriêng:

Ứngvớimỗiλk,giảiphươngtrình(A–λ0I).X=0

¿ X≠0làvectorriêngcủaAứngvớiλk

3 Chéo hóama trận:

Đ ị n h N g h ĩ a :

MatrậnvuôngAgọilàđốixứngnếu:A T=A

MatrậnvuôngPgọilàtrựcgiaonếu:P−1=P T

 Điềunàytươngđương:P P−1=P.P T≤¿PPT =I

 Matrận A là matrận trực giao khi vàchỉ khi họ vector cột ( hoặch ọ

v e c t o r hàng) của A là họ trực chuẩn (các vector vuông góc nhau và độ dài mỗi vectorbằng1)

 Ma trận vuông A được gọi là chéo hóa được nếu tồn tại ma trận chéo D và matrậnkhảnghịchP thỏa

Tí n h ch ấ t :

 MatrậnvuôngAcấpnchéohóađượckhivàchỉkhitồntạinvectorriêngđộclậptuy

ến tínhcủaA

Trang 6

 Nếuma trậnAchéohóatrực giaođược, thìAlàmatrậnđốixứng.

 MatrậnvuôngAchéohóađượckhivàchỉkhibộihìnhhọccủamọitrịriêngb ằngvới bộiđại số củanó

 NếuAlàmatrậnđốixứng, thì:

 Trị riêngcủa Alà cácsốthực

 Aluônluônchéohóatrựcgiaođược

 Haivectorriêngứngvớicác trịriêngkhácnhauvuông gócvớinhau

4 Singular ValueDecomposition (SVD):

 Phương pháp phân tích trị riêng (SVD- SingularValue Decomposition) là một đềtài rất được quan tâm của đại số tuyến tính Phương pháp này có nhiều ứng dụngthực tế Đặc điểm quan trọng của phương pháp này có thể áp dụng cho bất kỳ matrậnthựcmx nnào Nộidung củanólà:

A=USVT(1)

*Trong đó:U và V là các ma trận trực giao và S là ma trận đường chéo Ma trận U làma trận gồm các vector riêng trái của A, ma trận V là ma trận gồm các vector riêng

phảicủaAvàmatrậnSlàmatrận đườngchéo,mỗiphần tửđườngchéolàmộttrịriêng của A.Cáctrịriêngđượcsắptrênđườngchéochínhtheothứtựsau:

s1>s 2> >sr> sr+1= = sp= 0

Đ ể t ìm c á c ma tr ận S , U , V ta thự c h iện c á c bư ớ c nh ư s a u :

 Bước1:TìmmatrậnV.NhânA T vàohaivế của(1),tacó:

A T A=(USV T ) T USV T =V.S T U T U.S.V T

=V.S T S.V T

=V.S 2 V T

Do UT.U=I Như vậy, để tìm ma trận S và V, ta chỉ cần tìm các trị riêng và

cácvectorriêngcủa

AT.Avìtừ(1)tathấycáctrịriêngcủaAT.Achínhlàbìnhphươngcácphầntửcủa

ScòncácvectorriêngcủaAT.A chínhlàcác cộtcủa V

Bước2:TìmmatrậnU.Nhânhaivếcủa(1)vớiA T vàsửdụng:VTV= Itacũngcó:

Trang 7

1 2 1

3 6

A. A T =U.S 2 U T

VậycáccộtcủaUchínhlà cácvectorriêngcủaA.AT.Cuốicùng,taphântíchmatrậnAdưới

5 Nguồn gốc tên gọi Singular Value Decomposition:

Tạmbỏqua chiềucủamỗimatrận,từ(1)ta có:

AA T=USV T(USV T)T=USV T VS T U T

¿USS T U T =USS T U−1(¿)

Dấubằngcuốicùngxảy ravìVTV =IdoVl à một matrậntrựcgiao

QuansátthấyrằngSSTlàmộtmatrậnđườngchéovớicácphầntửtrênđườngchéolàλ1, λ2,

…,λ r.Vậy (*) chính là Eigen Decomposition (phương trình đặc trưng) củaA

A T.Thêmnữaλ12,…,λ r chínhlàcáctrịriêngcủa A A T.MatrậnA A T l u ô n làmatrận nửa

xácđịnhdươngnêncáctrịriêngcủanólàkhôngâm.Cácσ1làcănbậchaicủacáctrị

riêngc ủ a A AT

cònđượcgọilàSingularValuescủaAcáitênSingularValueDecompositionxuấtpháttừđây

Vd:TìmphântíchSVDcủamatrậnsauA=(−1 1 2).

Lờigiải:

TachéohóatrựcgiaomatrậnA A T =UMU T

TacóAA T=(6 3)=B

Trang 8

1 2

( )

)

λ2=3

λ3=9

2

√6 0

−7

√51 1

√6

−1

√6

1

√2 1

√2

1

√51

−1

√51

1

Giải phươngtrình:det (B−λI)=0=¿[λ1=3

=¿M=(3 0)

λ2=9 +Ứngvớiλ1=3tađượccơsởE = ( 1,1)T

+Ứng vớiλ2=9tađượccơsởE =(−1,1)T

0 9

(1

1

− 1

)

Chiamỗi vectorchođộ dài củanóvàlập matrận trựcgiao:U=√2 √2

√2 √2

(2 1 −1

)

-TươngtựchoATA=1 5 4

−1 4 5

[λ1=0

0 0 0

¿>M=0 3 0

0 0 9 +Ứngvớiλ1=0tađượccơsởE1¿(2,1,−1) T

+Ứngvớiλ2=3ta đượccơsởE2¿(0,1,1) T

+Ứngvớiλ3=9 tađượccơsởE3¿(−7,1,−1) T

Chiamỗivectorchođộdàicủanóvàlậpmatrậntrựcgiao

()

VậyphântíchSVDcủamatrậnAlàA=USV T v ớ iUvàVlàma trậnởtrênvà

S=M =√3 0 0

0 3 0

Giảip h ư ơ n g t r ì n h :

− λ3+12λ2−27λ=0=¿

¿>V=

Trang 9

B MộtsốứngdụngcủaSVD

Ngoàicácứngdụngtrongtốiưucựctrịrờirạc,látcắtcựcđại,K-meansClustering,Graph

Partitioning,…SVD được sử dụng nhiều trong các lĩnh vực (nhất là MachineLearning)ứng dụngcơbản nhấtlàtrongnénvàxửlý hìnhảnh

1 Giảm chiềudữliệu :

- Các ma trận Akgần khít với A và có hạng bằng k nên ta có thể dùng SVD để giảmchiềudữliệu

- Việc giảm chiều dữ liệu giúp ta có khả năng biễu diễn bộ dữ liệu đó một cách kháchính xác trên đồ thị Giả sử ta có một tập dữ liệu 4 chiều và ta muốn biểu diễn tập dữliệunàytrênđồthịthìtacóthểdùngSVDđểgiảmchiềudữliệuvề3

- Việc giảm chiều dữ liệu nhưng vẫn giữ được đặc trưng của bộ dữ liệu còn giúp sốlượngthamsốcầntínhtoánlàíthơnnêntínhtoánnhanhhơn

2 Nén ảnh :

Cáchthức dùngphươngphápSVDđểnénảnhnhưsau:

- ChoAlàảnhxám,hoặcmộttrong3thànhphầnảnhmàu,đượcbiểudiễnbởimatrận

m×n.SửdụngbiếnđổiSVD của Achúngta cóthểbiểudiễnmatrậnảnh

vớirlàbậccủamatrậnAvàSlàmatrậnđườngchéom×ngồmcáctrịđơncủa A,

Trong nén ảnh, ta không cần lưu trữ hay truyền toàn bộ dữ liệu ảnhnhưng vẫn lưu trữ hoặc truyền đủ những thông tin quan trọng giúp khôi phục được

ảnh.BiếnđổiSVDthíchhợpvớiđiềunàyvìtacóthểxấpxỉAbằngcáchbỏđicácthành

phần ảnh tương ứng với các trị đơncó giá trị nhỏ, do đó ảnh sẽ không mất nhiềuthôngtin khithaychúngbằng 0 Từđó,ảnhxấpxỉ đượctạo ranhưsau:

Điềuđócónghĩalà thayvìtoànbộA,chúngtacóthể chỉcầnlưutrữvàtruyềnnhậnvà

Trang 10

- Hình 1:Minh họa việc sử dụng SVD để nén ảnh Ảnh ban đầu kích thướcm×n,

cóthể sửdụngbiếnđổiSVD choảnhkíchthướcm×nở trêntathuđược3thànhphần

,S, ,phầntrắngcủamatrậntượngtrưngchocácphầntửkhôngcầnlưutrữ.

=

Hình1.MôtảcáchthứcSVDnénảnh.

- Khi đủnhỏ,tasẽcótổngsốcầnlưulà và

nénảnhbằngSVDtrởnênhiệuquả.ChúýrằngnếuảnhAcóhạngrnhỏkhiếncho

thìviệcphântíchSVDsẽlàmgiảmkhônggianlưutrữmà khônglàmmấtthôngtin ảnh

- SửdụngphầnmềmMatlab,thựchiệnnénảnhsửdụngbiếnđổiSVDvớicácgiátrịkhácnhauc

homột tấmảnh kích thước1920 × 1080

- Kếtquảthuđượcthể hiệnởHình2:

Hìnhgốc

Trang 11

k=61 k=1

k=301

Hình 2.Ảnhgốc(a)vàkếtquả giảinénvớicácgiátrị khácnhau

- Đồthịmôtảsựsaisốgiữaảnhgốcbanđầuvàảnhsaukhinén,cùngvớiđánhgiávềhiệuquả

nénkhiápdụngSVDvớicác giátrị khácnhau,thểhiệnởHình3.

Hình3.Sai

sốgiữaảnh nén vàảnh gốcvới các giátrị khácnhau

Rõ ràng làkhigiátrị càng

Trang 12

lớn, ảnh khôi phục sau khi nén càng gần với ảnh gốc và ngược lại Điều này dễ hiểu vìkhic à n g lớn,thôngtinmấtđicàngít,saibiệtvớiảnhgốccũnggiảmđi.Dotỉlệnén

bằng nên nó tỉ lệ thuận vớinhư minh họa trongHình 3Ở những

hìnhcócấutrúc đặcbiệthơnnhư làcó hạngnhỏthìhiệuquảnéncàngcao

3 PCA :

- Ta thấy rằng, khi từ một tập điểm cho trước, việc giảm chiều cũng như là kẻ một

siêuphẳng biểu diễn khít tập điểm đã cho Ta không thể dùng các ma trậnAkmột cách trựctiếpđược, vìcác matrậnAkbiểudiễnmộtsiêuphẳngđiquagóctọa độ

- Ta có thể thấy rằngv1biểu diễn phương mà tập điểm đó phân bố tập trung nhất khinhìntừgốctọađộ(‖Av1‖đạtgiátrịlớnnhất).Sauđóv2lạibiểudiễnphươngvuông góc vớiv1mà phương đó tập điểm phân bố tập trung nhất cũng khi nhìn từ gốc tọa độ Vậy một cách đơn giản, ta chỉ cần dời nó về trọng tâm của tập điểm và dùng SVD giảmchiềuxuống

và dùng để néndữliệu.

1 Code:

closeallc

learallclc

inImage=imread('L05_nhom18.png');% doc file

anhinImage=rgb2gray(inImage);%chuyenanhmausang2mautrangden

inImageD=double(inImage);%chuyendoidulieucuahinhanh

[U,S,V]=svd(inImageD);%phantichhinhanh

%taomatranrongdispEr

numSVals=[];%taomatranrongnumSVals

SvaoC

Trang 13

C(k+1:end,:)=0;%tuhangk+1denhetcho=0C(:,k+1:end)=0;%tucotk+1den hetcho=0

%=>taomatrancheoC

D=U*C*V';%dunglaianhbangviecphantichanh

%xuathinhanhramanhinhvatinhtoanloifigure;

%lammoilaihinhanh

buffer=sprintf('Hinhanhmoixuatrasudung

imshow(uint8(D));% xuat hinh anh o

8bittitle(buffer);%xuattencuahinhanhduoctaolai

voigiatriktuongung

error=sum(sum((inImageD-D).^2));% tinh toan

laibangcongthuc(sailechgiuaanhduoctaolaivaanhgoc)

%luugiatridexuatlenmanhinh

dispEr=[dispEr;error];

%bieudiengiatrilaithanhmatran1cotnhieuhang

numSVals=[numSVals;k];

%bieudiengiatrilaithanhmatran1cotnhieuhang

end

% ve do thi tinh toan sai

lechfigure;%lammoidothi

title('Dothitinhtoansailechkhinenanh');%dattendothi

plot(numSVals, dispEr);% ve do

xlabel('SoluongSingularValueduocsudung');%taotrucx

ylabel('Sailechgiuaanhnenvaanhgoc');%taotrucy

2 Kết quả code:

*Figure1:

Trang 14

*Figure3:

Trang 15

*Figure 5:

Trang 16

*Figure7:

Trang 17

*Figure 9:

Trang 18

*Figure 11:

Trang 19

*Đồ thị tínhtoán sai lệch khi nénảnh:

D.Nguồn thamkh ảo

tính–Đặng VănVinh

- Đạisốtuyếntínhnângcao–ĐặngVănVinh

- SingularValueDecomposition-Mathworks

- Matlabvàứngdụngtrongviễnthông-TS.PhạmHồngLiên,ĐặngNgọcKhoa-TrầnThanh

Phương

- SửdụngMatlabtrongđạisốtuyếntính

- GiớithiệuvềứngdụngTF-IDFvàSVDtrongthuthậpthôngtindữliệuWebsite.

- TómtắtluậnvănthạcsĩchuyênngànhKhoahọcMáytính–PhạmHoàngTrương

- SVDtrongnénảnh(KhoaĐiện–Điệntử,ĐạihọcDuyTân)

- http://vimach.net/threads/matlab-trong-xu-ly-anh-7-ham-co-ban-cho-xu-ly-anh

- https://stackoverrun.com/ UsingSVDtocompressanimageinMATLAB

- https://viblo.asia/p/handbook-singular-values-decomposition-va-mot-so-ung-dung

- https://machinelearningcoban.com/ Bài26:SingularValueDecomposition

Ngày đăng: 06/05/2023, 23:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w