Ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy...5 CHƯƠNG 4.. Phương pháp đó có tên là Singular Value Decomposition Trong chương trình học của chúng ta về trị riêng và véctơ
Trang 2DANH SÁCH THÀNH VIÊN
ST
1 Nguyễn Minh Huy 2348017
2 Nguyễn Phạm Anh Khôi 2348023
4 Nguyễn Hoàng Danh 2210456
5 Nguyễn Ngọc Anh Thư 2213400
6 Nguyễn Duy Thiên 2012091
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 2
CHƯƠNG 1 MỞ ĐẦU
1.1 Giới thiệu đề tài
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD 3
2.1 Giới thiệu chung về SVD 3
2.2 Phân tích ma trận SVD 3
CHƯƠNG 3 ỨNG DỤNG PHÂN TÍCH SVD TRONG HỆ THỐNG GỢI Ý 5
3.1 Giới thiệu về hệ thống gợi ý 5
3.2 Ứng dụng của phân tích SVD vào hệ thống gợi ý trong học máy 5
CHƯƠNG 4 PHÂN TÍCH SVD (PYTHON) 7
4.1 Mục đích và lý do chọn SVD
4.2 Phân tích SVD trong hệ thống gợi ý mua hàng 8
Chương trình Python phân tích SVD trong hệ thống gợi ý mua hàng
Màn hình xuất ra………
CHƯƠNG 5 KẾT LUẬN 11
TÀI LIỆU THAM KHẢO 12
PHỤ LỤC 13
Trang 4LỜI NÓI ĐẦU
Trước hết, nhóm xin trân trọng bày tỏ lòng biết ơn sâu sắc đến tất cả quý thầy cô và bạn bè đã tận tình chỉ dẫn và hỗ trợ chúng em trong suốt quá trình thực hiện bài tập lớn này Sự quan tâm, ủng hộ và giúp đỡ nhiệt tình củamọi người đã là nguồn động viên to lớn cho nhóm
Đặc biệt, nhóm xin gửi lời tri ân chân thành nhất đến thầy Nguyễn
Hoàng Hiệp - giảng viên phụ trách bộ môn Đại số tuyến tính Sự hướng dẫn tận tâm và uyên bác của thầy đã là kim chỉ nam cho mọi quyết định và hành động của nhóm, giúp chúng em vượt qua những khó khăn, hoàn thành bài báocáo đúng tiến độ và đạt chất lượng tốt nhất Thầy không chỉ truyền đạt kiến thức chuyên môn mà còn truyền cảm hứng để chúng em phát huy tối đa khả năng của mình Nhóm cũng xin bày tỏ lòng biết ơn đối với các chuyên gia
nghiên cứu, tác giả của những tài liệu, sách báo mà chúng em đã tham khảo trong quá trình làm bài Những nguồn tài liệu quý giá này đã giúp mở rộng kiến thức và làm phong phú thêm nội dung báo cáo của nhóm
Mặc dù đã nỗ lực hết sức để hoàn thiện đề tài, chúng em nhận thức
rằng bài báo cáo không thể tránh khỏi những thiếu sót Vì vậy, nhóm rất
mong nhận được những nhận xét, góp ý quý báu từ quý thầy cô và các bạn để
có thể tiếp tục hoàn thiện và nâng cao chất lượng bài báo cáo.Một lần nữa,
nhóm xin chân thành cảm ơn tất cả những sự hỗ trợ và đóng góp quý báu đã giúp chúng em hoàn thành bài tập lớn này Đây không chỉ là kết quả học tập
mà còn là trải nghiệm quý giá, giúp chúng em trưởng thành hơn trong hành trình học tập và nghiên cứu của mình
Trang 5CHƯƠNG 1 MỞ ĐẦU
1.1. Giới thiệu đề tài
Trong bài báo cáo này, nhóm em sẽ giới thiệu với các bạn 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 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.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 Python để mô phỏng trực quan kết quả của việc ứng dụng SVD trong thực tế về hệ thống gợi ý đề xuất sản phẩm mua hàng 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ẻ, logic, dễ hiểu mà vẫn đảm bảo được tính chính xác, đúng yêu cầu đề ra
Chú ý rằng các ma trận trong bài viết này đều được ngầm giả sử là ma trận thực.
I)
Một chút về Đại số tuyến tính
a 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:
Mọi ma trận vuông bậc n đều có n trị riêng (kể cả lặp) và có thể là các số phức.
Với ma trận đối xứng, tất cả các trị riêng đều là các số thực
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ực dươ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
Trang 6khô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 Axác định dương, ta có:
Hệ trực giao và trực chuẩn
Một hệ cơ sở u1,u2,…,u 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:
u i ≠ 0 ;u i T u j =0 ∀ 1≤i ≠ j ≤ m
Một hệ cơ sở u1,u2, … ,u m ∈ R m
được gọi là trực chuẩn (orthonormal) nếu nó là một
hệ trực giao và độ dài Euclidean (norm 2) của mỗi vector bằng 1:
Trong đó I là ma trận đơn vị bậc m 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.
Một vài tính chất:
U−1=U T: nghịch đảo của một ma trận trực giao chính là chuyển vị của nó
Nếu U là ma trận trực giao thì chuyển vị của nó U T cũng là một ma trận trực giao
Đị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(U T)
det (U )=det(U T)=det ( I )=1
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
Trang 7được U x ,U y Tích vô hướng của hai vector mới là:
Một hệ thống gợi ý (hay còn gọi là hệ thống khuyên dùng, tiếng
Anh: recommendation system) là một lớp con của hệ thống lọc thông tin, tìm kiếm dự
đoán "đánh giá" hoặc "ưa thích" của người dùng với một sản phẩm hoặc đối tượng nào
đó. Hệ thống gợi ý chủ yếu dùng trong các ứng dụng thương mại
Các hệ thống gợi ý được tận dụng trong nhiều lĩnh vực, chẳng hạn như trình tạo danh sách phát cho video và âm nhạc của một số ứng dụng như Netflix, YouTube và Spotify Sau khi người xem một vài video hoặc nghe một số bài hát, hệ thống gợi ý sẽ nhận diện sở thích người dùng và mức độ tương tác với video/bài hát để tạo ra một danh sách gợi ý theo chủ đề và mức độ liên quan mà người dùng có thể ưa thích Hệ thống gợi
ý còn áp dụng cho các dịch vụ gợi ý sản phẩm ở Amazon, các gợi ý nội dung cho các nềntảng xã hội như Facebook hay Twitter
Các loại của hệ thống gợi ý Recommender System
1 Lọc cộng tác
2 Lọc dựa trên nội dung
3 Dựa trên sự tương đồn
4 Dữ liệu hóa ma trận
Những bước cần làm để xây dựng hệ thống Recommender system:
• Thu thập dữ liệu phù hợp tùy vào các bài toán cụ thể
• Chạy mô hình và lọc ra top Item phù hợp để gợi ý cho người dùng
• Đánh giá hiệu quả mô hình và cập nhật lại mô hình hệ thống thông qua các dữ liệu mới được sinh ra hàng ngày
Trang 8CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu chung về SVD
- Singular Value Decomposition (SVD) là một phương pháp quan trọng trong đại số tuyến
tính và phân tích ma trận Được giới thiệu đầu tiên bởi nhà toán học người Ý EugenioBeltrami vào năm 1873, SVD đã trở thành một công cụ quan trọng trong nhiều lĩnh vựckhác nhau, bao gồm thống kê, máy học, xử lý ảnh, xử lý tín hiệu, và nhiều lĩnh vực khác.
- Thuật ngữ "singular value" (giá trị đơn) xuất phát từ việc xem xét các giá trị riêng(eigenvalues) của một ma trận vuông Trong trường hợp SVD, các giá trị này thường đượcgọi là "singular values" để phân biệt chúng từ các giá trị riêng thông thường.
- Thuật ngữ "decomposition" (phân rã) ám chỉ quá trình phân rã một ma trận thành cácthành phần cơ bản SVD phân rã một ma trận thành tích của ba ma trận: một ma trận trựcgiao (orthogonal matrix), một ma trận đường chéo chứa các giá trị đơn (singular values), và
ma trận trực giao chuyển vị của nó
Tóm lại, Singular Value Decomposition (SVD) mô tả cách một ma trận có thể được
biểu diễn dưới dạng sự kết hợp của các thành phần cơ bản, giúp phân tích và biểu diễn dữliệu.
Ứng dụng của SVD:
Nén dữ liệu và giảm chiều dữ liệu: SVD có thể giúp giảm kích thước của dữ liệu màvẫn giữ lại thông tin quan trọng Điều này hữu ích trong việc lưu trữ và truyền tải dữliệu hiệu quả hơn
Phân tích tín hiệu và giảm nhiễu: SVD được sử dụng để phân tích tín hiệu và loại bỏnhiễu Điều này làm cho nó quan trọng trong nhiều ứng dụng như xử lý âm thanh,hình ảnh và video
Hệ thống đề xuất trong máy học: Trong máy học, SVD được sử dụng để xây dựngcác hệ thống đề xuất dựa trên sự tương đồng giữa người dùng và sản phẩm.
Phân tích trực quan hóa dữ liệu: SVD có thể giúp hiểu rõ cấu trúc của dữ liệu và pháthiện các mối quan hệ hoặc nhóm dữ liệu
Giải bài toán tuyến tính: SVD giúp giải quyết nhiều bài toán tuyến tính và là mộtcông cụ quan trọng trong đại số tuyến tính và ma trận
Xử lý hình ảnh và video: Trong lĩnh vực xử lý hình ảnh và video, SVD được sử dụng
để nén dữ liệu và phân tích cấu trúc của hình ảnh
Phân tích biến thể và tương quan trong dữ liệu: SVD có thể giúp xác định các biếnthể quan trọng và mối tương quan giữa các biến trong dữ liệu.
Nhìn chung, SVD là một công cụ mạnh mẽ và linh hoạt, chúng ta có thể sử dụng để hiểu
rõ cấu trúc của dữ liệu và thực hiện nhiều nhiệm vụ quan trọng trong xử lý và phân tích dữliệu.
Trang 9Điều này tương ứng với A T A(A T X 0 ) = 𝜆0 (A T X 0 ).
Vì 𝜆0 ≠ 0 nên A T X 0 ≠ 0 Suy ra 𝜆0 là trị riêng của A T A Ma trận AA T và ma trận A T A là hai ma
trận đối xứng, nên chúng chéo hóa trực giao được
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 σ1≥σ2≥…≥σr≥0=….=0 và r là rank của ma trận A Lưu ý rằng mặc dù Σ không phải là ma trận vuông thì đường chéo của nó vẫn được tính như là a11, a22, a33,a44,… ann với các phần tử khác đường chéo bằng 0.
Số lượng các phần tử khác 0 trong Σ chính là rank của ma trận A.
Chú ý rằng cách biểu diễn (5)(5) không là duy nhất vì ta chỉ cần đổi dấu của cả U và V
thì (5) vẫn thoả mãn Tuy vậy, người ta vẫn thường dùng ‘the SVD’ thay vì ‘a SVD’
SVD trong hình học :
(1) ta nhân thêm 2 vế cho ta có :
(2)
Nhận ra rằng là một ma trận đường chéo với các phần tử bằng bình phương
của các phần tử ở trong ma trận Σ (1^2,σ2^2,…) vậy (2) là một phân tích riêng (Eigen
Decompositon) của thêm nữa là chính là các giá trị riêng của
Từ đó ta rút ra được kết luận là ma trận luôn là một ma trận nửa xác định dương vì các giá trị là bình phương (số thực không âm ) vậy nên được gọi là singular
values của A Cái tên singular value descomposition được xuất phát từ đây.
Dựa vào (2) ta thấy mỗi cột của U là chính là giá trị véc tơ riêng của Ta gọi
mỗi cột này là left-singular vectors của A Tương tự thế và các cột
của V chính là right-singular values của A
2.3.SVD rút gọn
Dựa vào (1) ta viết chúng dưới dạng tổng của các ma trận rank 1 :
Với 0 i r là một ma trận chỉ có rank bằng 1
Rõ ràng trong cách biểu diễn này, ma trận 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 của ma trận Σ Vì vậy ta có một cách phân tích gọn hơn
và gọi là compact SVD:
Trang 11Với Ur,Vr lần lượt ma trận được tạo bởi r cột đầu tiên của U và V Σr là ma trận con được tạo bởi r hàng đầu tiên và r cột đầu tiên của Σ Nếu ma trận A có rank nhỏ hơn rất nhiều so với số hàng và số cột r<<m,n, ta sẽ được lợi nhiều về việc lưu trữ.
Trang 12(11)Chúng ta cần chứng minh phần này kĩ vì vấn đề này sẽ là thuật toán chính để dẫn ta tới bài toán SVD trong recommendations systems
Như ta đã tìm được ở (11) ta có thể thấy rằng sai số xấp xỉ càng nhỏ nếu singular value bị truncated càng nhỏ so với phần singular values bị trucated có giá trị càng nhỏ so với singular values được giữ lại Đây là một định lý quan trong giúp xác định việc xấp xỉ
ma trận dựa trên thông tin muốn giữ lại
Ví dụ ta muốn giữ lại 90% thông tin của A thì ta chỉ cần chọn k min sau đó áp dụng biểu thức (11) >= 0.9
Khi k càng nhỏ thì rank cảu ma trận càng nhỏ, trucated SVD còn được gọi là
phương pháp Low-rank approximation
2.5 Phân tích ma trận SVD
Phân tích ma trận SVD là một kỹ thuật toán học, cho phép phân rã một ma trận bất kỳthành tích của ba ma trận đặc biệt, có những tính chất và ứng dụng quan trọng Phân tích ma
Trang 13trận SVD có thể được sử dụng để giảm kích thước, nén, khử nhiễu, phân cụm, gợi ý, v.v.cho các dữ liệu dạng ma trận.
Cụ thể hơn, SVD là một cách phân tích một ma trận thành tích của ba ma trận: U, Σ, và V^T.
Công thức phân rã SVD: A=U.Σ.V^T
Ma trận U: Là một ma trận cột-đơn vị, tức là U^T * U = I (ma trận đơn vị), và có chiều dài
bằng số hàng của ma trận ban đầu
Ma trận Σ (Sigma): Là một ma trận đường chéo có các giá trị không âm được gọi là giá trị
đơn Các giá trị trên đường chéo giảm dần từ trái sang phải và từ trên xuống dưới Nếu ma
trận ban đầu là m x n, thì Σ sẽ có kích thước m x n, và chỉ có các giá trị trên đường chéo.
Ma trận V^T : Là ma trận chuyển vị của một ma trận cột-đơn vị, có chiều rộng bằng số cột
của ma trận ban đầu
Hình minh họa biến đổi hình học của phép phân tích suy biến.
Để phân tích ma trận SVD, bạn có thể thực hiện các bước sau:
Bước 1: Chuẩn bị ma trận cần phân tích Ma trận này có thể là ma trận vuông
hoặc không vuông, có kích thước m x n bất kỳ.
Bước 2: Tính ma trận A T A và tìm các giá trị riêng và vector riêng của nó Các giá trị riêng là các bình phương của các số suy biến (singular value) của A, và các vector riêng tạo thành các cột của ma trận V.
Trang 14 Bước 3: Tính ma trận AA T và tìm các giá trị riêng và vector riêng của nó Các
giá trị riêng là các bình phương của các số suy biến của A, và các vector riêng tạo thành các cột của ma trận U.
Bước 4: Tính căn bậc hai của các giá trị riêng của A T A hay AA T, và đặt chúng
trên đường chéo của ma trận Σ Các phần tử còn lại của Σ bằng 0.
Bước 5: Kiểm tra kết quả bằng cách nhân ba ma trận U, Σ và V T lại với nhau,
và so sánh với ma trận ban đầu A Nếu hai ma trận bằng nhau, ta đã tìm được phân tích SVD của A.
Trang 15CHƯƠ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 ý trong học máy:
Ví dụ về các hiện tượng thường gặp:
Youtube/ TikTok/ Facebook tự động chuyển các video liên quan đến video bạnđang xem hoặc tự gợi ý những video mà có thể bạn sẽ thích
Gợi ý mua hàng trên các nền tảng như Shopee, Lazada, Tiki, TikTok, dựa trên kếtquả tìm kiếm trước đó của bạn
Gợi ý kết bạn trên Facebook, Zalo, Instagram,…
Netfix tự động gợi ý phim cho người dùng
Và còn rất nhiều những hiện tượng khác mà hệ thống có khả năng gợi ý cho ngườidùng những sản phẩm có thể họ sẽ thích Bằng cách quảng cáo hướng đúng về đối tượng, từ
đó hiệu quả về mảng marketing được tăng lên một cách rõ rệt Đằng sau đó là sự góp sứccủa những thuật toán – thuật toán Machine Learning, chúng có tên gọi chung làRecommender Systems hoặc Recommendation Systems, tức là Hệ thống gợi ý
Hệ thống gợi ý (Recommender Systems – RS) đã và đang được ứng dụng trongnhiề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íchhợ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ảiquyế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, dowload của hệ thống Đồngthờ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 kiếm một cách dễ dàng hơn Hệ thống gợi ý giúp cho người dùng chọn lựađược thông tin phù hợp nhất 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 1 đến 5, like hoặcdislike,…) mà người dùng đã bình chọn trên sản phẩm – trong trường hợp này được gọi là
dự đoán xếp hạng (rating prediction) Ngược lại, điều đó được gọi là tiềm ẩn (implicitfeedback) như số lần click chuột, số lần chọn mua sản phẩm, thời gian người dùng đã duyệt/