1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề Tài 05 Phân Tích Svd (Singular Value Decomposition) Trong Hệ Thống Gợi Ý.pdf

23 82 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân Tích SVD (Singular Value Decomposition) Trong Hệ Thống Gợi Ý
Tác giả Nguyễn Văn Đạt, Võ Hồng Đình, Nguyễn Thành Đô, Lê Trường Đức, Quyền Đình Đức, Trần Phú Đức, Vũ Minh Đức
Người hướng dẫn GVHD: Nguyễn Hữu Hiệp
Trường học Đại Học Quốc Gia TP Hồ Chí Minh
Chuyên ngành Đại Số Tuyến Tính
Thể loại báo cáo bài tập lớn
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 23
Dung lượng 1,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD1.1 Giới thiệu chung về SVD: - Phương pháp phân tích suy biến, viết tắt là SVD, là một phương pháp thuộc nhóm của hệ số ma trận được phát triển lần đầu t

Trang 1

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

ĐỀ TÀI 05 PHÂN TÍCH SVD (SINGULAR VALUE DECOMPOSITION) TRONG HỆ THỐNG GỢI Ý

LỚP: L12, NHÓM 5 GVHD: Nguyễn Hữu Hiệp

Thành phố Hồ Chí Minh,Tháng 12, Năm 2023

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

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

- - 

MÔN: ĐẠI SỐ TUYẾN TÍNHGVHD: Nguyễn Hữu Hiệp Lớp: L12 Nhóm: 05

Thành phố Hồ Chí Minh,Tháng 12, Năm 2023

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD

1.1 Giới thiệu chung về SVD: 5

1.2 Phân tích ma trận SVD 5

1.2.1 Cơ sở lý thuyết:

1.2.2 Phát biểu SVD:

CHƯƠNG 2: ỨNG DỤNG PHÂN TÍCH SVD TRONG HỆ THỐNG GỢI Ý

2.1 Giới thiệu về hệ thống gợi ý (Recommendation System): 10

2.2 Collaborative Filtering: 11

2.2.1 User-user collaborative filtering

2.2.2 Item-item Collaborative Filtering

2.3 Content Filtering 14

2.4 Phân biệt Collaborative Fltering (Lọc cộng tác) và Content Filtering (Lọc nội dung) 14

CHƯƠNG 3 CHƯƠNG TRÌNH PHÂN TÍCH SDV ( MATLAB)

3.1 Dữ liệu đầu vào 16

3.2 Chương trình code Matlab 16

3.3 Giải thích 18

3.3.1 Đọc dữ liệu từ file Excel

3.3.2 Chia dữ liệu thành các cột tương ứng

3.3.3 Tìm các giá trị duy nhất của khách hàng và sản phẩm

3.3.4 Xác định số lượng khách hàng và sản phẩm duy nhất

3.3.5 Tạo ma trận sở thích (preferenceMatrix)

3.3.6 Thực hiện SVD (Singular Value Decomposition)

3.3.7 Xác định khách hàng cụ thể và gợi ý thể loại phim

3.4 Kết quả 19

CHƯƠNG 4 KẾT LUẬN

NGUỒN TÀI LIỆU THAM KHẢO:

Trang 4

LỜI NÓI ĐẦU

Đại số tuyến tính nói chung có rất nhiều ứng dụng trong hầu hết các lĩnh vực trongkhoa 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ầnnhỏ trong số đó phải nhắc đến là phương pháp phân tích SVD trong nhiều bài toánkhác nhau Phương pháp phân tích suy biến (singular value decomposition) được viếttắt là SVD là một trong những phương pháp thuộc nhóm matrix factorization đượcphát triển lần đầu bởi những nhà hình học vi phân Phương pháp SVD đã được pháttriển dựa trên những tính chất của ma trận trực giao và ma trận đường chéo để tìm ramột ma trận xấp xi với ma trận gốc Phương pháp này sau đó đã được ứng dụng rộngrãi trong các lĩnh vực như hình học vi phân, hồi y tuyến tính, xử lý hình ảnh,clustering, các thuật toán nén và giảm chiều dữ liệu, khử nhiễu âm thanh

Nhóm chúng em chân thành cảm ơn thầy Nguyễn Hữu Hiệp, giảng viên phụ tráchgiảng dạy bộ môn Đại số tuyến tính, đã tạo điều kiện để nhóm thực hiện đề tài này.Nhờ những kiến thức và kinh nghiệm bổ ích, quý báu được thầy hướng dẫn và truyềnđạt, nhóm có thể triển khai làm việc dễ dàng hơn, sâu rộng hơn Song do đây là lần đầuthực hiện một bài tập lớn và chưa có nhiều kinh nghiệm nên có thể nhóm khó tránhnhững thiếu sót, rất mong cô có thể xem xét và góp ý để ở những đề tài sau nhóm cóthể hoàn thiện hơn

Trang 5

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD

1.1 Giới thiệu chung về SVD:

- Phương pháp phân tích suy biến, viết tắt là SVD, là một phương pháp thuộc

nhóm của hệ số ma trận được phát triển lần đầu tiên bởi các nhà hình học viphân

- Ban đầu mục đích của phương pháp này là tìm một phép quay trong không giansao cho tích của các vectơ không thay đổi

- Từ mối quan hệ này nảy sinh khái niệm ma trận để tạo ra các phép quay đặcbiệt

- Phương pháp SVD được phát triển dựa trên tính chất của ma trận trực giao và

ma trận chéo để tìm ra ma trận gần đúng với ma trận ban đầu

1.2 Phân tích ma trận SVD

1.2.1 Cơ sở lý thuyết:

a) Trị riêng, vecto riêng:

Định nghĩa 1 (giá trị riêng và véctơ riêng của ánh xạ tuyến tính)

Giả sử V là không gian thực Véctơ riêng là véctơ có ảnh cùng phương với véctơ ban đầu

Trang 6

(Hình minh hoạ)

Định nghĩa 2 (giá trị riêng và véctơ riêng của ma trận vuông)

Tập hợp tất cả các giá trị riêng của ma trận được gọi là phổ của ma trận và được A A

ký hiệu bởi δ ( A)

b) Hệ trực giao, hệ trực chuẩn

Định nghĩa họ trực giao:

Số λ được gọi là trị riêng của A nếu tồn tại vecto X khác ko sao cho AX=λX

Khi đó, véctơ được gọi là véctơ riêng của ma trận vuông tương ứng với trị riêng X A λ

Tập hợp con M của không gian Euclide V được gọi

là họ trực giao, nếu:

∀ x , y ∈ M(x ≠ y)thì x ⊥ y

Trang 7

Với r là rank(A); p=min{m, n}

SVD của một ma trận bất kì luôn luôn tồn tại là không là duy nhất, Cụ thể khi ta thay đổi dấu của cả U và V thì (*) vẫn thoả mãn

Để tìm các ma trận Σ, U, V ta thực hiện các bước như sau:

Trước tiên ta viết lại phương trình (*):

Bước 1: Để tìm ma trận V, ta nhân cả 2 vế phương trình với A T

Trang 8

Các vecto riêng của A T A chính là các cột của V

Bước 2: Để tìm ma trận U, ta làm như sau:

Ta có A =U Σ V T

Mà V là V T là 2 ma trận nghịch đảo của nhau

Như vậy, ta có thể viết lại thành:

VD) Khai triển SVD của ma trận sau: A= (1 1 0

√2

0 )

AV=UΣ

Trang 11

CHƯƠNG 2: ỨNG DỤNG PHÂN TÍCH SVD TRONG HỆ THỐNG

GỢI Ý

2.1 Giới thiệu về hệ thống gợi ý (Recommendation System):

-Hiện nay, những hiện tượng sau đã trở nên phổ biến:

- Khi bạn mua một mặt hàng trên website thương mại điện tử (ví dụ: Tiki,Shopee, Lazada ), hệ thống sẽ gợi ý vào lần tiếp theo bạn ghé thăm mặt hàng

đó hoặc tìm hiểu về mặt hàng bạn yêu thích dựa trên lịch sử của bạn

- YouTube tự động chuyển các clip liên quan đến video bạn đang xem YouTubecũng đề xuất các clip mà bạn có thể thích

- Facebook gợi ý kết bạn, hiển thị quảng cáo các sản phẩm liên quan đến từ khóabạn tìm kiếm

- -Netflix tự động đề xuất phim cho người dùng

-Hệ thống gợi ý (Recommender Systems) là một loại hệ thống giúp người dùng giảiquyết vấn đề quá tải thông tin, hỗ trợ ra quyết định và cung cấp giải pháp được cá nhânhóa mà không phải trải qua các tìm kiếm phức tạp

-Hệ thống gợi ý bao gồm các công nghệ và công cụ phần mềm cung cấp các khuyếnnghị cho người dùng nhằm đáp ứng nhu cầu của họ về một sản phẩm hoặc dịch vụnhất định trên Internet Đưa ra những khuyến nghị giúp người dùng đưa ra quyết định

về sản phẩm, dịch vụ phù hợp với nhu cầu và thị hiếu của mình

-Hệ thống đề xuất thường kết hợp công nghệ và thuật toán đề xuất dựa trên thiết kế vàgiao diện đồ họa của người dùng để tạo ra các đề xuất cho các mục tin tức hoặc sảnphẩm (mục) cụ thể, tùy chỉnh các đề xuất và đưa ra các đề xuất hữu ích và hiệu quảcho sản phẩm

-Có hai thực thể chính trong Recommendation Systems là Users và Items Users làngười dùng, Items là sản phẩm, ví dụ như các bộ phim, bài hát, cuốn sách, clip, hoặccũng có thể là các users khác trong bài toán gợi ý kết bạn Mục đích chính của cácRecommender Systems là dự đoán mức độ quan tâm của một user tới một item nào

đó, qua đó có chiến lược recommend phù hợp Các Recommendation Systems

Trang 12

thường được chia thành hai nhóm lớn: Collaborative Filtering (Lọc cộng tác), ContentFiltering (lọc nội dung).

2.2 Collaborative Filtering:

Có 2 hướng tiếp cận Collaborative Filtering:

- Xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâmcủa users gần giống nhau (similar users) tới item đó còn được gọi là User-usercollaborative filtering

- Hai là thay vì xác định user similarities, hệ thống sẽ xác định item similarities

Từ đó, hệ thống gợi ý những items gần giống với những items mà user có mức

độ quan tâm cao gọi là item-item collaborative filtering User-user collaborativefiltering

2.2.1 User-user collaborative filtering

Công việc quan trọng nhất phải làm trước tiên trong User-user là phải xác địnhđược sự giống nhau (similarity) giữa hai users Dữ liệu ta có là Utility matrix

Y, vậy nên sự giống nhau này phải được xác định dựa trên các cột tươngứng với hai users trong ma trận này Xét ví dụ trong hình sau:

- Giả sử có các users từ u đến u và các item từ i đến i trong đó các số trong0 6 0 4

mỗi ô vuông thể hiện số sao mà mỗi user đã rated cho item với giá trị cao hơnthể hiện mức độ quan tâm cao hơn Các dấu hỏi chấm là các giá trị mà hệthống cần phải đi tìm Đặt mức độ giống nhau của hai users u , u là sim (u , u )i j i j

- Quan sát đầu tiên chúng ta có thể nhận thấy là các u , u thích i , i , i và không0 1 0 1 2

thích i , i cho lắm Điều ngược lại xảy ra ở các users còn lại Vì vậy, một

Trang 13

similiarity function tốt cần đảm bảo:

sim(u0, u ) > sim(u , u ), i > 11 0 i ∀

- Từ đó, để xác định mức độ quan tâm của u lên i chúng ta nên dựa trên rated0 2

của u lên sản phẩm này Vì u đã thích i nên hệ thống cần gợi ý i cho u1 1 2 2 0.

- -Sau đó sử dụng giá trị trung bình cộng ratings của mỗi user bằng cách trừratings của mỗi user cho giá trị trung bình ratings tương ứng của user đó vàthay dấu ‘?’ bằng giá trị 0

Mục đích của cách xử lý này là:

- Phân loại ratings thành 2 loại: giá trị âm (user không thích item) và dương(user thích item) Các giá trị bằng 0 là những item chưa được đánh giá giúpviệc lưu trữ tối ưu hơn

- Sau khi chuẩn hóa ma trận Utility, ta tính toán độ tương đồng giữa các users.Chúng ta sử dụng hàm cosine similarity

- Kết quả sau khi tính toán độ tương đồng (độ tương đồng là số trong khoảng -1đến 1, càng gần 1 thì càng tương đồng, càng gần -1 thì càng đối lập)

Trang 14

- Công thức phổ biến được sử dụng để dự đoán rating của u cho i là:

Trong đó, N(u, i) là tập k users gần nhất (có độ tương đồng cao nhất) với user u

2.2.2 Item-item Collaborative Filtering

Hướng tiếp cận này được sử dụng nhiều trong thực tế hơn Vì:

Số lượng items thường nhỏ hơn số lượng users, Similarity matrix trongtrường hợp này cũng nhỏ hơn nhiều, thuận lợi cho việc lưu trữ và tínhtoán ở các bước sau

- 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), nên trung bình, mỗi hàng của ma trận này sẽ cónhiều phần tử đã biết hơn số phần tử đã biết trong mỗi cột Việc này cũng dễhiểu vì mỗi item có thể được rated bởi nhiều users Kéo theo đó, giá trị trungbình của mỗi hàng ít bị thay đổi hơn khi có thêm một vài ratings Như vậy,

Trang 15

việc cập nhật ma trận Similarity Matrix có thể được thực hiện ít thường xuyênhơn.

- Về mặt tính toán, Item-item CF có thể nhận được từ User-user CF bằng cáchchuyển vị (transpose) ma trận utility, và coi như items đang rate users Sau khitính ra kết quả cuối cùng, ta lại chuyển vị một lần nữa để thu được kết quả

2.3 Content Filtering

Ý tưởng chính của phương pháp dựa trên nội dung là cố gắng xây dựng một môhình, dựa trên các “tính năng” có sẵn, giải thích các tương tác giữa ngườidùng và mục được quan sát Xem xét người dùng và phim, tạo mô hìnhtheo cách mà nó có thể cung cấp cho ta cái nhìn sâu sắc về lý do tại sao điều đólại xảy ra Mô hình như vậy giúp ta đưa ra các dự đoán mới cho người dùng khá

dễ dàng, chỉ bằng cách xem tiểu sử của người dùng này và dựa trên thông tincủa họ, để xác định các bộ phim có liên quan để đề xuất

2.4 Phân biệt Collaborative Fltering (Lọc cộng tác) và Content Filtering (Lọc nội dung).

Dưới đây là danh sách các điểm phân biệt Lọc cộng tác và Lọc dựa trên nộidung với nhau:

- Phương pháp dựa trên nội dung yêu cầu lượng thông tin về các tính năng củamặt hàng, thay vì sử dụng các tương tác và phản hồi của người dùng Chúng

có thể là các thuộc tính phim như thể loại, đạo diễn, diễn viên, v.v Mặt khác,

Trang 16

lọc cộng tác không cần bất kỳ thứ gì khác ngoại trừ tùy chọn lịch sử của ngườidùng đối với một tập hợp các mục để đề xuất từ đó và bởi vì nó dựa trên

dữ liệu lịch sử, giả định cốt lõi được đưa ra là những người dùng đãđồng ý trong quá khứ cũng sẽ có xu hướng đồng ý trong tương lai

- Kiến thức miền trong trường hợp lọc cộng tác là không cần thiết vì các phépnhúng được học tự động, nhưng trong trường hợp tiếp cận dựa trên nội dung,

vì biểu diễn tính năng của các mục được thiết kế thủ công ở một mức độ nào

đó, nên kỹ thuật này đòi hỏi rất nhiều kiến thức miền được cung cấp

- Mô hình lọc cộng tác có thể giúp người dùng khám phá sở thích mới và mặc

dù hệ thống ML có thể không biết sở thích của người dùng đối với một mặthàng nhất định, nhưng mô hình vẫn có thể đề xuất nó vì những người dùngtương tự cũng quan tâm đến mặt hàng đó Mặt khác, Mô hình dựa trên nộidung chỉ có thể đưa ra đề xuất dựa trên sở thích hiện có của người dùng

và do đó, mô hình này chỉ có khả năng mở rộng hạn chế dựa trên sở thíchhiện có của người dùng

- Mô hình lọc dựa trên nội dung không cần bất kỳ dữ liệu nào về những ngườidùng khác, vì các đề xuất dành riêng cho một người dùng cụ thể Điềunày giúp dễ dàng thu nhỏ quy mô giống nhau cho một số lượng lớn ngườidùng Điều tương tự không thể được nói hoặc thực hiện đối với phương pháplọc cộng tác

- Thuật toán cộng tác chỉ sử dụng hành vi của người dùng để đề xuất các mục,trong khi lọc dựa trên lội dung phải biết nội dung của cả người dùng và mục

Trang 17

CHƯƠNG 3 CHƯƠNG TRÌNH PHÂN TÍCH SDV ( MATLAB)

3.1 Dữ liệu đầu vào

File excel chứa thông tin khách hàng đã xem phim và để lại đánh giá sau khi xem

ID Khách hàng Loại phim Đánh giá Thời gian xem

Bảng 1: Bảng thông tin khách hàng đánh giá phim

3.2 Chương trình code Matlab

% Đọc dữ liệu từ file Excel

filename = 'data.xlsx';

opts = detectImportOptions(filename);

opts.VariableNamingRule = 'preserve';

data = readtable(filename, opts);

% Chia dữ liệu thành các cột tương ứng

customerIDs = data.('ID Khách hàng');

productNames = data.('Loại phim');

ratings = data.('Đánh giá');

timeWatched = data.('Thời gian xem');

uniqueCustomers = unique(customerIDs);

uniqueProducts = unique(productNames);

Trang 18

customerIdx = find(strcmp(uniqueCustomers, customerIDs{i}));

productIdx = find(strcmp(uniqueProducts, productNames{i}));

if ~isempty(customerIdx) && ~isempty(productIdx)

preferenceMatrix(customerIdx, productIdx) = ratings(i);

Trang 19

similarity = productFeatures * userPreference' / (sqrt(sum(productFeatures.^2, 2)) *norm(userPreference));

[~, sortedIndices] = sort(similarity, 'descend');

disp('Các thể loại phim bạn có thể quan tâm:');

3.3.1 Đọc dữ liệu từ file Excel

- filename = 'data.xlsx';: Lưu tên file Excel chứa dữ liệu là 'data.xlsx'

- opts = detect ImportOptions (filename);: Phát hiện các tùy chọn nhập dữ liệu từ file

- Opts Variable NamingRule = 'preserve';: Thiết lập quy tắc giữ nguyên tên các biến

- data = readtable (filename, opts);: Đọc dữ liệu từ file Excel vào biến data dựa trên các tùy chọn đã được xác định trước đó

3.3.2 Chia dữ liệu thành các cột tương ứng

- customerIDs, productNames, ratings, timeWatched: Lấy dữ liệu

từ các cột tương ứng trong data

3.3.3 Tìm các giá trị duy nhất của khách hàng và sản phẩm

- uniqueCustomers, uniqueProducts: Lưu trữ các giá trị duy nhất của ID khách hàng và loại sản phẩm

Trang 20

3.3.4 Xác định số lượng khách hàng và sản phẩm duy nhất

- numCustomers, numProducts: Đếm số lượng khách hàng và sản phẩm duy nhất

- Xác định index của khách hàng cụ thể (customerID = 'KH001') trong danh sách khách hàng duy nhất

- Nếu không tìm thấy khách hàng này, thông báo rằng khách hàng không tồn tại trong dữ liệu

- Nếu tìm thấy, tính toán vector sở thích của khách hàng này (userPreference) và đo độ tương đồng giữa vector này và các sản phẩm

- Sắp xếp các sản phẩm theo độ tương đồng giảm dần và hiển thị các thể loại phim có thể quan tâm cho khách hàng cụ thể

3.4 Kết quả

Kết quả cho ra khi nhập các dữ liệu đầu vào như bảng 1 mục 3.1

Đối với khách hàng 1 (KH001) ta được đề xuất như sau:

- Phim hoạt hình

Ngày đăng: 13/12/2024, 23:58

HÌNH ẢNH LIÊN QUAN

Bảng 1: Bảng thông tin khách hàng đánh giá phim - Đề Tài 05 Phân Tích Svd (Singular Value Decomposition) Trong Hệ Thống Gợi Ý.pdf
Bảng 1 Bảng thông tin khách hàng đánh giá phim (Trang 17)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w