Professional Documents
Culture Documents
Đề tài 9:
CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD
ỨNG DỤNG CỦA PHÂN TÍCH SVD VÀO HỆ
THỐNG GỢI Ý TRONG HỌC MÁY
Nhóm 4:
1. Lê Quốc Cường MSSV: 2110069
2. Nguyễn Tấn Phong MSSV: 2112006
3. Nguyễn Hạnh Thi MSSV: 2112344
4. Ngô Đình Tú MSSV: 2112602
5. Trần Văn Tuấn MSSV: 2115193
6. Phạm Đức Tuệ MSSV: 2115199
7. Trần Lê Chí Vỹ MSSV: 2112696
Trong chương trình học của chúng ta về trị riêng và véctơ riêng, việc phân tích một ma
trận ra thành tích của nhiều ma trận đặc biệt khác (Matrix Factorization hoặc Matrix
Decomposition) mang lại nhiều ích lợi quan trọng như: giảm số chiều dữ liệu, nén dữ
liệu, tìm hiểu các đặc tính của dữ liệu, giải các hệ phương trình tuyến tính, clustering,
và nhiều ứng dụng khác. Recommendation System cũng là một trong rất nhiều ứng
dụng của Matrix Factorization. Trong bài báo cáo này, chúng ta sẽ nghiên cứu về một
trong những phương pháp Matrix Factorization rất đẹp của Đại số tuyến tính. Phương
pháp đó có tên là Singular Value Decomposition (SVD). Và để giải quyết cho bài toán
cũng như tìm hiểu về ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy,
chúng em đã kết hợp việc vận dụng kiến thức lý thuyết đã được học cùng với sự hỗ trợ
của máy tính, chương trình Matlab để mô phỏng trực quan kết quả của việc ứng dụng
SVD trong thực tế. Và thật tốt là hướng đi này giúp chúng em tìm ra cách giải quyết
bài toán một cách tư duy, mới mẻ và vẫn đảm bảo được tính chính xác, trong phạm vi
chuẩn mực. Trong quá trình tìm hiểu và nghiên cứu đề tài, với vốn kiến thức, hiểu biết
còn hạn hẹp của chúng em, tuy có gặp chút khó khăn ban đầu, nhưng cuối cùng các
nội dung dữ liệu mà chúng em thu thập được khá tốt, chúng em đã tổng hợp tất cả
những điều chúng em hiểu được và tạo nên một bài báo cáo hoàn chỉnh. Và đó là nội
dung của bài báo cáo này.
i
LỜI CẢM ƠN
Em xin trân trọng cảm ơn tất cả những sự chỉ dẫn và giúp đỡ của thầy cô, anh chị và
bạn bè. Trong suốt quá trình thực hiện bài tập lớn trên, nhóm chúng em đã nhận được
rất nhiều sự quan tâm và ủng hộ, sự giúp đỡ tận tình của các quý thầy cô, anh chị và
bạn bè. Nhóm xin gửi lời tri ân chân thành nhất đến thầy Đặng Văn Vinh và cô
Nguyễn Xuân Mỹ, là các quý giảng viên đã hướng dẫn cho chúng em đề tài này. Nhờ
có các thầy cô hết lòng chỉ bảo mà nhóm đã hoàn thành bài báo cáo đúng tiến độ và
giải quyết tốt những vướng mắc gặp phải. Sự hướng dẫn của thầy cô là kim chỉ nam
cho mọi quyết định, hành động của nhóm và phát huy tối đa được mối quan hệ hỗ trợ
giữa thầy và trò trong môi trường giáo dục.
Bên cạnh đó, nhóm cũng xin cảm ơn các thầy cô giảng viên, chuyên gia nghiên cứu,
tác giả của các tài liệu, sách báo mà nhóm đã tham khảo.
Tuy vốn kiến thức, hiểu biết còn hạn chế nhưng chúng em đã rất cố gắng để hoàn thiện
đề tài này. Tuy nhiên, sẽ không thể tránh khỏi những thiếu sót. Vì thế, chúng em rất
mong sẽ nhận được những lời nhận xét, góp ý của quý thầy cô và các bạn, các anh chị
để đề tài này được hoàn thiện tốt nhất có thể.
Lời cuối, xin một lần nữa gửi lời biết ơn sâu sắc đến các cá nhân, các quý thầy cô đã
dành thời gian để chỉ dẫn cho nhóm. Đây chính là niềm tin, nguồn động lực to lớn để
nhóm chúng em có thể đạt được kết quả như ngày hôm nay.
ii
MỤC LỤC
CHƯƠNG 1. MỞ ĐẦU...............................................................................................1
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT............................................................................1
CHƯƠNG 3. ỨNG DỤNG CỦA PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý
TRONG HỌC MÁY......................................................................................................2
3.2. Ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy (machine
Learning)...................................................................................................................5
CHƯƠNG 4. MATLAB..............................................................................................7
iii
CHƯƠNG 1. MỞ ĐẦU
Đề tài 9
1/Nêu cơ sở lý thuyết của phân tích SVD.
2/Ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy (machine Learning).
Viết chương trình matlab.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
Cho A là một ma trận thực cỡ m x n. Ta chứng minh rằng tập hợp các trị riêng khác 0
của AAT và ATA là trùng nhau.
Thật vậy, giả sử 𝜆0 là một trị riêng khác của AA T và X0 là véctơ riêng của AA T tương
ứng.
Khi đó:
AATX0 = 𝜆0X0. Suy ra ATAATX0 = AT𝜆0X0.
Điều này tương ứng với ATA(ATX0) = 𝜆0(ATX0).
Vì 𝜆0 ≠ 0 nên ATX0 ≠ 0. Suy ra 𝜆0 là trị riêng của ATA. Ma trận AAT và ma trận ATA là
hai ma trận đối xứng, nên chúng chéo hóa trực giao được.
Phân tích SVD của ma trận A: Cho ma trận A Mm,n[R], r(A) = r.
Ma trận A có thể phân tích thành dạng A=QƩPT, trong đó Q và P là hai ma trận đều có
1
Trong D, ta sắp xếp các singular values của A theo thứ tự giảm dần
σ1 ≥ σ1 ≥ ... ≥ σr.
Gọi Q = ( q1|q2|…|qm ) và P = ( p1|p2|…|pn ),
( )
σ 1 0 ... 0
D= 0 σ 2 ... 0
... ... ... 0
0 0 ... σ r
Ma trận A có thể ghi ở dạng: A= σ1q1p1T + σ2q2p2T +...+ σrqrprT, với mỗi qipiT là một
ma trận có hạng bằng 1.
Như vậy ma trận A chỉ phụ thuộc vào r cột đầu tiên của P,Q và r phần tử khác 0
trên đường chéo của Ʃ. Ta có phân tích gọn hơn của A gọi là compact SVD:
A = QrDPr với Qr, Pr là các ma trận tạo nên từ các cột của Q và P tương ứng.
Ta có xấp xỉ:
A ≈ Ak = σ1q1p1T + σ2q2p2T +...+ σrkqkpkT
và sai số trong xấp xỉ trên được xác định bời công thức:
|| A – A k || = σ 2k+1 +σ 2k+2 +…+ σ 2r
Các Recommendation Systems thường được chia thành hai nhóm lớn:
Content-based systems: đánh giá đặc tính của items được recommended.
Ví dụ: một user xem rất nhiều các bộ phim về cảnh sát hình sự, vậy thì gơi ý một bộ
phim trong cơ sở dữ liệu có chung đặc tính hình sự tới user này, ví dụ phim Người
phán xử. Cách tiếp cận này yêu cầu việc sắp xếp các items vào từng nhóm hoặc đi tìm
các đặc trưng của từng item. Tuy nhiên, có những items không có nhóm cụ thể và việc
xác định nhóm hoặc đặc trưng của từng item đôi khi là bất khả thi.
Collaborative filtering: hệ thống gợi ý items dựa trên sự tương quan (similarity) giữa
các users và/hoặc items. Có thể hiểu rằng ở nhóm này một item được recommended tới
một user dựa trên những users có hành vi tương tự. Ví dụ: users A, B, C đều thích các
bài hát của Noo Phước Thịnh. Ngoài ra, hệ thống biết rằng users B, C cũng thích các
bài hát của Bích Phương nhưng chưa có thông tin về việc liệu user A có thích Bích
Phương hay không. Dựa trên thông tin của những users tương tự là B và C, hệ thống
có thể dự đoán rằng A cũng thích Bích Phương và gợi ý các bài hát của ca sĩ này tới A.
3.2. Ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy (machine
Learning)
Ứng dụng trong hệ thống đề xuất phim (recommendation systems) cho người dùng:
Các bước cơ bản:
• Tách user-item matrix thành hai thừa số: user matrix và item matrix.
• Mỗi người dùng tương ứng với một hàng trên user matrix.
• Mỗi sản phẩm tương ứng với một cột trên item matrix.
• Ước tính độ phù hợp bằng tích vô hướng của vector người dùng và vector sản
phẩm.
• Ước tính độ tương tự bằng cách so sánh các vector người dùng với nhau (hoặc
các vector sản phẩm với nhau) nếu các ma trận thỏa mãn một số điều kiện nhất định.
- Ma trận user-item:
• Mỗi người dùng trên một dòng, mỗi sản phẩm trên một cột.
• Có thể chuẩn hóa bằng cách trừ đi giá trị trung bình.
• Thường là ma trận thưa, vì đa số các cặp user-item không có tương tác.
5
- Thừa số hóa:
Giả sử có m người dùng và n sản phẩm:
Trong đó:
+ Ma trận User là tích hai ma trận U và S
+ Ma trận Item là ma trận VT
Nhờ phương pháp phân tích SVD, ta loại bỏ thông tin bằng cách bỏ bớt các chiều
cuối cùng.
CHƯƠNG 4. MATLAB
Ngoài các ứng dụng trên, SVD còn có các ứng dụng khác như hồi quy tuyến
tính, trong tối ưu cực trị rời rạc, lát cắt cực đại, xử lí hình ảnh,… rất thích hợp cho
lượng dữ liệu lớn.
Ưu điểm khi giải quyết vấn đề bằng Matlab đó là tính toán dễ dàng, cho kết quả
chính xác, đồng thời tiết kiệm thao tác và tối ưu thời gian hơn so với cách tính phổ
thông.
Nhược điểm khi giải quyết vấn đề bằng Matlab đó là thiết kế đoạn code mất
nhiều thời gian, công sức; đoạn code rườm rà; còn giới hạn trong phạm vi chủ đề
được chỉ định, chưa sáng tạo các chủ đề tính toán kỹ thuật khác.
Với sự phân công, chuẩn bị kỹ lưỡng và cố gắng tìm hiểu, nghiên cứu đề tài, nhóm
4 lớp L07 chúng em đã hoàn thành tốt đề tài được giao cũng như thiết kế được chương
trình Matlab cho ra kết quả như mong muốn. Qua phần bài tập lớn này nhóm đã biết
được thao tác giải toán trên Matlab, giúp hiểu thêm về mô hình dữ liệu, cách sử dụng
và tính toán SVD bằng tay hoặc hàm viết sẵn, tìm hiểu được một đề tài với nhiều ứng
dụng thú vị, qua đó nâng cao sự hứng thú đối với môn học, trao dồi kỹ năng học tập và
làm việc nhóm, nâng cao tinh thần trách nhiệm và thắt chặt tình đoàn kết của các thành
viên trong nhóm.
8
[1] Đặng Văn Vinh (2020). Giáo trình Đại số tuyến tính. Đại học Quốc gia Thành
phố Hồ Chí Minh, Trường Đại học Bách Khoa.
[2] https://machinelearningcoban.com/2017/06/07/svd/
[3] https://machinelearningcoban.com/2017/05/17/contentbasedrecommendersys/
[4] https://www.mathworks.com/matlabcentral/fileexchange/48406-svd-free-matrix-
completion-for-recommender-system-design
[5] https://blogs.mathworks.com/loren/2015/04/22/the-netflix-prize-and-production-
machine-learning-systems-an-insider-look/
9