Hình 1.3 Utility matrix Tập hợp tất cả các rating tạo thành một ma trận tiện ích utility matrix, trong đó mỗi hàng tương ứng với một bộ phim, mỗi cột tương ứng với một người dùng, mỗi ô
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TOÁN TIN
-o0o -
BÁO CÁO KHÓA LUẬN TỐT NGHIỆP
ĐỀ TÀI TÌM HIỂU VÀ XÂY DỰNG MÔ HÌNH
ĐỀ XUẤT PHIM XEM BẰNG MÔ HÌNH SINGULAR VALUE DECOMPOSITION
SVTH: Nguyễn Phúc Hiệp – 21CNTT2
GVHD: ThS Mai Hà Thi
Đà Nẵng, 5 – 2025
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Đà Nẵng, ngày … tháng … năm 2025
Giảng viên hướng dẫn
ThS Mai Hà Thi
Trang 3NHẬN XÉT CỦA HỘI ĐỒNG CHẤM THI
Đà Nẵng, ngày … tháng … năm 2025
Hội đồng chấm thi
Trang 4LỜI CÁM ƠN
Trong suốt quá trình thực hiện đề tài khóa luận tốt nghiệp, em đã nhận được rất nhiều sự hỗ trợ và động viên quý báu từ các thầy cô và người thân Nhân dịp này, em xin được bày tỏ lòng biết ơn chân thành đến tất cả những ai đã đồng hành cùng em trong suốt chặng đường vừa qua
Trước hết, em xin gửi lời cảm ơn sâu sắc đến giảng viên hướng dẫn ThS Mai Hà Thi – người đã tận tình chỉ dẫn, định hướng và hỗ trợ em trong suốt quá trình thực hiện
đề tài “Tìm hiểu và xây dựng mô hình đề xuất phim xem bằng mô hình Singular Value Decomposition” Sự kiên nhẫn, nhiệt huyết và chuyên môn vững vàng của cô là nguồn động lực lớn để em hoàn thành khóa luận này
Em cũng xin gửi lời tri ân đến toàn thể quý thầy cô trong Khoa, những người đã truyền đạt kiến thức, truyền cảm hứng và tạo điều kiện thuận lợi để em học tập và phát triển bản thân trong suốt thời gian học tại trường
Cuối cùng, em xin cảm ơn gia đình và bạn bè – những người luôn bên cạnh, động viên và tiếp thêm tinh thần cho em trong những lúc khó khăn
Một lần nữa, em xin chân thành cảm ơn tất cả!
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan rằng toàn bộ nội dung trong báo cáo khóa luận tốt nghiệp này là kết quả của quá trình học tập, nghiên cứu và thực hiện nghiêm túc của bản thân, dưới sự hướng dẫn tận tình của giảng viên ThS Mai Hà Thi
Trong suốt quá trình thực hiện đề tài, tôi luôn tuân thủ đầy đủ các quy định về học thuật, đạo đức nghiên cứu và quy chế đào tạo của Nhà trường Báo cáo này không sao chép hay sử dụng bất kỳ nội dung nào từ các nguồn tài liệu khác mà không trích dẫn rõ ràng Tất cả số liệu, phân tích, đánh giá và kết luận được trình bày trong báo cáo đều do tôi tự thực hiện một cách trung thực, có cơ sở và minh bạch
Nếu có bất kỳ hành vi gian lận, đạo văn, hoặc vi phạm quy định nào bị phát hiện trong báo cáo này, tôi xin hoàn toàn chịu trách nhiệm trước Hội đồng Khoa, Nhà trường
và các cơ quan có thẩm quyền theo đúng quy định hiện hành
Đà Nẵng, Ngày … tháng … năm 2025
Sinh viên thực hiện
Nguyễn Phúc Hiệp
Trang 6MỤC LỤC
LỜI CÁM ƠN 4
LỜI CAM ĐOAN 5
MỤC LỤC 6
MỞ ĐẦU 8
CHƯƠNG 1.TỔNG QUAN HỆ THỐNG ĐỀ XUẤT 13
1.1 GIỚI THIỆU HỆ THỐNG GỢI Ý (RECOMMENDER SYSTEM) 13
1.2 Utility matrix 14
1.2.1 Giới thiệu Utility matrix 14
1.2.2 Xây dựng Utility Matrix 15
1.3 CÁC PHƯƠNG PHÁP CỔ ĐIỂN VÀ TIÊN TIẾN 16
1.3.1 Content-based Filtering 16
1.3.2 Collaborative Filtering 20
1.4 TẠI SAO CHỌN SINGULAR VALUE DECOMPOSITION 30
1.4.1 Khả năng khám phá cấu trúc tiềm ẩn trong dữ liệu người dùng 30
1.4.2 Hiệu suất và độ chính xác vượt trội 31
CHƯƠNG 2.CƠ SỞ LÝ THUYẾT 33
2.1 GIỚI THIỆU VỀ SINGULAR VALUE DECOMPOSITION 33
2.2 ĐẠI SỐ TUYẾN TÍNH 34
2.2.1 Trị riêng và vector riêng của ma trận 34
2.2.2 Hệ trực giao và trực chuẩn 34
2.2.3 Một vài tính chất của ma trận trực giao 35
2.2.4 Ma trận con từ ma trận trực giao 36
2.3 LÝ THUYẾT SINGULAR VALUE DECOMPOSITION (SVD) 36
2.3.1 Phát biểu SVD 36
Trang 72.3.2 Nguồn gốc tên gọi Singular Value Decomposition 37
2.3.3 Cắt hạ (truncated SVD) 38
2.4 ỨNG DỤNG SVD TRONG BÀI TOÁN GỢI Ý PHIM 38
2.4.1 Ánh xạ người dùng và phim vào không gian tiềm ẩn 38
2.4.2 Trích xuất vector người dùng từ lịch sử xem phim 39
CHƯƠNG 3.THỰC NGHIỆM VÀ ĐÁNH GIÁ 41
3.1 MÔ TẢ DỮ LIỆU SỬ DỤNG 41
3.2 THỰC NGHIỆM 42
3.2.1 Môi trường và Kịch bản thực nghiệm 42
3.2.2 Thực nghiệm 1 44
3.2.3 Thực nghiệm 2 46
3.3 ĐÁNH GIÁ KẾT QUẢ THỰC NGHIỆM 48
3.3.1 Đánh giá kết quả thực nghiệm 1 48
3.3.2 Đánh giá kết quả thực nghiệm 2 49
3.3.3 So sánh & Điểm rút ra chung 50
KẾT LUẬN 51
TÀI LIỆU THAM KHẢO 52
Trang 8DANH SÁCH HÌNH ẢNH
Hình 1.1 Content-based Filtering 13
Hình 1.2 Collaborative Filtering 14
Hình 1.3 Utility matrix 15
Hình 1.4 Gán vector đặc trưng 17
Hình 1.5 Ví dụ về utility matrix dựa trên số sao một user rate cho một item 21
Hình 1.6 Ví dụ mô tả User-user Collaborative Filtering 23
Hình 1.7 Ví dụ mô tả Item-Item Collaborative Filtering 26
Hình 1.8 Matrix Factorization 28
Hình 2.9 SVD cho ma trận A khi: m<n (hình trên), và m>n (hình dưới) 37
Hình 3.10 Thống kê rating trên bộ dữ liệu đầu vào 42
Trang 9DANH SÁCH BẢNG BIỂU
Bảng 3.1 Bảng dữ liệu rating 41
Bảng 3.2 Bảng dữ liệu movies 41
Bảng 3.3 Bảng input thực nghiệm 1 45
Bảng 3.4 Bảng output thực nghiệm 1 46
Bảng 3.5 Bảng input thực nghiệm 2 47
Bảng 3.6 Bảng output thực nghiệm 2 48
Bảng 3.7 Bảng precision thực nghiệm 1 48
Bảng 3.8 Bảng precision thực nghiệm 2 49
Trang 10MỞ ĐẦU
Trong bối cảnh thị trường giải trí trực tuyến bùng nổ và người dùng ngày càng đòi hỏi những trải nghiệm cá nhân hóa sâu sắc, việc xây dựng một hệ thống gợi ý phim chính xác không chỉ giúp nâng cao sự hài lòng mà còn tối ưu hóa thời gian khám phá nội dung Khóa luận này tập trung vào việc tìm hiểu và triển khai mô hình Singular Value Decomposition (SVD) – một trong những phương pháp phân rã ma trận mạnh
mẽ nhất trong collaborative filtering
Trên cơ sở đó, phần “Mở đầu” sẽ trình bày tổng quan về:
1 Lý do chọn đề tài
Trong bối cảnh thị trường giải trí trực tuyến (OTT) đang phát triển bùng nổ, lượng nội dung phim ảnh được sản xuất và phát hành mỗi năm tăng lên theo cấp số nhân Mỗi nền tảng từ Netflix, Disney+ đến YouTube Premium hiện có hàng nghìn tựa phim, phim bộ và show giải trí, dẫn đến “nạn bội thực nội dung” cho người xem Thực trạng này đặt ra hàng loạt thách thức như: người dùng dễ bị choáng ngợp trước kho phim khổng lồ, mất nhiều thời gian để tìm ra những bộ phim thực sự phù hợp với sở thích, nếu đề xuất không chính xác, nền tảng sẽ mất điểm với khán giả, dẫn đến giảm thời gian xem và nguy cơ huỷ đăng ký Sở thích của người xem thay đổi theo thời gian, theo tâm trạng, theo xu hướng xã hội; một hệ thống cũ, chỉ dựa trên các thuật toán đơn giản khó thích ứng kịp với sự biến động này
Chính vì vậy, việc nghiên cứu một phương pháp gợi ý mạnh mẽ, hiệu quả và dễ mở rộng trở thành nhu cầu cấp thiết Singular Value Decomposition (SVD) nổi lên như một trong những kỹ thuật phân rã ma trận tối ưu nhất trong collaborative filtering nhờ khả năng: giảm chiều dữ liệu, khám phá các yếu tố ẩn (latent factors - các singular vector phản ánh sở thích về thể loại, đạo diễn, v.v ) mà không cần metadata thủ công Với những ưu điểm trên, SVD không chỉ đáp ứng tốt các thách thức hiện tại của hệ thống gợi ý phim trên nền tảng OTT, mà còn mở ra hướng đi mới cho việc cá nhân hoá sâu sắc và nâng cao trải nghiệm người dùng Đây chính là động lực mạnh mẽ để chúng tôi chọn đề tài “Tìm hiểu và xây dựng mô hình đề xuất phim xem bằng mô hình Singular Value Decomposition” nhằm kết hợp lý thuyết toán học, thực hành lập trình và ứng dụng thực tế một cách hoàn chỉnh
2 Tính cấp thiết và ý nghĩa của đề tài
Trong bối cảnh cạnh tranh khốc liệt giữa các nền tảng OTT và sự bội thực nội dung, việc xây dựng một hệ thống gợi ý phim không chỉ đúng chủ đề mà còn kịp thời, chính xác là nhu cầu sống còn Phần này phân tích hai khía cạnh quan trọng: nhu cầu cá nhân hóa và cải thiện độ chính xác, cũng như đóng góp đặc thù của SVD vào hiệu suất và khả năng mở rộng
Trang 11Cá nhân hóa - mỗi khán giả có sở thích riêng biệt: thể loại, phong cách đạo diễn, năm sản xuất, diễn viên, Cá nhân hóa cao giúp tăng tương tác, nâng cao thời gian xem và giảm tỷ lệ người dùng rời bỏ
Cải thiện độ chính xác trong gợi ý - các thuật toán đơn giản như User-Based CF dễ
bị ảnh hưởng bởi độ thưa của ma trận rating, dẫn đến gợi ý dư thừa hoặc thiếu chủ đề quan trọng Độ chính xác cao không chỉ làm người xem hài lòng hơn mà còn tăng khả năng khám phá nội dung mới, mở rộng thị hiếu của họ
Khả năng mở rộng linh hoạt: SVD dễ dàng tích hợp với các biến thể như Biased SVD, SVD++ để tận dụng cả explicit và implicit feedback Dễ triển khai trên kiến trúc phân tán (Hadoop, Spark) hoặc GPU, đáp ứng nhu cầu xử lý dữ liệu khổng lồ của các OTT
Tăng cường chất lượng đề xuất: Phân rã ma trận giúp tự động khám phá latent factors – những yếu tố tiềm ẩn không thể hiện trực tiếp trong metadata – nhờ đó gợi ý vừa chính xác vừa phong phú Khi kết hợp với kỹ thuật regularization, mô hình SVD
có khả năng kháng nhiễu tốt, giảm over-fitting cho cả user ít rating và phim ít rating
3 Mục tiêu nghiên cứu
Để giải quyết các thách thức trong hệ thống gợi ý phim và tận dụng sức mạnh của phân rã ma trận SVD, đề tài đặt ra 4 mục tiêu chính sau:
- Triển khai phương pháp truncated SVD bằng thư viện sklearn.decomposition,
xử lý ma trận user-item thưa với hàng chục nghìn users và movies từ bộ dữ liệu MovieLens [1] trên Kaggle
- Thử nghiệm với nhiều giá trị latent factors k khác nhau (k= 20, 50, 100, 150, 200) để tìm điểm cân bằng giữa độ chính xác (cosine similarity cao) và hiệu năng tính toán
- Áp dụng regularization và chuẩn hoá dữ liệu (center hóa theo user hoặc item) để giảm thiểu nhiễu và tránh over-fitting
- Đánh giá precision dựa trên genre trùng nhau giữa phim 1 người dùng đã xem
và phim đề xuất cho người dùng đó
4 Đối tượng, phạm vi và phương pháp nghiên cứu
- Đối tượng: Thuật toán phân rã ma trận SVD và bộ data rating của người dùng
- Phạm vi: Chỉ triển khai SVD thuần túy (truncated SVD), không mở rộng sang SVD++ hay các mô hình DL
- Phương pháp:
o Tiền xử lý dữ liệu bằng pandas
o Xây dựng và huấn luyện mô hình SVD với thư viện Sklearn/Scipy
o Đánh giá bằng Precision (genre@K)
Trang 125 Cấu trúc báo cáo
Chương 1 - Tổng quan hệ thống đề xuất
Chương 2 - Cơ sở lý thuyết
Chương 3 - Thực nghiệm và đánh giá
Trang 13CHƯƠNG 1 TỔNG QUAN HỆ THỐNG ĐỀ XUẤT
Trong chương này, ta sẽ định nghĩa khái niệm hệ thống gợi ý, phân tích các phương pháp hiện có, và chỉ ra lý do chọn Singular Value Decomposition (SVD) làm trọng tâm nghiên cứu
1.1 GIỚI THIỆU HỆ THỐNG GỢI Ý (RECOMMENDER SYSTEM)
Trong kỷ nguyên số, khi khán giả đứng trước “biển” nội dung khổng lồ trên các nền tảng OTT như Netflix, Disney+, Amazon Prime Video…, việc tìm ra đúng phim mình yêu thích trở thành bài toán khó khăn không kém việc lựa chọn sách trong thư viện đồ
sộ Hệ thống gợi ý (Recommender System – RS) ra đời nhằm giải quyết thách thức này, tự động phân tích lịch sử tương tác và sở thích của người dùng để đề xuất những nội dung phù hợp nhất, giảm thiểu tình trạng “bội thực thông tin” và mang lại trải nghiệm cá nhân hóa sâu sắc
Các hệ thống gợi ý (Recommendation Systems) trong thường được chia thành hai nhóm lớn [8]:
Hình 1.1 Content-based Filtering
- Content-based Filtering: Dựa vào đặc trưng nội dung của các bộ phim để đưa ra
đề xuất Ví dụ, nếu một người dùng thường xuyên xem các bộ phim thuộc thể loại hình sự như Hồ sơ cá sấu, Mê cung, thì hệ thống sẽ ưu tiên đề xuất những bộ phim
có cùng thể loại, chẳng hạn như Người phán xử Phương pháp này yêu cầu phải mô
tả rõ các đặc điểm của từng bộ phim (thể loại, đạo diễn, diễn viên, từ khóa nội dung ) và xây dựng hồ sơ sở thích của người dùng dựa trên những đặc điểm đó Tuy nhiên, việc gán nhãn hoặc trích xuất đặc trưng cho từng phim có thể không khả thi nếu dữ liệu không đầy đủ hoặc phim không dễ phân loại
Trang 14rỡ trong khi A chưa xem phim này, thì hệ thống có thể suy luận rằng A cũng có khả năng sẽ thích Tháng năm rực rỡ, từ đó đưa ra gợi ý Phương pháp này hoạt động tốt khi có dữ liệu tương tác đủ lớn giữa người dùng và các bộ phim
1.2 UTILITY MATRIX
1.2.1 Giới thiệu Utility matrix
Trong các hệ thống gợi ý phim (Recommendation Systems), tồn tại hai thực thể chính: người dùng (users) và phim (items) Mỗi người dùng có mức độ yêu thích khác nhau đối với từng bộ phim Nếu mức độ yêu thích này đã được biết, ta có thể biểu diễn
nó dưới dạng rating – tức là điểm mà người dùng chấm cho bộ phim, thường theo thang
từ 0 đến 5
Trang 15Hình 1.3 Utility matrix Tập hợp tất cả các rating tạo thành một ma trận tiện ích (utility matrix), trong đó mỗi hàng tương ứng với một bộ phim, mỗi cột tương ứng với một người dùng, mỗi ô trong ma trận thể hiện mức độ yêu thích (rating) của một người dùng đối với một bộ phim
Các ô trống là các giá trị chưa biết – tức là người dùng đó chưa đánh giá phim Nhiệm vụ cốt lõi của hệ thống gợi ý là dự đoán các giá trị còn thiếu này để từ đó đề xuất phim phù hợp Vì vậy, bài toán gợi ý còn được gọi là Matrix Completion (hoàn thiện ma trận)
Tuy nhiên, trong thực tế, số lượng người dùng và phim là cực kỳ lớn, và hầu hết người dùng chỉ đánh giá một lượng phim rất nhỏ Điều này khiến ma trận tiện ích trở nên rất thưa (sparse matrix) – phần lớn là các ô trống Đây là thách thức lớn trong bài toán xây dựng hệ thống gợi ý
1.2.2 Xây dựng Utility Matrix
Không có Utility matrix, gần như không thể gợi ý được bộ phim phù hợp cho người dùng, ngoài cách luôn luôn gợi ý các bộ phim phổ biến nhất Vì vậy, trong các Recommender Systems cho nền tảng xem phim, việc xây dựng Utility Matrix là tối quan trọng Tuy nhiên, quá trình xây dựng ma trận này thường gặp nhiều khó khăn Có hai hướng tiếp cận phổ biến để xác định giá trị rating cho mỗi cặp user-movie trong Utility Matrix:
- Nhờ người dùng đánh giá bộ phim: các nền tảng như Netflix hoặc FPT Play thường hỏi người dùng đánh giá bộ phim sau khi xem xong thông qua các biểu mẫu hoặc nút “like/dislike” Rất nhiều hệ thống gợi ý cũng áp dụng phương pháp này Tuy nhiên, cách tiếp cận này có một vài hạn chế, bởi vì thường thì người dùng rất
ít khi chủ động đánh giá Và nếu có, đó có thể là những đánh giá thiên lệch – đến
từ những người dùng cực đoan (quá thích hoặc quá ghét bộ phim)
- Dựa trên hành vi xem phim của người dùng: Rõ ràng, nếu một người dùng chủ động xem một bộ phim trên Netflix, hoặc thậm chí xem lại nhiều lần, thì ta có thể
Trang 16giả định rằng họ thích bộ phim đó YouTube cũng áp dụng tương tự: hệ thống gợi
ý các video dựa trên video bạn đã xem, đã thích hoặc đã tìm kiếm Tương tự, nếu một người dùng thường xuyên tìm và xem phim hành động, hệ thống sẽ ưu tiên gợi
ý các phim cùng thể loại Cách này thường chỉ xây dựng được một ma trận với các thành phần là 1 và “giá trị trống”, với 1 biểu thị rằng người dùng đã xem/thích bộ phim, còn “giá trị trống” thể hiện chưa có thông tin Trong trường hợp này, “giá trị trống” không có nghĩa là điểm thấp hơn 1, mà đơn giản là hệ thống chưa biết người dùng có thích bộ phim đó hay không Chúng ta cũng có thể mở rộng cách xây dựng
ma trận bằng cách gán giá trị cao hơn 1 nếu người dùng xem lặp lại nhiều lần, hoặc thời lượng xem dài hơn Đôi khi, nút dislike cũng mang lại tín hiệu có giá trị – hệ thống có thể gán giá trị âm, chẳng hạn -1, cho những bộ phim người dùng không thích
1.3 CÁC PHƯƠNG PHÁP CỔ ĐIỂN VÀ TIÊN TIẾN
1.3.1 Content-based Filtering
1.3.1.1 Item profiles
Trong các hệ thống gợi ý dựa trên nội dung (Content-Based Filtering), chúng ta cần xây dựng một hồ sơ nội dung (profile) cho mỗi bộ phim Hồ sơ này được biểu diễn bằng một vector đặc trưng (feature vector) Trong các hệ thống thực tế, các đặc trưng này có thể được rút trích tự động từ metadata của phim như:
Đạo diễn - người dùng có thể thích phim do Christopher Nolan đạo diễn hơn các phim của Michael Bay
Diễn viên - có người mê phim có Tom Hanks, người khác lại thích Johnny Depp
Thể loại - rõ ràng người mê phim hành động sẽ quan tâm đến John Wick, còn người thích lãng mạn thì lại tìm đến The Notebook
Năm phát hành - một số người có xu hướng thích phim cũ, số khác lại mê phim mới
Quốc gia sản xuất - phim Mỹ, Hàn Quốc, Nhật Bản, hay Việt Nam đều có tập người dùng riêng
Tất nhiên, có rất nhiều yếu tố khác như thời lượng, độ nổi tiếng, màu sắc điện ảnh,… nhưng để đơn giản hóa bài toán, chúng ta giả định mỗi bộ phim có feature vector hai chiều
Trong ví dụ Hình 1.3 phía trên, chúng ta giả định rằng mỗi bộ phim được gán 1 vector đặc trưng xi Cụ thể:
Trang 17Item’s feature vector
để xây dựng mỗi mô hình θi là các cặp (item profile, ratings) tương ứng với các items mà user đó đã rated Việc điền các giá trị còn thiếu trong ma trận Utility chính là việc dự đoán đầu ra cho các unrated items khi áp dụng mô hình θi lên chúng 1.3.1.2 Xây dựng hàm mất mát
Giả sử số lượng người dùng là N, số lượng sản phẩm (items) là M Khi đó, mức độ quan tâm của người dùng đối với sản phẩm được mô tả thông qua ma trận tiện ích
Y ∈ RM×N, trong đó phần tử ymn là số sao mà người dùng thứ n đã đánh giá cho sản phẩm thứ m, nếu có Vì thực tế chỉ một phần nhỏ các sản phẩm được người dùng đánh giá, ma trận Y là ma trận khuyết với phần lớn giá trị không xác định (missing values)
Để xác định các phần tử nào trong Y là quan sát được, ta định nghĩa ma trận chỉ báo
R ∈ {0,1}M×N, trong đó:
Trang 18**Mô hình tuyến tính:
Giả sử tồn tại một hàm tuyến tính mô tả mức độ quan tâm của người dùng n đối với sản phẩm m, được mô hình hóa bởi vector đặc trưng hàng xm ∈ Rd của item và vector tham số cột wn ∈ Rd của user:
trong đó bn ∈ R là sai số hệ thống (bias) của người dùng thứ n Phép nhân giữa xm
(vector hàng) và wn (vector cột) cho ra một vô hướng
người dùng này đã đánh giá, ta có thể xây dựng hàm mất mát cá nhân Ln như sau:
(2)
trong đó λ > 0 là hệ số điều chuẩn (regularization), và thành phần là chuẩn L2 nhằm tránh hiện tượng overfitting Regularization không được áp dụng lên bias bn Trong thực hành, để chuẩn hóa mức độ mất mát theo số lượng đánh giá đã có, người
ta thường sử dụng trung bình cộng thay vì tổng tuyệt đối Khi đó, nếu đặt
là số lượng sản phẩm mà người dùng n đã đánh giá, ta viết lại biểu thức (2) thành:
(3)
với:
tức là tổng các phần tử trên cột thứ n của ma trận chỉ báo R
**Viết lại dưới dạng vector hoá:
Vì hàm mất mát chỉ phụ thuộc vào những sản phẩm đã được đánh giá, ta có thể viết lại biểu thức (3) dưới dạng rút gọn Gọi:
: vector chứa các đánh giá đã quan sát của người dùng n
: ma trận con chứa các vector đặc trưng của những sản phẩm đã
Trang 19 : vector cột chứa toàn bộ các phần tử bằng 1
Khi đó, hàm mất mát cá nhân của người dùng n được viết gọn dưới dạng vector hoá:
(4)
Biểu thức (4) là dạng chuẩn của Ridge Regression, trong đó trọng số wn và bias bn
có thể được ước lượng thông qua các thuật toán tối ưu hoá như Stochastic Gradient Descent (SGD) hoặc Mini-Batch Gradient Descent
1.3.1.3 Bài toán với cơ sở dữ liệu MovieLens 100k [8]
** Cơ sở dữ liệu MovieLens 100k
Tập dữ liệu MovieLens 100k, được công bố bởi nhóm nghiên cứu GroupLens vào năm 1998, là một trong những bộ dữ liệu tiêu chuẩn được sử dụng rộng rãi trong lĩnh vực hệ thống gợi ý Dữ liệu bao gồm 100.000 đánh giá được tạo ra bởi 943 người dùng đối với 1.682 bộ phim, với điều kiện mỗi người dùng đánh giá ít nhất 20 phim Ngoài bản 100k, GroupLens còn cung cấp các phiên bản có quy mô lớn hơn như 1M, 10M và 20M đánh giá
Sau khi giải nén, tập dữ liệu bao gồm nhiều tệp, trong đó một số tệp quan trọng thường được sử dụng trong các nghiên cứu như:
u.data: Chứa toàn bộ các đánh giá với định dạng user_id, item_id, rating, timestamp Thời gian đánh giá có thể được sử dụng cho các mô hình gợi ý theo thời gian, tuy nhiên nhiều nghiên cứu chỉ sử dụng ba trường đầu
ua.base, ua.test, ub.base, ub.test: Các tập dữ liệu được chia sẵn cho mục đích huấn luyện và kiểm thử Một số nghiên cứu sử dụng cặp ua.base và ua.test làm mặc định
u.user: Chứa thông tin mô tả về người dùng như tuổi, giới tính, nghề nghiệp và vùng miền (zipcode) Các thuộc tính này có thể được khai thác trong các mô hình gợi ý dựa trên thông tin nhân khẩu học, tuy nhiên cũng thường bị bỏ qua nếu chỉ đánh giá mô hình dựa trên tương tác user-item
u.genre: Danh sách 19 thể loại phim, bao gồm: Unknown, Action, Adventure, Animation, Children’s, Comedy, Crime, Documentary, Drama, Fantasy, Film-Noir, Horror, Musical, Mystery, Romance, Sci-Fi, Thriller, War, Western
u.item: Chứa thông tin mô tả về phim, bao gồm: ID, tiêu đề, ngày phát hành, liên kết IMDb, và một chuỗi nhị phân thể hiện phim thuộc những thể loại nào (dựa trên u.genre) Một bộ phim có thể thuộc nhiều thể loại khác nhau, đây là
Trang 20cơ sở để xây dựng hồ sơ nội dung (item profile) trong các mô hình hybrid hoặc đánh giá theo genre
Tập dữ liệu MovieLens 100k thường được sử dụng trong các nghiên cứu với mục tiêu minh họa nguyên lý hoạt động hoặc đánh giá hiệu quả tương đối giữa các mô hình gợi ý khác nhau, nhờ vào quy mô nhỏ gọn và cấu trúc rõ ràng
có thể được cải thiện trong các nghiên cứu tiếp theo như mô hình Collaborative Filtering nâng cao
1.3.2 Collaborative Filtering
1.3.2.1 Neighborhood-Based Collaborative Filtering
Ý tưởng cơ bản của Neighborhood-based Collaborative Filtering (NBCF) là ước lượng mức độ quan tâm của một người dùng đối với một sản phẩm dựa trên mức độ quan tâm của những người dùng khác có hành vi tương đồng Mức độ tương đồng giữa các người dùng được xác định thông qua các sản phẩm mà họ đã tương tác, cụ thể là
Từ đó, hai câu hỏi cốt lõi đặt ra trong một hệ thống NBCF bao gồm:
1 Làm thế nào để đo lường được mức độ tương đồng giữa hai người dùng?
2 Sau khi đã xác định được các người dùng tương tự (similar users), làm thế nào để dự đoán mức độ quan tâm của một người dùng đối với một sản phẩm chưa biết?
Cách tiếp cận sử dụng sự tương đồng giữa người dùng nói trên được gọi là
Trang 21User-Tuy nhiên, một hướng tiếp cận khác, được đánh giá là hoạt động hiệu quả hơn trong nhiều trường hợp thực tế, là Item-Item Collaborative Filtering Trong hướng này, hệ thống không tập trung vào việc xác định các người dùng tương tự mà thay vào đó tính toán độ tương đồng giữa các sản phẩm Từ đó, hệ thống đưa ra gợi ý các sản phẩm tương đồng với những sản phẩm mà người dùng đã thể hiện mức độ quan tâm cao trong quá khứ
a) User-user Collaborative Filtering
**Similarity Functions:
Bước quan trọng nhất trong User-user Collaborative Filtering là xác định được mức
độ tương đồng (similarity) giữa hai người dùng Dữ liệu duy nhất mà hệ thống có thể
sử dụng là ma trận tiện ích (utility matrix), ký hiệu là Y, vì vậy mức độ tương đồng giữa hai người dùng chỉ có thể được xác định dựa trên các cột tương ứng của hai người dùng trong ma trận này
Giả sử có các người dùng từ u₀ đến u₆ và các sản phẩm từ i₀ đến i₄ (Hình 1.5), trong
đó các số thể hiện số sao người dùng đánh giá cho sản phẩm Số sao càng cao thể hiện mức độ quan tâm càng lớn Các ô chứa dấu “?” là các giá trị chưa biết, cần được hệ thống dự đoán
Hình 1.5 Ví dụ về utility matrix dựa trên số sao một user rate cho một item Một cách trực quan, hành vi của u₀ giống với u₁ hơn là so với u₂, u₃, , u₆ Do đó,
có thể suy đoán rằng u₀ sẽ quan tâm đến sản phẩm i₂, bởi vì u₁ cũng đã đánh giá tích cực sản phẩm này
Giả sử ký hiệu mức độ giống nhau giữa hai người dùng uᵢ và uⱼ là: sim(uᵢ, uⱼ) Khi đó, một tiêu chí quan trọng cho một hàm đo độ tương đồng tốt là:
sim(u₀, u₁) > sim(u₀, uᵢ), ∀ i > 1 Điều này đảm bảo rằng những người dùng có hành vi tương tự sẽ được ưu tiên khi
hệ thống dự đoán hành vi của người dùng mục tiêu
Trang 22Để xây dựng một hàm similarity, ta cần biểu diễn mỗi người dùng dưới dạng một vector đặc trưng (feature vector) Tuy nhiên, không giống như trong các hệ thống dựa trên nội dung (Content-based Filtering), các vector ở đây được xây dựng trực tiếp từ utility matrix, tức là từ các rating mà người dùng đã cung cấp, thay vì từ metadata của sản phẩm
Khó khăn chính là: các vector đặc trưng này thường chứa rất nhiều giá trị thiếu (missing ratings), vì mỗi người dùng chỉ đánh giá một phần nhỏ các sản phẩm Do đó, cần có một phương pháp để điền các giá trị còn thiếu sao cho kết quả đo similarity không bị méo mó quá nhiều
Có nhiều cách điền các dấu “?”, mỗi cách có ưu và nhược điểm riêng:
Thay bằng 0: không nên dùng vì 0 ngụ ý mức độ không quan tâm cực thấp
Thay bằng 2.5: giá trị trung bình giữa 0 và 5, an toàn hơn nhưng có thể gây sai lệch với người dùng “dễ tính” (thường rate 5 hoặc 4) hoặc “khó tính” (thường rate 3 trở xuống)
Thay bằng trung bình cộng các rating mà user đã thực hiện: đây là cách làm được
ưa chuộng hơn vì nó điều chỉnh cho xu hướng đánh giá cá nhân của từng người dùng Người dùng dễ tính hay khó tính sẽ vẫn có các item mà họ yêu thích hơn những item khác
Cách tiếp cận này giúp vector đặc trưng phản ánh chính xác hơn sở thích tương đối của người dùng, thay vì bị ảnh hưởng bởi thang điểm tuyệt đối
Hãy cùng xem ví dụ trong Hình 1.6 a) và 1.6 b)
Trang 23Hình 1.6 Ví dụ mô tả User-user Collaborative Filtering Hình 1.6 mô tả: a) Utility Matrix ban đầu b) Utility Matrix đã được chuẩn hoá c) User similarity matrix d) Dự đoán các (normalized) ratings còn thiếu e) Ví dụ về cách dự đoán normalized rating của u1 cho i1 f) Dự đoán các (denormalized) ratings còn thiếu
**Chuẩn hoá dữ liệu:
Trong Hình 1.6 a, hàng cuối cùng là giá trị trung bình của ratings cho mỗi user Giá trị trung bình này phản ánh mức độ dễ tính hoặc khó tính của từng người dùng - giá trị càng cao cho thấy user càng dễ tính (thường cho điểm cao)
Nếu chúng ta trừ mỗi rating đi trung bình của user tương ứng, ta thu được ma trận tiện ích đã chuẩn hoá (normalized utility matrix) như trong Hình 1.6 b Các giá trị trong
ma trận này có thể là:
Số dương: user thích item (rating cao hơn trung bình)
Số âm: user không thích item (rating thấp hơn trung bình)
Bằng 0: user chưa đánh giá hoặc mức độ yêu thích chưa xác định
Việc chuẩn hoá dữ liệu này mang lại một số lợi ích kỹ thuật quan trọng:
Cải thiện độ chính xác khi tính độ tương đồng giữa các user
Giảm độ thiên lệch do user dễ tính (thường cho điểm cao) hoặc khó tính (thường cho điểm thấp)
Tối ưu bộ nhớ: Utility matrix rất lớn (có thể hàng triệu user và item) nhưng hầu hết các ô là giá trị thiếu Việc lưu sparse matrix (chỉ lưu giá trị ≠ 0) giúp tiết kiệm bộ nhớ và tăng hiệu quả xử lý
Do đó, các dấu “?” trong ma trận nên được thay bằng 0, nghĩa là “chưa xác định được mức độ yêu thích” Việc này giúp hệ thống vận hành hiệu quả hơn về cả bộ nhớ
và tốc độ xử lý
**Cosine Similarity:
Một trong những hàm phổ biến nhất để đo độ giống nhau giữa hai user là Cosine Similarity, được định nghĩa như sau:
Trang 24 Giá trị cosine gần 0: không có tương quan rõ ràng
Ví dụ: trong Hình 1.6 c là ma trận cosine similarity giữa các user, thu được từ dữ liệu
đã chuẩn hoá (Hình 1.6 b) Ta có một số quan sát:
u₀ gần với u₁ và u₅
o Gần với u₁ là dễ hiểu vì họ cùng thích các item i₀, i₁, i₂
o Gần với u₅ là bất ngờ, nhưng hợp lý khi xem xét rằng cả hai chỉ cùng đánh giá i₁ và đều theo chiều hướng tích cực sau khi chuẩn hoá
u₂ gần với nhóm u₃, u₄, u₅, u₆, cách biệt rõ với nhóm u₀, u₁
Có thể phân chia các user thành 2 nhóm rõ rệt: (u₀, u₁) và (u₂, u₃, u₄, u₅, u₆)
Do cosine similarity là hàm chẵn nên ma trận độ tương đồng là ma trận đối xứng Các phần tử đường chéo có giá trị bằng 1 vì đó là độ tương đồng của một vector với chính
nó
**Dự đoán Rating:
Việc dự đoán mức độ yêu thích (rating) của một user đối với một item chưa được đánh giá dựa trên các user tương tự nhất với người đó, hay còn gọi là neighbor users, rất giống với bài toán K-Nearest Neighbors (KNN) đã học trong các khoá học cơ bản Trong các hệ thống quy mô lớn, KNN được sử dụng nhiều nhờ tính đơn giản, dễ cài đặt, tuy nhiên trong Collaborative Filtering (CF), cần thêm một số bước trung gian
Cụ thể, trong CF:
Trang 25 Missing rating của một user u với một item i sẽ được ước lượng dựa trên ratings của k user gần nhất với user u và đã đánh giá item i
Dự đoán được tính bằng trung bình có trọng số (weighted average) của các normalized ratings
Khác với KNN truyền thống (dùng distance ≥ 0), ở đây trọng số là độ tương đồng (similarity) giữa users, có thể âm hoặc dương
Công thức dự đoán: cho là normalized rating dự đoán của user u với item i, công thức là:
Trong đó:
là rating đã chuẩn hoá (tức rating trừ đi trung bình) của user uj cho item i
sim(u, uj) là độ tương đồng (cosine similarity) giữa user u và uj
N(u, i) là tập k neighbor users gần nhất của u đã đánh giá item i
Mẫu số dùng giá trị tuyệt đối để tránh bias do similarity âm
b) Item-Item Collaborative Filtering
**Một số hạn chế của User-user Collaborative Filtering:
Trên thực tế, số lượng users thường lớn hơn rất nhiều so với số lượng items Kéo theo đó, ma trận tương đồng (Similarity matrix) giữa các users có kích thước rất lớn,
cụ thể là chứa số phần tử bằng hơn một nửa bình phương số lượng users (do đối xứng) Việc lưu trữ ma trận lớn như vậy là không khả thi trong nhiều trường hợp thực tế
Ma trận utility Y thường rất thưa (sparse) Với số lượng users lớn, rất nhiều cột trong ma trận này có rất ít giá trị khác 0 - do người dùng thường không đánh giá nhiều Hệ quả là: khi một user thay đổi rating hoặc đánh giá thêm items, thì trung bình cộng các rating và vector chuẩn hoá của người đó thay đổi nhiều Điều này buộc hệ thống phải tính lại Similarity matrix, một quá trình tốn kém bộ nhớ và thời gian Ngược lại, nếu tính similarity giữa các items rồi gợi ý các items tương tự với item
mà user đã thích, ta có các lợi ích sau:
Vì số lượng items nhỏ hơn số lượng users, ma trận tương đồng giữa các items nhỏ hơn nhiều, dễ lưu trữ và tính toán hơn
Trang 26 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) Do đó, trung bình mỗi hàng có nhiều ratings hơn mỗi cột, tức mỗi item thường được nhiều user đánh giá Hệ quả là giá trị trung bình theo hàng ít bị ảnh hưởng hơn nếu có thêm ratings Điều này giúp việc cập nhật Similarity matrix trở nên ổn định và không cần thực hiện thường xuyên
Phương pháp tiếp cận này gọi là Item-item Collaborative Filtering, và trong thực tế được sử dụng nhiều hơn User-user CF
**Quy trình dự đoán missing ratings trong Item-item CF
Tương tự như User-user CF, quá trình dự đoán rating thiếu vẫn dựa vào các giá trị
đã biết và độ tương đồng Hình 1.7 mô tả quy trình này qua một ví dụ:
Hình 1.7 Ví dụ mô tả Item-Item Collaborative Filtering Một điểm thú vị ở ma trận Similarity trong Hình 1.7 c là:
Hai hình vuông (màu xanh và đỏ) có các phần tử không âm
Các phần tử ngoài hai nhóm này là số âm