ܣ = ܺܲܺ ܺ −1 ∗Các véc tơ riêng x, thường được chọn sao cho ݔ݅ ܶݔ݅ = 1.Cách biểu diễn một ma trận như * được gọi là eigendecomposition vì nó tách ra thành tích của các ma trận đặc biệt dự
Trang 1BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: Th.S Nguyễn Xuân Mỹ LỚP: L09 - NHÓM: 9
Trang 2ỨNG DỤNG CỦA PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG
MACHINE LEARNING
NHÓM: 9
Trang 3DANH SÁCH THÀNH VIÊN
STT Họ và tên MSSV
L09 - NHÓM: 9
Trang 4Ứng dụng trong machine learning
Phương pháp phân tích SVD
lý thuyết
Matlab
NỘI DUNG
Trang 5MỞ ĐẦU
Trang 6Phân tích SVD
Trang 7CƠ SỞ LÝ THUYẾT
Trang 8Ma trận chuyển vị
Chuyển vị của là ma trận cỡ n x m thu được từ A bằng cách chuyển hàng thành cột.
9 3
0 1
4 2
9 0
4
3 1 2
Trang 9c C
Trang 10Phép nhân hai ma trận
e k (AB) = (kA)B = A(kB).
Trang 13Ma trận đường chéo
chéo chính của nó, ký hiệu trace(A)
Ví dụ: trace(A) = 1+2+3 = 6
Chỉ có các thành phần trên đường chéo chính khác 0.
Trang 15Định thức
Chỉ ma trận vuông mới có định thức Kí hiệu: det(A) hoặc det A.
Giả sử ta có một ma trận vuông A bậc n.
- Với n = 1, det(A) chính là phần tử duy nhất của ma trận đó.
- Với n > 1, ta có cách tính định thức dựa trên khai triển hàng thứ i của ma trận:
Trang 17Ta nói b là một ma trận tổ hợp tuyến tính các cột của A.
Ta nói b là một ma trận tổ hợp tuyến tính các cột của A
Trang 19Cơ sở của một không gian véc tơ
Một hệ các véc tơ { ܽ 1, ܽ 2, …, ܽ ݊ } trong không gian véc tơ m chiều V = Rm
được gọi là một cơ sở nếu nó thỏa mãn hai điều kiện sau:
1 ܸ ≡ ݊ ܽݏܽ݊ (ܽ 1, ܽ 2, …, ܽ ݊ )
2 { ܽ 1, ܽ 2, …, ܽ ݊ } là một hệ độc lập tuyến tính
Khi đó, mọi véc tơ b ∈ Vđều biểu diễn duy nhất qua cơ sở
Chú ý: số véc tơ trong cơ sở phải bằng số chiều của không gian
Trang 202 rank (A) = rank (AT)
3 Với A ∈ R݉ ×݊ , thì rank(A) ≤ min (m, n)
4 rank (AB) ≤ min (rank (A), rank (B))
5 rank (A + B) ≤ rank (A) + rank (B)
Trang 21Hệ trực chuẩn, ma trận trực giao
mỗi véc tơ khác 0 và tích của hai véc tơ khác nhau bất kì bằng 0
nếu nó là hệ trực giao và độ dài Euclid của mỗi véc tơ bằng 1
Trang 23Trị riêng và véc tơ riêng
Cho một ma trận vuông A ∈ Rn×n, một véc tơ x ∈ Rn (x ≠ 0) và một số vô hướng (có thể thực hoặc phức) λ.
Nếu Ax=λx thì ta nói λ và x là một cặp giá trị riêng, véc tơ riêng
(eigenvalue, eigenvector) của ma trận A.
Trang 24Trị riêng và véc tơ riêng
Cũng có ܣ − ܫ ݔ = 0 , tức là x nằm trong không gian Null của ܣ −ܫߣܫ ߣܫ
Vì x ≠ 0, nên ܣ −ܫߣܫ là ma trận không khả nghịch.
Vậy det ܣ −ܫߣܫ = 0 , hay λ là nghiệm của phương trình det ܣ −ܫߣܫ = 0
Định thức này là một đa thức bậc n của t, gọi là đa thức đặc trưng
(characteristic polynomial) của A, ký hiệu là pA(t).
Tập hợp tất cả các giá trị riêng của một ma trận còn gọi là phổ (spectrum)
của ma trận đó.
Trang 25ܣ = ܺܲܺ ܺ −1 ∗Các véc tơ riêng x, thường được chọn sao cho ݔ݅ ܶݔ݅ = 1.
Cách biểu diễn một ma trận như (*) được gọi là eigendecomposition vì nó
tách ra thành tích của các ma trận đặc biệt dựa trên các véc tơ riêng và trị riêng
Ma trận các giá trị riêng P là một ma trận đường chéo
Trang 26Ma trận xác định dương
definite) nếu
(positive semidefinite) nếu
Trang 27Ma trận xác định dương
TÍNH CHẤT:
1 Mọi trị riêng của ma trận xác định dương đều là số thực dương
2 Mọi ma trận xác định dương là khả nghịch, định thức của nó là một số dương
Trang 28Chuẩn của véc tơ và ma trận
Định nghĩa: Một hàm số ݂ : ܴ ݊ →ܴ được gọi là một norm (chuẩn) nếu nó
thỏa mãn các điều kiện sau đây:
1 ݂ ݔ ≥ 0 ∀ݔ, dấu bằng xảy ra khi x = 0
Một số chuẩn thông thường:
Trang 29Dùng máy tính
Khám phá tri thức từ dữ liệu
Machine Learning
Sự học của máy tính Trí tuệ nhân tạo
xây dựng và phát triển chương trình máy tính
có thể học từ
dữ liệu đưa vào hoặc kinh nghiệm
Trang 30Machine Learning
Phân tích
dữ liệu bán
lẻ của siêu thị
Ví dụ 1
Ví dụ 1
Ví dụ 2
Ví dụ 3
Đối sánh vân tay
Tìm đường ngắn nhất cho robot
Trang 31Chương trình máy tính
thích nghi môi trường thay đổi
Tại sao cần nghiên cứu Machine Learning
Hệ thống nhận dạng
cho robot, trong tự
động hóa
Nhận dạng chữ, chuyển lời
thành văn bản,
phân tích ảnh
nhiệm vụ chưa định rõ
Khám phá tri thức
từ dữ liệu
Trợ giúp ra quyết định
Trang 32PHƯƠNG PHÁP PHÂN TÍCH MA TRẬN
SVD
Trang 33Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường
ܣ = ܦܺܲ ܺܲ −1 (*)
Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)
Nhân 2 vế (*) với ܺܲ ta có:
ܺܲܣ = ܦܺܲ (**)Gọi ݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:
ܣ ݅ = ܺܲ ݅ = ݅݅ ݅ (***)
Trong đó ݅݅ là phần tử thứ ݅ của ݅
phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị
vector cột ݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅
Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường
ܣ = ܦܺܲ ܺܲ −1 (*)
Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)
Nhân 2 vế (*) với ܺܲ ta có:
ܺܲܣ = ܦܺܲ (**)Gọi ݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:
ܣ ݅ = ܺܲ ݅ = ݅݅ ݅ (***)
Trong đó ݅݅ là phần tử thứ ݅ của ݅
phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị
vector cột ݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅
Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường
ܣ = ܦܺܲ ܺܲ −1 (*)
Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)
Nhân 2 vế (*) với ܺܲ ta có:
ܺܲܣ = ܦܺܲ (**)Gọi ݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:
ܣ ݅ = ܺܲ ݅ = ݅݅ ݅ (***)
Trong đó ݅݅ là phần tử thứ ݅ của ݅
phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị
vector cột ݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅
Trang 34ܣ ݅ = ܺܲ ݅ = ݅݅ ݅ (***)
Trong đó ݅݅ là phần tử thứ ݅ của ݅
phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị
vector cột ݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅
khác không
Biểu thức (***) :
Trang 35Cách phân tích 1 ma trận vuông thành nhân tử như (*) còn gọi là phân tích giá trị riêng.
Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường chéo ܦ và ma trận khả nghịch ܺܲ sao cho:
ܣ = ܦܺܲ ܺܲ −1 (*)
Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A).
Nhân 2 vế (*) với ܺܲ ta có:
ܺܲܣ = ܦܺܲ (**) Gọi ݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vế trái bằng vế phải nên ta có:
ܣ ݅ = ܺܲ ݅ = ݅݅ ݅ (***)
Trong đó ݅݅ là phần tử thứ ݅ của ݅ .
Dấu bằng thứ hai xảy ra vì ܦ là ma trận đường chéo, tức ݅ chỉ có thành phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị riêng của ܣ và mỗi vector cột ݅ phải là một vector riêng của ܣ và mỗi vector cột ݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅ .
Phân tích giá trị riêng:
=> không tồn tại ma trận khả nghịch P
một số thực bất kì
Trang 38left-singular vectors của ܣ.
right-singular vectors của ܣ
Trang 401 LÀM MỎNG SVD:
• Trong hầu hết trường hợp, m >> n.
A được biểu diễn dưới dạng:
• Số lượng các trị riêng cần tìm chỉ còn n và số lượng vector
Vnn).
Số quan sát thường lớn gấp rất nhiều lần so với số chiều hay ݉ ≫ ݊ trong
hầu hết các TH
Thay vì tính toàn bộ ma trận ܷ ݉݉ => chỉ tính n cột đầu tiên là ܷ ݊݉ .
Số chiều của ma trận đường chéo Σ݊݉ cũng giảm xuống thành Σ݊݊ .
Khi đó ma trận ܣ được biểu diễn dưới dạng: ܣ = ܷ ݊݉ Σ݊݊ ܸ ݊݊ܶ
Số lượng các trị riêng cần tìm chỉ còn ݊ và số lượng vector riêng chỉ
còn 2݊ (݊ cột của ma trận ܷ ݊݉ và ݊ cột của ma trận ܸ ݊݊ ).
Trang 411 LÀM MỎNG SVD:
Amn
≈
Trang 422 COMPACT SVD:
ܣ݉ ×݊ = ܷ ݉ ×݉ Σ݉ ×݊ ܷ ݊ ×݊ ܶ
Viết lại biểu thức dưới dạng tổng của các ma trận rank 1:
Mỗi , là một ma trận có rank bằng 1
A chỉ phụ thuộc vào r cột đầu tiên của U, V và r giá trị khác 0 trên đường chéo
Ta có cách phân tích gọn hơn: compact SVD:
Biểu diễn ma trận ܣ dưới dạng tổng của các tích vector cộtݑ݅ của ܷ ݉݉ vàvector dòngݒ݅ của ܸ ݊݊ܶ như sau:ܣ = σ݅ =1݊ ݑ݅ ݒ݅ ݅
Các vectorݑ݅ vàݒ݅ là các hệ cơ sở độc lập tuyến tính
Thông thường trong ma trận đường chéo Σ݊݊ 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ấp xỉ 0
Do đó chỉ tạiݎ vị trí dòng và cột tương ứng với các trị riêng đủ lớn ta mới
Trang 43Chương 3: Giảm chiều SVD
2 COMPACT SVD:
vector dòngݒ݅ của ܸ ݊݊ܶ như sau: ܣ = σ ݅ =1 ݑ ݅ ݒ ݅ ݅
Các vectorݑ݅ vàݒ݅ là các hệ cơ sở độc lập tuyến tính.
Thông thường trong ma trận đường chéo Σ݊݊ 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ấp xỉ 0.
Do đó chỉ tạiݎ 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 ma trận ܣ݊݉ dưới dạng compact SVD:
• 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.
• Nếu A có rank nhỏ hơn rất nhiều so với số hàng và số cột r << m, n
=> được lợi nhiều về lưu trữ.
Trang 442 COMPACT SVD:
Ví dụ minh hoạ với m = 4, n = 6, r = 2.
Hình: Biểu diễn SVD thu gọn và biểu diễn ma trận dạng tổng các ma trận có rank = 1.
Trang 453 TRUNCATE SVD:
Giả định A là ma trận bán xác định dương Khi đó mọi trị riêng của nó đều không âm
Phần còn lại của ma trận sẽ bị loại bỏ
Thu được ma trận xấp xỉ của A:
Hoặc ta có thể biểu diễn dưới dạng tổng của tích vô hướng các vector
Trang 463 TRUNCATE SVD:
Khi đó ta còn tính được khoảng cách norm Frobenius giữa A^ và A chính bằng tổng bình phương của các trị riêng còn lại từ ݐ+1 đến ݊ (với giả định ܣ có ݊ trị riêng) như sau:
Sai số của 2 ma trận là nhỏ nhất vì bằng tổng bình phương các trị riêng còn lại
Tính được khoảng cách norm Frobenius giữa  và A: bằng tổng bình phương các trị riêng còn lại từ đến (với giả định A có n trị riêng) như sau:
Trang 48Định lý: Với ma trận ܣ݉ ×݊ bất kỳ thì A+ được gọi là ma trận nghịch đảo suy rộng của A nếu ma trận A thỏa mãn:
1 AA+A = A
2 A+AA+ = A+
3 (A.A+)T = A.A+
4 (A+.A)T = A+.A
Trang 49Với mọi ma trận A có phân tích SVD là ܣ = ܷ σ ܸ ܶ thì ma trận ܸ ∑+.ܷ ܶ là ma
trận nghịch đảo suy rộng của ma trận A Với ∑+là ma trận nghịch đảo của ∑
Trang 50ỨNG DỤNG CỦA SVD TRONG HỌC MÁY
Trang 51● Trong nén ảnh
● Trong hệ gợi ý
● Xây dựng và tối ưu hàm mất mát
Trang 52đoán
Trang 53Hệ gợi ý dựa trên nội dung
dùng
Sản phẩm
Trang 54Hệ gợi ý dựa trên nội dung
Content-based systems
Đánh giá đặc tính items được gợi ý
Yêu cầu:
+ Sắp xếp items vào từng nhóm + Tìm các đặc trưng của từng items
Có những items không có nhóm cụ thể
Trang 55• Mỗi user sẽ có mức độ quan tâm tới từng item khác nhau
• Mức độ quan tâm này, nếu đã biết, được gán cho một giá trị
ứng với mỗi cặp user-item
• Giả sử mức độ quan tâm được đo bằng giá trị user rate cho item, tạm gọi giá trị này là rating
• Tập hợp tất cả các ratings, bao gồm cả những giá trị chưa biết
cần được dự đoán, tạo nên một ma trận gọi là utility matrix.
Trang 56VD: Hệ thống gợi ý bài hát 6 user: A tới F
từ đó đưa ra gợi ý cho người dùng.
Trang 58• Nhiều ô được điền => độ chính xác của hệ thống càng cao.
• Tuy nhiên, có rất nhiều users và items, và mỗi user chỉ đánh giá với số lượng rất nhỏ.
=> Lượng ô màu xám của utility matrix trong các bài toán đó thường rất lớn, và lượng các ô đã được điền là một số rất nhỏ.
• Ưu điểm: Một trong những thuật toán dễ hiểu nhất nhưng lại
mang lại hiểu quả cao nhờ vào tính logic của nó
• Nhược điểm: Cần quá nhiều dữ liệu đánh giá của người dùng.
Trang 59• Không có Utility matrix, gần như không thể gợi ý được sản phẩm tới
người dùng, ngoài cách luôn luôn gợi ý các sản phẩm phổ biến nhất.
• Có hai hướng tiếp cận phổ biến để xác định giá trị rating cho mỗi cặp
user-item trong Utility Matrix:
1 Nhờ user đánh giá item.
2 Dựa trên hành vi của user.
Trang 60Content-Based Recommendations
• Xây dựng 1 bộ hồ sơ cho mỗi item => biểu diễn dưới dạng toán học là
feature vector
• TH đơn giản, feature vector được trích xuất từ item.
• VD: các features của 1 bài hát:
- Nhạc sĩ sáng tác: Cùng là nhạc trẻ, có người thích của Phan Mạnh
Quỳnh, người khác lại thích Sơn Tùng MTP.
- Năm sáng tác: Có người sẽ thích những bài nhạc cũ hơn nhạc hiện đại.
- Thể loại nhạc: Có người thích nhạc rock, có người lại thích nhạc điện tử.
Trang 61Content-Based Recommendations
Xây dựng một feature vector hai chiều cho mỗi bài hát: chiều thứ nhất là mức
độ Bolero, chiều thứ hai là mức độ Thiếu nhi của bài đó
Đặt các feature vector cho mỗi bài hát là x1, x2, x3, x4, x5
Trang 63Content-Based Recommendations
Xây dựng mô hình cho user không phụ
thuộc vào user khác, phụ thuộc vào hồ
sơ của item
• Tiết kiệm bộ nhớ, thời gian tính toán
• Tận dụng thông tin đặc trưng của
item
• Xây dựng feature vector bao gồm kỹ
thuật Xử lí ngôn ngữ tự nhiên
• Không tận dụng thông tin hữu ích từ các user khác
• Không phải luôn có bản mô tả cho mỗi item
• Các thuật toán NLP cũng phức tạp hơn ở việc phải xử lý các từ gần nghĩa, viết tắt, sai chính tả, hoặc được viết ở các ngôn ngữ khác nhau
Trang 64Neighborhood-based Collaborative Filtering
Xác định mức độ
quan tâm của một
user tới một item
dựa trên các users
khác gần giống với
user này.
Việc gần giống nhau giữa các users xác định thông qua mức độ quan tâm của users này tới các items khác hệ thống đã
biết.
A, B thích phim Cảnh sát hình sự, tức rate phim này
5 sao Biết A cũng thích Người phán
xử, nhiều khả năng
B cũng thích bộ phim này.
Trang 65• Xác định sự giống nhau giữa 2 user.
• Dữ liệu duy nhất chúng ta có là Utility matrix Y, vậy nên sự giống nhau này phải được xác định dựa trên các cột tương ứng với hai users trong ma trận này.
Trang 66ݑ0, ݑ1 thích ݅ 0, ݅ 1, ݅ 2 và không thích ݅ 3, ݅ 4
Điều ngược lại xảy ra ở các users còn lại
Một similiarity function tốt cần đảm bảo:
݉ ݅ݏܽ݊(ݑ0,ݑ1) > ݉ ݅ݏܽ݊(ݑ0,ݑ݅ ), ∀݅ > 1
Để xác định mức độ quan tâm của u0 lên i2 nên dựa trên hành vi của u1 lên sản
phẩm này
Vì u1 đã thích i2 nên hệ thống cần gợi ý i2 cho u0
Đặt mức độ giống nhau của hai users ݑ݅ , ݑ݆ là: sim(ݑ݅ ,ݑ݆ )
Trang 67• Để đo similarity giữa 2 users, xây dựng feature vector cho mỗi user rồi áp dụng một hàm có khả năng đo similarity giữa hai vectors đó
• Các vectors này được xây dựng trực tiếp dựa trên Utility matrix chứ không dùng dữ liệu ngoài như item profiles
• Với mỗi user, thông tin duy nhất chúng ta biết là các ratings mà user đó đã thực
hiện, tức cột tương ứng với user đó trong Utility matrix
• Các cột này thường có rất nhiều mising ratings vì mỗi user thường chỉ rated một số lượng rất nhỏ các items
• Khắc phục: giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh
hưởng nhiều tới sự giống nhau giữa hai vector
• Việc điền này chỉ phục vụ cho việc tính similarity chứ không phải là suy luận ra giá trị cuối cùng
Trang 69Tính toán sự tương đồng giữa các items rồi gợi ý những items gần giống
với item yêu thích của một user.
• Số items < số users
=> Similarity matrix nhỏ hơn, thuận lợi cho việc lưu trữ và tính toán
• Số lượng phần tử đã biết trong Utility matrix là như nhau nhưng số hàng (items) ít hơn số cột (users)
=> Mỗi hàng của ma trận có nhiều phần tử đã biết hơn số phần tử đã biết mỗi cột
=> Giá trị trung bình của mỗi hàng ít bị thay đổi hơn khi có thêm một vài ratings
=> Cập nhật ma trận Similarity Matrix có thể được thực hiện ít thường xuyên hơn
ƯU ĐIỂM
Trang 70MATLAB
Trang 72Câu lệnh Cú pháp Ý nghĩa
for for i = 1:n <phát biểu>end
Cho i chạy từ 1 tới n cho trước Thực thi lần lượt các phát biểu ứng với các giá trị
của i.
size(A,2) Số cột của ma trận A
find index = find(điều kiện) Index chứa các chỉ số mà khi đó điều kiện đúng (true)
Các hàm được sử dụng
Trang 73• Cảm ơn thầy cô và các bạn đã theo dõi bài thuyết trình của nhóm 9.
• Chúc cô và các bạn luôn có thật nhiều sức khỏe.