Tải bản đầy đủ (.doc) (49 trang)

Xây dựng ứng dụng cảnh cáo người dùng bằng cách lọc cộng tác

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.22 MB, 49 trang )

1
4
Mở
đầu ......................................................................................................................................... 7
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ HỆ THỐNG KHUYẾN NGHỊ .................. 9
1.1. Khái niệm chung: ............................................................................................................
9
1.1.1. Lọc thông tin (Information Filtering _IF)............................................................... 9
1.1.2. Hệ thống khuyến nghị (Recommender System) ....................................................
10
1.1.3. Giới thiệu bài toán về hệ thống khuyến nghị: ...................................................... 11
1.2. Các kỹ thuật lọc cho hệ thống khuyến nghị [4] ............................................................ 11
1.2.1. Kỹ thuật lọc dựa theo nội dung: ........................................................................... 12
1.2.2. Kỹ thuật lọc cộng tác (Collaborative Filtering) ................................................... 12
1. 2.3, Kỹ thuật Hybrid .....................................................................................................
13
1.3. Các phương pháp lọc cộng tác ..................................................................................... 13
1.3.1, Lọc cộng tác dựa vào bộ nhớ .................................................................................
14
1.3.2, Lọc cộng tác dựa vào mô hình (Model-Based Collaborative Filtering) .............. 14
CHƯƠNG 2: KỸ THUẬT LỌC CỘNG TÁC ....................................................................... 16
2.1.
Giới thiệu bài toán lọc cộng tác ............................................................................... 16
2.2.
Các phương pháp tính độ tương tự giữa các người dùng ..................................... 16
2.2.1.
Khoảng cách Manhattan.................................................................................. 16
2.2.2.
Khoảng cách Euclidean. ................................................................................... 18
2.2.3.
Hệ số tương quan Pearson. .............................................................................. 20


2.2.4.
Hệ số tương tự Cosine. ..................................................................................... 22
2.3.
Phương pháp cải tiến K-hàng xóm gần nhất (k-nearest neighbor) ..................... 24
2.3.1
Thuật toán KNN dựa trên người dùng. ............................................................ 25
2.3.2
Thuật toán KNN dựa trên sản phẩm: ............................................................... 27
2.4.
Mô hình nhân tố ẩn. ................................................................................................. 29
2.4.1
Phương pháp tiếp cận vùng lân cận (the neighborhood approach) .............. 29
2.4.2

Mô hình nhân tố ẩn (latent factor models) [3] .................................................. 30

2.4.2.1. Cơ sở lý thuyết .................................................................................................
30
2.4.2.2. Bài toán: ...........................................................................................................
31
2.4.3. Phương pháp ma trận thừa số (Matrix Factorization Methods) [6] ................... 32
2.4.4. Thuật toán gradient descent ngẫu nhiên. ............................................................. 35
2.4.4.1. Thuật toán Gradient descent (GD) ................................................................ 35
2.4.4.2. Thuật toán gradient descent ngẫu nhiên ....................................................... 37
2.4.4.3. Thuật toán SGD dùng cho phân tích ma trận (ma trận thừa số) ............... 41


2
2.4.4.4. So sánh giữa thuật toán GD và SGD ............................................................. 43
2.5. Tiêu chuẩn đánh giá ...................................................................................................... 44

2.5.1. Mean absolute error (MAE) .................................................................................. 44
2.5.2. Root mean square error (RMSE) .......................................................................... 44
CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ VỚI DỮ LIỆU PHIM ẢNH .................. 46
3.1. Dữ liệu thực nghiệm. ..................................................................................................... 46
3.1.1. Tập dữ liệu thực nghiệm. .......................................................................................
46
3.1.2. Thông tin chi tiết về định dạng của bộ dữ liệu của Movielens [15] ....................... 47
3.2.
Phương pháp thực nghiệm ...................................................................................... 49
3.2.1. Môi trường thực nghiệm ........................................................................................
49
3.2.2. Phương pháp tiến hành thực nghiệm ................................................................... 49
3.3. So sánh và đánh giá kết quả thực nghiệm ................................................................... 50
3.3.1. Kết quả thực nghiệm ..............................................................................................
50
3.3.2. So sánh và đánh giá ................................................................................................
52
3.3.2.1. Các phương pháp cơ sở ................................................................................... 52
3.3.2.2. Thuật toán SGD ...............................................................................................
52
KẾT
LUẬN ............................................................................................................................... 54
TÀI LIỆU THAM KHẢO ....................................................................................................... 55


3

Mở đầu
Tương tác cá nhân là hoạt động/ sự việc diễn ra trên toàn thế giới, thậm chí có từ hàng
trăm năm trước cho đến ngày nay. Những năm 1990, tương tác cá nhân ít nhiều cũng đã

có mặt. Theo thường lệ, khi đi vào một cửa hàng sách quen thuộc, chủ hàng sẽ chào đón
như: “Có báo mới ngày hôm nay đấy!”, chủ hàng biết rằng khách hàng của mình muốn
điều gì khi đến đây. Hoặc chủ hàng có thể giới thiệu cho một vài quyển sách mà khách
hàng của mình có thể quan tâm dựa trên những sở thích của khách. Hoặc khi đi vào quán
nước quen, người phục vụ sẽ hỏi: “Như thường lệ chứ?”
Khoảng 30 năm về trước, khi bạn muốn mua chiếc tivi ở cửa hàng điện máy thì có vài sự
lựa chọn phổ biến cho bạn: Panasonic và Samsung hay LG. Những năm sau đó, bạn có
nhiều sự lựa chọn phong phú hơn, bạn chọn hãng Samsung thì trong đó còn nhiều lựa
chọn như: LED hay LCD, bao nhiêu inch?…
Hàng ngày có hàng trăm bài hát được thu âm, hàng trăm đầu sách được xuất bản trên thế
giới, trong khi đó các cửa hàng chỉ có giới hạn các đầu sách hoặc các bài hát, các bộ
phim… Từ đó, các dịch vụ trực tuyến được ra đời và đáp ứng nhu cầu ngày càng cao của
người dùng.
Cho đến ngày nay, sự tương tác cá nhân vẫn luôn tồn tại, thậm chí bạn có hàng triệu sự
lựa chọn. Mỗi giây các phương tiện truyền thông được thêm vào mạng. Mỗi phút 100 tập
tin mới có sẵn trên usenet. 24/24 giờ video được tải lên YouTube. Mỗi giờ 180 cuốn sách
mới được xuất bản. Mỗi ngày càng có thêm nhiều lựa chọn các sản phẩm để mua trong
thế giới thực.
Bạn muốn mua một số bài nhạc? iTunes có khoảng 11 triệu bài hát để lựa chọn và họ đã
bán được 16 tỷ bài hát vào tháng 10 năm 2011. Nếu bạn muốn nhiều hơn sự lựa chọn thì
có thể đi đến Spotify với 15 triệu bài hát. Bạn muốn mua một cuốn sách, Amazon cung
cấp hơn 2 triệu cuốn sách để bạn lựa chọn.
Trong cuộc sống của chúng ta ngày nay, với sự phát triển không ngừng của công nghệ
thông tin, nguồn thông tin quá phong phú làm cho bạn không có đủ thời gian để xem xét
lựa chọn tất cả các cuốn sách, phim, tạp chí hay bài hát… bạn không biết mình nên xem
phim gì, đọc cuốn sách nào phù hợp với sở thích, nhu cầu của bản thân.


4
Vấn đề cấp thiết đặt ra là cần một hệ thống hỗ trợ người dùng chọn lựa những sản phẩm

phù hợp với nhu cầu của người dùng, từ đó hệ thống khuyến nghị được nghiên cứu và
phát triển không ngừng nhằm đạt hiệu quả nhất trong việc tương tác với người dùng. Hệ
thống khuyến nghị (Recommender Systems - RS) là giải pháp hiệu quả nhất giải quyết
vấn đề trên.
Chính vì vậy trong luận văn này, chúng tôi xin được trình bày về hệ thống khuyến nghị.
Trong phạm vi luận văn, chúng tôi tập trung nghiên cứu về kỹ thuật lọc cộng tác và phân
tích các phương pháp cơ bản để tìm một người hoặc một nhóm người gần nhất với người
dùng hiện tại cần khuyến nghị. Để giảm thiểu sai số trong dự đoán chúng tôi trình bày
nghiên cứu của mình về phương pháp ma trận thừa số cụ thể hơn là thuật toán gradient
descent ngẫu nhiên. Nội dung chính của luận văn này được chia làm
3 chương:
Chương 1: Giới thiệu tổng quan về hệ thống khuyến nghị
Chương 2: Kỹ thuật lọc cộng tác
Chương 3: Thực nghiệm và đánh giá với dữ liệu phim ảnh
Trong chương 1, chúng tôi đi tìm hiểu chung về hệ thống khuyến nghị, các kỹ thuật lọc
thông tin trong hệ thống khuyến nghị: lọc dựa vào nội dung, lọc cộng tác và kỹ thuật kết
hợp Hybrid, các phương pháp lọc cộng tác như: Lọc dựa vào bộ nhớ và lọc dựa vào mô
hình. Trong chương 2, chúng tôi trình bày chi tiết hơn về kỹ thuật lọc cộng tác, các
phương pháp tính độ tương tự giữa các người dùng, phương pháp ma trận thừa số, thuật
toán gradient descent ngẫu nhiên và các tiêu chuẩn đánh giá dự đoán. Chương 3, chúng tôi
tiến hành thực nghiệm trên bộ dữ liệu của Movielens với 100.000 đánh giá, sau đó dựa
vào kết quả thực nghiệm để đánh giá, phân tích và so sánh tính hiệu quả của từng phương
pháp và thuật toán đã nêu trong chương 2.


5

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ HỆ THỐNG
KHUYẾN NGHỊ
1.1. Khái niệm chung:

1.1.1. Lọc thông tin (Information Filtering _IF)

Hình 1.1: Mô hình hệ thống lọc thông tin
Giảm quá tải thông tin là mục tiêu chính của lọc thông tin (Information Filtering
_IF) và nó đã được công nhận là một trong những ưu tiên trong việc phát triển hệ thống
thông tin dựa trên web hiện nay. Cung cấp các tài liệu có liên quan dựa trên sở thích
khách hàng. Công nghệ khuyến nghị được trình bày như là một mô hình mới của sự tìm
kiếm nơi mà các mặt hàng có liên quan tìm ra người sử dụng thay vì người sử dụng tìm
kiếm chúng. Xu hướng mới trong công nghệ thông tin như mạng xã hội và thiết bị di động


6
đang thực hiện nghiên cứu cá nhân được ưu tiên hàng đầu. Nghiên cứu khách hàng và tiếp
thị có một truyền thống lâu đời. Với những tiến bộ trong công nghệ thông tin, nó đã phát
triển và ngày càng tinh vi mang lại hiệu quả cho các hệ thống trực tuyến. Lọc cộng tác, hệ
thống khuyến nghị, hệ thống trợ giúp cá nhân, lọc xã hội, hệ thống khai thác dữ liệu xã
hội, và các hệ thống thích nghi người dùng có thể được gọi chung là hệ thống lọc thông
tin (IF ). Ngày nay, hệ thống lọc thông tin ở khắp mọi nơi, trong mọi ngành công nghiệp
và dịch vụ, từ tiếp thị cho sức khỏe, du lịch, giáo dục, giải trí,...
Vậy, hệ thống lọc thông tin là một hệ thống loại bỏ thông tin dư thừa hoặc không
mong muốn từ một luồng thông tin sử dụng tự động trên máy vi tính
Mục tiêu chính của nó là quản lý của tình trạng quá tải thông tin và tăng tỷ lệ ngữ
nghĩa của tín hiệu trên nhiễu. Để thực hiện các hồ sơ này được so sánh với một số đặc tính
tham khảo.
1.1.2. Hệ thống khuyến nghị (Recommender System)
Hệ thống khuyến nghị (Recommender System) [7] là một loại hình cụ thể của kỹ thuật lọc
thông tin (như phim ảnh, âm nhạc, trang web, tin tức) mà người dùng quan tâm. Nó rất
quan trọng cho sự thành công của thương mại điện tử và ngành công nghiệp CNTT hiện
nay, và dần dần trở nên phổ cập trong các ứng dụng khác nhau (ví dụ như dự án Netflix,
Google tin tức, Amazon). Là một hệ thống khuyến nghị chuyên nghiệp xây dựng dựa trên

hồ sơ quá khứ của người dùng, hệ thống so sánh hồ sơ của người dùng với một số đặc
điểm tài liệu tham khảo, và tìm cách để dự đoán “đánh giá” mà người dùng sẽ cung cấp
cho một mục mà người dùng đó vẫn chưa đánh giá . Trong hầu hết các trường hợp, hệ
thống khuyến nghị tương ứng với một vấn đề khai thác dữ liệu quy mô lớn. Là hệ thống
có khả năng tự động phân tích, phân loại, lựa chọn và cung cấp cho người dùng những
thông tin, hàng hóa hay dịch vụ mà họ quan tâm.

Hình 1.2: Một ví dụ về mô hình khuyến nghị sản phẩm


7
1.1.3. Giới thiệu bài toán về hệ thống khuyến nghị:
Cho U là tập tất cả người dùng; P là tập tất cả các sản phẩm(sách, bài hát, phim…) có thể
tư vấn. Tập P có thể rất lớn, từ hàng trăm ngàn đến hàng triệu sản phẩm. Tập U trong một
số trường hợp cũng có thể lên tới hàng triệu người dùng. Hàm r(u,p) là những đánh giá
mức độ phù hợp (xếp hạng) của sản phẩm p với người dùng u, r: UxP R. Với mỗi người
dùng u ∈ U cần tìm sản phẩm p’ ∈ P sao cho hàm r(u,p’) đạt giá trị lớn nhất: ∀u
∈U,p’=arg maxp∈ P r(u,p)
Trong hệ thống khuyến nghị, những đánh giá được thể hiện bằng các hình thức thông
thường như: thích và không thích (hình bàn tay với ngón trỏ: youtube.com), số sao
(thường từ 1- 5 sao)…
1.2. Các kỹ thuật lọc cho hệ thống khuyến nghị [4]
Trong việc lựa chọn sản phẩm hoặc dịch vụ (gọi chung là Item), người dùng thường gặp
phải những khó khăn là:
 Lượng Item: Mỗi ngày, có hàng triệu thông tin được đăng tải lên internet mỗi
ngày, người dùng không biết mình nên và không nên sử dụng Item nào?
 Thông tin về Item: do lượng Item là vô cùng lớn, nên User không thể tìm hiểu
được tất cả các Item về nội dung, chức năng cũng như Item có phù hợp với nhu
cầu của user không?...
Gợi ý đặt ra để giải quyết các vấn đề khó khăn trên là:

 Khai thác những khía cạnh cạnh liên quan đến nội dung thông tin sản phẩm hoặc
người dùng đã từng sử dụng hay truy nhập trong quá khứ để khuyến nghị. Đây là
kỹ thuật lọc dựa theo nội dung (Content-Based Filtering)
 Lựa chọn dựa trên ý kiến hay lời khuyên của những người dùng khác về các Item.
Hệ thống khuyến nghị áp dụng các thuật toán tận dụng các gợi ý được cung cấp
bởi một cộng đồng người dùng tương tự sau đó cung cấp cho người dùng đang
hoạt động (người đang tìm kiếm các đề xuất). Phương pháp này được gọi là lọc
cộng tác (Collaborative Filtering _CF)
So với lọc theo nội dung, lọc cộng tác có một số ưu điểm như đơn giản trong cài đặt và có
thể lọc được mọi loại thông tin hay hàng hoá mà không cần phải biểu diễn dưới dạng văn
bản.


8
1.2.1. Kỹ thuật lọc dựa theo nội dung:
Với kỹ thuật khuyến nghị dựa trên nội dung[10], mức độ phù hợp r(u,p) của sản phẩm
phẩm p với người dùng u được đánh giá dựa trên mức độ phù hợp r(u,p j), trong đó pj

P

và tương tự như p. Ví dụ, để gợi ý một bộ phim cho người dùng u, hệ thống tư vấn sẽ tìm
các đặc điểm của những bộ phim từng được u đánh giá cao (như diễn viên, đạo diễn…);
sau đó chỉ những bộ phim tương đồng với sở thích của c mới được giới thiệu.
Hướng tiếp cận dựa trên nội dung bắt nguồn từ những nghiên cứu về thu thập thông tin
(IR - information retrieval) và lọc thông tin (IF - information filtering). Do đó, rất nhiều
hệ thống dựa trên nội dung hiện nay tập trung vào tư vấn các đối tượng chứa dữ liệu text
như văn bản, tin tức, website… Những tiến bộ so với hướng tiếp cận cũ của IR là do việc
sử dụng hồ sơ về người dùng (chứa thông tin về sở thích, nhu cầu…). Hồ sơ này được xây
dựng dựa trên những thông tin được người dùng cung cấp trực tiếp (khi trả lời khảo sát)
hoặc gián tiếp (do khai phá thông tin từ các giao dịch của người dùng).


Hình 1.3: Mô hình kỹ thuật lọc dựa theo nội dung
1.2.2. Kỹ thuật lọc cộng tác (Collaborative Filtering)
Kỹ thuật lọc cộng tác (Collaborative Filtering) dựa trên nguyên tắc hoạt động là các
khuyến nghị dựa trên ảnh hưởng của nhiều người khác nhau, các cộng tác của nhiều người
này sẽ trở thành khuyến nghị. Khác so với kỹ thuật lọc cộng tác dựa trên nội dụng, hệ
thống cộng tác dự đoán mức độ phù hợp r(u,p) của một sản phẩm p với người dùng u dựa
trên mức độ phù hợp r(ui, p) giữa người dùng ui và p, trong đó ui là người có cùng sở thích
với u. Ví dụ, để gợi ý một bộ phim cho người dùng u, đầu tiên hệ thống cộng tác tìm


9
những người dùng khác có cùng sở thích phim ảnh với u. Sau đó, những bộ phim được họ
đánh giá cao sẽ được dùng để tư vấn cho u. Chi tiết cụ thể về kỹ thuật này sẽ được tôi
trình bày trong chương 2.
1.

2.3, Kỹ thuật Hybrid

Kỹ thuật Hybrid[9] là phương pháp kết hợp của cả hai kỹ thuật trên. Một số ứng dụng kết
hợp cả hai kỹ thuật lọc cho hệ thống khuyến nghị dựa theo nội dung và lọc cộng tác. Mỗi
kỹ thuật đều có những ưu điểm và nhược điểm riêng, do đó khi kết hợp có thể khắc phục
những hạn chế của từng kỹ thuật. Nó cải thiện hiệu suất dự đoán, quan trọng hơn, từ đó
vượt qua những vấn đề lọc thông tin như thưa thớt và mất thông tin. Tuy nhiên, sự kết hợp
của hai kỹ thuật để thực hiện sẽ gia tăng phức tạp và giá thành cao. Thông thường hầu hết
các hệ thống khuyến nghị thương mại là Hybrid, ví dụ: hệ thống khuyến nghị tin tức của
Google
Thông thường có 4 cách để kết hợp như sau:
 Cài đặt hai phương pháp riêng rẽ rồi kết hợp dự đoán của chúng với nhau: Có hai
kịch bản cho trường hợp này là:

+ Cách 1: Kết hợp kết quả của cả hai phương pháp thành một kết quả chung duy
nhất.
+ Cách 2: Tại mỗi thời điểm chọn một phương pháp cho kết quả tốt hơn (ví dụ: Hệ
thống Dailylearner)
 Tích hợp các đặc trưng của phương pháp dựa trên nội dung vào hệ thống cộng tác.
 Tích hợp các đặc trưng của phương pháp cộng tác vào hệ thống dựa trên nội dung.
 Xây dựng mô hình hợp nhất, bao gồm các đặc trưng của cả hai phương pháp.
1.3. Các phương pháp lọc cộng tác
Với số lượng quá lớn các sản phẩm có trên internet thì thông thường một người dùng chỉ
đánh giá hữu hạn m sản phẩm (với m sản phẩm được đánh giá nhỏ hơn rất nhiều so với
tập M sản phẩm). Khó khăn đặt ra là dự đoán đánh giá một người dùng cho tập M sản
phẩm là điều rất khó khăn, hơn nữa tập M sản phẩm luôn luôn thay đổi và theo thời gian
thì ngày càng tăng lên. Ngoài ra để dự đoán đánh giá của N người dùng với M sản phẩm
sẽ gây ra tốc độ xử lý chậm => mất nhiều thời gian, lãng phí tài nguyên… Một trong


10
những giải pháp đặt ra để giải quyết vấn đề trên là: kỹ thuật lọc cộng tác (Collaborative
Filtering)
Lọc cộng tác cho hệ thống khuyến nghị được tiếp cận theo hai phương pháp chính: Lọc
cộng tác dựa vào bộ nhớ (Memory-Based Collaborative Filtering) và lọc cộng tác dựa vào
mô hình (Model-Based Collaborative Filtering) . Điểm khác biệt quan trọng trong hai
phương pháp tiếp cận là: Lọc dựa vào bộ nhớ tiến hành xây dựng đồng thời mô hình huấn
luyện và mô hình dự đoán. Ngược lại, lọc dựa vào mô hình xây dựng mô hình huấn luyện
và mô hình dự đoán độc lập nhau. So với lọc cộng tác dựa vào mô hình, lọc cộng tác dựa
vào bộ nhớ được áp dụng rộng rãi hơn do tính hiệu quả, đơn giản và có độ chính xác khá
cao.
1.3.1, Lọc cộng tác dựa vào bộ nhớ
Phương pháp lọc cộng tác dựa vào bộ nhớ


[11]

thường sử dụng toàn bộ dữ liệu đã có của

người dùng để dự đoán đánh giá của người đó về một sản phẩm mới. Là phương pháp có
khả năng đưa trực tiếp dữ liệu mới vào bảng dữ liệu nên nó đạt khá nhiều thành công khi
được áp dụng vào các ứng dụng thực tế. Đặc biệt, kỹ thuật này phát huy tính hiệu quả cao
trong các hệ thống trực tuyến (là nơi luôn có dữ liệu mới được cập nhật) thường đưa ra
các dự đoán chính xác hơn.
Lọc cộng tác dựa vào bộ nhớ (Memory-Based Collaborative Filtering) được thực hiện
theo hai phương pháp chính: Lọc dựa vào người dùng (User-Based Collaborative
Filtering) và lọc dựa vào sản phẩm (Item-Based Collaborative Filtering) . Hiệu quả của
các phương pháp lọc dựa vào bộ nhớ phụ thuộc vào độ đo tương tự giữa các cặp người
dùng hoặc sản phẩm. Phương pháp lọc cộng tác dựa vào bộ nhớ, tôi sẽ trình bày cụ thể
hơn trong chương 2.
1.3.2, Lọc cộng tác dựa vào mô hình (Model-Based Collaborative Filtering)
Phương pháp tiếp cận dựa trên mô hình

[17]

không sử dụng tất cả dữ liệu đã có để đưa ra

dự đoán, thay vào đó chúng nắm bắt thông tin trong từng bước giống như một sự thỏa
thuận về mô hình các sở thích người dùng. Các mô hình được phát triển bằng cách sử
dụng phương thức khai thác dữ liệu, thuật toán học máy để tìm mô hình dựa trên dữ liệu
huấn luyện. Chúng được sử dụng để đưa ra dự đoán cho dữ liệu thực tế. Có rất nhiều thuật
toán CF dựa trên mô hình như: mạng Bayes , mô hình phân nhóm , mô hình ngữ nghĩa
tiềm ẩn.



11
Ưu điểm của mô hình này là xử lý dữ liệu thưa thớt tốt hơn so với lọc dựa trên bộ
nhớ. Điều này giúp với khả năng mở rộng với các tập dữ liệu lớn, nó cải thiện hiệu suất
dự đoán. Những nhược điểm của phương pháp này là giá thành cao trong việc xây dựng
mô hình, cần phải có một sự cân bằng giữa hiệu suất và khả năng mở rộng dự đoán, có thể
bị mất thông tin hữu ích do mô hình giảm và một số mô hình có khó khăn trong việc giải
nghĩa các dự đoán.


12

CHƯƠNG 2: KỸ THUẬT LỌC CỘNG TÁC
Phương pháp khuyến nghị tôi đang xem xét trong chương này được gọi là lọc cộng tác.
Nó được gọi là cộng tác bởi vì nó đưa ra các khuyến nghị dựa trên những người dùng
khác trong thực tế, mọi người cộng tác để đưa ra khuyến nghị. Nguyên lý hoạt động của
hệ thống khuyến nghị là: giả sử để giới thiệu một cuốn sách cho bạn. Tôi tìm kiếm những
người sử dụng khác của trang web để tìm một trong số đó là người tương tự như bạn dựa
trên những cuốn sách mà bạn và người sử dụng đó thích.
2.1.

Giới thiệu bài toán lọc cộng tác
Cho một tập hữu hạn gồm có N người dùng U = { u 1,u2,…,uN }, một tập gồm M

sản phẩm P = { p1,p2,…,pM }. Mỗi sản phẩm pj ∈ P có thể là phim, ảnh, tạp chí, tài liệu,
sách, báo,hàng hóa, dịch vụ hoặc bất kỳ dạng thông tin nào mà người dùng cần đến. Một
ma trận R = ( rij ) với i = 1,…N ; j = 1,…,M thể hiện mối quan hệ giữa tập người dùng U
và tập sản phẩm P. Trong đó rij là đánh giá của người dùng ui cho sản phẩm pj.
Các giá trị rij nhận giá trị theo các hình thức: thu thập trực tiếp ý kiến đánh giá của người
dùng ui về sản phầm pj hoặc thu thập gián tiếp thông qua cơ chế phản hồi của người dùng.
Gọi ux là người dùng hiện thời cần được khuyến nghị sản phẩm p y, với rxy=Ø (nghĩa là

người dùng ux chưa đánh giá hoặc chưa từng biết đến sản phẩm py). Bài toán lọc cộng tác
có nhiệm vụ dự đoán đánh giá r xy của người dùng ux với sản phẩm py. Từ đó, giới thiệu
cho người dùng ux những sản phẩm phù hợp nhất dựa trên giá trị r xy, những sản phẩm
được khuyến nghị cho người dùng ux là những sản phẩm có đánh giá cao.
2.2.

Các phương pháp tính độ tương tự giữa các người dùng

Cho ui là người dùng hiện thời, ua là người dùng cần tính độ tương tự với người dùng u i,
rip là đánh giá của người dùng ui cho sản phẩm p và rap là đánh giá của người dùng u a cho
sản phẩm p. Với tập m sản phẩm là những sản phẩm mà người dùng u i và người dùng ua
cùng đánh giá.

2.2.1. Khoảng cách Manhattan
Một trong những cách đơn giản nhất để đo khoảng cách giữa hai điểm dữ liệu là
khoảng cách Manhattan[1].


13
Tính độ tương tự giữa người dùng u a và ui sử dụng phương pháp khoảng cách Manhattan
được tính bằng công thức sau:
m

dManhattan ua, ui rip rap
p1

Trong không gian 2 chiều, mỗi người dùng được đại diện bởi một điểm (x,y), tôi sẽ
bổ sung thêm subscript cho x và y để tham khảo những người dùng khác nhau. Vì vậy, ta
có (x1,y1) và (x2,y2) lần lượt là các điểm dữ liệu thể hiện đánh giá của u a và ui cho 2 sản
phẩm khác nhau x và y. Khi đó khoảng cách Manhattan được tính bằng công thức sau:

| x1 - x2| + | y1 - y2 |
Cho bảng ví dụ 1 sau:
The Hobbit

Harry Potter

John

2

2

Peter

4

4

Bảng 2.1: Ví dụ 1 về người dùng đánh giá sản phẩm
Khi đó, khoảng cách Manhattan được định nghĩa lại và biểu diễn trong không gian 2 chiều
như sau:


14

Hình 2.1: Mô hình đồ thị tính khoảng cách Manhattan dManhattan(Peter,

John)=|2-4|+|2-4|=2+2=4
Giá trị khoảng cách giữa Peter và John khi áp dụng phương pháp tính khoảng cách
Manhattan là: dManhattan=4. Áp dụng tương tự phương pháp này để tính khoảng cách với

người dùng khác, sau đó sẽ chọn người dùng có giá trị khoảng cách nhỏ nhất với người
dùng hiện tại.
2.2.2. Khoảng cách Euclidean.
Ưu điểm rất rõ ràng khi sử dụng công thức tính khoảng cách Manhattan là tính toán đơn
giản và rất nhanh. Tuy nhiên, khoảng cách Euclidean [1] thay vì đi xung quanh các khối thì
bạn chỉ cần vẽ một đường thẳng giữa hai điểm dữ liệu và đo khoảng cách giữa hai điểm
bằng cách sử dụng định lý Pythagorean. Công thức tính khoảng cách Euclidean tổng
quát:

m

ua, ui  rip rap 
p1

2

dEuclidean


15
Trong không gian 2 chiều, áp dụng công thức tính khoảng cách Euclidean như sau:
Với hai điểm dữ liệu (x1,y1) và (x2,y2) lần lượt là các điểm dữ liệu thể hiện đánh giá của u a
và ui cho 2 sản phẩm khác nhau x và y.
Bảng dữ liệu 2.1 thể hiện đánh giá của Peter và John đối với 2 bộ phim The Hobbit và
Harry Potter là:
The Hobbit
Harry Potter
John

2


2

Peter

4

4

Khi đó, khoảng cách Euclidean được tính như sau:

Hình 2.2: Mô hình đồ thị tính khoảng cách Euclidean

dEuclidean (Peter,John) 

24 24  8  2.8
2

2

Giá trị khoảng cách giữa Peter và John khi áp dụng phương pháp tính khoảng cách
Euclidean là: dEuclidean=2.8. Áp dụng tương tự phương pháp này để tính khoảng cách với
người dùng khác, sau đó sẽ chọn người dùng có giá trị khoảng cách nhỏ nhất với người
dùng hiện tại.
2.2.3. Hệ số tương quan Pearson.


16
Phức tạp hơn hai công thức tính khoảng cách Manhattan và khoảng cách Euclidean
nhưng thường nhận kết quả tốt hơn với dữ liệu không bình thường, tôi đang nói đến là

trường hợp người dùng có những hành vi đánh giá là khác nhau như: một người dùng chỉ
cung cấp những đánh giá xấu (đánh giá thấp) cho hầu hết tất cả các sản phẩm người đó
đánh giá, người dùng khác lại thường xuyên cung cấp những đánh giá cao (tốt) cho các
sản phẩm người đó đã đánh giá,… Trong trường hợp này, sử dụng phương pháp hệ số
tương quan Pearson[1] sẽ đạt kết quả tối ưu hơn so với hai phương pháp trên. Hơn nữa
trong thực tế, do tính chất đa người dùng dẫn tới nhiều quan điểm khác nhau nên trường
hợp này phần lớn đều xảy ra.
Hệ số tương quan Pearson sẽ có giá trị nằm trong khoảng từ -11. Khi tính khoảng cách
giữa hai người dùng mà R pearson=1 thì hai người dùng đó có quan điểm đánh giá giống
nhau hoàn toàn, Rpearson= -1 thì hai người dùng này sẽ bất đồng với nhau về mặt quan
điểm đánh giá. Vì vậy dựa vào hệ số tương quan Pearson này chúng tôi có thể tìm ra một
người giống với người mà chúng tôi quan tâm mà không bị ảnh hưởng bởi hành vi người
dùng.
Hệ số tương quan Pearson được tính bằng công thức tính sau:
m
m

R Pearson



 u a , u i 

Cho bảng dữ liệu 2 sau:
Book 1

p 1

r ap .rip 




p 1

m

r ap



p 1

rip

m

2
2

 m
  
 m
 

  r ap    m
  rip  
m

 p 1
  

 p 1
 
2
2
  r ap 
 *   ri p 

m
m
 p 1
  p 1


 


 


Book 2

Book 3

Book 4

Book 5

Peter

1,5


1,5

3

2,7

5

John

1

2

2

3

4

Bảng 2.2: Ví dụ 2 về người dùng đánh giá sản phẩm
Áp dụng công thức tính hệ số tương quan Pearson ta có thể tính được sự tương tự
giữa Peter và John như sau:


17
m

r r

ap

ip =1*1,51,5*23*2

2,7*35*4 =38,6 p1

m

r

ap

=1,5+1,5+3+2,7+5=12

p1 m

r

ip =1,5+2+2+3+4=12,5

p1 m

r

ap

2

=1,52+1,52+32+2,72+52=45,79


p1

m

r

ip2 =12+22+22+32+42=34 p1






m

2

m

r

rap2 p1 ap 

13,7  45,79 37,54  8,25
2

 45,79 
m

p1






m

5
2

r rap 
122  3428,8  5,2
2  p1
 34
m
5

m ap

p1

Với các giá trị tham số trên ta có:


18






5

38,613,7*12  56,,7255  0,87

RPearson Peter,John 
8,25*5,2
Sau khi áp dụng công thức tính hệ số tương quan Pearson có thể thấy được giá trị
khoảng cách giữa Peter và John là: RPearson=0,87. Áp dụng tương tự phương pháp này để
tính khoảng cách với người dùng khác, sau đó sẽ chọn người dùng có giá trị RPearson với
người dùng hiện tại sao cho gần 1 nhất.
Trong không gian hai chiều thì ta có phương pháp hệ số tương quan Pearson được định
nghĩa lại và biểu diễn như sau:

Hình 2.3: Mô hình đồ thị tính hệ số tương quan Pearson

2.2.4. Hệ số tương tự Cosine.
Hệ số tương tự Cosine [1] (hay hệ số tương đồng Cosine) là đo lường về sự giống nhau
giữa hai vectơ của một vùng bên trong sản phẩm, cụ thể sẽ đo góc cosin giữa chúng. Hệ
số tương tự Cosine phán đoán về định hướng chứ không phải về độ lớn: hai vector có


19
cùng định hướng là có hệ số tương đồng Cosine là 1, hai vector có giá trị góc là 90 0 thì có
độ tương tự là 0 và hai vector được coi là đối nghịch nhau nếu có độ tương đồng là -1.
Cosine tương tự được đặc biệt sử dụng trong không gian dương tính, trong đó kết quả
trong khoảng [0,1].
Đối với mạng trực tuyến, với số lượng người dùng và sản phẩm là khổng lồ dẫn
đến vấn đề thực tế là các tập dữ liệu đều rất lớn và thưa thớt, nghĩa là với tập các sản
phẩm vô cùng đồ sộ rất nhiều trường hợp có nhiểu sản phẩm không được đánh giá hoặc
không được người dùng biết đến. Năm 2011, Amazon có hơn 2 triệu đầu sách dẫn đến

trường hợp nhiều người dùng không hề đánh giá một trong những đầu sách tôi đánh giá.
Spotify có khoảng 15 triệu bài hát, vậy thì để tìm thấy người dùng tương tự tôi thì đa
phần khả năng xảy ra sẽ là tôi và người dùng khác có số bài hát cùng nghe chung bằng
0.
Hệ số tương tự Cosine sẽ khắc phục phần nào vấn đề thưa thớt dữ liệu này, nó sẽ bỏ qua
các kết quả 0-0 . Hệ số tương tự Cosine được định nghĩa như sau :
m

r
Cosua ,ui  



m p12

p1

r

ap ip



r r

m ip2 ap

p1

Cho bảng số liệu 2.3 sau:

Kafka on the Shore

The Little prince

Peter

4

2

John

3

3

Bảng 2.3: Ví dụ 3 về người dùng đánh giá sản phẩm
Ta có:
m

r
COS ua ,ui  

p1

r

ap ip




4*3 2*3

 18  0,77


20
m

m

r r
p 1

2
ap

p 1

2
ip

42  22 32  32

23, 24

Trong không gian hai chiều, hệ số tương tự Cosine được định nghĩa lại và biếu diễn dưới
dạng đồ thị không gian hai chiều như sau:

Hình 2.4: Mô hình đồ thị tính hệ số tương tự Cosine

Hệ số tương tự Cosine cũng có phạm vi từ -11 giống như hệ số tương quan Pearson,
khi giá trị Cos(ua,ui) = 1 thì người dùng u a với người dùng ui tương đồng nhau , họ giống
nhau một cách hoàn hảo về sở thích, khi giá trị Cos(u a,ui) = -1 thì người dùng ua với
người dùng ui không tương đồng nhau , khác nhau hoàn toàn về sở thích. Các phương
pháp tính độ tương tự giữa các người dùng vừa được trình bày ở trên là những phương
pháp cơ bản nhất. Tùy vào trạng thái của tập dữ liệu khac nhau để áp dụng các phương
pháp tính khoảng cách giữa hai người dùng, nhằm mục đích phát huy được tính hiệu quả
và khắc phục được nhược điểm của từng phương pháp.
2.3.

Phương pháp cải tiến K-hàng xóm gần nhất (k-nearest neighbor)
KNN (còn được gọi là phương pháp tiếp cận dựa trên bộ nhớ) sử dụng toàn bộ cơ

sở dữ liệu người dùng sản phẩm để tạo ra các dự đoán trực tiếp.


21
Hành vi đánh giá của người dùng có nhiều đặc điểm khác nhau như: người dùng luôn cho
các đánh giá tương đối cao, người dùng khác khá khó tính lại cho đánh giá luôn ở mức
thấp, hoặc người dùng này lại đánh giá cho một sản phẩm chỉ vì lý do cá nhân nào đấy…
Dẫn đến, vấn đề khuyến nghị dựa vào một người dùng gần nhất cho người dùng hiện tại
gặp khó khăn. Vì thế, giải pháp đặt ra là nên dựa vào nhiều hơn 1 người dùng tương tự để
tiến hành khuyến nghị cho người dùng hiện tại. Tuy nhiên, bốn phương pháp tính độ
tương tự được trình bày ở trên chỉ dựa vào người dùng gần nhất để khuyến nghị cho
người dùng hiện tại nên trong phần này chúng tôi sẽ trình bày nghiên cứu của mình về
một phương pháp khuyến nghị dựa trên một tập người dùng tương tự nhất là phương pháp
K-láng giềng gần nhất. Thuật toán dựa trên nguyên tắc thực tế là nếu chúng ta muốn dự
đoán hành vi của một cá nhân nào đó, chúng ta bắt đầu bằng cách nhìn vào các hành vi
của những cá nhân gần nhất với cá nhân đó. Và giá trị trung bình của các hành vi của các
láng giềng này sẽ dự đoán hành vi của cá nhân đó.

Bài toán:
Cho tập hữu hạn U={u1, u2,…., uN} là tập N người dùng; P={p1, p2, …, pM} là tập M
các sản phẩm có thể tư vấn cho người dùng ua.
Một người dùng dựa trên phương pháp lọc cộng tác KNN bao gồm hai giai đoạn chính là:
 Giai đoạn tìm k người dùng gần nhất (hay còn gọi là giai đoạn hình thành vùng lân
cận)
 Giai đoạn khuyến nghị sản phẩm.
Với mỗi giai đoạn thì có rất nhiều phương pháp để thực hiện, tuy nhiên ở đây tôi chỉ trình
bày mỗi giai đoạn một phương pháp.
K-láng giềng gần nhất được phân ra làm hai phương pháp cơ bản là:
2.3.1 Thuật toán KNN dựa trên người dùng.
Yêu cầu thuật toán: Tìm tập K=(ux1, ux2,…,uxk) người dùng tương tự nhất với ua (xác định
vùng lân cận). Sau đó, dựa vào đánh giá của K người dùng này với sản phẩm p j để dự
đoán đánh giá của người dùng ua với sản phẩm pj. Các bước tiến hành:
Bước 1: Để tìm được k người dùng gần nhất thì sử dụng một trong bốn phương pháp đã
nêu ra ở trên để tính khoảng cách của người dùng hiện tại u a với những người dùng khác.
Sau khi đã có khoảng cách giữa u a và ui là d(ua, ui) thì tôi dựa vào các khoảng cách đó để
tìm ra k người dùng gần nhất (ux1,ux2,…uxk) với ua:


22
k={mini d(ui,ua)}
Bước 2: Sau khi tìm được k người dùng gần nhất thì tiến hành dự đoán đánh giá của u a
cho sản phẩm pj
a.

Với k=1 thì lúc này thuật toán k-láng giềng gần nhất dựa trên người dùng trở
thành thuật toán tìm người dùng tương tự nhất đối với người dùng u, và chúng ta sẽ sử
dụng một trong 4 phương pháp tìm người dùng tương tự nhất đã trình bày ở trên.


b.

Với k≠1 thì ta có: Những vấn đề nảy sinh và giải pháp:
 Khi đã có k người dùng gần nhất thì lựa chọn người dùng u xi nào để dựa vào đánh
giá của người dùng đó với p j để dự đoán đánh giá của người dùng u a cho sản phẩm
pj, nếu chọn tất cả thì phải tổng hợp ra sao để ra được một dự đoán đánh giá r xj (là
giá trị dự đoán được tổng hợp của k người dùng gần nhất đối với sản phẩm p j).
Trong trường hợp này, tôi có công thức dự đoán đánh giá raj bằng công thức sau:
k

raj rxijhi (uxi )
i1

Trong đó:
+ rxij là đánh giá của người dùng uxi cho sản phẩm j
+ hi(uxi) là mức độ ảnh hưởng của người dùng u xi trong việc đưa ra dự đoán đánh giá
rxj, hi(uxi) được tính bằng công thức sau:

hi uxi  

k

d ua ,uxi 

d u ,u 
a

xi

i1


 Trong số k người dùng gần nhất này xuất hiện một người dùng hoặc nhiều hơn 1
người dùng cũng không đánh giá sản phẩm r xj như người hiện thời ua. Trong trường
hợp này, tôi dự đoán giá trị raj theo công thức sau:


23

raj k rxij

hi (uxi )
H

i1

Trong đó: H : là tổng số các mức độ ảnh hưởng của những người láng giềng gần nhất
khác mà họ có đánh giá, H được tính theo công thức:
k

H hi (uxi )
i1

 Trường hợp, tất cả k người láng giềng gần nhất đều đánh giá sản phẩm p j thì có thể dự
đoán đánh giá của người dùng ua với sản phẩm pj bằng công thức sau:
k

(r

xi pj


d(ua ,uxi ))

rapj 

i1

d(u ,u
a

xi

)

i1

Trong hầu hết trường hợp của dự án Netflix, hiệu quả thuật toán K-láng giềng gần nhất
dựa trên người dùng là kém hơn so với thuật toán K-láng giềng gần nhất dựa trên sản
phẩm. Điều này là do các dữ liệu dựa trên người dùng thường thưa thớt (tức là rất ít khả
năng một sản phẩm được đánh giá bởi 1 hoặc 2 người, và rất có thể là một người dùng chỉ
đánh giá 1 hoặc 2 sản phẩm). Ngoài ra, vì thông thường thì người dùng nhiều hơn so với
sản phẩm, nên thuật toán K-láng giềng gần nhất dựa trên người dùng cũng dẫn đến một
thách thức tính toán.
2.3.2 Thuật toán KNN dựa trên sản phẩm: Input:
Người dùng u và tập N các sản phẩm
Output: Dự đoán đánh giá của người dùng u với sản phẩm m dựa vào các đánh giá
của người dùng u với các sản phẩm j ∈ K sản phẩm tương tự nhất với m.


24
Thuật toán KNN dựa trên sản phẩm [2] là thuật toán rất đơn giản mà mang lại hiệu quả cao

trong vấn đề khuyến nghị người dùng. Triết lý của nó là như sau: để xác định đánh giá của
người dùng u trên sản phẩm m, chúng ta có thể tìm thấy các sản phẩm khác tương tự như
sản phẩm m, và dựa trên những đánh giá của u xếp hạng cho những sản phẩm tương tự để
chúng ta suy ra đánh giá của người dùng u trên sản phẩm m.
Để xác định sản phẩm nào là tương tự, tôi sử dụng hệ số tương tự cosin để xác định độ
tương tự giữa hai sản phẩm a và b, hệ số tương tự cosin được định nghĩa lại như sau:

 R

Cos(a,b)  
uU(

ua

 Ru Rub  Ru 



a)U(b)



2

Rua  Ru
uU(a)U(b)

2

Rub  Ru

uU(a)U(b)

Trong đó: Rua là đánh giá của người dùng u cho sản phẩm a, Ru là giá trị trung bình các
đánh giá của người dùng u, U(a) là tập người dùng đánh giá cho sản phẩm a, U(a)  U(b) là
tập những người dùng đánh giá cho cả hai sản phẩm a và b.
Phương pháp KNN tìm thấy K những sản phẩm tương tự nhất với mỗi sản phẩm bằng
cách sử dụng phương pháp hệ số tương tự Cosine được định nghĩa trên, sau đó sử dụng
các phương tiện có trọng số để dự đoán xếp hạng.
Tôi có công thức tính K-láng giềng gần nhất dựa trên sản phẩm như sau:

Pum 

jN




Cosm, jRuj

uk (m)

Cosm, j

jNuk (m)

Trong đó:

Nuk (m) 

{j:jK sản phẩm tương tự nhất với sản phẩm m mà người dùng u đã


đánh giá j}
Ruj là đánh giá mà người dùng u đã đánh giá sản phẩm j
Pum là dự đoán đánh giá của người dùng u với sản phẩm m.


25

Khi dự đoán đánh giá của người dùng u i đối với item pj thì việc xảy ra sai số so với thực
tế đánh giá của user ui đối với item pj là không tránh khỏi. Có nhiều biện pháp để xác định
sai số của dự đoán, trong khuôn khổ luận văn này tôi sẽ trình bày về hai phương pháp là
MAE và RMSE, và hai phương pháp này sẽ được tôi trình bày tại phần 2.5 của chương 2.
Khi giá trị sai số càng nhỏ nghĩa là giá trị dự đoán có định hướng càng gần với giá trị
thực tế thì hệ thống khuyến nghị càng đạt hiệu quả cao. Để làm được điều đó cần tối thiểu
hàm sai số, sau đây, tôi sẽ trình bày về một trong các thuật toán giúp giảm thiểu hàm sai
số.
2.4.

Mô hình nhân tố ẩn.

Hai lĩnh vực chính của lọc cộng tác là phương pháp vùng lân cận và các mô hình nhân tố
ẩn.
2.4.1 Phương pháp tiếp cận vùng lân cận (the neighborhood approach)
Là phương pháp được tập trung vào tính toán mối quan hệ giữa các sản phẩm hoặc giữa
các người dùng.
Dựa trên sản phẩm: Cách tiếp cận theo định hướng sản phẩm: là dự đoán đánh giá của
người dùng u cho một sản phẩm p’ dựa trên xếp hạng mặt hàng "láng giềng" p cũng được
đánh giá bởi cùng một người dùng u. Một “láng giềng” của sản phẩm là những sản phẩm
khác mà có xu hướng được xếp hạng tương tự của người dùng u. Ví dụ, hãy xem xét bộ
phim Saving Private Ryan. Các phim láng giềng có thể bao gồm các bộ phim chiến tranh,

phim Spielberg và phim Tom Hanks. Để dự đoán đánh giá của một người dùng cụ thể cho
Saving Private Ryan, chúng tôi sẽ xem xét cho các láng giềng gần nhất của bộ phim mà
người dùng này thực sự đánh giá.
Dựa trên người dùng: là phương pháp dự đoán đánh giá của người dùng u cho một sản
phẩm p’ dựa trên các người dùng “láng giềng” với người dùng u. “Láng giềng” với người
dùng u là người dùng khác mà có quan điểm về các sản phẩm tương tự như người dùng u.
Ví dụ: để gợi ý một sản phẩm cho người dùng u, đầu tiên hệ thống cộng tác tìm những
người dùng khác có cùng sở thích với người dùng u được gọi là “láng giềng” với người
dùng u. Sau đó, những sản phẩm được các “láng giềng” đánh giá cao sẽ được dùng để tư
vấn cho người dùng u.


×