Phương pháp SVD đã được phát triển dựa trên những tính chất của ma trận trực giao và ma trận đường chéo để tìm ra một ma trận xấp xỉ với ma trận gốc.. Người ta đã chứng minh được rằng ma
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Giảng viên hướng dẫn: Vũ Thị Bích Trâm
Nhóm sinh viên thực hiện: Nhóm 9_Lớp DL05
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
Chủ đề 5:
NÊU CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD.
ỨNG DỤNG CỦA PHÂN TÍCH SVD ĐỂ NÉN DỮ LIỆU.
ST
PHÂN CÔNG CÔNG VIỆC
100%
2 2313084 Nguyễn Thị Thanh
Phần 2: phântích suy biến(1,2,3);
100%
Họ và tên nhóm trưởng: Số điện thoại:
Email:
1
Trang 3Nhận xét của giảng viên:
GIẢNG VIÊN
(Kí và ghi rõ họ tên)
NHÓM TRƯỞNG
(Ký và ghi rõ họ tên)
Trang 4II PHÂN TÍCH SUY BIẾN SVD VÀ ỨNG DỤNG
1 Singular value decomposition ( phân tích suy biến)
2 Mối liên hệ giữa phân tích suy biến và phân tích riêng
3 Các dạng phân tích suy biến
3 Giải thích chi tiết
IV TÀI LIỆU THAM KHẢO
3
Trang 5LỜI MỞ ĐẦU
Đại số tuyến tính nói chung có rất nhiều ứng dụng trong hầu hết các lĩnh vực trong khoa học: kinh tế, môi trường, công nghệ máy tính, xử lý tín hiệu, đồ họa, Một phần nhỏ trong số đó phải nhắc đến là phương pháp phân tích SVD trong nhiều bài toán khác nhau Phương pháp phân tích suy biến (singular value decomposition) được viết tắt là SVD là một trong những phương pháp thuộc nhóm matrix factorization đượcphát triển lần đầu bởi những nhà hình học vi phân Phương pháp SVD đã được phát triển dựa trên những tính chất của ma trận trực giao và ma trận đường chéo để tìm ra một ma trận xấp xỉ với ma trận gốc Phương pháp này sau đó đã được ứng dụng rộng rãi trong các lĩnh vực như hình học vi phân, hồi y tuyến tính, xử lý hình ảnh,
clustering, các thuật toán nén và giảm chiều dữ liệu, khử nhiễu âm thanh
Phương pháp SVD sẽ tìm ra một lớp các ma trận xấp xỉ tốt nhất với một ma trậncho trước dựa trên khoảng cách norm Frobenios giữa 2 ma trận Người ta đã chứng minh được rằng ma trận xấp xỉ tốt nhất được biểu diễn dưới dạng tích của 3 ma trận rấtđặc biệt bao gồm 2 ma trận trực giao (orthogonal matrix) và 1 ma trận đường
chéo (diagonal matrix) Quá trình nhân ma trận thực chất là quá trình biến đổi các điểm dữ liệu của ma trận gốc thông qua những phép xoay trục (rotation) và phép thay đổi độ lớn (scaling) và từ đó tạo ra những điểm dữ liệu mới trong không gian mới Điều đặc biệt của ma trận đường chéo đó là các phần tử của nó chính là những giá trị riêng của ma trận gốc Những điểm dữ liệu trong không gian mới có thể giữ được 100% thông tin ban đầu hoặc chỉ giữ một phần lớn thông tin của dữ liệu ban đầu thôngqua các phép truncate SVD Bằng cách sắp xếp các trị riêng theo thứ tự giảm dần trên đường chéo chính thuật toán SVD có thể thu được ma trận xấp xỉ tốt nhất mà vẫn đảm bảo giảm được hạng của ma trận sau biến đổi và kích thước các ma trận nhân tử nằm trong giới hạn cho phép Do đó nó tiết kiệm được thời gian và chi phí tính toán và đồng thời cũng tìm ra được một giá trị dự báo cho ma trận gốc với mức độ chính xác cao Ngoài ứng dụng để phân tích dữ liệu, SVD còn có các ứng dụng khác như hồi quytuyến tính, trong tối ưu cực trị rời rạc, lát cắt cực đại, khử nhiễu, rất thích hợp cho lượng dữ liệu lớn
Đề tài cũng đã giúp chúng em tiếp cận sâu hơn về chương trình Matlab, qua đó thực hiện một số lệnh code nhằm giải quyết bài toán một cách trực quan,
đơn giản và chính xác hơn Bên cạnh đó đề tài đã góp phần giúp em hiểu được sựthú vị của môn học Đại số tuyến tính và những ứng dụng thực tiễn của cơ sở lí thuyết vào trong thực tế Chúng em cũng đã được trau dồi thêm những kỹ năng sống và làm việc theo nhóm
Trang 6I CƠ SỞ LÝ THUYẾT
1 Trị riêng và vector riêng
Cho một ma trận vuông A ∈ R n× n , nếu số vô hướng λ và vector x ≠ 0∈ R n thoả mãn:
3 Với ma trận đối xứng, tất cả các trị riêng đều là các số thực
4 Với ma trận xác định dương, tất cả các trị riêng của nó đều là các số thựcdương Với ma trận nửa xác định dương, tất cả các trị riêng của nó đều là các số thực không âm
Tính chất cuối cùng có thể được suy ra từ định nghĩa của ma trận (nửa) xác định dương Thật vậy, gọi u ≠ 0 là vector riêng ứng với một trị riêng λ của ma trận A xác định dương, ta có:
Au =λu ⇒u T Au = λ u T u = λ ‖u ‖22
Vì A là nửa xác định dương nên với mọi u ≠ 0 :uT Au nên ‖u ‖22>0 Từ đó suy ra λ làmột số không âm
2 Hệ trực giao và trực chuẩn
Một hệ cơ sở u1,u2, … , u m ∈ R m
được gọi là trực giao (orthogonal) nếu mỗi vector
là khác 0 và tích của hai vector khác nhau bất kỳ bằng 0:
Trang 7U U T =U T
U =I
Trong đó I là ma trận đơn vị bậc 𝑚 Ta gọi U là ma trận trực giao (orthogonal matrix). Ma trận loại này không được gọi là ma trận trực chuẩn, không có định nghĩa cho ma trận trực chuẩn
3 Định thức (determinant) của ma trận trực giao bằng 1 hoặc -1 Điều này
có thể suy ra từ việc det(U) = det(UT) và det(U) det(UT) = det(I) = 1
4 Ma trận trực giao thể hiện cho phép xoay (rotate) một vector Giả sử có hai vector x , y∈ R m và ma trận trực giao U∈ R m ×m Dùng ma trận này để xoay hai vector trên ta được U x , U y Tích vô hướng của hai vector mới là:
Trang 81 trace(A) ¿ trace(A T) Điều này là hiển nhiên do phép chuyển vị không làm thay đổi các vị trí trên đường chéo chính của A.
2 trace(AB) ¿trace(BA) Chứng minh tính chất này khá đơn giản Giả sử A i
là vector dòng thứ i của A và B j là vector cột thứ j của B Khi đó phần tử AB ij ở dòng
Ta nhận thấy chỉ số i,k𝑖,k bình đẳng trong cả 2 biểu thức (2) và (3) nên nếu hoán
vị i và k cho nhau không làm thay đổi kết quả tổng Mặt khác phép hoán vị này sẽ biếnbiểu thức (1) thành (2) nên suy ra giá trị của 2 biểu thức là bằng nhau
3 Trace(ABC) ¿trace(CAB) ¿trace(BCA) Tính chất này suy ra từ tính chất
2
4 Trace(A+B) ¿trace(A) + trace(B) Dễ dàng suy ra tính chất này do A, B phải cùng kích thước và vị trí các phần tử trên đường chéo chính của 2 ma trận này là trùng nhau
5 Phép phân tích riêng
Trước khi tìm hiểu về SVD, trước tiên ta cần nắm rõ về bài toán chéo hóa ma trận bài toán đó chỉ ra rằng một ma trận vuông A ∈ R n× n được gọi là chéo hóa được nếu tồn tại một ma trận đường chéo D và ma trận khả nghịch P sao cho:
Trang 9Nhân hai vế của (4) với P, ta có:
AP =PD(5)
Gọi 𝑝𝑖, 𝑑𝑖 lần lượt là cột thứ i của ma trận P và D vì mỗi một cột của vế trái và vếphải của (5) phải bằng nhau, ta sẽ có:
A p i=P d i=dii p i(6)Với d ii là phần tử thứ 𝑖 của p i
Dấu bằng xảy ra vì D là ma trận đường chéo, tức d i chỉ có thành phần d ii khác 0
Biểu thức (6) chỉ ra rằng mỗi phần tử d ii phải là một trị riêng (eigenvalue) của A và
mỗi vector cột p i phải là một vector riêng (eigenvector) của A ứng với trị riêng d ii.
Cách phân tích một ma trận vuông thành nhân tử như (4) còn được gọi là Eigen Decomposition
Một điểm quan trọng là cách phân tích như (4) chỉ được áp dụng với ma trận vuông và không phải lúc nào cũng tồn tại Nó chỉ tồn tại nếu ma trận A có 𝑛 vector riêng độc lập tuyến tính, vì nếu không thì không tồn tại ma trận P khả nghịch Thêm nữa, cách phân tích này cũng không phải là duy nhất vì nếu P,D thoả mãn (4) thì 𝑃,𝐷 cũng thoả mãn với 𝑘 là một số thực khác 0 bất kỳ
II PHÂN TÍCH SUY BIẾN SVD VÀ ỨNG DỤNG
1 Singular value decomposition ( phân tích suy biến)
Phép phân tích suy biến là một dạng của matrix factorization nhằm phân tích một
ma trận thành tích của các ma trận số thực hoặc ma trận số phức Phân tích suy biến là một dạng tổng quát của phân tích riêng trong trường hợp ma trận không vuông
Phương pháp phân tích suy biến hay Singular Value Decomposition (SVD) cho thấy mọi ma trận, không nhất thiết là vuông, đều có thể được phân tích thành tích của
ba ma trận đặc biệt SVD cho ta một cách tiếp cận toàn diện để phân tích ma trận, không phụ thuộc vào việc ma trận có vuông hay không
Phát biểu của phép phân tích suy biến được trình bày như sau:
Một ma trận A m×n bất kỳ đều có thể phân tích từ ma trận gốc dưới dạng tích của 3
ma trận đặc biệt:
A m×n= Um×mΣm×n(Vn×n)T
Trang 10Trong đó:
● U, V là các ma trận trực giao
● Σ là ma trận đường chéo không vuông với các phần tử trên đường chéo
là σ1 ≥ σ2 ≥ ⋯ ≥ σr ≥ 0 ( r là rank của ma trận A, là số lượng phần tư khác 0) Ta vẫn có thể coi Σ là ma trận chéo nếu các thành phần khác 0 của nó nằm ở vị trí
đường chéo, tức tại các vị trí có chỉ số hàng và chỉ số cột là như nhau
Hình 1 mô tả SVD của ma trận Am×n trong hai trường hợp: m<n và m> n
Trường hợp m= n có thể xếp vào một trong hai trường hợp trên
Về mặt hình học sẽ lền lượt trải qua: phép quay, phép nới rộng, phép xoay ở cuốicùng
Nếu ta coi các dòng của ma trận A là các điểm dữ liệu và các chiều dữ liệu là cột.Khi đó nhân các điểm dữ liệu với ma trận trực giao Umm chính là việc ta thực hiện một phép xoay và phép xoay này không làm thay đổi tích vô hướng của các vecto Phép nhân với ma trận đường chéo Σ sẽ co dãn độ lớn các chiều theo giá trị của các trị riêng trên đường chéo chính Và cuối cùng phép nhân với ma trận trực giao VT lại thực hiện phép biến xoay một lần nữa
9
Trang 112 Mối liên hệ giữa phân tích suy biến và phân tích riêng
Phân tích suy biến khác với phân tích riêng ở điểm phân tích suy biến áp dụng cho
ma trận bất kì, không bắt buộc là ma trận vuông
Mối liên hệ mật thiết giữa phân tích suy biến và phân tích riêng ta có thể thấy rõ sau khi khai triển tích AT A:
Các phần tử σ i là căn bậc hai của các trị riêng của ma trận AAT hay còn được gọi
là singular values (giá trị suy biến) của ma trận A
Cái tên Singular value composition xuất hiện từ đây
Trang 12Các cột của ma trận V là hệ vector riêng ứng với trị riêng của ΣTΣ và còn được gọi là hệ vector suy biến trái (left-singular vectors) Các cột của U được gọi là hệ vector suy biến phải (right-singular vectors).
3 Các dạng phân tích suy biến
Việc phân tích suy biến một ma trận có kích thước lớn sẽ chiếm thời gian lớn mới có thể giải ra bởi việc phải giải phương trình đặc trưng để tìm ra các giá trị đặc trưng để suy ra ma trận đường chéo Σ
Để tìm ma trận trực giao V, ta giải từ phương trình ATA = VΣTΣVT, từ đây suy ra:
ATAV = VΣTΣVTV = VΣTΣ
Dấu bằng cuối cùng xảy ra vì VTV = I ( V là ma trận trực giao ) Sử dụng phươngtrình ứng với từng cột cả 2 vế trái và phải để tính ra được các vector riêng ứng với mỗitrị riêng
Như vậy, với một cột v i bất kì của ma trận V, ta có:
ATAv i = σ i
2
v i
Hay v i chính là một vecto riêng ứng với trị riêng σ i2 của ma trận ATA
Với phương pháp tương tự để tìm ma trận U
Quá trình này trải qua nhiều bước và kết quả cho ra một ma trận lớn, chi phí thờigian và lưu trữ sẽ rất lớn Vì vậy, các dạng giảm chiều SVD sẽ có tác dụng rút gọn quátrình tính toán
3.1 Phương pháp làm mỏng SVD:
Ý tưởng từ việc số quan sát được thường lớn gấp nhiều lần so với số chiều hay m>>n trong đa số các trường hợp của ma trận A
Vì vậy tránh để tính toán toàn bộ ma trận Umm, ta sẽ chỉ tính với n cột đầu tiên là
Umn Số chiều của ma trận đường chéo Σmn cũng giảm xuống thành Σnn
Biểu diễn lại ma trận A, ta được:
A = UmnΣnnV nn T
Như vậy, các trị riêng cần tìm chỉ còn n và vecto riêng chỉ còn 2n (n cột của ma trận Umn và n cột của ma trận Vnn)
11
Trang 13Các vecto u ivà v ilà các hệ cơ sở độc lập tuyến tính
Thông thường trong ma trận đường chéo Σnn chỉ một lượng lớn các trị riêng có lớn hơn 0, các trị riêng còn lại đều xấu xỉ bằng 0 Vì vậy, tại r vị trí dòng và cột tương ứng với các trị riêng đủ lớn ta mới thực hiện tính toán SVD
Biểu diễn lại ma trận Ann dưới dạng Compact SVD như sau:
σ1>σ2>…>σ t>0 lớn nhất của A từ U, VT Phần còn lại của ma trận sẽ bị loại bỏ Sau khi thực hiện phương pháp Truncate SVD ta sẽ thu được ma trận xấp xỉ của
Trang 14Dấu bằng thứ 3 xảy ra khi lấy đẳng thức (7) trừ đi (8)
Dấu bằng thứ 5 xảy ra do ma trận các vecto cột của U, V là những ma trận trực giao nên uiT
u j=0 , vi T
v j=0 , ∀ 1 ≤ i≠ j ≤ n.
Các dấu thứ 6, 7 xảy ra do u i T u j=0 , vi T v j=0 , ∀ 1 ≤ i≤ n
Như vậy, ta có thể hiểu được lý do tại sao chúng ta chỉ chọn ra top t trị riêng có giá trị lớn nhất Khi đó sai số của 2 ma trận sẽ là nhỏ nhất vì bằng tổng bình phương của các trị riêng còn lại
Phương pháp Truncate SVD còn cho ta biết được tỉ lệ phần trăm lượng thông tin lưu giữu trong ma trận xấp xỉ thông qua công thức:
Trang 15Ví dụ về SVD cho ảnh Bức ảnh gốc là 1 ảnh xám, là một ma trận cỡ 960 x 1440.Giá trị của các singular values của ma trận ảnh theo logscale Có thể thấy rằng các singular value giảm nhanh ở khoảng k=200 Biểu diễn lượng thông tin được giữ lạikhi chọn các k khác nhau Có thể nhận thấy từ khoảng k=200, lượng thông tin giữ lại
là gần bằng 1 Vậy ta có thể xấp xỉ ma trận ảnh này bằng 1 ma trận có rank nhỏ hơn.Hình bên dưới mô tả chất lượng ảnh khi chọn các giá trị k khác nhau Khi k gần
100, lượng thông tin mất đi rơi vào khoảng nhỏ hơn 2%, ảnh thu được có chất lượng gần như ảnh gốc
Trang 16Để lưu ảnh với Truncated SVD, ta sẽ lưu các ma trận Uk ∈ R m×k
Khi k ≪ m, n , ta được một tỉ lệ nhỏ hơn 1 Trong ví dụ của chúng ta
m=960 ,n=1440 , k=100 , ta có tỉ lệ nén xấp xỉ 0.69, tức đã tiết kiệm được khoảng 30%
bộ nhớ
4.2 SVD trong hệ thống gợi ý
SVD xây dựng một ma trận với hàng là item và cột là user và các phần tử được đưa ra bởi xếp hạng của người dùng SVD phân tích một ma trận thành ba ma trận khác và trích xuất các yếu tố từ việc phân tích nhân tử của ma trận cấp cao
A =U ×∑×(V ) T
Ma trận U: ma trận suy biến của (item x biến tiềm ẩn)
Ma trận Σ: ma trận đường chéo (thể hiện sức mạnh của từng biến tiềm ẩn)
15
Trang 17Ma trận VT: ma trận suy biến của (user x biến tiềm ẩn)
Từ việc phân tích nhân tử ma trận, các biến tiềm ẩn cho thấy đặc điểm của các item Cuối cùng, ma trận utility A được tạo ra với hình dạng m x n Đầu ra cuối cùng của ma trận A là giảm số chiều của ma trận thông qua việc trích xuất các biến tiềm ẩn
Ma trận A cho thấy mối liên hệ giữa user và item bằng cách ánh xạ user và item vào không gian tiềm ẩn r chiều
🢧 Qua hình trên, ma trận A có các giá trị bị thiếu Do đó, một thuật toán như SVD xây dựng một hệ thống gợi ý bằng cách cho phép chúng ta "lấp đầy khoảng trống" trong ma trận xếp hạng R, dự đoán xếp hạng mà mỗi user sẽ chỉ định cho từng item trong tập dữ liệu
Trang 18III CODE MATLAB
1 Phần code
function main
inputImage = imread ('E:\BTL_DSTT\6111658_cover_blackandwhiteawards.jpg');
%Show original image
subplot (2,2, pLocation), pLocation = pLocation + 1;
imshow(uint8(k)), axis off;
title (sprintf ('N =%d',N));
end
17
Trang 192 Kết quả
3 Giải thích chi tiết
function main Tạo hàm main
inputImage = imread ('E:\BTL_DSTT\
6111658_cover_blackandwhiteawards.jpg');
Đọc dữ liệu hình ảnh từ đường dẫn, sau
đó lưu vào biến
”inputImage”
Trang 20%Show original image
- chia cửa sổ thành
2 hàng, 2 cột và hiển thị hình ảnh đầu tiên (vị trí 1)
- Hiển thị hình ảnh inputImage Tắt các trục tọa độ
- Đặt tiêu đề
'original'cho hình ảnh
[U, S, V] =svd(double(inputImage)); Thực hiện phân
tích giá trị đặc trưng (Singular Value Decomposition - SVD) trên ma trận ảnh đầu vào
Kết quả trả về đượclưu vào ba biến:
19
Trang 21● U: Ma trận trái (left singular
vectors)
● S: Ma trận chứa các giá trị đặc trưng(singular values)
● V: Ma trận phải (right singular vectors)
để xác định vị trí của cáchình ảnh
for N = [5 20 100]
Tạo vòng lặp với cácgiá trị N lần lượt là [5 20 100]
k = U(:,1:N)*S(1:N,1:N)*V(:,1:N)';
1
U(:,1:N)Lấy N cột đầu tiên của ma trận U, tương ứng với N vector đặc trưng trái
Trang 22(left singular vectors).
2 S(1:N,1:N)Lấy ma trận
vuông gồm N hàng
và N cột đầu tiên của ma trận S, tương ứng với N giátrị đặc trưng lớn nhất
3 V(:,1:N)'Lấy N cột đầu tiêncủa ma trận V, tương ứng với N vector đặc trưng phải (right singular vectors), và chuyển đổi nó thành ma trận cột
4 kThực hiện phép nhân ma trận để tái tạo lạiảnh sử dụng N giá trị đặc trưng và vector đặc trưng.Kết quả được lưu vào biến k
subplot (2,2, pLocation), pLocation = pLocation +
1;
Chia cửa sổ thành 2hàng, 2 cột và hiển thị
21