Hệ thống đề xuất được sử dụng rộng rãi trong ngành công nghiệp và phổ biến trong cuộc sống hàng ngày của chúng ta. Các hệ thống này được sử dụng trong một số lĩnh vực như trang web mua sắm trực tuyến (ví dụ: Amazon.com, Shopee, Tiki, …), trang web dịch vụ âm nhạc phim (ví dụ: Netflix và Spotify), cửa hàng ứng dụng di động (ví dụ: cửa hàng ứng dụng IOS và google play), trực tuyến quảng cáo. Mục tiêu chính của hệ thống đề xuất là giúp người dùng khám phá các mục có liên quan như thời trang để mua, tin nhắn văn bản để đọc hoặc sản phẩm cần mua, để tạo ra trải nghiệm người dùng thú vị. Hơn nữa, hệ thống đề xuất là một trong những hệ thống máy học mạnh mẽ nhất mà các nhà bán lẻ trực tuyến triển khai để tăng doanh thu. Hệ thống đề xuất là sự thay thế của các công cụ tìm kiếm bằng cách giảm nỗ lực tìm kiếm chủ động và gây ngạc nhiên cho người dùng với các đề nghị mà họ chưa bao giờ tìm kiếm. Nhiều công ty đã cố gắng đặt mình trước các đối thủ cạnh tranh với sự trợ giúp của các hệ thống đề xuất hiệu quả hơn. Do đó, hệ thống đề xuất không chỉ là trung tâm trong cuộc sống hàng ngày của chúng ta mà còn rất cần thiết trong một số ngành công nghiệp. Hệ đề xuất (Recommender System) được xem như một hệ thống lọc tích cực, có chức năng hỗ trợ đưa ra quyết định, nhằm mục dích cung cấp cho người sử dụng những gợi ý về thông tin, sản phẩm và dịch vụ phù hợp nhất với yêu cầu và sở thích riêng của từng người tại từng tình huống (ngữ cảnh). Cụ thể, hệ đề xuất cung cấp một giải pháp giảm tải thông tin bằng cách đưa ra dự đoán đánh giá mức độ sở thích của người dùng với sản phẩm mới và cung cấp một danh sách ngắn các sản phẩm (trang web, shop thời trang, bản tin, phim, video…) mà nhiều khả năng người dùng sẽ quan tâm 1. Trên thực tế, hệ đề xuất không chỉ hướng đến vấn đề giảm tải thông tin cho mỗi người dùng mà nó còn là yếu tố quyết định đến thành công của các hệ thống thương mại điện tử. Hệ đề xuất dang ngày càng trở thành một lĩnh vực nghiên cứu quan trọng từ sau khi xuất hiện bài báo đầu tiên về lọc cộng tác vào giữa những năm 90 1. Ðã có rất nhiều công việc được thực hiện cả trong ngành công nghiệp và nghiên cứu hàn lâm để phát triển các hệ đề xuất trong hơn thập kỷ qua. Về cơ bản hệ đề xuất được chia thành hai hướng tiếp cận chính 2 tùy thuộc vào cách khai thác các thông tin đầu vào khác nhau phục vụ cho mục đích đề xuất, đó là: 1) Hệ đề xuất với cách tiếp cận truyền thống; 2) Hệ đề xuất mở rộng cách tiếp cận truyền thống. Trong đó, cách tiếp cận truyền thống sử dụng một trong ba phương pháp lọc tin chính (Lọc cộng tác, lọc theo nội dung và lọc kết hợp) lên ba loại thông tin đầu vào phổ biến (Thông tin người đùng, thông tin sản phẩm và phản hồi của người dùng về sản phẩm). Cách tiếp cận mở rộng đề cập ở đây được biết đến với một số hướng như: Hệ đề xuất theo ngữ cảnh (Contextaware Recommender Systems) 45, hệ đề xuất dựa trên mạng xã hội (Socialbased Recommender Systems) 6, hệ đề xuất dựa trên mối quan tâm (Attentionbased Recommender Systems) 7 hoặc phát triển các phương pháp lọc kết hợp. Theo đó, bên cạnh các loại thông tin điển hình của hệ đề xuất theo cách truyền thống, cách tiếp cận mở rộng này cho phép tích hợp thêm đa dạng các nguồn thông tin đầu vào (Thông tin ngữ cảnh, liên kết từ mạng xã hội, mối quan tâm …) nhằm cải thiện chất lượng của hệ đề xuất thực tế. Trong quá trình nghiên cứu và ứng dụng, mặc dù đã có nhiều nghiên cứu đề xuất được đưa ra để giải quyết bài toán đề xuất theo hai hướng tiếp cận trên 8, tuy nhiên, một số vấn đề mang tính đặc thù đối với thông tin đề xuất như vấn đề dữ liệu thưa, người dùng mới, sản phẩm mới, vấn đề sở thích thay đổi theo thời gian, yêu cầu kết hợp các dạng thông tin khác nhau, làm việc với dữ liệu kích thước lớn được cập nhật thường xuyên… luôn là những vấn đề có tính thời sự và thu hút được sự quan tâm của cộng đồng trong việc nghiên cứu và triển khai vào thực tế. 2. Mục tiêu của đề tài Ðề tài “Xây dựng hệ đề xuất dựa trên kỹ thuật Thừa số hóa ma trận” được thực hiện trong khuôn khổ chuyên ngành khoa học máy tính nhằm góp phần giải quyết các vấn đề: Tìm hiểu các hệ đề xuất (recommendation systems). Tìm hiểu các khái niệm, phương pháp xây dựng 1 hệ đề xuất.
Tính cấp thiết của đề tài
Hệ thống đề xuất được sử dụng rộng rãi trong ngành công nghiệp và phổ biến trong cuộc sống hàng ngày của chúng ta Các hệ thống này được sử dụng trong một số lĩnh vực như trang web mua sắm trực tuyến (ví dụ: Amazon.com, Shopee, Tiki,
…), trang web dịch vụ âm nhạc / phim (ví dụ: Netflix và Spotify), cửa hàng ứng dụng di động (ví dụ: cửa hàng ứng dụng IOS và google play), trực tuyến quảng cáo. Mục tiêu chính của hệ thống đề xuất là giúp người dùng khám phá các mục có liên quan như thời trang để mua, tin nhắn văn bản để đọc hoặc sản phẩm cần mua, để tạo ra trải nghiệm người dùng thú vị Hơn nữa, hệ thống đề xuất là một trong những hệ thống máy học mạnh mẽ nhất mà các nhà bán lẻ trực tuyến triển khai để tăng doanh thu Hệ thống đề xuất là sự thay thế của các công cụ tìm kiếm bằng cách giảm nỗ lực tìm kiếm chủ động và gây ngạc nhiên cho người dùng với các đề nghị mà họ chưa bao giờ tìm kiếm Nhiều công ty đã cố gắng đặt mình trước các đối thủ cạnh tranh với sự trợ giúp của các hệ thống đề xuất hiệu quả hơn Do đó, hệ thống đề xuất không chỉ là trung tâm trong cuộc sống hàng ngày của chúng ta mà còn rất cần thiết trong một số ngành công nghiệp.
Hệ đề xuất (Recommender System) được xem như một hệ thống lọc tích cực, có chức năng hỗ trợ đưa ra quyết định, nhằm mục dích cung cấp cho người sử dụng những gợi ý về thông tin, sản phẩm và dịch vụ phù hợp nhất với yêu cầu và sở thích riêng của từng người tại từng tình huống (ngữ cảnh) Cụ thể, hệ đề xuất cung cấp một giải pháp giảm tải thông tin bằng cách đưa ra dự đoán đánh giá mức độ sở thích của người dùng với sản phẩm mới và cung cấp một danh sách ngắn các sản phẩm (trang web, shop thời trang, bản tin, phim, video…) mà nhiều khả năng người dùng sẽ quan tâm [1] Trên thực tế, hệ đề xuất không chỉ hướng đến vấn đề giảm tải thông tin cho mỗi người dùng mà nó còn là yếu tố quyết định đến thành công của các hệ thống thương mại điện tử
Hệ đề xuất dang ngày càng trở thành một lĩnh vực nghiên cứu quan trọng từ sau khi xuất hiện bài báo đầu tiên về lọc cộng tác vào giữa những năm 90 [1] Ðã có rất nhiều công việc được thực hiện cả trong ngành công nghiệp và nghiên cứu hàn lâm để phát triển các hệ đề xuất trong hơn thập kỷ qua Về cơ bản hệ đề xuất được chia thành hai hướng tiếp cận chính [2] tùy thuộc vào cách khai thác các thông tin đầu vào khác nhau phục vụ cho mục đích đề xuất, đó là: 1) Hệ đề xuất với cách tiếp cận truyền thống; 2) Hệ đề xuất mở rộng cách tiếp cận truyền thống Trong đó, cách tiếp cận truyền thống sử dụng một trong ba phương pháp lọc tin chính (Lọc cộng tác, lọc theo nội dung và lọc kết hợp) lên ba loại thông tin đầu vào phổ biến (Thông tin người đùng, thông tin sản phẩm và phản hồi của người dùng về sản phẩm) Cách tiếp cận mở rộng đề cập ở đây được biết đến với một số hướng như: Hệ đề xuất theo ngữ cảnh (Context-aware Recommender Systems) [4][5], hệ đề xuất dựa trên mạng xã hội (Social-based Recommender Systems) [6], hệ đề xuất dựa trên mối quan tâm (Attention-based Recommender Systems) [7] hoặc phát triển các phương pháp lọc kết hợp Theo đó, bên cạnh các loại thông tin điển hình của hệ đề xuất theo cách truyền thống, cách tiếp cận mở rộng này cho phép tích hợp thêm đa dạng các nguồn thông tin đầu vào (Thông tin ngữ cảnh, liên kết từ mạng xã hội, mối quan tâm …) nhằm cải thiện chất lượng của hệ đề xuất thực tế.
Trong quá trình nghiên cứu và ứng dụng, mặc dù đã có nhiều nghiên cứu đề xuất được đưa ra để giải quyết bài toán đề xuất theo hai hướng tiếp cận trên [8], tuy nhiên, một số vấn đề mang tính đặc thù đối với thông tin đề xuất như vấn đề dữ liệu thưa, người dùng mới, sản phẩm mới, vấn đề sở thích thay đổi theo thời gian, yêu cầu kết hợp các dạng thông tin khác nhau, làm việc với dữ liệu kích thước lớn được cập nhật thường xuyên… luôn là những vấn đề có tính thời sự và thu hút được sự quan tâm của cộng đồng trong việc nghiên cứu và triển khai vào thực tế.
Mục tiêu của đề tài
Ðề tài “Xây dựng hệ đề xuất dựa trên kỹ thuật Thừa số hóa ma trận” được thực hiện trong khuôn khổ chuyên ngành khoa học máy tính nhằm góp phần giải quyết các vấn đề:
- Tìm hiểu các hệ đề xuất (recommendation systems).
- Tìm hiểu các khái niệm, phương pháp xây dựng 1 hệ đề xuất.
- Nghiên cứu hệ đề xuất dự trên kỹ thuật Thừa số hóa ma trận.
- Xây dựng hệ thống Đề xuất thời trang dựa trên kỹ thuật thừa số hóa ma trận.Trong bài luận văn này, chúng tôi sẽ giới thiệu sơ lược về hệ thống đề xuất và vấn đề dự đoán xếp hạng (rating prediction) trong hệ thống đề xuất Trong bài luận văn này cũng sẽ giới thiệu những nhóm kỹ thuật chính được sử dụng phổ biến nhất trong RS, sau đó đi sâu vào tìm hiểu chi tiết một kỹ thuật nổi trội nhất (state-of-the- art) hiện nay trong RS – chính là kỹ thuật phân rã ma trận (matrix factorization –MF) (Koren, 2009) và các biến thể của nó Bên cạnh đó, chúng tôi cũng trình bày các lĩnh vực ứng dụng chính của RS, kèm theo một số kết quả minh họa cho từng lĩnh vực.
Các đóng góp của đề tài
- Đóng góp thứ nhất của đề tài là Nghiên cứu kỹ thuật Thừa số hóa ma trận.
- Đóng góp thứ hai của đề tài là Xây dựng hệ Đề xuất thời trang dựa trên kỹ thuật thừa số hóa ma trận.
Bố cục của đề tài
Đề tài được tổ chức thành ba chương, trong đó:
TỔNG QUAN VỀ HỆ ĐỀ XUẤT
Khái niệm hệ đề xuất
Với sự gia tăng nhanh chóng của thông tin trên Web thì cần thiết phải có công cụ giúp người dùng lựa chọn các thông tin trực tuyến phù hợp với mình Khi cần tìm thông tin về một sản phẩm nào đó, giải pháp được hầu hết người dùng sử dụng là đưa câu hỏi vào máy tìm kiếm (Search engine) thay vì tìm đến những trang Web hoặc diễn đàn chuyên ngành Máy tìm kiếm tiến hành tìm kiếm thông tin dựa trên các từ khóa (Keyword) được người dùng gõ vào và trả về một danh mục của các trang Web có chứa từ khóa mà nó tìm được Do vậy, việc sử dụng máy tìm kiếm sẽ hiệu quả khi người dùng biết họ thực sự muốn tìm cái gì [10] Trong trường hợp khi người dùng không xác định được chính xác cái mình muốn tìm thì yêu cầu về lọc thông tin một cách có hiệu quả và tin cậy là rất cần thiết Ðể đáp ứng nhu cầu này,các hệ thống đề xuất đã ra đời, ví dụ một số hệ đề xuất đã được thương mại hóa và triển khai thành công, tiêu biểu là hệ đề xuất của các hãng Amazon, eBay, Netflix,Youtube …
Hệ đề xuất, tiếng anh là Recommender System hoặc Recommendation System, là những hệ thống được thiết kế để hướng người dùng đến những đối tượng quan tâm, yêu thích, khi lượng thông tin quá lớn vượt quá khả năng xử lý của người dùng
Theo Ricci và cộng sự [5], hệ đề xuất là những công cụ phần mềm, kỹ thuật cung cấp đề xuất các đối tượng có thể hữu ích với người dùng Những đề xuất liên quan đến quyết định của người dùng như: sản phẩm nào nên mua, bài hát nào nên nghe, hay tin tức nào nên đọc Ví dụ giao diện hệ đề xuất sách của Amazon:
Hình 1.1 Minh họa hệ Đề xuất của Amazon
Lợi ích của hệ thống đề xuất
1 Tăng trải nghiệm người dùng: Mục tiêu chính của hệ thống đề xuất là cải thiện trải nghiệm người dùng bằng cách cung cấp các đề xuất phù hợp Điều này bao gồm việc giảm thời gian tìm kiếm và tăng cường khả năng phát hiện ra những sản phẩm, dịch vụ hoặc nội dung mà người dùng có thể quan tâm.
2 Tăng tỷ lệ chuyển đổi và doanh số bán hàng: Trong môi trường thương mại điện tử, mục tiêu của hệ thống đề xuất là tối đa hóa tỷ lệ chuyển đổi từ người dùng xem sản phẩm đến việc mua hàng Bằng cách đề xuất các sản phẩm phù hợp, hệ thống có thể tăng doanh số bán hàng.
3 Tăng tính cá nhân hóa: Một mục tiêu quan trọng khác của hệ thống đề xuất là cung cấp đề xuất cá nhân hóa Bằng cách hiểu sở thích riêng của từng người dùng và cung cấp các đề xuất phù hợp, hệ thống tạo ra trải nghiệm cá nhân hóa giúp người dùng cảm thấy được quan tâm và hiểu rõ hơn.
4 Tăng tương tác và thâm nhập sâu hơn: Mục tiêu khác của hệ thống đề xuất là tăng cường tương tác và thâm nhập sâu hơn của người dùng vào nền tảng Bằng cách cung cấp các đề xuất hấp dẫn và thú vị, hệ thống có thể kích thích sự quan tâm và tương tác liên tục của người dùng.
5 Tối ưu hóa hiệu suất hệ thống: Mục tiêu cuối cùng là cải thiện hiệu suất của hệ thống đề xuất Điều này bao gồm việc sử dụng các thuật toán và phương pháp tối ưu để tạo ra các đề xuất chính xác và hiệu quả với tốc độ xử lý cao.
Các mục tiêu này có thể thay đổi tùy thuộc vào ngữ cảnh cụ thể của hệ thống đề xuất Chẳng hạn, trong ngành giải trí, mục tiêu có thể là giúp người dùng tìm kiếm phim, âm nhạc hoặc sách mà họ thích Trong trường hợp truyền thông xã hội,mục tiêu có thể là tạo ra nhiều tương tác và tham gia từ người dùng Điều quan trọng là cân nhắc và cải thiện từng mục tiêu để đảm bảo rằng hệ thống đề xuất đáp ứng được nhu cầu và mục tiêu kinh doanh của mình.
Các lĩnh vực ứng dụng của hệ đề xuất
Hiện tại hệ đề xuất được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, điển hình như:
- Thương mại điện tử: Đề xuất những sản phẩm hoặc dịch vụ mua bán trực tuyến Ví dụ hệ thống của Amazon – amazon.com, Ebay – ebay.com
- Giáo dục: Đề xuất nguồn tài nguyên học tập như sách, bài báo, khóa học, địa chỉ Web cho người học Ví dụ hệ thống của Foxtrot, InfoFinder
- Giải trí: Đề xuất bài hát cho người nghe (Ví dụ hệ thống của LastFM - www.last.fm), đề xuất phim ảnh (Ví dụ hệ thống của Netflix, MovieLens, EachMovie), đề xuất các video clip (Ví dụ hệ thống của YouTube - www.youtube.com)
- Du lịch: Đề xuất điểm đến, hoạt động du lịch Ví dụ hệ thống của Dietorecs,LifestyleFinder [11]
- Chăm sóc sức khỏe: Đề xuất sản phẩm y tế Ví dụ hệ thống mạng xã hội sức khỏe – www.patientslikeme.com
- Truyền thông xã hội: Đề xuất các hoạt động xã hội Ví dụ hệ thống của Facebook, Twitter, LinkedIn
- An uống: Đề xuất nhà hàng, địa điểm ăn uống Ví dụ hệ thống của Adaptive Place Advisor, Polylens, Pocket restaurant finder
Bên cạnh đó, hệ đề xuất đã và đang được các nhà khoa học, các tổ chức, doanh nghiệp rất quan tâm nghiên cứu ứng dụng hệ đề xuất cho đa dạng các lớp bài toán ở các lĩnh vực khác nhau của cuộc sống [12][13][14].
Phát biểu bài toán đề xuất
Cho tập hợp hữu hạn gồm N người dùng U(u 1 , u 2 , ,u N ) và M sản phẩm P(p 1 , p 2 , ,p N ) Mỗi người dùng u U(u 1 , u 2 , ,u N ) Các đặc trưng tq thông thường là thông tin cá nhân của mỗi người dùng Mối quan hệ giữa tập người dùng và tập sản phẩm được biểu diễn thông qua ma trận đánh giá R={rx}
Hình 1.2 Ma trận đánh giá người dùng- sản phẩm
Qui trình xây dựng hệ đề xuất
Qui trình tổng quát để giải quyết bài toán đề xuất thông thường gồm có 3 giai đoạn chính được thể hiện trong Hình 1.3 sau
Hình 1.3 Qui trình tổng quát giải quyết bài toán đề xuất
Giai đoạn 1: Thu thập thông tin
Ba loại thông tin chính thường được thu thập cho hệ đề xuất, gồm có: (user"s profile) nhằm lưu trữ lại dấu vết các đặc trưng nội dung sản phẩm đã từng được sử dụng bởi người dùng Sản phẩm (Item) biểu diễn thông qua các đặc trưng là thông tin về sản phẩm Thông qua biểu diễn này, hệ thống cho phép xây dựng hồ sơ sản phẩm (item"s profile) nhằm lưu trữ lại dấu vết các đặc trưng người dùng đã từng sử dụng sản phẩm Phản hồi của người dùng với sản phẩm (Feedback), biểu diễn thông qua các giá trị đánh giá của người dùng với sản phẩm
Giai đoạn 2: Xây dựng mô hình
Giai đoạn xây dựng mô hình đề xuất có thể thực hiện bằng nhiều hướng tiếp cận khác nhau nhằm so sánh, đánh giá mối liên hệ giữa các thông tin thu thập được ở giai đoạn 1 Một số hướng tiếp cận điển hình được biết đến như: dựa vào kinh nghiệm (heuristics), học máy, lý thuyết xấp xỉ Mỗi hướng tiếp cận sẽ khai thác thông tin đầu vào theo những cách khác nhau hình thành những phương pháp đề xuất khác nhau
Giai đoạn 3: Dự đoán đánh giá / Đưa ra đề xuất
Dữ liệu đầu ra của giai đoạn 2 sẽ được dùng dể dự đoán các đánh giá của người dùng với các sản phẩm chưa có đánh giá trước đó và chọn ra sản phẩm mới phù hợp nhất đối với người dùng hiện thời để gợi ý cho họ.
Các hướng tiếp cận xây dựng hệ đề xuất
Có nhiều đề xuất khác nhau để giải quyết bài toán đề xuất theo “Qui trình xây dựng hệ đề xuất” Tuy nhiên về cơ bản thì hệ đề xuất được chia thành hai hướng tiếp cận tùy vào việc lựa chọn loại thông tin, mô hình học và dự đoán sản phẩm mới cho người dùng [2][3], đó là:
1) Hệ đề xuất với cách tiếp cận truyền thống;
2) Hệ đề xuất mở rộng cách tiếp cận truyền thống
- Cách tiếp cận truyền thống khai thác 3 loại thông tin đầu vào gồm người dùng, sản phẩm và phản hồi của người dùng về sản phẩm Dựa vào cách xác định dự đoán đánh giá cho các sản phẩm đối với người dùng, hệ đề xuất thường được chia thành ba loại: đề xuất dựa vào phương pháp lọc cộng tác (Collaborative Filtering Recommendation), đề xuất dựa vào phương pháp lọc theo nội dung (Content-Based Filtering Recommendation) và đề xuất dựa vào phương pháp lọc kết hợp (Hybrid Filtering Recommendation) [3][8]
- Cách tiếp cận mở rộng từ hệ đề xuất truyền thống cho phép tích hợp thêm các nguồn thông tin khác (Ngữ cảnh, thông tin trong mạng xã hội, ) hoặc cải tiến các phương pháp lọc tin truyền thống trong hệ đề xuất (Các phương pháp lọc kết hợp, các phương pháp lọc dựa trên mối quan tâm…) Từ đây hệ đề xuất được chia thành một số loại điển hình: Đề xuất dựa vào ngữ cảnh (Context-Aware Recommendation), đề xuất dựa vào mạng xã hội (Social Network-Based Recommendation), đề xuất dựa vào các phương pháp lọc kết hợp (Hybrid Filtering Recommendation).
Khái niệm quan trọng trong hệ thống đề xuất - lọc cộng tác (CF), lần đầu tiên được đặt ra bởi hệ thống Tapestry, đề cập đến "mọi người cộng tác để giúp đỡ lẫn nhau thực hiện quá trình lọc để xử lý một lượng lớn email và tin nhắn được đăng lên các nhóm tin" Thuật ngữ này đã được làm giàu với nhiều giác quan hơn Theo nghĩa rộng, nó là quá trình lọc thông tin hoặc mẫu bằng cách sử dụng các kỹ thuật liên quan đến sự cộng tác giữa nhiều người dùng, tác nhân và nguồn dữ liệu CF có nhiều hình thức và nhiều phương pháp CF được đề xuất kể từ khi nó ra đời.
Nhìn chung, các kỹ thuật CF có thể được phân loại thành: CF dựa trên bộ nhớ,
CF dựa trên mô hình và kết hợp của chúng Kỹ thuật CF dựa trên bộ nhớ đại điện là
CF dựa trên hàng xóm gần nhất như CF dựa trên người dùng và CF dựa trên sản phẩm Các mô hình nhân tố tiềm ẩn như thừa số hóa ma trận là ví dụ của CF dựa trên mô hình CF dựa trên bộ nhớ có những hạn chế trong việc xử lý dữ liệu quy mô lớn và thưa thớt vì nó tính toán các giá trị tương tự dựa trên các mục chung Các phương pháp dựa trên mô hình trở nên phổ biến hơn với khả năng tốt hơn trong việc giải quyết sự thưa thớt và khả năng mở rộng Nhiều phương pháp tiếp cận CF dựa trên mô hình có thể được mở rộng với mạng nơ-ron, dẫn đến các mô hình linh hoạt hơn và có thể mở rộng với khả năng tăng tốc tính toán trong học sâu Nói chung, CF chỉ sử dụng dữ liệu tương tác giữa người dùng-sản phẩm để đưa ra dự đoán và đề xuất Bên cạnh CF, các hệ thống đề xuất dựa trên nội dung và dựa trên ngữ cảnh cũng hữu ích trong việc kết hợp các mô tả nội dung của các sản phẩm - người dùng và các tín hiệu theo ngữ cảnh như dấu thời gian và vị trí Rõ ràng, chúng ta có thể cần phải điều chỉnh các kiểu / cấu trúc mô hình khi có sẵn các dữ liệu đầu vào khác nhau.
1.6.2 Lọc dựa trên nội dung
Một cách tiếp cận phổ biến khác khi thiết kế hệ thống recommender là lọc nội dung Phương pháp lọc dựa trên nội dung dựa trên mô tả về mặt hàng và hồ sơ về các tùy chọn của người dùng.
Trong hệ thống đề xuất dựa trên nội dung, từ khóa được sử dụng để mô tả các mục và hồ sơ người dùng được xây dựng để chỉ ra loại mục mà người dùng này thích Nói cách khác, các thuật toán này cố gắng đề xuất các mục tương tự với các mục mà người dùng đã thích trong quá khứ (hoặc đang kiểm tra trong hiện tại) Cụ thể, các mục đề cử khác nhau được so sánh với các mục được đánh giá trước đây bởi người dùng và các mục phù hợp nhất được đề xuất Cách tiếp cận này có nguồn gốc từ việc thu thập thông tin và nghiên cứu lọc thông tin Để tóm tắt các tính năng của các mục trong hệ thống, một thuật toán trình bày mục được áp dụng Một thuật toán được sử dụng rộng rãi là biểu diễn tf – idf (còn được gọi là biểu diễn không gian vectơ). Để tạo hồ sơ người dùng, hệ thống chủ yếu tập trung vào hai loại thông tin:
1 Một mô hình ưu tiên của người dùng.
2 Lịch sử tương tác của người dùng với hệ thống đề xuất.
Về cơ bản, các phương thức này sử dụng một hồ sơ mặt hàng (ví dụ, một tập hợp các thuộc tính và tính năng rời rạc) mô tả mục trong hệ thống Hệ thống tạo hồ sơ dựa trên nội dung của người dùng dựa trên vectơ trọng số của các đối tượng địa lý Trọng số biểu thị tầm quan trọng của từng tính năng đối với người dùng và có thể được tính từ các vectơ nội dung được xếp hạng riêng lẻ bằng nhiều kỹ thuật. Các phương pháp đơn giản sử dụng các giá trị trung bình của vector hạng mục trong khi các phương pháp phức tạp khác sử dụng các kỹ thuật máy học như Bayesian Classifiers , phân tích cụm , cây quyết định và mạng thần kinh nhân tạo (artificial neural networks) để ước tính xác suất người dùng sẽ thích mục đó.
Phản hồi trực tiếp từ người dùng, thường dưới dạng nút thích hoặc không thích , có thể được sử dụng để gán trọng số cao hơn hoặc thấp hơn về tầm quan trọng của các thuộc tính nhất định (sử dụng phân loại Rocchio hoặc các kỹ thuật tương tự khác).
Một vấn đề quan trọng với lọc dựa trên nội dung là liệu hệ thống có thể tìm hiểu các tùy chọn của người dùng từ hành động của người dùng liên quan đến một nguồn nội dung hay không và sử dụng chúng trên các loại nội dung khác Khi hệ thống bị hạn chế đề xuất nội dung cùng loại với người dùng đang sử dụng, giá trị từ hệ thống đề xuất thấp hơn đáng kể so với các loại nội dung khác từ các dịch vụ khác có thể được đề xuất Ví dụ: giới thiệu các bài viết tin tức dựa trên việc duyệt tin tức hữu ích nhưng sẽ hữu ích hơn nhiều khi bạn có thể đề xuất âm nhạc, video, sản phẩm, cuộc thảo luận, v.v từ các dịch vụ khác nhau dựa trên duyệt tin tức.
Pandora Radio là một ví dụ về hệ thống đề xuất dựa trên nội dung phát nhạc có các đặc điểm tương tự như một bài hát do người dùng cung cấp làm hạt giống ban đầu Ngoài ra còn có một số lượng lớn các hệ thống đề xuất dựa trên nội dung nhằm cung cấp các đề xuất phim, một vài ví dụ như Rotten Tomatoes , Internet Movie Database , Jinni , Rovi Corporation và Jaman Các hệ thống đề xuất giới thiệu tài liệu liên quan nhằm mục đích cung cấp các đề xuất tài liệu cho các nhà nghiên cứu Các chuyên gia y tế công cộng đã nghiên cứu các hệ thống đề xuất để cá nhân hóa giáo dục sức khỏe và các chiến lược phòng ngừa.
1.6.3 Hệ thống đề xuất lai (Hybrid recommender systems)
Nghiên cứu gần đây đã chứng minh rằng một phương pháp lai, kết hợp lọc cộng tác và lọc dựa trên nội dung có thể hiệu quả hơn trong một số trường hợp Các phương pháp lai có thể được thực hiện theo nhiều cách:
Bằng cách đưa ra các dự đoán dựa trên nội dung và dựa trên lọc cộng tác riêng biệt và sau đó kết hợp chúng.
Bằng cách thêm các khả năng dựa trên nội dung vào phương pháp cộng tác (và ngược lại).
Bằng cách thống nhất các phương pháp tiếp cận thành một mô hình.
Một số nghiên cứu thực nghiệm so sánh hiệu suất của phương pháp lai với các phương pháp cộng tác thuần túy và chứng minh rằng các phương pháp lai có thể cung cấp các đề xuất chính xác hơn các phương pháp thuần túy Những phương pháp này cũng có thể được sử dụng để khắc phục một số vấn đề thường gặp trong hệ thống đề xuất như Cold Start và vấn đề thưa thớt.
Netflix là một ví dụ tốt về việc sử dụng các hệ thống hybrid recommender. Trang web đưa ra các đề xuất bằng cách so sánh thói quen xem và tìm kiếm của những người dùng tương tự (ví dụ: lọc cộng tác) cũng như bằng cách cung cấp những bộ phim có chung đặc điểm với những bộ phim mà người dùng đánh giá cao (lọc dựa trên nội dung).
Một loạt các kỹ thuật đã được đề xuất làm cơ sở cho các hệ thống đề xuất: các kỹ thuật hợp tác (collaborative), dựa trên nội dung (content-based), dựa trên kiến thức (knowledge-based) và nhân khẩu học (demographic techniques) Mỗi kỹ thuật này đều có những thiếu sót, như vấn đề Cold Start cho các hệ thống cộng tác và dựa trên nội dung (phải làm gì với người dùng mới với ít xếp hạng) và tắc nghẽn kỹ thuật tri thức (knowledge engineering bottleneck) trong các phương pháp dựa trên tri thức Một hệ thống đề xuất lai là một hệ thống trong đó kết hợp nhiều kỹ thuật với nhau để đạt được một số sức mạnh tổng hợp giữa chúng.
Những vấn đề khi áp dụng phương pháp lọc cộng tác
So với lọc theo nội dung, lọc cộng tác có ưu điểm như đơn giản trong cài đặt và có thể thực hiện tốt trên tất cả các dạng thông tin nhưng gặp phải một số vấn đề sau [8]:
- Vấn đề người dùng mới: Để phân bổ chính xác các sản phẩm người dùng quan tâm, lọc cộng tác phải ước lượng được sở thích của người dùng đối với các sản phẩm mới thông qua những đánh giá của họ trong quá khứ Trong trường hợp hệ thống có một người dùng mới, số lượng đánh giá của người dùng này cho các sản phẩm của hệ thống là 0, khi đó phương pháp lọc cộng tác không thể đưa ra những đề xuất chính xác cho người dùng dó
- Vấn đề sản phẩm mới: Trên thực tế các sản phẩm thường xuyên được bổ sung, cập nhật vào hệ thống Khi xuất hiện một sản phẩm mới, tất cả đánh giá của người dùng cho sản phẩm này đều là 0 Do vậy, lọc cộng tác không thể đề xuất sản phẩm mới này cho bất kỳ người dùng nào trong hệ thống
- Vấn đề dữ liệu thưa: Kết quả dự đoán của lọc cộng tác phụ thuộc chủ yếu vào số lượng đánh giá biết trước của người dùng đối với các sản phẩm Tuy nhiên, đối với các hệ thống thực tế, số lượng người dùng và sản phẩm là rất lớn (hàng triệu người dùng và sản phẩm) nhưng số lượng những đánh giá biết trước thường rất nhỏ so với số lượng các đánh giá cần dự đoán
- Vấn đề sở thích thay đổi theo thời gian: Hệ thống lọc cộng tác đưa ra đề xuất cho người dùng những sản phẩm của những người có sở thích giống họ đã từng ưa thích trong quá khứ Khi sở thích của các người dùng đối với các sản phẩm trong hệ thống thay đổi theo thời gian, nếu hệ thống không học lại thì chất lượng đề xuất của hệ thống tới người dùng sẽ giảm chính xác.
CƠ SỞ LÝ THUYẾT KỸ THUẬT THỪA SỐ HÓA MA TRẬN
Giới thiệu Kỹ thuật thừa số hóa ma trận
Các hệ thống đề xuất dựa trên nội dung (content-based) ít được sử dụng vì những hạn chế của nó trong việc liên kết những thông tin tương tự giữa người dùng. Nhóm thuật toán thứ hai trong các hệ thống đề xuất là Lọc cộng tác (collarborative filtering) được sử dụng rộng rãi hơn Trong các thuật toán thuộc nhóm thứ hai này, Matrix Factorization (MF - phân rã ma trận) là thuật toán đơn giản nhất.
Kỹ thuật thừa số hóa ma trận còn gọi Phân rã ma trận (Matrix Factorization)
[1] là một trong những thuật toán lâu đời trong các tài liệu về hệ thống đề xuất. Phiên bản đầu tiên của mô hình phân rã ma trận được đề xuất bởi Simon Funk Tác giả đã mô tả ý tưởng phân rã ma trận tương tác thành các nhân tử Phân rã ma trận sau đó trở nên phổ biến nhờ cuộc thi Netflix tổ chức năm 2006 Tại thời điểm đó, Netflix, một công ty truyền thông đa phương tiện và cho thuê phim, công bố một cuộc thi nhằm cải thiện hiệu năng hệ thống đề xuất của họ Dù kết quả cuối cùng là một giải pháp kết hợp (tức phối hợp nhiều thuật toán với nhau), thuật toán phân rã ma trận đóng vai trò chủ đạo trong thuật toán kết hợp cuối cùng
Kỹ thuật Phân rã ma trận được xem là kỹ thuật tiến bộ nhất trong số các kỹ thuật dùng trong phương pháp CF vì nó cho phép ta khám phá ra những đặc tính tiềm ẩn nằm bên dưới các tương tác giữa người dùng và hạng mục Trong phần này, tôi sẽ đi sâu vào chi tiết mô hình phân rã ma trận.
2.1.2 Ưu điểm và nhược điểm của Kỹ thuật thừa số hóa ma trận Ưu điểm:
Kỹ thuật thừa số hóa ma trận có nhiều ưu điểm quan trọng, làm cho nó trở thành một phương pháp phổ biến trong nhiều ứng dụng khai phá dữ liệu và hệ thống đề xuất Dưới đây là một số ưu điểm chính của kỹ thuật thừa số hóa ma trận:
Một trong những ưu điểm quan trọng nhất của việc thực hiện kỹ thuật thừa số hóa ma trận là khả năng giảm chiều của dữ liệu Khi làm việc với các ma trận dữ liệu lớn, việc giảm chiều giúp giảm số chiều không gian, từ đó giảm độ phức tạp tính toán và tăng tốc độ xử lý Điều này cực kỳ hữu ích trong việc phân tích và hiểu sâu về dữ liệu lớn.
2 Khám phá thông tin ẩn:
Khi ma trận ban đầu được phân tích thành các thành phần cơ bản (yếu tố tiềm ẩn), thông tin ẩn và mối quan hệ giữa các đặc trưng có thể được khám phá Điều này có thể dẫn đến việc hiểu rõ hơn về cấu trúc dữ liệu, mô hình hóa quan hệ giữa các yếu tố khác nhau trong dữ liệu.
3 Dự đoán và đề xuất tốt hơn:
Kỹ thuật thừa số hóa ma trận thường dẫn đến việc cải thiện khả năng dự đoán và đề xuất Điều này quan trọng trong các hệ thống đề xuất hoặc dự đoán, nơi mục tiêu là dự đoán sở thích hoặc hành vi tiếp theo dựa trên lịch sử dữ liệu Việc hiểu được các yếu tố quan trọng và mối quan hệ trong dữ liệu giúp cải thiện độ chính xác của các dự đoán.
4 Xử lý dữ liệu thưa (sparse data) hiệu quả:
Nhiều bộ dữ liệu thực tế thường chứa nhiều giá trị bị thiếu hoặc dữ liệu thưa.
Kỹ thuật thừa số hóa ma trận có khả năng làm việc hiệu quả với dữ liệu này, giúp dự đoán hoặc đề xuất một cách chính xác mà không cần đầy đủ thông tin.
5 Loại bỏ nhiễu và tiêu chuẩn hóa:
Khi giảm chiều và tập trung vào các thành phần quan trọng, kỹ thuật này giúp loại bỏ nhiễu hoặc giảm tiêu chuẩn hóa trong dữ liệu Điều này có thể cải thiện chất lượng của dự đoán và đề xuất bằng cách tập trung vào những yếu tố quan trọng và loại bỏ thông tin không cần thiết.
6 Áp dụng rộng rãi trong nhiều lĩnh vực:
Kỹ thuật thừa số hóa ma trận không chỉ hữu ích trong lĩnh vực hệ thống đề xuất mà còn trong nhiều lĩnh vực khác như xử lý hình ảnh, ngôn ngữ tự nhiên, phân loại văn bản, v.v Điều này cho thấy tính ứng dụng rộng rãi của kỹ thuật này.
Tuy nhiên, cần lưu ý rằng việc chọn kỹ thuật thừa số hóa ma trận phù hợp với bộ dữ liệu cụ thể và mục tiêu ứng dụng là rất quan trọng Một số ưu điểm có thể đi kèm với nhược điểm, như việc mất mát thông tin quan trọng trong quá trình giảm chiều dữ liệu Điều này đòi hỏi sự cân nhắc cẩn thận để đảm bảo rằng kỹ thuật được chọn đáp ứng đúng nhu cầu và mục tiêu của dự án cụ thể
1 Khó xác định số lượng thành phần:
Một trong những thách thức lớn nhất của NMF là việc xác định số lượng thành phần (chẳng hạn, số lượng cột trong ma trận phân rã) Số lượng thành phần phù hợp có thể ảnh hưởng đáng kể đến chất lượng của kết quả Lựa chọn không chính xác có thể dẫn đến mất mát thông tin hoặc biểu diễn không chính xác của dữ liệu.
2 Nhạy cảm với dữ liệu nhiễu:
NMF có thể bị ảnh hưởng bởi dữ liệu nhiễu Dữ liệu không đồng nhất hoặc nhiễu có thể ảnh hưởng đến tính chính xác của kết quả phân rã, dẫn đến việc tạo ra các thành phần không chính xác hoặc mất mát thông tin quan trọng.
3 Phụ thuộc vào điều kiện ban đầu:
Kết quả của NMF có thể phụ thuộc rất nhiều vào điều kiện ban đầu Việc chọn ngẫu nhiên hoặc khởi tạo không tốt của ma trận ban đầu có thể dẫn đến kết quả phân rã không tối ưu.
4 Không phù hợp với dữ liệu không phải ma trận:
Mặc dù NMF được thiết kế để xử lý ma trận, nhưng trong thực tế, không phải lúc nào dữ liệu cũng có thể được biểu diễn dưới dạng ma trận Các dữ liệu dạng khác như đồ thị, dữ liệu chuỗi thời gian hoặc dữ liệu không có cấu trúc ma trận có thể đặt ra thách thức trong việc sử dụng NMF.
5 Không giải quyết được tất cả các loại dữ liệu:
Mô hình Phân rã Ma trận
Phân rã ma trận là một lớp trong các mô hình lọc cộng tác Cụ thể, mô hình này phân rã ma trận tương tác giữa người dùng - sản phẩm (ví dụ như ma trận đánh giá) thành tích hai ma trận có hạng thấp hơn, nhằm nắm bắt cấu trúc hạng thấp trong tương tác người dùng - sản phẩm phân rã ma trận đặc trưng cho cả người dùng và hạng mục bởi các vector các yếu tố được suy diễn từ các mô hình đánh giá hạng mục Sự tương đồng cao giữa các yếu tố người dùng và hạng mục sẽ tạo ra đề xuất tương tự Phương pháp này trở nên phổ biến trong những năm gần đây do xử lý tốt dữ liệu có kích thước lớn và cho ra các đề xuất chính xác, cũng như tính linh động khi tạo mô hình cho nhiều tình huống trong đời sống thực.
Dữ liệu đầu vào cho các hệ đề có nhiều kiểu và thường được biểu diễn trong một ma trận 2 chiều với một chiều biểu diễn cho các người dùng và chiều còn lại là các hạng mục được người dùng quan tâm Có 2 phương pháp thu thập dữ liệu Thu thập dữ liệu trực tiếp qua thông tin phản hồi trực tiếp (explicit feedback) từ phía người dùng về quan tâm của họ dành cho sản phẩm Các quan tâm này thường được đặc trưng bởi các con số được gọi là điểm đánh giá Ma trận điểm đánh giá từ thu thập trực tiếp thường là các ma trận thưa vì bất kỳ một người dùng nào cũng thường có xu hướng chỉ đánh giá một tỉ lệ nhỏ các hạng mục có sẵn Trường hợp không thu thập dữ liệu trực tiếp được, hệ đề xuất sẽ phải thu thập dữ liệu gián tiếp (implicit feedback) để suy diễn ra các quan tâm của người dùng bằng cách quan sát thái độ của người dùng trong quá khứ từ các dữ liệu lịch sử đi mua, duyệt các dữ liệu này để tìm kiếm các mô hình.
Giả sử ta có mỗi người dùng đã cho điểm đánh giá cho một số hạng mục trong hệ thống, ta sẽ dự báo xem các người dùng sẽ cho điểm đánh giá như thế nào cho các hạng mục mà họ chưa đánh giá, nghĩa là ta sẽ đề xuất (dự báo) cho các người dùng này đánh giá các hạng mục chưa được họ đánh giá Các thông tin đánh giá sẽ được lưu trữ trong một ma trận Bảng 1 là một ví dụ về ma trận điểm đánh giá gồm có 5 người dùng và 4 hạng mục Tác vụ dự báo được xem như là công việc lấp đầy cho ma trận Ta có thể khám phá các đặc tính (yếu tố) tiềm ẩn qua việc dự báo điểm đánh giá mà một người dùng nào đó đánh giá một hạng mục nào đó, vì các đặc tính mà người dùng quan tâm sẽ trùng khớp các đặc tính của hạng mục đó.
Bảng 1 Ma trận điểm đánh giá
Dấu (-) có nghĩa là người dùng U i chưa cho điểm đánh giá hạng mục D j Phân rã ma trận ánh xạ người dùng và hạng mục sang một không gian có hướng f các yếu tố tiềm ẩn kết hợp với nhau, nghĩa là tương quan người dùng-hạng mục được mô hình thành tích vô hướng bên trong không gian đó Đặt U là tập các người dùng, D là tập các hạng mục, khi đó ma trận R có kích thước |U| x |D| là ma trận chứa tất cả các điểm đánh giá thu thập được mà các người dùng đã đánh giá các hạng mục Ý tưởng chính của mô hình phân rã ma trận trong xây dựng hệ đề xuất là xem ma trận điểm đánh giá R là kết quả nhân từ 2 ma trận có hạng nhỏ hơn P và Q.
Ma trận P gọi là ma trận cơ sở người dùng với mỗi hàng trong P tượng trưng cho một người dùng.
Gọi R ∈R m×n ký hiệu ma trận tương tác với m người dùng và n sản phẩm, và các giá trị R biểu diễn đánh giá trực tiếp Tương tác người dùng - sản phẩm được phân tích thành ma trận người dùng tiềm ẩn P∈R m×k và ma trận sản phẩm tiềm ẩn Q∈R n×k , trong đó k≪m,n, là kích thước nhân tố tiềm ẩn Gọi p u ký hiệu hàng thứ u và của P và q i ký hiệu hàng thứ i của Q Với một sản phẩm i cho trước, các phần tử trong q i đo lường mức độ mà sản phẩm đó sở hữu các đặc trưng, ví dụ như thể loại hay mùa trong năm của thời trang Với một người dùng u cho trước, các phần tử trong p u đo mức độ ưa thích của người dùng này đối với các đặc trưng tương ứng của các sản phẩm Các nhân tố tiềm ẩn này có thể là các đặc trưng rõ ràng như đã đề cập trong các ví dụ trên, hoặc hoàn toàn không thể giải thích được. Đánh giá dự đoán có thể được ước lượng như sau:
Hình 2.1 Mô hình Phân rã ma trận
Trong đó R∈R m×n là ma trận đánh giá dự đoán và có cùng kích thước với R. Một vấn đề lớn của cách dự đoán này là độ chệch (bias) của người dùng/sản phẩm không được mô hình hóa Ví dụ, một số người dùng có thiên hướng đánh giá cao hơn, hoặc một số sản phẩm luôn bị đánh giá thấp hơn bởi chất lượng kém Các độ chệch này là rất phổ biến trong những ứng dụng thực tế Để thu được các độ chệch này, số hạng độ chệch riêng biệt cho từng người dùng và sản phẩm được sử dụng.
Cụ thể, đánh giá dự đoán của người dùng u cho sản phẩm i được tính theo công thức:
Sau đó, ta huấn luyện mô hình phân rã ma trận bằng cách cực tiểu hóa trung bình bình phương sai số giữa đánh giá dự đoán và đánh giá thực Hàm mục tiêu được định nghĩa như sau: argmin ∑(∥R ui −R ui ∥ 2 +λ(∥P∥F 2+∥Q∥F 2+b u 2 +b i 2 )
P,Q,b (u,i)∈KTrong đó λ là tỷ lệ điều chuẩn Số hạng điều chuẩn λ(∥P∥F 2+∥Q∥F 2+b u 2+b i 2) được sử dụng để tránh hiện tượng quá khớp bằng cách phạt độ lớn của các tham số.
Cặp (u,i) với R ui đã biết được lưu trong tập K={(u,i)∣R ui đã biết} Các tham số mô hình có thể được học thông qua một thuật toán tối ưu, ví dụ như hạ gradient ngẫu nhiên hay Adam.
Ta thấy rằng các vector đặc trưng của sản phẩm phụ thuộc vào dữ liệu có trước của những thể loại cụ thể Xét một bài toán bất kỳ mà ta không hề có thông tin về “thể loại” của các sản phẩm mà chỉ biết mức độ tương tác giữa người dùng và sản phẩm, khi đó các vector đặc trưng cho sản phẩm nên được xây dựng thế nào. Như vậy, mục tiêu là biến ma trận xếp hạng R thành tích của ma trận người dùng nhúng P và ma trận nhúng sản phẩm Q, sao cho R=PQ T
n là số lượng người dùng,
m là số lượng sản phẩm,
R ij là xếp hạng của các bộ sản phẩm thứ j bởi người dùng thứ i,
mỗi hàng P i là một vector chiều d (nhúng) đại diện cho người dùng i,
mỗi hàng Q j là một vector chiều d (nhúng) đại diện cho sản phẩm j, dự đoán của mô hình cho cặp (i, j) là tích vô hướng ⟨Pi , Q j ⟩. Để tìm P và Q, đầu tiên khởi tạo trị ban đầu cho P và Q, tính M = PQ rồi tối thiểu hóa độ lệch giữa ma trận M với R Mỗi lần lặp là một lần điều chỉnh P và Q để tối thiểu hóa độ lệch giữa M và R.
Hệ Số Bias
Một ưu điểm của hệ thống phân rã ma trận là tính linh dộng về khả năng xử lý dữ liệu thuộc nhiều lĩnh vực khác nhau cũng như các yêu cầu có tính đặc thù của ứng dụng Tuy nhiên, nhiều biến điểm đánh giá quan sát được chịu ảnh hưởng từ phía người dùng hoặc hạng mục, ảnh hưởng này được gọi là thiên hướng (bias) và tồn tại một cách độc lập với quan hệ chủ quan giữa người dùng và hạng mục Thiên hướng này được thể hiện (trong dữ liệu) xu hướng có tính hệ thống, trong dó một số người dùng sẽ cho điểm đánh giá cao hơn số khác và / hoặc một số hạng mục được chấp nhận tốt hơn (hoặc kém hơn) so với các hạng mục khác
Hệ đề xuất sẽ xác định tỉ lệ các điểm đánh giá chịu ảnh hưởng bởi thiên hướng.
Xấp xỉ thiên hướng theo thứ tự ưu tiên ảnh hưởng lên điểm đánh giá như sau: Đặt b ij là hệ số bias ảnh hưởng lên điểm đánh giá r ij bij = + bi + bj Trong dó là điểm đánh giá trung bình chung cho mọi hạng mục trong hệ thống b i và b j là độ lệch quan sát được của người dùng i và hạng mục j so với Ví dụ, giả sử ta muốn ước lượng hệ số bias của người dùng A đối với hạng mục B, biết rằng điểm đánh giá trung bình chung của hệ thống là = 3.7 Ngoài ra, hạng mục B có điểm đánh giá cao hơn trung bình là b j = 0.5, A là người thích các hạng mục có đặc tính mà đa số các hạng mục trong hệ thống không có nên điểm đánh giá của A sẽ thấp hơn trung bình là b i = 0.3 Khi dó, điểm đánh giá của A dành cho hạng mục
B sẽ là 3.9 (3.7+0.5-0.3) Như vậy một điểm đánh giá gồm có 4 thành phần: trung bình chung của hệ thống, hệ số bias của người dùng, hệ số bias của hạng mục và tương quan người dùng-hạng mục Mỗi thành phần chỉ giải thích phần thuộc tính liên quan, nhờ đó mà độ chính xác của hệ thống có sử dụng hệ số bias sẽ cao hơn.
Phương Pháp Giảm Gradient Ngẫu Nhiên (Stochastic Gradient Descent)
Có nhiều phương pháp để giảm lỗi đến cực tiểu trong mô hình phân rã ma trận Áp dụng các phương pháp này đồng nghĩa với việc tối ưu hóa hàm mục tiêu (objective function) Phương pháp được sử dụng phổ biến trong kỹ thuật phân rã ma trận là giảm gradient ngẫu nhiên (stochastic gradient descent)
Phương pháp này nhằm tìm điểm cực tiểu cục bộ của độ lệch bình phương giữa 2 đối tượng Hàm mục tiêu giảm độ lệch bình phương giữa 2 đối tượng A và B được định nghĩa như sau: min f(A||B) = (A – B) 2 Độ lệch được gọi là lỗi giữa điểm đánh giá ước lượng với điểm đánh giá thực tế, có thể được tính toán bằng công thức sau cho mỗi cặp người dùng-hạng mục: e ij 2 =( r ij −r ' ij ) =¿
Ta xét lỗi bình phương vì điểm đánh giá ước lượng có thể có lúc cao hơn, có lúc thấp hơn điểm đánh giá thực tế gây ra hiện tượng bù trừ khi tính tổng lỗi Để cực tiểu lỗi, ta phải biết hướng để chỉnh sửa các giá trị của p ik và q kj Nghĩa là ta cần phải biết được gradient của các giá trị hiện tại Lấy đạo hàm riêng cho công thức trên theo các biến p ik và q kj , ta được:
=−2( r ij −r ' ij ) q kj =−2e ij q kj
=−2( r ij −r ' ij ) p ik =−2e ij q ik
Cập nhật gradient cho các p ik và q kj , ta có: p ' ik =p ik +α ∂ p ik e 2 ij =p ik +2α e ij q kj q ' kj =q kj +α ∂ q kj e 2 ij =q kj +2α e ij p ik
Trong đó , còn gọi là bước nhảy, là hằng số mà giá trị của nó xác định tốc độ dần đến điểm cực tiểu Giá trị là tùy chọn và thường khá nhỏ (khoảng 0.0002). Nếu chọn bước nhảy quá lớn để tiến đến cực tiểu có thể vượt khỏi điểm cực tiểu, và dao động quanh điểm cực tiểu Ngược lại, nếu chọn quá nhỏ tốc độ dần đến cực tiểu quá chậm
Vấn đề nảy sinh ra cho mô hình phân rã ma trận là nếu tìm được các ma trận P và Q sao cho P x Q xấp xỉ được R thì dự báo cho các đánh giá chưa thấy có dần về zero hết hay không? Thực tế, mô hình không đi tìm P và Q để có được R một cách chính xác, mà chỉ tối thiểu hóa lỗi của các cặp người dùng-hạng mục quan sát được. Nói cách khác, nếu T là tập dữ liệu huấn luyện, đặt T là tập các bộ có dạng (u i ,d j ,r ij ), tức T chứa tất cả các cặp người dùng-hạng mục cùng với điểm đánh giá, ta sẽ cố gắng cực tiểu lỗi e ij cho mỗi bộ (u i ,d j ,r ij ) T Đối với các bộ chưa đầy đủ (thiếu r ij ), mô hình sẽ xác định các giá trị này một khi mối quan hệ giữa người dùng, hạng mục và các đặc tính được học Sử dụng công thức gradient descent lặp đi lặp lại nhiều lần cho đến khi lỗi hội tụ về điểm cực tiểu.
Regularization
Khi thực hiện tối ưu lỗi trong quá trình học của thuật toán có thể xảy ra hiện tượng overfitting trong dữ liệu huấn luyện Đó là hiện tượng “tối ưu quá” khiến mô hình không đủ tổng quát để mô hình hóa dữ liệu mới Regularization là kỹ thuật để cân bằng hiện tượng này Có nhiều phương pháp regularization, đơn giản nhất là thêm vào một tham số , công thức tính lỗi bình phương được viết lại như sau:
(*) Tham số được dùng dể kiểm soát độ lớn của các vector đặc trưng của người dùng và vector đặc trưng của hạng mục sao cho P và Q xấp xỉ tốt tới R mà không chứa các số lớn Trong thực tế, là một tập các giá trị trong khoảng 0.02 Công thức cập nhật gradient cho các vector p ik và q kj với lỗi bình phương được viết lại như sau: p ' ik =p ik +α ∂ p ik e 2 ij =p ik +2α( e ij q kj −β p ik )(**) q ' kj =q kj +α ∂ q kj e 2 ij =q kj +2α(e¿¿ij p ik −β q kj )(¿∗¿)¿
Thuật toán phân rã ma trận được tóm tắt như sau:
Input: ma trận R , , , (ngưỡng lỗi tối thiểu chấp nhận được)
1: Khởi tạo ngẫu nhiên P và Q 2: while k < iter OR e < 3: cập nhật P theo công thức (**)4: cập nhật Q theo công thức (***)5: tính lại e theo công thức (*)
Xây dựng biểu diễn tf.SparseTensor của Ma trận xếp hạng
Ma trận xếp hạng có thể rất lớn và nói chung, hầu hết các mục nhập đều không được quan sát, vì một người dùng nhất định sẽ chỉ xếp hạng một tập hợp con nhỏ các sản phẩm Để biểu diễn hiệu quả, chúng ta sẽ sử dụng tf.SparseTensor Một
SparseTensor sử dụng ba tensor để đại diện cho ma trận tf.SparseTensor (indicaes, values, Dense_shape) đại diện cho một tensor, trong đó giá trị values A ij = a được mã hóa bằng cách đặt các chỉ số indicaes [k] [i, j] và giá trị [k] = a Dense_shape để chỉ định hình dạng của ma trận cơ bản đầy đủ. def build_rating_sparse_tensor(ratings_df):
Args: ratings_df: a pd.DataFrame with 'review_userId', 'cl othing_id', and 'review_score' columns.
A tf.SparseTensor representing the ratings matrix """ indices = ratings_df[['review_userId', 'clothing_id']].v alues values = ratings_df['review_score'].values return tf.SparseTensor( indices=indices, values=values, dense_shape=[users.shape[0], Clothing.shape[0]]
Giả sử chúng ta có 2 người dùng và 4 sản phẩm Khung dữ liệu xếp hạng của chúng tôi có ba xếp hạng,
Ma trận xếp hạng tương
Và biểu diễn SparseTensor là,
Tôi viết một hàm ánh xạ từ DataFrame xếp hạng sang một tf.SparseTensor
XÂY DỰNG HỆ ĐỀ XUẤT THỜI TRANG DỰA TRÊN KỸ THUẬT THỪA SỐ HÓA MA TRẬN
Khám phá dữ liệu Clothinglens
def split_dataframe(df, holdout_fraction=0.1):
Splits a DataFrame into training and test sets.
Args: df: a dataframe holdout_fraction: fraction of dataframe rows to use in the test set
Returns: train: dataframe for training test: dataframe for testing
""" test = df.sample(frac=holdout_fraction, replacese ) train = df[~df.index.isin(test.index)] return train, test
Trước khi đi sâu vào xây dựng mô hình, tôi kiểm tra tập dữ liệu Clothinglens. Thông thường sẽ hữu ích khi hiểu số liệu thống kê của tập dữ liệu.
Tôi bắt đầu bằng cách in một số thống kê cơ bản mô tả các tính năng của người dùng. review_age count 2073.000000 mean 34.958997 std 11.974746 min 15.000000 25% 25.000000 50% 35.000000 75% 45.000000 max 55.000000
Một số thống kê cơ bản mô tả các tính năng phân loại của người dùng review_userId review_name review_country count 2073 2073 2073 unique 2073 2073 1 top 0 neal_wu United States freq 1 1
Bây giờ tôi xem xét sự phân bổ xếp hạng trên mỗi người dùng Các nghề nghiệp trong biểu đồ bên dưới sẽ lọc dữ liệu theo nghề nghiệp Biểu đồ tương ứng được hiển thị rating của người dùng.
Biểu đồ thống kê theo độ tuổi: grouped = users.groupby('review_age').size().reset_index(name='count') plt.bar(grouped['review_age'], grouped['count'], color='skyblue') plt.xlabel('Review Age') plt.ylabel('Count') plt.title('Comparison of Review Age Counts') plt.show()
Hình 3.1 Phân bổ xếp hạng trên đổ tuổi người dùng
3.1.2 Sản phẩm thời trang (Clothing)
Các đánh giá về sản phẩm title review_sco re count review_sco re mean 225
Kearia Women Short Sleeve Star Print Loose
Fit High low Hem T Shirt Tunic Top Blouse 17 4.9411765 655
BABOLAT Match Performance Ladies Tank -
Ohne Titel Womens Graphic Stripe Print Blouse
Sexy Floral Lace Collared Button Long Shirts
Blouse Criss Cross Back (Small, Black) 19 4.8947368 908
KingYuan Stainless Steel fox Tail Anal Plug
Tea N Rose 5384 SS Pink Chiffon Ruffle Tie
Magaschoni Womens Silk & Cashmere-Blend
WAYF Fuchsia Womens Textured Cold-
Tbagslosangeles Womens Tie Shoulder Tank,
Hooked Up by IOT Womens Juniors Ribbed Knit
Thomas Rhett Home Team Tour 2017 Poster
Design Womens Long Sleeve T-Shirts Black 55 4.8 612
Ralph Lauren Sport Women's Interlock Polo
Shirt (Medium, White Purple Pony) 19 4.7894737 156
6 Women's Act Like A Racerback Vest Top 42 4.7857143 263
Bellatrix Women's Plus Studded trim Keyhole
Eagle u2 women's popular Tee The Sanctum
Biểu đồ thống kê số lượng theo điểm số:
Hình 3.2 Phân bổ số lượng đánh giá theo điểm số grouprt1 = ratings.groupby('review_score').size().reset_index(name='count') plt.bar(grouprt1['review_score'], grouprt1['count'], color='skyblue') plt.xlabel('review_score') plt.ylabel('Count') plt.title('Comparison of review_score Counts') plt.show()
Biểu đồ thống kê số lượng đánh giá theo người dùng:
Hình 3.3 Phân bổ số lượng đánh giá theo người dùng
Đào tạo mô hình phân rã ma trận
3.2.1 Lớp trợ giúp CFModel (Mô hình lọc cộng tác) Đây là một lớp đơn giản để đào tạo mô hình phân rã ma trận bằng cách sử dụng phép giảm dốc ngẫu nhiên.
- Sản phẩm Q (a tf.Variable). grouprt = ratings.groupby('review_userId').size().reset_index(name='count') plt.bar(grouprt['review_userId'], grouprt['count'], color='skyblue') plt.xlabel('review_userId') plt.ylabel('Count') plt.title('Comparison of review_userId Counts') plt.show()
- Tối ưu hóa mất mát (tf.Tensor).
- Một danh sách tùy chọn các từ điển số liệu, mỗi từ điển ánh xạ một chuỗi (tên của số liệu) đến một tensor Chúng được đánh giá và vẽ biểu đồ trong quá trình đào tạo (ví dụ: lỗi đào tạo và lỗi kiểm tra) Sau khi đào tạo, người ta có thể truy cập các nhúng được đào tạo bằng cách sử dụng từ điển model.embeddings. class CFModel(object):
"""Simple class that represents a collaborative filtering model""" def init (self, embedding_vars, loss, metrics=None):
Args: embedding_vars: A dictionary of tf.Variables. loss: A float Tensor The loss to optimize. metrics: optional list of dictionaries of Tensors The metrics in each dictionary will be plotted in a separate figure during traini ng.
""" self._embedding_vars = embedding_vars self._loss = loss self._metrics = metrics self._embeddings = {k: None for k in embedding_vars} self._session = None
"""The embeddings dictionary.""" return self._embeddings with self._loss.graph.as_default(): opt = optimizer(learning_rate) train_op = opt.minimize(self._loss) local_init_op = tf.group( tf.variables_initializer(opt.variables()), tf.local_variables_initializer()) if self._session is None: self._session = tf.Session() with self._session.as_default(): self._session.run(tf.global_variables_initializer()) self._session.run(tf.tables_initializer()) tf.train.start_queue_runners() with self._session.as_default(): local_init_op.run() iterations = [] metrics = self._metrics or ({},) metrics_vals = [collections.defaultdict(list) for _ in self._metrics]
# Train and append results. for i in range(num_iterations + 1):
_, results = self._session.run((train_op, metrics)) if (i % 10 == 0) or i == num_iterations: print("\r iteration %d: " % i + ", ".join(
["%s=%f" % (k, v) for r in results for k, v in r.items()]), end='') iterations.append(i) for metric_val, result in zip(metrics_vals, results): for k, v in result.items(): metric_val[k].append(v) for k, v in self._embedding_vars.items(): self._embeddings[k] = v.eval() if plot_results:
# Plot the metrics. num_subplots = len(metrics)+1 fig = plt.figure() fig.set_size_inches(num_subplots*10, 8) for i, metric_vals in enumerate(metrics_vals): ax = fig.add_subplot(1, num_subplots, i+1) for k, v in metric_vals.items(): ax.plot(iterations, v, label=k) ax.set_xlim([1, num_iterations]) ax.legend()
3.3.2 Đào tạo mô hình phân rã ma trận
Bằng cách sử dụng hàm Slice_mean_square_error, Tôi sẽ viết một hàm xây dựng Mô hình CFM bằng cách tạo các biến nhúng và tổn thất đào tạo và kiểm tra.
Tôi thử các thông số khác nhau (số chiều nhúng, tốc độ học, số lần lặp) Các lỗi đào tạo và kiểm tra được vẽ ở cuối khóa đào tạo Chúng tôi có thể kiểm tra các giá trị này để xác thực các siêu tham số. def build_model(ratings, embedding_dim=3, init_stddev=1.):
Args: ratings: a DataFrame of the ratings embedding_dim: the dimension of the embedding vectors. init_stddev: float, the standard deviation of the random initial embeddings.
# Split the ratings DataFrame into train and test. train_ratings, test_ratings = split_dataframe(ratings)
# SparseTensor representation of the train and test datasets.
A_train = build_rating_sparse_tensor(train_ratings)
A_test = build_rating_sparse_tensor(test_ratings)
# Initialize the embeddings using a normal distribution.
U = tf.Variable(tf.random_normal(
[A_train.dense_shape[0], embedding_dim], stddev=init_stddev))
V = tf.Variable(tf.random_normal(
[A_train.dense_shape[1], embedding_dim], stddev=init_stddev)) train_loss = sparse_mean_square_error(A_train, U, V) test_loss = sparse_mean_square_error(A_test, U, V) metrics = {
} return CFModel(embeddings, train_loss, [metrics])
Iteration 2100: train_error=0.125272, test_error.007149 Out[5]: [{'train_error': 0.12527204, 'test_error':
Hình 3.4 Kiểm tra kết quả đào tạo mô hình
Kiểm tra việc nhúng
Trong phần này, tôi xem xét kỹ hơn các cách nhúng đã học, bằng cách:
- Tính toán các đề xuất của người dùng
- Hàng xóm gần nhất của một số sản phẩm,
- Tiêu chuẩn của việc nhúng sản phẩm,
- Hình dung việc nhúng trong một không gian nhúng dự kiến.
Viết một hàm tính điểm của các ứng viên
Tôi bắt đầu bằng cách viết một hàm, với một truy vấn nhúng u∈R d và nhúng mục V∈R N × d , tính điểm mục.
Chúng ta có thể sử dụng các biện pháp tương đồng khác nhau và các biện pháp này có thể mang lại các kết quả khác nhau Tôi sẽ so sánh những điều sau:
- Tích vô hướng: điểm của mục j là ⟨u, V j ⟩.
- cosine: điểm của mục j là ∥ ⟨ u∥∥ u ,Vj Vj ⟩ ∥
- Sử dụng np.dot để tính tích của hai np.Arrays.
- Sử dụng np.linalg.norm để tính định mức của np.Array.
COSINE = 'cosine' def compute_scores(query_embedding, item_embeddings, measure=DOT):
"""Computes the scores of the candidates given a query.
Args: query_embedding: a vector of shape [k], representing the query embe dding. item_embeddings: a matrix of shape [N, k], such that row i is the e mbedding of item i. measure: a string specifying the similarity measure to be used Can be either DOT or COSINE.
Returns: scores: a vector of shape [N], such that scores[i] is the score of item i.
V = item_embeddings if measure == COSINE:
V = V / np.linalg.norm(V, axis=1, keepdims=True) u = u / np.linalg.norm(u) scores = u.dot(V.T) return scores
Dùng hàm này, chúng tôi có thể tính toán các đề xuất, nơi nhúng truy vấn có thể là nhúng người dùng hoặc nhúng sản phẩm. Ở đây chúng tôi đã để xuất với keyword là: Shirt (Áo sơ mi) và thương hiệu Blue.
Clothing_neighbors(model, "Shirt", "Blue", DOT, 10): Hàm này sử dụng độ đo "DOT" (còn gọi là product scalar) để tìm các bộ sản phẩm gần giống với "Shirt", thương hiệu "Blue" Độ đo DOT tính tích vô hướng (dot product) giữa các vectơ def Clothing_neighbors
(model, title_substring, brand_substring,measure=DOT, k=6):
# Search for Clothing ids that match the given substring. ids = Clothing[(Clothing['title'].str.contains(title_substring)) & (Clothing['brand'].str.contains(brand_substring))].index.values titles = Clothing.iloc[ids]['title'].values if len(titles) == 0: raise ValueError("Found no Clothing with title %s" % title_substring) print("Nearest neighbors of : %s." % titles[0]) if len(titles) > 1: print("[Found more than one Clothing Other candidates: {}]".format (
", ".join(titles[1:]))) clothing_id = ids[0] scores = compute_scores( model.embeddings["clothing_id"][movie_id], model.embeddings
["clothing_id"], measure) score_key = measure + ' score' df = pd.DataFrame({ score_key: list(scores),
'genres': Clothing['product_type_name']
}) display(df.sort_values([score_key], ascendingse).head(k))
Clothing_neighbors(model, "Shirt", "Blue", DOT, 10)
Clothing_neighbors(model, "Shirt", "Blue", COSINE, 10) biểu diễn của các sản phẩm Các sản phẩm có tổng tích vô hướng cao với "Shirt", thương hiệu "Blue" sẽ được xem xét là gần giống.
Kết quả hiện thị điểm sản phẩm của các dữ liệu tìm kiếm:
Nearest neighbors of: Bluefun Womens Half Shirt Lace Stand Collar Vintage Fake Shirt Collar, White.
[Found more than one Clothing Other candidates: BLUE BLOOD Women's Army Alicia 2 Short Sleeve Graphic Shirt Sz XS NEW, North End Ladies Cotton Striped Dress Shirt 78674 - XX-Large - White / Carbon, Blue 84 Women's Small Texas State Bobcats Tee T-Shirt Red S, MIAMI INK Crouching Tiger Girls Juniors Shirt, United by Blue Beech Plaid Shirt - Women's Black, M, Juniors: Blues Brothers - Band Back Juniors (Slim) T-Shirt Size
L, Juniors: Blues Brothers - Distressed Poster Juniors (Slim) T-Shirt Size L, Juniors: Blues Brothers - Band Juniors (Slim) T-Shirt Size L, Blue 84 Juniors' Triblend V-Neck Ringer T-Shirt-JTVR-Small-Heather-White, Bluetime Womens Casual Slim Fit Long Sleeve Lapel Plaid Checked Flannel Shirt Top Blouse (L, Blue), NCAA Kansas Jayhawks Women's Chloe Premium Terry Raglan Shirt, Large, Royal]
Kết quả đề xuất của dữ liệu tìm kiếm. dot score titles genre s
Bluefun Womens Half Shirt Lace Stand Collar Vintage Fake Shirt
Eci New York Floral Drop Neck 3/4
1331 7.099 Luca Women Casual Long Sleeve SHIRT
Dreamcatcher Feather Printing T- Shirt Blouse Tops (L, Gray)
Ella Moon Women's Alaina Cold Shoulder Keyhole Neckline Top, Blue Haze/Dusty Pink Butterflies,
Women's Snowflake Studden Hi-Lo Short Sleeve Tee, Medium, Black
Indian Clothing Printed Women Long Cotton Multicolor Top Kurti SHIRT
Ralph Lauren Womens Short Sleeve Oxford Button Down Shirt (XS, New
Violeta By Mango Women's Plus Size Contrasting Cotton-Blend T-
Women's Grey Short Sleeve Clergy Shirt - Tab Collar, Size 8 SHIRT
Casual Studio Roll Tab Burnout Shirt Spearmint Combo Size M SHIRT
Clothing_neighbors(model, "Shirt", "Blue", COSINE, 10): Đây sử dụng độ đo "COSINE" để tìm các bộ sản phẩm gần giống với "Shirt" và thương hiệu
"Blue" Độ đo COSINE tính cosin của góc giữa các vectơ biểu diễn của các bộ sản phẩm Các sản phẩm có góc giữa vectơ biểu diễn và vectơ biểu diễn của
"Shirt", thương hiệu "Blue" gần với 0 (tức là cosin gần với 1) sẽ được xem xét là gần giống.
Kết quả hiện thị điểm cosine của các dữ liệu tìm kiếm:
Nearest neighbors of: Bluefun Womens Half Shirt LaceStand Collar Vintage Fake Shirt Collar, White.
[Found more than one Clothing Other candidates: BLUE BLOOD Women's Army Alicia 2 Short Sleeve Graphic Shirt Sz XS NEW, North End Ladies Cotton Striped Dress Shirt 78674 - XX-Large - White / Carbon, Blue 84 Women's Small Texas State Bobcats Tee T-Shirt Red S, MIAMI INK Crouching Tiger Girls Juniors Shirt, United by Blue Beech Plaid Shirt - Women's Black, M, Juniors: Blues Brothers - Band Back Juniors (Slim) T-Shirt Size
L, Juniors: Blues Brothers - Distressed Poster Juniors (Slim) T-Shirt Size L, Juniors: Blues Brothers - Band Juniors (Slim) T-Shirt Size L, Blue 84 Juniors' Triblend V-Neck Ringer T-Shirt-JTVR-Small-Heather-White, Bluetime Womens Casual Slim Fit Long Sleeve Lapel Plaid Checked Flannel Shirt Top Blouse (L, Blue), NCAA Kansas Jayhawks Women's Chloe Premium Terry Raglan Shirt, Large, Royal]
Kết quả đề xuất cosine score titles genre s
Bluefun Womens Half Shirt Lace Stand Collar Vintage Fake Shirt
Ralph Lauren Womens Short Sleeve Oxford Button Down Shirt (XS,
Luca Women Casual Long Sleeve Dreamcatcher Feather Printing T-
Shirt Blouse Tops (L, Gray) SHIRT 1848
Print Knit Top White Ivory XS SHIRT 2325
Jerry Leigh Apparel Juniors 3/4 Sleeve "Love" Tee, Large 11-13,
Violeta By Mango Women's Plus Size Contrasting Cotton-Blend T-
1 State Lace Zip-Front Women's
Medium Chiffon Blouse Black M SHIRT 2323
Eci New York Floral Drop Neck 3/4 Sleeve Blouse Size M SHIRT
Dee Elly Womens Dee Elle High-