Kỷ yếu Hội nghị Quốc gia lần thứ VIII về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR); Hà Nội, ngày 9-10/7/2015<br />
DOI: 10.15625/vap.2015.000199<br />
<br />
PHƯƠNG PHÁP XÂY DỰNG HỆ THỐNG GỢI Ý SẢN PHẨM SỬ DỤNG<br />
PHẢN HỒI TIỀM ẨN<br />
Lưu Nguyễn Anh Thư, Nguyễn Thái Nghe<br />
Khoa Công nghệ Thông tin và Truyền thông, Trường Đại học Cần Thơ<br />
lnathu@cit.ctu.edu.vn, ntnghe@cit.ctu.edu.vn<br />
Tóm tắt: Hệ thống gợi ý (Recommender Systems) đã và đang được ứng dụng trong rất nhiều lĩnh vực như giải trí, giáo dục,<br />
khoa học, và đặc biệt là thương mại điện tử. Việc tích hợp kỹ thuật gợi ý vào các hệ thống trực tuyến nhằm tự động phân tích các<br />
hành vi trong quá khứ của người dùng để dự đoán nhu cầu/sở thích của họ trong tương lai, từ đó có những đề xuất hợp lý cho người<br />
dùng là rất cần thiết trong thực tế.<br />
Bài viết này đề xuất một giải pháp xây dựng hệ thống gợi ý dành cho bán hàng trực tuyến sử dụng phản hồi tiềm ẩn (implicit<br />
feedbacks) từ người dùng. Trước hết chúng tôi đề xuất phương pháp thu thập thông tin phản hồi tiềm ẩn, sau đó tìm hiểu các<br />
phương pháp gợi ý phù hợp từ đó đề xuất sử dụng phương pháp tập hợp mô hình để kết hợp các mô hình dự đoán nhằm tăng độ<br />
chính xác. Kế đến là việc cài đặt, điều chỉnh, kiểm thử và và tích hợp các mô hình đã đề xuất vào hệ thống nhằm gợi ý các sản phẩm<br />
phù hợp với sở thích của người dùng. Sau cùng, chúng tôi thu thập phản hồi từ người dùng thực nhằm đánh giá hiệu quả của<br />
phương pháp đã đề xuất. Kết quả cho thấy mô hình đề xuất có khả năng gợi ý tốt cho người dùng và hoàn toàn có thể tích hợp vào<br />
các hệ thống bán hàng trực tuyến.<br />
<br />
Từ khóa: Hệ thống gợi ý, bán hàng trực tuyến, phản hồi tiềm ẩn, kỹ thuật phân rã ma trận<br />
I. GIỚI THIỆU<br />
Hệ thống gợi ý (Recommender System - RS) được ứng dụng khá thành công trong thực tiễn giúp người dùng giải<br />
quyết vấn đề quá tải thông tin. Hiện nay, hệ thống gợi ý đang được nghiên cứu và ứng dụng ở nhiều lĩnh vực khác nhau<br />
đặc biệt là thương mại điện tử. Trên thế giới, đã có nhiều công ty, tổ chức áp dụng thành công hệ thống gợi ý như là một<br />
dịch vụ thương mại của mình nhằm gợi ý các dịch vụ, sản phẩm và các thông tin cần thiết đến người dùng như: website<br />
mua sắm trực tuyến Amazon (www.amazon.com) cung cấp cho khách hàng những sản phẩm mà họ có thể quan tâm, cổng<br />
video clip YouTube (www.youtube.com), gợi ý phim của MovieLens (www.movielens.org),... Việc gợi ý sản phẩm phù<br />
hợp sẽ góp phần làm tăng doanh số bán hàng hoặc số lượng truy cập, download của hệ thống. Đồng thời giúp cho khách<br />
hàng có thể tìm kiếm được những thông tin thú vị hoặc những sản phẩm mà họ muốn tìm dễ dàng hơn.<br />
Hệ thống gợi ý giúp người dùng chọn lựa được thông tin phù hợp nhất cho mình dựa trên những hành vi/phản<br />
hồi (feedbacks) mà người dùng đã thực hiện trong quá khứ. Các phản hồi có thể được xác định một cách tường minh<br />
(explicit feedback) như thông qua việc đánh giá/xếp hạng (ví dụ, rating từ 1 đến 5; hay like (1) và dislike (0),…) mà<br />
người dùng đã bình chọn trên sản phẩm – trong trường hợp này gọi là dự đoán xếp hạng (rating prediction) [4] hoặc<br />
các phản hồi có thể được xác định một cách không tường minh hay còn gọi là tiềm ẩn (implicit feedbacks) như số lần<br />
click chuột, số lần chọn mua sản phẩm, thời gian mà người dùng đã duyệt/xem sản phẩm,…<br />
Rất nhiều hệ thống lớn thu thập thông tin phản hồi từ khách hàng một cách tường minh, như Ebay, Amazon,<br />
LastFM, NetFlix,.. ở đó người sẽ trực tiếp đánh giá trên sản phẩm, như bình chọn từ (không thích) đến<br />
(rất thích); hay Youtube thu thập thông tin qua like( )/ disklike( ), và các hệ thống khác [3]. Thông qua việc thu thập<br />
phản hồi tường minh, hệ thống dễ dàng xác định mức độ yêu thích của người dùng trên sản phẩm, từ đó dự đoán các<br />
sản phẩm tiếp theo mà người dùng có thể thích để gợi ý cho họ. Tuy nhiên, điều này có thể gây bất lợi do không phải<br />
người dùng lúc nào cũng sẳn sàng/vui lòng để lại các phản hồi của họ, vì vậy hệ thống phải nên tự xác định người dùng<br />
cần gì thông qua phản hồi tiềm ẩn.<br />
Trong bài viết này, chúng tôi đề xuất một giải pháp xây dựng hệ thống gợi ý cho bán hàng trực tuyến, sử dụng<br />
phản hồi tiềm ẩn từ người dùng (như số lần duyệt/xem sản phẩm, số lần mua sản phẩm). Trước hết chúng tôi đề xuất<br />
phương pháp thu thập và khai thác thông tin phản hồi tiềm ẩn từ người dùng, sau đó lựa chọn và đề xuất kết hợp các<br />
mô hình sử dụng thông tin phản hồi tiềm ẩn. Kế đến là việc xây dựng hệ thống và tích hợp các giải thuật gợi ý vào hệ<br />
thống. Sau khi có hệ thống hoàn chỉnh, chúng tôi thu thập dữ liệu từ người dùng thực nhằm đánh giá hiệu quả của hệ<br />
thống gợi ý. Kết quả cho thấy khả năng mà hệ thống gợi ý phù hợp với sở thích của từng người dùng là khá tốt.<br />
II. HỆ THỐNG GỢI Ý (Recommender Systems - RS)<br />
A. Hệ thống gợi ý<br />
Mục đích của hệ thống gợi ý là dựa vào sở thích, thói quen, nhu cầu,... trong quá khứ của người sử dụng để dự<br />
đoán sở thích trong tương lai của họ. Trong hệ thống gợi ý người ta quan tâm đến 3 đối tượng: người dùng (user), sản<br />
phẩm (item - item gọi chung là mục tin nhưng trong bài viết này liên quan đến gợi ý sản phẩm nên từ đây về sau chúng<br />
tôi tạm gọi item là sản phẩm) và các phản hồi của người dùng trên sản phẩm, thường là các xếp hạng (rating).<br />
<br />
Lưu Nguyễn Anh Thư, Nguyễn Th Nghe<br />
L<br />
hái<br />
<br />
601<br />
<br />
Thông t<br />
thường người ta gọi U là tập tất cả người dùng (users) và u là một ngư dùng cụ th nào đó (u∈U). I là tập<br />
p<br />
v<br />
ười<br />
hể<br />
tấ cả các sản p<br />
ất<br />
phẩm (items) s được gợi ý n máy tính, sách, phim ản và i là một sản phẩm cụ thể nào đó (i∈I). I là tập<br />
sẽ<br />
như<br />
nh,..<br />
t<br />
ụ<br />
các sản phẩm c thể lên đến hàng trăm, hà nghìn hoặc thậm chí là hàng triệu sản p<br />
c<br />
có<br />
àng<br />
c<br />
h<br />
phẩm trong m số ứng dụng, như việc<br />
một<br />
gợi ý về sách, p<br />
g<br />
phim ảnh, âm nhạc. Tương t như vậy, tập người dùng U cũng có thể rất lớn, lên đế hàng triệu trường hợp.<br />
tự<br />
p<br />
ến<br />
R là một tập h các giá trị dùng để ước l<br />
hợp<br />
lượng ‘sở thích’ (preference của người dù<br />
e)<br />
dùng, và rui∈R (R⊂ℜ) là xếp hạng của<br />
người dùng u t<br />
n<br />
trên sản phẩm i. Giá trị rui c thể được xác định một cách tường mi (explicit f<br />
m<br />
có<br />
c<br />
inh<br />
feedback) như thông qua<br />
ư<br />
việc đánh giá/x hạng (ví d rating từ 1 đến 5; hay lik (1)/ dislike (0),…) mà u đ bình chọn c i – trong trường hợp<br />
v<br />
xếp<br />
dụ,<br />
ke<br />
đã<br />
cho<br />
t<br />
này gọi là dự đ<br />
n<br />
đoán xếp hạng (rating predic<br />
ction) hoặc rui có thể được xá định một cá không tườ minh hay còn gọi là<br />
ác<br />
ách<br />
ờng<br />
y<br />
tiềm ẩn (impli feedback) như số lần cl chuột, số lần chọn mua sản phẩm, thờ gian mà u đ duyệt/xem i,… [2][7].<br />
t<br />
icit<br />
)<br />
lick<br />
ời<br />
đã<br />
Bài viết này qu tâm nhiều đến cách xác đ<br />
B<br />
uan<br />
định rui không tường minh.<br />
g<br />
Các thô tin về user item, feedba thường đư biểu diễn thông qua mộ ma trận như trong Hình 1. Trong đó<br />
ông<br />
r,<br />
ack<br />
ược<br />
t<br />
ột<br />
ư<br />
mỗi dòng là m người dùng u, mỗi cột là một sản phẩm i, và giao gi dòng và cộ là các phản hồi của người dùng như<br />
m<br />
một<br />
g<br />
à<br />
m<br />
iữa<br />
ột<br />
số lần click ch<br />
s<br />
huột hay chọn mua sản phẩ<br />
n<br />
ẩm,…. Các ô có giá trị là nh<br />
hững item mà các user đã x hoặc chọn mua trong<br />
xem<br />
quá khứ. Nhữn ô trống là n<br />
q<br />
ng<br />
những item chư được xem (điều đáng lưu ý là mỗi user chỉ click xem hoặc chọn mu cho một<br />
ưa<br />
(<br />
u<br />
m<br />
ua<br />
vài item trong quá khứ, do vậ có rất nhiều ô trống trong ma trận này – còn gọi là m trận thưa – s<br />
v<br />
ậy<br />
u<br />
g<br />
ma<br />
sparse matrix).<br />
<br />
Hình 1. Ma trận biểu d xếp hạng củ người dùng trên sản phẩm (u<br />
diễn<br />
ủa<br />
t<br />
(user-item-rating matrix)<br />
g<br />
<br />
RS<br />
o<br />
g<br />
a<br />
c<br />
Nhiệm vụ chính của R là dựa vào các ô đã có giá trị trong ma trận này (dữ liệu thu được từ quá khứ), để dự đoán<br />
các ô còn trống (của user hiệ hành), sau đó sắp xếp kế quả dự đoán (ví dụ, từ cao xuống thấp) và chọn ra To<br />
c<br />
g<br />
ện<br />
ết<br />
n<br />
o<br />
op-N items<br />
th thứ tự, từ đó gợi ý chún đến người d<br />
heo<br />
ng<br />
dùng.<br />
Một các hình thức, g Dtrain ⊆ U × I × R là tập dữ liệu huấn luyện, Dtest ⊆ U × I × R là tập dữ liệu ki thử, và<br />
ch<br />
gọi<br />
p<br />
n<br />
à<br />
iểm<br />
một ánh xạ r: U × I→ R ( i) ↦ rui<br />
m<br />
(u,<br />
Mục tiê của RS là t một hàm ̂ : U × I → ℜ sao cho ξ(r, ̂ ) thỏa mãn một điều kiện nào đó. Ví dụ, nếu ξ là<br />
êu<br />
tìm<br />
n<br />
d<br />
một hàm ước l<br />
m<br />
lượng lỗi như M<br />
Mean Absolut Error (MAE hay Root Mean Squared E<br />
te<br />
E)<br />
M<br />
Error (RMSE) thì nó cần ph được tối<br />
)<br />
hải<br />
ti<br />
iểu.<br />
<br />
MAE<br />
<br />
RMSE =<br />
<br />
=<br />
<br />
1<br />
|D<br />
<br />
test<br />
<br />
|<br />
<br />
∑ (r<br />
<br />
(u, i, r) ∈ D<br />
<br />
ui<br />
<br />
test<br />
<br />
ˆ<br />
− r ui<br />
<br />
)<br />
<br />
1<br />
r<br />
∑ (testui − rˆ(u ,i ) )2<br />
test<br />
| D | (u ,i ,r )∈D<br />
<br />
(1)<br />
<br />
(2)<br />
<br />
Hiện nay, có rất nhiều g thuật đã đ<br />
giải<br />
được đề xuất cho hệ thống gợi ý, chúng có thể được g<br />
gom lại theo 3 nhóm sau<br />
[1][2][7]:<br />
-<br />
<br />
a<br />
g<br />
rative filtering người dùng sẽ nhận gợi ý những sản p<br />
g):<br />
g<br />
phẩm được ưa thích xuất<br />
a<br />
Gợi ý dựa trên lọc cộng tác (collabor<br />
phát từ nh<br />
hững người có cùng thị hiếu và sở thích với mình. Nhóm này dựa vào các phương pháp chủ yếu<br />
ó<br />
u<br />
v<br />
m<br />
o<br />
u:<br />
o<br />
<br />
-based), trong đó hoặc là dựa trên dữ<br />
Phương pháp l<br />
P<br />
láng giềng (N<br />
Neighborhood-based, còn gọ là Memoryọi<br />
g<br />
d<br />
li quá khứ c người dùn “tương tự” – similarity (u<br />
iệu<br />
của<br />
ng<br />
user-based ap<br />
pproach), hoặc là dựa trên dữ liệu quá<br />
c<br />
d<br />
khứ<br />
k của những item “tương tự” (item-based approach).<br />
g<br />
<br />
o<br />
<br />
Dựa<br />
D trên mô h<br />
hình (Model-b<br />
based): Nhóm này liên quan đến việc xây dựng các mô hình dự đoá dựa trên<br />
n<br />
y<br />
ô<br />
án<br />
dữ<br />
d liệu thu thậ được trong quá khứ. Nh mô hình Ba<br />
ập<br />
g<br />
hư<br />
ayesian, các m hình nhân tố tiềm ẩn (la<br />
mô<br />
atent factor<br />
models): trong đó kỹ thuật p<br />
m<br />
g<br />
phân rã ma trậ (matrix fact<br />
ận<br />
torization) là m điển hình .<br />
một<br />
<br />
-<br />
<br />
Gợi ý dựa trên nội dung người dùng sẽ được gợi ý những sản phẩm tương tự với những s phẩm đã được người<br />
a<br />
g:<br />
g<br />
p<br />
ự<br />
sản<br />
đ<br />
dùng đó ư thích trước đây dựa trên n dung (như các thuộc tín của sàn phẩ<br />
ưa<br />
nội<br />
ư<br />
nh)<br />
ẩm<br />
<br />
-<br />
<br />
Gợi ý dựa trên cách tiếp cận kết hợp: kết hợp hai phương pháp tiếp cận dựa tr nội dung v lọc cộng tác<br />
a<br />
p<br />
:<br />
p<br />
rên<br />
và<br />
c.<br />
<br />
Sau đây c<br />
chúng tôi tóm lược lại một t<br />
trong những kỹ thuật trong nhóm lọc cộn tác của hệ thống gợi ý và kỹ thuật<br />
k<br />
g<br />
ng<br />
v<br />
sử dụng phản h tiềm ẩn, từ đó làm cơ sở cho việc đề xuất mô hình cho hệ thống.<br />
s<br />
hồi<br />
ừ<br />
ở<br />
x<br />
<br />
602<br />
6<br />
<br />
PHƯ<br />
ƯƠNG PHÁP XÂ DỰNG HỆ TH<br />
ÂY<br />
HỐNG GỢI Ý SẢ PHẨM SỬ D<br />
ẢN<br />
DỤNG PHẢN HỒ TIỀM ẨN<br />
ỒI<br />
<br />
B. Kỹ thuật p<br />
B<br />
phân rã ma tr (matrix fa<br />
rận<br />
actorization – MF)<br />
Kỹ thuậ phân rã ma t (MF) là m trong nhữn phương phá dựa trên mô hình thành c<br />
ật<br />
trận<br />
một<br />
ng<br />
áp<br />
ô<br />
công nhất hiện nay (stateof-the-art) tron RS [1][2]. M là việc chi một ma trận lớn X thành hai ma trận có kích thước n hơn W và H, sao cho<br />
o<br />
ng<br />
MF<br />
ia<br />
n<br />
h<br />
ó<br />
nhỏ<br />
ta có thể xây dự lại X từ h ma trận nhỏ hơn này càng chính xác càn tốt [5].<br />
a<br />
ựng<br />
hai<br />
ỏ<br />
g<br />
ng<br />
U|×K<br />
X ~ WHT như minh h như trong Hình 2. Tron đó, W∈ℜ|U là một ma trận mà mỗi d<br />
H<br />
họa<br />
g<br />
ng<br />
dòng u là một véc tơ bao<br />
gồm K nhân tố tiềm ẩn (latent factors) mô tả người dùng u; và H ∈ℜ|I|×K là một ma trận mà mỗi dòng i là một véc tơ bao<br />
g<br />
ố<br />
ô<br />
ℜ<br />
a<br />
gồm K nhân tố tiềm ẩn mô tả cho item i (lư ý: K