You are on page 1of 15

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA


Năm học: 2021-2022
---    ---

BÁO CÁO BÀI TẬP LỚN


ĐẠI SỐ TUYẾN TÍNH
Đề 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

LỚP L07, NHÓM 4:

GVHD: Thầy Đặng Văn Vinh


Cô Nguyễn Xuân Mỹ

TP. HCM, 12/2021


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN

Đề 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

TP. HCM, 12/2021


TÓM TẮT BÀI BÁO CÁO

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.

Thành phố Hồ Chí Minh, ngày 12 tháng 12 năm 2021

ii
MỤC LỤC

CHƯƠNG 1. MỞ ĐẦU...............................................................................................1

1.1. Giới thiệu đề tài..................................................................................................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.1. Giới thiệu về hệ thống gợi ý (Recommender Systems).......................................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

4.1. Phân tích SVD của ma trận bất kỳ trên Matlab...................................................7

4.2. Ví dụ minh họa....................................................................................................7

CHƯƠNG 5. KẾT LUẬN...........................................................................................8

TÀI LIỆU THAM KHẢO.............................................................................................9

iii
CHƯƠNG 1. MỞ ĐẦU

1.1. Giới thiệu đề tài

Đề 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ó

họ véctơ là họ trực chuẩn, Ʃ = ( D0 00) là ma trận m x n, D là ma trận chéo, có các phần


tử trên đường chéo σ1,σ2,...,σr là những số thực dương và được gọi là các singular
values của A.
Khi đó:
AAT = QƩPT(QƩPT)T = QƩPTPƩTQT = QƩƩTQT
Và ATA = (QƩPT)TQƩPT = PƩTQTQƩPT = PƩTƩPT
⇒ Các cột của Q là các véctơ riêng của AA T và σ12,σ22,...,σr2 là các trị riêng khác 0 của
AAT.

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

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

3.1. Giới thiệu về hệ thống gợi ý (Recommender Systems)

Các bạn có lẽ đã gặp những hiện tượng này nhiều lần:


 Youtube tự động chuyển các video liên quan đến video bạn đang xem. Youtube
cũng tự gợi ý những video mà có thể bạn sẽ thích.
 Khi bạn mua một món hàng trên Amazon, hệ thống sẽ tự động gợi ý
“Frequently bought together”, hoặc nó biết bạn có thể thích món hàng nào dựa trên
lịch sử mua hàng của bạn.
 Facebook hiển thị quảng cáo những sản phẩm có liên quan đến từ khoá bạn vừa
tìm kiếm.
 Facebook gợi ý kết bạn.
 Netflix tự động gợi ý phim cho người dùng.
2
Và rất nhiều ví dụ khác mà hệ thống có khả năng tự động gợi ý cho ngừời dùng những
sản phẩm họ có thể thích. Bằng cách quảng cáo hướng đúng đối tượng như thế này,
hiệu quả của việc marketing cũng sẽ tăng lên. Những thuật toán đằng sau những ứng
dụng này là những thuật toán Machine Learning có tên gọi chung là Recommender
Systems hoặc Recommendation Systems, tức Hệ thống gợi ý.
Hệ thống gợi ý (Recommender Systems - RS) đã và đang được ứng dụng trong rất
nhiều lĩnh vực như giải trí, giáo dục, khoa học, và đặc biệt là thương mại điện tử. Việc
tích hợp kỹ thuật gợi ý vào các hệ thống trực tuyến nhằm tự động phân tích các hành
vi trong quá khứ của người dùng để dự đoán nhu cầu/sở thích của họ trong tương lai,
từ đó có những đề xuất hợp lý cho người dùng là rất cần thiết trong thực tế.
Hệ thống gợi ý được ứng dụng khá thành công trong thực tiễn giúp người dùng
giải quyết vấn đề quá tải thông tin. Hiện nay, hệ thống gợi ý đang được nghiên cứu và
ứng dụng ở nhiều lĩnh vực khác nhau đặc biệt là thương mại điện tử. Việc gợi ý sản
phẩm phù hợp sẽ góp phần làm tăng doanh số bán hàng hoặc số lượng truy cập,
download của hệ thống. Đồng thời giúp cho khách hàng có thể tìm kiếm được những
thông tin thú vị hoặc những sản phẩm mà họ muốn tìm dễ dàng hơn. Hệ thống gợi ý
giúp người dùng chọn lựa được thông tin phù hợp nhất cho mình dựa trên những hành
vi/phản hồi (feedbacks) mà người dùng đã thực hiện trong quá khứ. Các phản hồi có
thể được xác định một cách tường minh (explicit feedback) như thông qua việc đánh
giá/xếp hạng (ví dụ, rating từ 1 đến 5; hay like và dislike,…) mà người dùng đã bình
chọn trên sản phẩm – trong trường hợp này gọi là dự đoán xếp hạng (rating prediction)
hoặc các phản hồi có thể được xác định một cách không tường minh hay còn gọi là
tiềm ẩn (implicit feedbacks) như số lần click chuột, số lần chọn mua sản phẩm, thời
gian mà người dùng đã duyệt/xem sản phẩm,…
Mục đích của hệ thống gợi ý là dựa vào sở thích, thói quen, nhu cầu,... trong quá
khứ của người sử dụng để dự đoán sở thích trong tương lai của họ. Trong hệ thống gợi
ý người ta quan tâm đến 3 đối tượng: người dùng (user), sản phẩm (item) và các phản
hồi của người dùng trên sản phẩm, thường là các xếp hạng (rating) ta gọi U là tập tất
cả người dùng (users) và u là một người dùng cụ thể nào đó (u U). I là tập tất cả sản
phẩm
3
(items) sẽ được gợi ý và là một sản phẩm cụ thể nào đó (i I). R là một tập hợp các giá
trị để ước lượng sở thích của người dùng, rm R là xếp hạng của người dùng u trên sản
phẩm i. Giá trị rm được xác định qua cách tường minh như thông qua việc đánh giá/xếp
hạng. mà u đã bình chọn cho i (gọi là dự đoán xếp hạng), r m còn được xác định qua
cách tiềm ẩn như số lần click chuột, số lần chọn mua sản phẩm, thời gian mà u đã
duyệt i,…
Các thông tin về user, item, thường được biểu diễn thông qua một ma trận như
hình….Trong đó, mỗi hàng là một người dùng u, mỗi cột là một sản phẩm i, giao giữa
hàng và cột là các phản hồi của người dùng. Các ô có giá trị là những item mà các
user đã xem hoặc đã chọn trong quá khứ, do đó có rất nhiều ô trống trong ma trận
này.

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:

• Lập user-item matrix.

• 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:

• User-item matrix R ~ U I kích thước m x n.

• U là user matrix, kích thước m x d.

• I là item matrix, kích thước d x n.

• d là tham số, nhỏ hơn nhiều so với m, n.

• S = UI là ma trận xấp xỉ với R, có intrinsic dimension d.


Nhận xét:
Bằng cách giảm chiều dữ liệu, ta loại bớt không gian để tránh việc kết quả chỉ lặp
lại user- item matrix (S quá gần với R).
Giả thiết quan trọng là phương pháp phân tích SVD loại bỏ đúng các hiệu ứng
ngẫu nhiên.
Mỗi vector người dùng hoặc sản phẩm có d chiều, ứng với d nhân tố ẩn (latent
factor)

Với phương pháp phân tích SVD ta có:

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

4.1. Phân tích SVD của ma trận bất kỳ trên Matlab


Giả sử ta có ma trận A = [1 2; 3 4; 5 6; 7 8]. Phân tích SVD ma trận trên:
4.2. Ví dụ minh họa
Chúng ta xây dựng một bài code để thể hiện trực quan về ứng dụng của phân tích
SVD vào hệ thống gợi ý trong học máy. Và nó cho ra kết quả như hình bên dưới:

CHƯƠNG 5. KẾT LUẬN

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

TÀI LIỆU THAM KHẢO

[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

You might also like