ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNH ĐỀ TÀI 09 “ỨNG DỤNG PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG HỌC MÁY” GVHD Bùi Thị Khuyên Lớp L20 Nhóm 04 TP HỒ.
ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNH ĐỀ TÀI 09 “ỨNG DỤNG PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG HỌC MÁY” GVHD: Bùi Thị Khun Lớp: L20 Nhóm: 04 TP HỒ CHÍ MINH, tháng 12 năm 2021 ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MƠN ĐẠI SỐ TUYẾN TÍNH ĐỀ TÀI 04 “ỨNG DỤNG PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG HỌC MÁY” GVHD: Bùi Thị Khuyên Lớp: L20 Nhóm số: 04 Danh sách thành viên: Họ tên MSSV Lê Đình Hiếu 2113347 Trịnh Dương Quốc Hiếu 2111196 Nguyễn Nhật Hoàng 2113408 Hồ Nguyễn Thanh Hùng 2111382 Trần Minh Hồ 2111264 TP HỒ CHÍ MINH, tháng 12 năm 2021 MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD 1.1 Giới thiệu chung SVD 1.2 Phân tích ma trận SVD 1.3 SVD rút gọn CHƯƠNG ỨNG DỤNG PHÂN TÍCH SVD TRONG HỆ THỐNG GỢI Ý 2.1 Giới thiệu hệ thống gợi ý 2.2 Ứng dụng phân tích SVD vào hệ thống gợi ý học máy 2.2.1 SVD hệ thống gợi ý CHƯƠNG CHƯƠNG TRÌNH PHÂN TÍCH SVD (MATLAB) 3.1 Sự thoả hiệp tập liệu 3.2 Viết chương trình Matlab ví dụ SVD hệ thống gợi ý CHƯƠNG KẾT LUẬN 11 TÀI LIỆU THAM KHẢO 12 PHỤ LỤC 13 LỜI NÓI ĐẦU Đại số tuyến tính nói chung có nhiều ứng dụng hầu hết lĩnh vực khoa học: kinh tế, mơi trường, cơng nghệ máy tính, xử lý tín hiệu, đồ họa,… Một phần nhỏ số phải nhắc đến phương pháp phân tích SVD nhiều tốn khác Phương pháp phân tích suy biến (singular value decomposition) viết tắt SVD phương pháp thuộc nhóm matrix factorization phát triển lần đầu nhà hình học vi phân Phương pháp SVD phát triển dựa tính chất ma trận trực giao ma trận đường chéo để tìm ma trận xấp xỉ với ma trận gốc Phương pháp sau ứng dụng rộng rãi lĩnh vực hình học vi phân, hồi y tuyến tính, xử lý hình ảnh, clustering, thuật tốn nén giảm chiều liệu, khử nhiễu âm thanh… Nhóm tác giả chân thành cảm ơn giảng viên phụ trách giảng dạy mơn Đại số tuyến tính Bùi Thị Khun tạo điều kiện để nhóm thực đề tài Nhờ kiến thức kinh nghiệm bổ ích,quý báu hướng dẫn truyền đạt, nhóm triển khai làm việc dễ dàng hơn, sâu rộng Song lần đầu thực tập lớn chưa có nhiều kinh nghiệm nên nhóm tác giả khó tránh thiếu sót, mong xem xét góp ý để đề tài sau nhóm hồn thiện CHƯƠNG CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD 1.1 Giới thiệu chung SVD - Phương pháp phân tích suy biến (singular value decomposition) viết tắt SVD phương pháp phát triển lần đầu nhà hình học vi phân Ban đầu mục đích phương pháp tìm phép xoay khơng gian cho tích vơ hướng vector không thay đổi Từ mối liên hệ khái niệm ma trận trực giao hình thành để tạo phép xoay đặc biệt - Phương pháp SVD phát triển dựa tính chất ma trận trực giao ma trận đường chéo để tìm ma trận xấp xỉ với ma trận gốc - Phương pháp sau ứng dụng đặc biệt hiệu tốn recommendation 1.2 Phân tích ma trận SVD Một ma trận Amxn phân tích thành dạng Amxn = UmxmΣmxn(Vnxn)T (1.2) Trong U, V ma trận trực giao, Σ ma trận đường chéo kích thước với A Ma trận U ma trận gồm vector riêng trái A, ma trận V ma trận gồm vector riêng phải A ma trận Σ ma trận đường chéo, phần tử đường chéo trị riêng A Các trị riêng xếp đường chéo theo thứ tự sau: σ1 ≥ σ2 ≥ … ≥ σr ≥ σr + =… = σp = Với r rank (hạng) ma trận A p = min{m,n} SVD ma trận ln tồn cách biểu diễn không Để thấy mối liên hệ mật thiết phép phân tích suy biến phân tích riêng sau khai triển tích Để tìm ma trận Σ, U, V ta thực bước sau: Bước 1: Tìm ma trận V Nhân AT vào hai vế (1.2) ATA = (UΣVT)TUΣVT = V.ΣT.UT.U.Σ.VT = VΣTΣVT =V.Σ2.VT Dấu gần cuối xảy UTU = I U ma trận trực giao Như vậy, để tìm ma trận S V, ta cần tìm trị riêng vector riêng AT A ta thấy trị riêng AT A bình phương phần tử Σ vector riêng AT A cột V Bước 2: Tìm ma trận U Nhân hai vế (2.1) với AT sử dụng VTV = AAT = U.Σ2.UT Vậy cột U vector riêng ATA Cuối cùng, ta phân tích ma trận A dạng sau: A Σ ma trận kích thước mxn, U ma trận mxm V ma trận nxn Các phần tử σi đường chéo Σ gọi giá trị suy biến (singular values) ma trận A Các cột ma trận V hệ vector riêng ứng với trị riêng ΣTΣ gọi hệ vector suy biến trái (left - singular vectors) Các cột U gọi hệ vector suy biến phải (right - singular vectors) => Ma trận ATA ma trận nửa xác định dương nên trị riêng khơng âm Các σi bậc hai trị riêng ATA gọi singular values A Cái tên Singular Value Decomposition (SVD) xuất phát từ 1.3 SVD rút gọn - Khi nói đến kỹ thuật phân tích nhân tử ma trận, SVD rút gọn phương pháp phổ biến để tạo đặc trưng bao gồm ma trận M thành ba ma trận U, Σ V Không giống SVD thông thường, SVD rút gọn tạo thừa số hóa số lượng cột định bị cắt bớt - Chú ý ma trận Σ, giá trị đường chéo không âm giảm dần σ1≥ σ2≥ …,≥ σr≥ = =…= Thông thường, lượng nhỏ σi mang giá trị lớn, giá trị lại thường nhỏ gần Khi ta xấp xỉ ma trận A tổng k < r ma trận có hạng 1: A ≈ Ak = UkΣk(Vk)T = σ1u1vT1 + σ2u2v2T+ ⋯+σkukvkT Nếu ma trận 𝐴 có rank nhỏ nhiều so với số hàng số cột 𝑟 ≪ 𝑚, 𝑛 , ta lợi nhiều việc lưu trữ Dưới ví dụ minh hoạ với 𝑚 = 4, 𝑛 = 6, 𝑟 = CHƯƠNG ỨNG DỤNG PHÂN TÍCH SVD TRONG HỆ GỢI Ý 2.1 Giới thiệu hệ thống gợi ý (recommendation system) Những tượng trở nên phổ biến: - Khi bạn mua hàng trang thương mại điện tử như: tiki, shopee, lazada, Hệ thống gợi ý bạn truy cập vào lần biết bạn thích hàng dựa vào lịch sử mua hàng - Youtube tự động chuyển clip liên quan đến clip bạn xem Youtube tự gợi ý clip mà bạn thích - Facebook hiển thị quảng cáo sản phẩm có liên quan đến từ khố bạn tìm kiếm - Facebook gợi ý kết bạn - Netflix tự động gợi ý phim cho người dùng • Hệ thống gợi ý (Recommender systems Recommendation systems) dạng hệ giúp người dùng giải vấn đề tải thông tin, hỗ trợ định, cung cấp giải pháp mang tính cá nhân hóa mà khơng phải trải qua q trình tìm kiếm phức tạp • Hệ thống gợi ý bao gồm kỹ thuật công cụ phần mềm nhằm đưa gợi ý cho người dung, đáp ứng nhu cầu họ sản phẩm, dịch vụ Internet Những gợi ý cung cấp nhằm hỗ trợ người dùng đưa định lựa chọn sản phẩm, dịch vụ phù hợp với nhu cầu thị hiếu • Hệ thống gợi ý thông thường tập trung vào mục tin hay sản phẩm (item) cụ thể theo thiết kế giao diện đồ hoạ người dùng kết hợp với kỹ thuật, thuật toán gợi ý nhằm sinh gợi ý tuỳ chỉnh, cung cấp gợi ý có ích hiệu cho sản phẩm 2.2 Ứng dụng phân tích SVD vào hệ thống gợi ý học máy • Trong thuật tốn recommendation phương pháp SVD tỏ hiệu so với phương pháp matrix factorization sử dụng gradient descent Ý tưởng áp dụng vào recommendation system tương tự nén ảnh vào cặp (user, item) rating ma trận tiện ích ta tìm ma trận xấp xỉ tốt với ma trận tiện ích Sử dụng ma trận xấp xỉ để dự báo cho cặp (user, item) chưa rating • SVD phương pháp phân tích ma trận, áp dụng vào tốn xây dựng hệ gợi ý Ý tưởng ta xấp xỉ Utility Matrix chuẩn hóa Giá trị ma trận xấp xỉ có rank nhỏ giá trị dự đoán - Tồn nhiều hệ thống có khả tự động gợi ý cho người dùng sản phẩm họ thích Những thuật tốn đằng sau ứng dụng thuật toán Machine Learning có tên gọi chung Recommender Systems Recommendation Systems, tức Hệ thống gợi ý - Có hai thực thể Recommendation Systems users items Users người dùng Items sản phẩm ví dụ sách, báo, truyện, video, phim ảnh… Mục đích Recommendation Systems dự đoán mức độ quan tâm user tới item đó, qua có chiến lược recommend phù hợp 2.2.1 SVD hệ thống gợi ý - SVD xây dựng ma trận với hàng item cột user phần tử đưa xếp hạng người dùng SVD phân tích ma trận thành ba ma trận khác trích xuất yếu tố từ việc phân tích nhân tử ma trận cấp cao (user-item-rating) A = U.Σ.(V)T Ma trận U: ma trận suy biến (item x biến tiềm ẩn) Ma trận Σ: ma trận đường chéo (thể sức mạnh biến tiềm ẩn) Ma trận VT: ma trận suy biến (user x biến tiềm ẩn) Từ việc phân tích nhân tử ma trận, biến tiềm ẩn cho thấy đặc điểm item Cuối cùng, ma trận utility A tạo với hình dạng m x n Đầu cuối ma trận A giảm số chiều ma trận thơng qua việc trích xuất biến tiềm ẩn Ma trận A cho thấy mối liên hệ user item cách ánh xạ user item vào không gian tiềm ẩn r chiều Qua hình trên, ma trận A có giá trị bị thiếu Do đó, thuật tốn SVD xây dựng hệ thống gợi ý cách cho phép "lấp đầy khoảng trống" ma trận xếp hạng R, dự đoán xếp hạng mà user định cho item tập liệu CHƯƠNG CHƯƠNG TRÌNH PHÂN TÍCH SVD (MATLAB) Sự thỏa hiệp tập liệu - Mục tiêu hệ thống gợi ý lọc cộng tác dựa user - item, để dự đoán xếp hạng đưa đề xuất người dùng chưa thực xếp hạng - Nhưng SVD dự đốn có giá trị trống ma trận người dùng phải xuất hệ thống đánh giá biết đưa xếp hạng - Để tạo tập liệu, thỏa hiệp rằng: user chưa đưa xếp hạng cho item, điền (sẽ có xung đột số nằm xếp hạng) Viết chương trình Matlab ví dụ ứng dụng SVD hệ thống gợi ý học máy (Machine Learning) THIẾT LẬP MỘT TẬP DỮ LIỆU XẾP HẠNG ĐÁNH GIÁ VỚI HÀNG LÀ CÁC ITEMS, CỘT LÀ CÁC USERS: A = [5 5;5 4; 3; 0 3; 4 5; 5 5]; SỬ DỤNG SVD ĐỂ GIẢM CHIỀU DỮ LIỆU: A = A'; [U S V] = svd(A); U = U(:,1:4); S = S(1:4,1:4); V = V(:,1:4); reA = U*S*V'; TẠO VECTOR XẾP HẠNG CỦA MỘT NGƯỜI DÙNG MỚI: %Tao nguoi dung moi bob = [5 0 5]; uservector = bob*V*S; ĐƯA RA DỰ ĐOÁN CHO MỨC ĐỘ YÊU THÍCH CỦA NGƯỜI DÙNG MỚI CHO NHỮNG SẢN PHẨM CHƯA ĐƯỢC ĐÁNH GIÁ (0) for i = 1:1:size(A,1) temp = U(i,:); similarity = temp*uservector'/(sqrt(temp*temp')*sqrt(uservector*uservector')); userlist(i) = similarity; end rank = sort(userlist); l = size(rank,2); t = zeros(1,size(A,2)); for i=l:-1:l-1 indx = find(rank(i)==userlist); sim = rank(i); t = t + A(indx,:)*sim; end index = find(bob==0); rank = t(index); rank Kết đưa dự đoán xếp hạng Bob cho mục chưa đánh giá (giá trị 0): 10 Chương 4: Kết luận Ngoài ứng dụng trên, SVD cịn có ứng dụng khác hồi quy tuyến tính, tối ưu cực trị rời rạc, lát cắt cực đại, xử lí hình ảnh,… thích hợp cho lượng liệu lớn Qua tập lớn nhóm tiếp thu kiến thức như: - Biết thao tác thuật toán đơn giản Matlab - Giúp hiểu thêm mơ hình liệu, cách sử dụng tính tốn SVD tay hàm viết sẵn, tìm hiểu đề tài với nhiều ứng dụng thú vị - Nâng cao hứng thú môn học - Trau dồi kĩ học tập làm việc nhóm 11 TÀI LIỆU THAM KHẢO [1] GIÁO TRÌNH ĐẠI SỐ TUYẾN TÍNH – TS Đặng Văn Vinh - NXB ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH [2] https://machinelearningmastery.com/using-singular-value-decomposition-to-builda-recommender-system/ [3] SVD (MATLAB Functions) (n.d.) Retrieved December 8, 2021, from http://www.ece.northwestern.edu/local-apps/matlabhelp/techdoc/ref/svd.html [4] https://viblo.asia/p/cong-nghe-matrix-factorization-cho-he-thong-goi-ynaQZRJe0Zvx [5] https://analyticsindiamag.com/singular-value-decomposition-svd-applicationrecommender-system/ 12 PHỤ LỤC Đoạn code ví dụ hồn chỉnh: A = [5 5;5 4; 3; 0 3; 4 5; 5 5]; A = A'; [U S V] = svd(A); U = U(:,1:4); S = S(1:4,1:4); V = V(:,1:4); reA = U*S*V'; %give one new user bob = [5 0 5]; uservector = bob*V*S; for i = 1:1:size(A,1) temp = U(i,:); similarity = temp*uservector'/(sqrt(temp*temp')*sqrt(uservector*uservector')); userlist(i) = similarity; end rank = sort(userlist); l = size(rank,2); t = zeros(1,size(A,2)); for i=l:-1:l-1 indx = find(rank(i)==userlist); sim = rank(i); t = t + A(indx,:)*sim; end index = find(bob==0); rank = t(index); rank 13 ... GỢI Ý 2.1 Giới thiệu hệ thống gợi ý 2.2 Ứng dụng phân tích SVD vào hệ thống gợi ý học máy 2.2.1 SVD hệ thống gợi ý CHƯƠNG CHƯƠNG TRÌNH PHÂN TÍCH SVD (MATLAB) 3.1 Sự... cấp gợi ý có ích hiệu cho sản phẩm 2.2 Ứng dụng phân tích SVD vào hệ thống gợi ý học máy • Trong thuật tốn recommendation phương pháp SVD tỏ hiệu so với phương pháp matrix factorization sử dụng. ..ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNH ĐỀ TÀI 04 ? ?ỨNG DỤNG PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG HỌC MÁY” GVHD: Bùi Thị