Tải bản đầy đủ (.pdf) (70 trang)

Xây dựng hệ thống gợi ý theo sở thích của người dùng dựa trên kỹ thuật 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.32 MB, 70 trang )

i

LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả trình bày trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Tp. HCM, ngày 30 tháng 08 năm 2016
Tác giả luận văn

Nguyễn Thị Lê Soa


ii

LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc đến TS. Lê Thanh Vân đã hướng dẫn nhiệt tình,
tận tâm trong suốt quá trình thực hiện luận văn này. Cô đã giúp cho tôi có định hướng,
phương pháp nghiên cứu, các tài liệu bổ ích và đặc biệt chia sẽ cho tôi kinh nghiệm quý
báu.
Tôi xin chân thành cảm ơn Học Viện Công Nghệ Bưu Chính Viễn Thông đã tạo
điều kiện cho chúng tôi trong suốt quá trình học tập và làm luận văn. Đặc biệt xin được
gửi lời cám ơn sâu sắc tới các Thầy Cô đã nhiệt tình dạy, hướng dẫn và truyền đạt những
kiến thức, kinh nghiệm vô cùng bổ ích cho trong suốt khóa học để tôi áp dụng vào công
việc cũng như hoàn thành luận văn này.
Cuối cùng, Tôi xin được gửi lời cảm ơn đến các bạn cùng khóa, những người đã đống
góp nhiệt tình, chia sẽ những kinh nghiệm trong quá trình nghiên cứu luận văn “Xây
dựng hệ thống gợi ý theo sở thích của người dung dựa trên kỹ thuật lọc cộng”.
Tôi xin chân thành cảm ơn!
Tp. HCM, ngày 30 tháng 08 năm 2016
Học viên thực hiện


Nguyễn Thị Lê Soa


iii

MỤC LỤC
LỜI CAM ĐOAN ................................................................................................................. i
LỜI CẢM ƠN ...................................................................................................................... ii
MỤC LỤC .......................................................................................................................... iii
DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT ................................................. vi
DANH SÁCH BẢNG ........................................................................................................ vii
DANH SÁCH HÌNH VẼ .................................................................................................. viii
MỞ ĐẦU ............................................................................................................................. 1
CHƯƠNG 1 - TỔNG QUAN .............................................................................................. 3
1.1.

Giới thiệu tổng quan .................................................................................................. 3

1.1.1.

Tổng quan về hệ thống gợi ý ................................................................................. 3

1.1.2.

Bài toán .................................................................................................................. 3

1.2.

Mục tiêu và phương pháp của luận văn..................................................................... 4


1.3.

Ý nghĩa khoa học và thực tiễn của luận văn.............................................................. 5

1.4.

Kết luận chương 1 ..................................................................................................... 5

CHƯƠNG 2 - CƠ SỞ LÝ THUYẾT .................................................................................. 6
2.1.

Giới thiệu về Hệ thống gợi ý ..................................................................................... 6

2.1.2.

Lọc dựa trên kỹ thuật lọc cộng tác (Collaborative filtering) ................................. 7

2.1.3.

Phương pháp lọc kết hợp (Hybrid) ........................................................................ 8

2.1.4.

Các nghiên cứu liên quan ....................................................................................... 8

2.2.

Hệ thống gợi ý dựa trên kỹ thuật lọc cộng tác theo hướng tiếp cận người dùng

(user-user Collaborative Filtering Recommender Systems) ............................................... 9

2.3.
2.3.1.

Các phương pháp tính độ đo tương tự trong hệ thống gợi ý ................................... 11
Khoảng cách Jaccard ............................................................................................ 12


iv

2.3.2.

Khoảng cách Cosine ............................................................................................ 14

2.3.3.

Làm tròn dữ liệu ................................................................................................... 15

2.4.

Hệ thống gợi ý trong Apache Mahout ..................................................................... 15
Hướng tiếp cận cộng tác dựa vào người dùng ..................................................... 15

2.4.1.
2.4.1.1.

Độ tương tự LogLikelihood .............................................................................. 17

2.4.1.2.

K – Láng giềng gần nhất (K-Nearest Neighbors K-NN) .................................. 18


2.4.1.3.

Các bước thực hiện xây dựng một hệ thống gợi ý trong Apache Mahout dựa

trên mối quan hệ lọc cộng tác giữa các người dùng .......................................................... 20
Hướng tiếp cận lọc cộng tác dựa vào mối quan hệ đặc trưng tiềm ẩn ................. 25

2.4.2.
2.4.2.1.

Bình phương tối thiểu luân phiên (ALS – Alternating least square) ................ 26

2.4.2.2.

Lọc cộng tác dựa vào mối quan hệ tiềm ẩn trong mahout với hadoop............. 27

2.5.

Kết luận chương 2 ................................................................................................... 30

CHƯƠNG 3 - HỆ THỐNG XỬ LÝ DỮ LIỆU LỚN ....................................................... 32
TRÊN HADOOP ............................................................................................................... 32
3.1.

Tổng quan về Apache Hadoop ................................................................................ 32

3.1.1.

Giới thiệu về Hadoop ........................................................................................... 32


3.1.2.

Khái niệm về Hadoop .......................................................................................... 34

3.1.3.

Thành phần của Hadoop ...................................................................................... 35

3.1.4.

Hệ thống sinh thái dữ liệu Hadoop ...................................................................... 38

3.2.

Tổng quan về Apache Hbase ................................................................................... 40

3.3.

Kết luận chương 3 ................................................................................................... 43

CHƯƠNG 4 – THIẾT KẾ VÀ HIỆN THỰC ................................................................... 44
4.1.

Thiết kế luồng thực thi công việc ............................................................................ 44

4.2.

Thực nghiệm ............................................................................................................ 46



v

4.2.1.

Phần xử lý dữ liệu ................................................................................................ 46

4.2.2.

Thực nghiệm chương trình hệ thống gợi ý .......................................................... 49

4.2.2.1.

Môi trường và phần mềm sử dụng ................................................................... 49

4.2.2.2.

Thực nghiệm xây dựng hệ thống gợi ý ............................................................. 50

4.2.2.2.1.

Xây dựng hệ thống gợi ý dựa trên mối quan hệ giữa các người dùng (user-

user)

....................................................................................................................... 50

4.2.2.2.2.

Xây dựng hệ thống gợi ý dựa trên mối quan hệ giữa các sản phẩm (item-


item)

....................................................................................................................... 51

4.2.2.2.3.

So sánh các phương pháp gợi ý ..................................................................... 52

4.3.

Kết quả đạt được...................................................................................................... 52

4.4.

Giao diện hệ thống gợi ý sản phẩm ......................................................................... 53

4.5.

Đánh giá kết quả độ chính xác của thuật toán ......................................................... 56

4.5.1.

Đánh giá độ chính xác của thuật toán dựa trên một người dùng ......................... 56

4.5.2.

Đánh giá độ chính xác của thuật toán trên một tập dữ liệu người dùng .............. 57

4.6.


Kết luận chương 4 ................................................................................................... 58

KẾT QUẢ VÀ KIẾN NGHỊ ............................................................................................. 59
DANH MỤC TÀI LIỆU THAM KHẢO .......................................................................... 61


vi

DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT
Viết tắt

Tiếng Anh

Tiếng Việt

RS

Recommender Systems

Hệ thống gợi ý

CF

Collaborative Filtering

Kỹ thuật lọc cộng tác

K-NN


K-Nearest Neighbors

K – Láng giềng gần nhất

LLR

log likelihood ratio

Tỉ lệ Log – likelihood

NoSQL

Not Only SQL

REST

Representational State Transfer

Chuyển giao trạng thái đại diện

HFS

Hadoop File System

Hệ thống tập tin Hadoop

HDFS

Hadoop Distributed File System


Hệ thống tập tin phân tán
Hadoop


vii

DANH SÁCH BẢNG
Bảng 2.1: Ma Trận có trọng số thể hiện sở thích của người dùng

11

Bảng 2.2: Độ tương tự và khoảng cách của user n đối với user A

13

được tính bằng Jaccard

13

Bảng 2.3: Ma trận làm tròn giá trị với đánh giá 3, 4 và 5 được thay thế bằng 1,

15

và giá trị đánh giá 1 và 2 được bỏ qua

15

Bảng 4.1: Mối quan hệ giữa User và Item

48


Bảng 4.2: Số lượng Record trong mỗi Domain

49

Bảng 4.3: Dữ liệu thể hiện việc xóa đi một sở thích trong quá khứ

56

của user1 và item101

56

Bảng 4.4: Bảng kết quả thực nghiệm

58


viii

DANH SÁCH HÌNH VẼ
Hình 1.1: Sơ đồ gợi ý sản phẩm bằng hướng tiếp cận lọc dựa trên nội dung

6

Hình 1.2: Sơ đồ gợi ý sản phẩm bằng hướng tiếp cận lọc

7

dựa trên kỹ thuật lọc cộng tác


7

Hình 2.1: Mô hình đưa ra dự đoán của hệ thống gợi ý [5]

10

Hình 2.2: Quan hệ giữa user 1 và user 2 trong Jaccard

12

Hình 2.3: Mô hình tương tác giữa các thành phần của hệ thống gợi ý

16

trong Apache Mahout

16

Hình 2.4: Mô hình thể hiện hai người dùng có cùng sở thích [19]

17

Hình 3.1: Hình ảnh về Apache hadoop

32

Hình 3.2: Cơ chế replication 3 trong Hadoop

35


Hình 3.3: Luồng xử lý của MapReduce

36

Hình 3.4: Bài toán WordCount với MapReduce

37

Hình 3.5: Cấu trúc hệ thống Hadoop

38

Hình 3.6: Hệ thống sinh thái dữ liệu Hadoop

39

Hình 3.7: Sơ đồ đọc và ghi dữ liệu lên HDFS của hệ quản trị csdl Hbase

41

Hình 4.1: Mô hình thể hiện quá trình lấy dữ liệu về từ FanPage của Facebook

44

và lưu trữ vào MongoDB

44

Hình 4.2: Mô hình dữ liệu trong MySql


45

Hình 4.3: Mô hình dữ liệu được lưu trữ vào csdl HBASE

46

Hình 4.4: Mô hình mối quan hệ giữa các thành phần của hệ thống gợi ý

50

dựa trên kỹ thuật lọc cộng tác

50

Hình 4.5: Kết quả của hệ thống gợi ý

53

Hình 4.6: Giao diện cho phép người dùng đăng nhập vào hệ thống gợi ý

54

Hình 4.7: Giao diện trang web biểu hiện sản phẩm đến người dùng

55


1


MỞ ĐẦU
Tốc độ phát triển của thương mại điện tử trên thế giới đặc biệt là những nước đang
phát triển như Việt Nam hiện nay, mô hình kinh doanh qua mạng ngày càng phổ biến ở
khắp nơi. Lượng sách, báo, tạp chí, tài liệu, hình ảnh, âm thanh, video, sản phẩm và dịch
vụ được đăng tải lên mạng internet thông qua các hệ thống giao dịch điện tử ngày càng
khổng lồ dẫn đến tình trạng quá tải thông tin.
Lượng dữ liệu quá lớn gây không ít khó khăn cho người dùng trong việc đưa ra
quyết là nên mua hay xem sản phẩm nào phù hợp với nhu cầu của mình. Nhằm hạn chế
ảnh hưởng của quá trình quá tải thông tin đối với người dùng thúc đẩy một lĩnh vực
nghiên cứu mới đó là lọc thông tin. Lọc thông thông tin là loại bỏ những thông tin không
quan trọng và cung cấp những thông tin thích hợp đến với mỗi người dùng. Lọc thông tin
được xem là một phương pháp hiệu quả hạn chế tình trạng quá tải thông tin được quan
tâm nhất hiện nay.
Xuất phát từ những nhu cầu thực tế hệ thống gợi ý ra đời, Hệ thống gợi ý
(Recommender systems) là một phân lớp của hệ thống lọc thông tin. Hệ thống này đưa ra
gợi ý về sản phẩm theo nhu cầu cá nhân của mỗi người dùng dựa trên những hành vi đã
thực hiện trong quá khứ, hoặc dựa trên tổng hợp ý kiến của những người dùng khác.
Hệ thống gợi ý ra đời góp phần mang lại lợi nhuận đáng kể cho mô hình kinh
doanh qua mạng, và giúp cho sản phẩm của các doanh nghiệp trở nên hoàn thiện hơn.
Một số website nổi tiếng như Amazon, Youtube, Ebay, Facebook … tích hợp hệ thống
gợi ý và đã mang lại hiệu quả cao như:
 Khả năng đưa ra các dịch vụ cá nhân hóa, hướng tới từng đối tượng khách
hàng cụ thể.
 Tăng mức tín nhiệm và trung thành của khách hàng.
 Tăng doanh thu.
 Thêm hiểu biết về khách hàng.
Hệ thống gợi ý đã trở thành một trong những lĩnh vực nghiên cứu quan trọng kể từ
khi bài báo đầu tiên về lọc cộng tác xuất hiện vào giữa những năm 1990.



2

Nội dung luận văn gồm bốn chương, Chương 1 giới thiệu tổng quan về ngữ cảnh hiện
nay của hệ thống gợi ý và trình bày phần đặt vấn đề bài toán, mục tiêu, phương pháp, ý
nghĩa khoa học và ý nghĩa thực tiễn. Chương 2 trong chương này trình bày sơ lược về
các hướng tiếp cận trong hệ thống gợi ý như lọc dựa trên nội dung, lọc dựa trên kỹ thuật
lọc cộng tác và lọc kết hợp của hai phương pháp trên. Và trình bày các nghiên cứu liên
quan đến hệ thống gợi ý. Tiếp theo là nghiên cứu và mô tả các cơ sở lý thuyết về phương
pháp lọc dựa trên kỹ thuật lọc cộng tác, các phương pháp tính độ đo tương tự, khoảng
cách giữa người dùng. Trong chương này luận văn cũng trình bày hướng tiệp cận dựa
trên mối quan hệ đặc trưng tiềm ẩn. Cuối cùng chương 2 là đi vào tìm hiểu các bước tính
toán thống gợi ý dựa trên các hướng tiếp cận trong Apache Mahout. Chương 3 trình bày
về vấn đề xây dựng hệ thống xử lý dữ liệu lớn trong môi trường Hadoop với dữ liệu được
lưu trữ trên Hbase. Chương 4 tiến hành phân tích, thiết kế và hiện thực hệ thống gợi ý,
cuối cung luận văn trình bày phương pháp đánh giá độ tin cậy của hệ thống.


3

CHƯƠNG 1 - TỔNG QUAN
1.1.

Giới thiệu tổng quan

1.1.1. Tổng quan về hệ thống gợi ý
Hệ thống gợi ý (Recommender Systems - RS) 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, sản phẩm
hay dịch vụ mà người dùng có thể sẽ quan tâm dựa trên các hành vi trong qua khứ của
chính người dùng đó. Hệ thống gợi ý là một dạng của hệ thống lọc thông tin (information
filtering), nó được sử dụng để dự đoán sở thích (preference) hay xếp hạng (rating) mà

người dùng có thể dành cho một mục thông tin (item) nào đó mà họ chưa xem xét tới
trong quá khứ (item có thể là bài báo, bộ phim, đoạn video clip, sách,..) nhằm gợi ý các
mục thông tin “có thể được quan tâm” bởi người dùng. Hệ thống gợi ý sẽ đưa ra các gợi ý
dựa trên quá trình thu thập, xử lý và phân tích dữ liệu từ người dùng. Dữ liệu đó được
chia làm 2 loại là tường minh (explicit) bằng cách yêu cầu người dùng phản hồi trực tiếp
và tiềm ẩn (implicit) bằng cách tự động suy luận dựa trên những tương tác của người
dùng với hệ thống như: số lần nhấp chuột, thời gian quan sát... Trong hầu hết các trường
hợp, bài toán gợi ý được coi là bài toán dự đoán sở thích của người dùng đối với các sản
phẩm. Việc dự đoán này thường dựa trên những đánh giá đã có của những người dùng
khác có cùng sở thích với họ. Ví dụ, những sản phẩm được đưa ra gợi ý là những sản
phẩm có độ tương tự sở thích với người dùng cao nhất sẽ được dùng để gợi ý [1].
1.1.2. Bài toán
Hệ thống gợi ý luôn là một đề tài nóng, nhận được nhiều sự quan tâm từ xã hội,
một bài toán mà hầu hết các doanh nghiệp, các trang web thương mại điện tử phải đối
mặt: làm thế nào để biết sở thích của mỗi các nhân người dùng? Từ đó đưa ra gợi ý
những sản phẩm mà họ đang thật sự quan tâm, tìm kiếm hoặc khơi gợi nguồn cảm hứng
tiềm ẩn từ sản phẩm đến họ trong lượng dữ liệu khổng lồ.
Đã có rất nhiều nghiên cứu đưa ra các thuật toán, phương pháp với mong muốn
đem lại kết quả tốt nhất cho hệ thống gợi ý, nhưng bên cạnh đó hệ thống gợi ý còn gặp


4

phải những tình trạng, những vấn đề cần phải giải quyết và tiếp tục nghiên cứu làm rõ
như:
 Làm thế nào để gợi ý được các sản phẩm dựa trên mối quan hệ cộng tác.
 Tình trạng dữ liệu quá lớn khiến chúng ta không thể thao tác dữ liệu như cách
truyền thống được.
 Vấn đề về độ chính xác của kết quả ở mỗi thuật toán, vấn đề dữ liệu thưa thớt,


Luận văn đề xuất “xây dựng hệ thống gợi ý theo sở thích của người dùng dưạ trên
kỹ thuật lọc cộng tác” để góp phần giải quyết một số vấn đề, tình trạng đang tồn động của
lọc thông tin trong hệ thống gợi ý.
Tập dữ liệu đầu vào dựa trên nguồn dữ liệu thu thập từ fanpage tiki, fahasa, foody,
lazada, vinabook với các hoạt động like, share, bình luận sản phẩm (theo hướng tích cực)
để xây dụng mối quan hệ giữa người dùng và sản phẩm.
Kết quả đưa ra những sản phẩm gợi ý tương thích với sở thích của mỗi người
dùng.

1.2.

Mục tiêu và phương pháp của luận văn
Mục tiêu của luận văn là nghiên cứu, áp dụng một số các phương pháp pháp trong

kỹ thuật lọc cộng tác nhầm nâng cao kết quả dự đoán nhu cầu người dùng của hệ thống
gợi ý. Và nghiên cứu tập trung vào việc xây dựng hệ thống gợi ý trong trường hợp dữ liệu
lớn.
Để thực hiện mục tiêu chính là xây dựng hệ thống gợi ý theo sở thích của người
dùng trong kỹ thuật lọc cộng tác cần đặt ra một số mục tiêu chi tiết sau:
 Dựa trên nguồn dữ liệu thu thập từ fanpage tiki, fahasa, foody, lazada,
vinabook. Xây dựng ma trận quan hệ giữa người dùng và sản phẩm
 Dữ liệu sau khi tiền xử lý được lưu trữ trên Hbase phù hợp cho việc lưu trữ dữ
liệu lớn, không có cấu trúc


5

 Với tập dữ liệu có được sẽ tiến hành tính toán độ tương tự người dùng để từ đó
dựa trên mối quan hệ tương tự hệ thống sẽ đề xuất sản phẩm, ở đây luận văn sử
dụng độ đo tương tự LogLikelihood để đo độ tương tự giữa hai người dùng.

 Sau đó áp hệ thống sẽ chọn ra K láng giềng gần nhất (K người dùng có độ
tương tự lớn nhất).
 Hệ thống sẽ tìm kiếm các người dùng có sự tương tự về lịch sử và từ đó đề
xuất các sản phẩm có khả năng được yêu thích vì họ có cùng sở thích.
 Đánh giá kết quả sau khi đạt được.

1.3.

Ý nghĩa khoa học và thực tiễn của luận văn
Ý nghĩa khoa học:
Luận văn nghiên cứu và trình bày các bước trong quá trình đưa ra dự doán gợi ý

sản phẩm đến người dùng, các yếu tố ảnh hưởng đến chất lượng, nhằm cải thiện được kết
quả gợi ý sản phẩm phù hợp với yêu cầu thực tế của người dùng.
Luận văn đề xuất xây dựng hệ thống gợi ý trên dữ liệu lớn để đáp ứng nhu cầu của
tình trạng quá tải thông tin trên các trang thương mại điện tử, mạng xã hội như hiện nay.
Ý nghĩa thực tiễn:
Nhu cầu thực tiễn về một hệ thống gợi ý hỗ trợ hiệu quả trong việc tìm kiếm sản
phẩm là cần thiết và rất thực tế nếu được kết hợp trong việc tìm hiểu hành vi người dùng,
sẽ mang lại hiệu quả cao nhiều trong lĩnh vực quảng cáo, marketing.

1.4.

Kết luận chương 1
Trong chương này trình bày khái quát về hệ thống gợi ý và đặt vấn đề bài toán, và

mục tiêu, phương pháp, ý nghĩa khoa học và thực tiễn của luận văn.


6


CHƯƠNG 2 - CƠ SỞ LÝ THUYẾT
2.1.

Giới thiệu về Hệ thống gợi ý
Hệ thống gợi ý được xây dựng dựa trên hai hướng tiếp cận lọc thông tin chính là:

Hệ gợi ý dựa vào phương pháp lọc trên nội dung (Content Based Filtering) và hệ gợi ý
dựa vào kỹ thuật lọc cộng tác (Collaborative Filtering). Ngoài ra còn nhiều hướng tiếp
cận khác như: Hybrid (kết hợp lọc dựa trên nội dung và kỹ thuật lọc cộng tác),
Knowledge based….tùy thuộc vào nhu cầu và mục đích đáp ứng mà chúng ta ứng dụng
lựa chọn đúng hướng tiếp cận [1].

2.1.1. Lọc dựa trên nội dung (Content-based filtering)
Hệ thống đưa ra gợi ý các sản phẩm tương đồng với sản phẩm người dùng đã từng
thích trong quá khứ [1]. Sự tương đồng giữa các sản phẩm được tính toán dựa trên các
tính năng khi so sánh hai sản phẩm. Ví dụ: Người A thích một bộ phim thuộc thể loại
phim hài, Hệ thống xây dựng hồ sơ người dùng (User profile) từ những hành vi yêu thích
và quan tâm của Người A. Những lần sau, khi Người A truy cập vào hệ thống, hệ thống
sẽ gợi ý những bộ phim khác thuộc cùng thể loài này.

Hình 1.1: Sơ đồ gợi ý sản phẩm bằng hướng tiếp cận lọc dựa trên nội dung


7

Lọc theo nội dung là phương pháp thực hiện dựa trên việc so sánh nội dung thông
tin hay mô tả sản phẩm, để tìm ra những sản phẩm tương tự với những gì mà người dùng
đã từng quan tâm để giới thiệu cho họ những sản phẩm này. Các phương pháp tiếp cận
cho lọc theo nội dung được chia thành hai phương pháp chính: lọc nội dung dựa vào bộ

nhớ và lọc nội dung dựa vào mô hình. Những vấn đề cần tiếp tục nghiên cứu của lọc nội
dung là vấn đề trích chọn đặc trưng và người dùng mới.

2.1.2. Lọc dựa trên kỹ thuật lọc cộng tác (Collaborative filtering)
Lọc cộng tác gợi ý những sản phẩm được yêu thích bởi những người có độ tương
quan phù hợp [1]. Ví dụ: Một người A là nữ, 22 tuổi, sống tại Sài gòn Việt Nam, thu
nhập cao. A rất quan tâm đến các sản phẩm thời trang hiện đại như: đồng hồ, ví và
thường xuyên vào hệ thống để mua hàng. Một người B là nữ, 25 tuổi, sống tại Sài gòn,
thu nhập cao, cũng quan tâm đến các sản phẩm thời trang hiện đại như: đồng hồ, ví. Khi
vào hệ thống, hệ thống sẽ gợi ý những mặt hàng mà A đã quan tâm và yêu thích.

Hình 1.2: Sơ đồ gợi ý sản phẩm bằng hướng tiếp cận lọc
dựa trên kỹ thuật lọc cộng tác


8

Kỹ thuật lọc cộng tác được xem như là một hình thức truyền miệng tự động. Nó so
sánh các hoạt động trên các người dùng hoặc các hoạt động với các sản phẩm, từ đó tìm
ra sự giống nhau giữa những người dùng, và dựa vào đó mà đưa ra các gợi ý cho người
dùng.
Lọc cộng tác khai thác những khía cạnh liên quan đến thói quen sở thích của
người sử dụng sản phẩm để đưa ra dự đoán và phân bổ các sản phẩm cho người dùng
này. Các kỹ thuật tiếp cận cho lọc cộng tác cũng được chia thành hai kỹ thuật chính: kỹ
thuật lọc cộng tác dựa vào bộ nhớ và kỹ thuật lọc cộng tác dựa vào mô hình. So với
phương pháp lọc theo nội dung, kỹ thuật lọc cộng tác cho lại kết quả tốt hơn và có thể lọc
bất kỳ dạng thông tin nào (video, hình ảnh, âm thanh, …). Tuy nhiên, kỹ thuật lọc cộng
tác gặp phải vấn đề gợi ý kém hiệu quả với trường hợp dữ liệu thưa, người dùng mới và
sản phẩm mới.


2.1.3. Phương pháp lọc kết hợp (Hybrid)
Lọc kết hợp là phương pháp kết hợp giữa lọc cộng tác và lọc nội dung, nhằm tận
dụng lợi thế và tránh những hạn chế của mỗi phương pháp. Lọc kết hợp được tiếp cận
theo bốn xu hướng chính: Kết hợp tuyến tính, kết hợp đặc tính của lọc nội dung vào lọc
cộng tác, kết hợp đặc tính của lọc cộng tác vào lọc nội dung và xây dựng mô hình hợp
nhất cho cả lọc cộng tác và lọc nội dung. Vấn đề cần tiếp tục nghiên cứu của lọc kết hợp
là nâng cao hiệu quả phương pháp biểu diễn và dự đoán cho mô hình kết hợp [1].

2.1.4. Các nghiên cứu liên quan
Xuất phát từ những nhu cầu thực tế đã có rất nhiều nghiên cứu trong và ngoài
nước, đưa ra các phương pháp với mong muốn đem lại kết quả tốt nhất cho hệ thống gợi
ý.
Vào năm 2001, nhóm tác giả [2] tại Hồng Kông. Đăng một bào báo có tên “Itembased Collaborative Filtering Recommendation Algorithms”. Bài báo đề xuất thuật toán
lọc dựa trên sản phẩm của kỹ thuật lọc cộng tác.


9

Năm 2015 gần đây, nhóm tác giả [3]. Đã đăng một bào báo có tên “Improving
Web Movie Recommender System Based on Emotions”. Bài báo đề xuất cải thiện hệ
thống gợi ý cho một website phim bằng phương pháp lọc kết hợp (Hybrid) dựa trên cảm
xúc của người dùng.
Những năm gần đây ở Việt Nam có nhiều bài báo, luân vặn đề cập đến hệ thống
gợi ý với nhiều hướng tiếp cận: Như bài báo “Hệ Thống Gợi Ý Sản Phẩm Trong Bán
Hàng Trực Tuyến Sử Dụng Kỹ Thuật Lọc Cộng Tác” [4] của tác giả Nguyễn Hùng Dũng
và Nguyễn Thái Nghe. Trong bài viết, tác giả đã trình bày mô hình láng giềng trong lọc
cộng tác – mô hình tư vấn dựa trên độ tương tự trực tiếp giữa hai người dùng hoặc sản
phẩm. Trong mô hình này, tác giả tính toán độ tương tự giữa hai người dùng, từ đó đưa ra
dự đoán đánh giá của người dùng với sản phẩm mới. Đối với những người dùng mới thì
tác giả sẽ lọc dựa trên một số thuộc tính thu thập từ người dùng để tư vấn những sản

phẩm.

2.2. Hệ thống gợi ý dựa trên kỹ thuật lọc cộng tác theo hướng tiếp cận người
dùng (user-user Collaborative Filtering Recommender Systems)
Dữ liệu trên các trang web ngày càng tăng khiến cho việc sử dụng các thuật toán
khó khăn hơn trên các khối dữ liệu đầy đủ. Đối với những vấn đề cá nhân nói riêng,
những mẫu dữ liệu thường không phải là một lựa chọn, đổi mới về thiết kế thuật toán
phân phối là điều cần thiết nhằm cho phép thiết lập các khối dữ liệu đang không ngừng
phát triển.
Bộ lọc cộng tác (CF) là một trong những bộ phận quan trọng nhất. Nó giúp mọi
người tìm kiếm những thứ liên quan đến chính họ. Cụ thể ở Facebook, điều này bao gồm
các trang, nhóm, sự kiện, trò chơi và nhiều thứ khác nữa. CF dựa trên ý tưởng của các đề
xuất tốt nhất cho những người có cùng sở thích. Nói theo cách khác, nó sử dụng xếp loại
trên từng sản phẩm của những người chung sở thích để đưa ra dự đoán ai đó sẽ xếp loại
một sản phẩm bất kỳ như thế nào.


10

Kỹ thuật lọc cộng tác dựa vào người dùng: đầu tiên cần tạo được tập n_u. Trong
đó n_u là n các user lân cận có độ tương tự với user u, với độ tương tự được tính toán
được mô tả ở phần [2.3.2]. Sau đó dựa trên các user lân cận n_u, đưa ra ước tính sở thích
của người dùng u đối với sản phẩm i bằng cách xem xét tất cả các sở thích của user lân
cận trong n_u đã đánh giá lên sản phẩm i. Do đó hiệu quả của kỹ thuật này dựa vào độ đo
tương tự giữa các cặp người dùng.

Hình 2.1: Mô hình đưa ra dự đoán của hệ thống gợi ý [5]
Bước 1: Xét user có tên Peter, Peter thích hoặc đánh giá những bộ phim
“Inception” và “Forest Gump” như thể hiện bởi A
Bước 2: Hệ thống tìm kiếm những user {Alex, Chris} là những user lân cận có

cùng sở thích với Peter.
Bước 3: Sau cùng hệ thống chọn lọc ra các sản phẩm “Dallas Buyers Club”,
“Lawless” mà những user lân cận đã thích để gợi ý cho user Peter.


11

Bảng 2.1: Ma Trận có trọng số thể hiện sở thích của người dùng
item1
A

4

B

5

item2

5

C

item3

item4

item5

5


1

2

4

item6

4
5

3

D

item7

3

Xét các giá trị ma trận ở Bảng 2.1 sau: Trong đó, mỗi dòng là một user, mỗi cột là
một item, và mỗi ô biểu diễn “mức độ thích” của user trên item tương ứng. Các ô có giá
trị là những item mà các user đã đánh giá. Những ô trống là những item chưa được user
đánh giá.
Nhiệm vụ chính của RS 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 các ô còn trống (của user hiện hành), sau đó sắp xếp kết
quả dự đoán (ví dụ, từ cao xuống thấp) và chọn ra Top-N items theo thứ tự, từ đó gợi ý
chúng cho người dùng.

2.3.


Các phương pháp tính độ đo tương tự trong hệ thống gợi ý
Câu hỏi đầu tiên chúng ta phải giải quyết là làm thế nào để đo lường sự giống

nhau của người dùng hoặc các mặt hàng từ các hàng (row) hoặc cột (column) của họ
trong ma trận trên Bảng 2.1.
Xét những thông tin ma trận ở Bảng 2.1, thông tin này tuy quá nhỏ để rút ra bất kỳ
kết luận đáng tin cậy, nhưng kích thước nhỏ của nó sẽ làm sáng tỏ một số khó khăn trong
việc lựa chọn một khoảng cách đo. Quan sát đặc biệt là người sử dụng A và C. Họ đánh
giá chung hai item (item4 và item5), nhưng cảm xúc của họ nghịch chiều nhau. Vì vậy
vấn đề quan trọng là chọn ra được độ đo tương tự phù hợp với dữ liệu đầu vào để đưa ra
kết quả có sự chính xác gần nhất để gợi ý cho người dùng. Dưới đây là một số biện pháp:


12

2.3.1. Khoảng cách Jaccard
Chúng ta có thể bỏ qua các giá trị trong ma trận và chỉ tập trung vào các bộ item
được đánh giá. Nếu ma trận chỉ phản ánh các user mua hàng, biện pháp này sẽ là một
phương pháp tốt để lựa chọn. Tuy nhiên, khi các user đánh giá chi tiết hơn trên từng item
thì phương pháp này mất thông tin quan trọng.
Hệ số tương tự Jaccard:

Hình 2.2: Quan hệ giữa user 1 và user 2 trong Jaccard
 Intersection: Giao của hai tập hợp A và B là tập hợp tất cả các phần tử vừa thuộc
A, vừa thuộc B, ký hiệu A ∩ B
Ta có: A ∩ B = {x: x ∈ A và x ∈ B}
 Union: Hợp của A và B là tập hợp gồm tất cả các phần tử thuộc ít nhất một trong
hai tập hợp A và B, ký hiệu A ∪ B
Ta có: A ∪ B = {x: x ∈ A và hoặc ∈ B}

Với công thức được tính độ tương tự Jaccard là:
𝑱(𝑨, 𝑩) =

|𝑨 ∩ 𝑩|
|𝑨 ∩ 𝑩|
=
|𝑨 ∪ 𝑩|
|𝑨| + |𝑩| − |𝑨 ∩ 𝑩|

Nếu A và B đều không có giá trị thì xác định J (A, B) = 1.
𝟎 ≤ 𝑱(𝑨, 𝑩) ≤ 𝟏


13

Khoảng cách Jaccard:
dj (𝑨, 𝑩) = 𝟏 − 𝑱(𝑨, 𝑩) = 𝟏 −

|𝑨 ∩ 𝑩|
|𝑨| + |𝑩| − |𝑨 ∩ 𝑩|

Từ cách công thức trên và dựa vào dữ liệu Bảng 2.1 ta dễ dàng tính được:
item1
A

4

B

5


item2

item3

5

item4

item5

5

1

item6

item7

4

Độ tương tự Jaccard:
𝐽(𝐴, 𝐵) =

|1|
1
= = 0.2
|3| + |3| − |1|
5


Khoảng cách Jaccard:
𝐽(𝐴, 𝐵) = 1 −

1
4
= = 0.8
5
5

Tương tự ta tính tất cả các độ đo tương tự và khoảng cách của từng user đối với user A ,
ta được kết quả ở bảng sau:
Bảng 2.2: Độ tương tự và khoảng cách của user n đối với user A
được tính bằng Jaccard
item1 item2 item3 item4 item5 item6 item7 Tương tự với

A 4
B 5

5
5

D

4
2

C
3

1


4

5
3

Khoảng

userA

cách

1

0

0.2

0.8

0.5

0.5

0

1


14


Nhận xét, với kết quả cho ta thấy khoảng cách A và B khá xa nhau, trong khi A và
C lại gần nhau hơn. Tuy nhiên kết quả mang lại cho chúng ta trực giác sai, vì A và C
đồng ý là cùng đánh giá trên 2 sản phẩm giống nhau nhưng sở thích của họ hoàn toàn
nghịch chiều nhau, trong khi A và B có cùng thích trên một sản phẩm chung của họ.

2.3.2. Khoảng cách Cosine
Xem các khoảng trống như giá trị 0. Sự lựa chọn này có thể có vấn đề, vì nó có
ảnh hưởng đến việc xem như thiếu bình chọn cũng giống như việc không thích item đó
hơn là thích nó.
Từ công thức tính tích hai vector của Euclidean như sau:
a. b =∥ a ∥ ∥ b ∥ cos 𝜃
Chúng ta thấy nếu cho 2 vector A và B với n chiều ta sẽ có cos(θ), cosine tương tự
(Cosine Similarity) hay khoảng cách theo góc của hai vector sẽ được tính bằng công
thức:
∑𝑛𝑖=1 𝐴𝑖 𝐵𝑖
𝐴. 𝐵
𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦 = cos 𝜃 =
=
∥A∥∥B∥
√∑𝑛𝑖=1 𝐴2𝑖 √∑𝑛𝑖=1 𝐵𝑖2
Nếu kết quả là -1, hai vector hoàn toàn đối nghịch, 1 thì hai vector giống nhau, 0
tức là hai vector vuông góc, hay trực giao.
Từ ví dụ ta được góc Cosine của:
+ A và B
4×5
√42 + 52 + 12 √52 + 52 + 42

= 0.380


+ A và C
5×2+ 1×4
√42 + 52 + 12 √22 + 42 + 52

= 0.322


15

Một giá trị cosine lớn, tương đương với một góc nhỏ hơn, do đó khoảng cách nhỏ
hơn. Kết quả của biện pháp này cho chúng ta thấy A hơi gần B hơn là C.

2.3.3. Làm tròn dữ liệu
Ví dụ, chúng ta có thể xem xét xếp hạng của 3, 4, và 5 là "1" và xem xét xếp hạng
1 và 2 như không được đánh giá. Ma trân sẽ như bảng bên dưới:
Bảng 2.3: Ma trận làm tròn giá trị với đánh giá 3, 4 và 5 được thay thế bằng 1,
và giá trị đánh giá 1 và 2 được bỏ qua
item1
A

1

B

1

item2

item3


item4

item5

item6

1

1

1
1

1

C
1

D

item7

1

Bây giờ, khoảng cách Jaccard giữa A và B là 3/4, trong khi giữa A và C nó là 1;
Nhận xét, C xuất hiện xa hơn A, và A gần B hơn, đều này mang lại trực giác
chính xác.

2.4.


Hệ thống gợi ý trong Apache Mahout

2.4.1. Hướng tiếp cận cộng tác dựa vào người dùng
Mahout hiện đang cung cấp các công cụ để xây dựng hệ thống máy gợi ý thông
qua các thư viện Taste, một hệ thống nhanh và linh hoạt cho CF-Collaborative Filtering.
Taste hỗ trợ gợi ý dựa vào người dùng, dựa vào sản phẩm và đi kèm với nhiều sự lựa
chọn xây dựng các gợi ý.User (những người dùng), Item (các sản phẩm) và Preference
(các sở thích).


16

Hình 2.3: Mô hình tương tác giữa các thành phần của hệ thống gợi ý
trong Apache Mahout
Hướng tiếp cận này sẽ gợi ý cho người dùng A, bằng cách tìm kiếm những người
tương tự với người dùng A, tiếp theo tìm kiếm những item tốt nhất có khả năng A sẽ yêu
thích để đưa ra gợi ý. Thực hiện điều này chúng ta cần nắm được ý nghĩa và sự tương tác
giữa các thành phần.
STT Thành Phần

1

Data model

Chú Thích
Dữ liệu quan hệ thể hiện sự yêu thích của người dùng đối với sản
phẩm.

2


User

Xác định giữa 2 người dùng, cho biết họ tương tự với nhau như

similarity

thế nào được thể hiện bằng số thực.

3

Neighborhood Tìm kiếm những người dùng lân cận với một user đang xét.

4

Recommender Chọn những item tốt nhất để gợi ý cho user đang xét.

Có nhiều cách để tính toán độ tương tự giữa các user với nhau như: Hệ số tương
quan Pearson, Euclidean Distance, Tanimoto Coefficient, LogLikelihood Similarity. Tùy


17

theo dữ liệu đầu vào của bài toán mà ta chọn cách tính độ tương tự cho phù hợp. Với dữ
liệu luận văn đã thu thập được thì LogLikelihood là một phương pháp được chọn tốt nhất.

2.4.1.1. Độ tương tự LogLikelihood
Log-likelihood tương tự như Jaccard, hoặc tương tự như Tanimoto Similarity tuy
nhiên nó được xem là một phương pháp tính toán thông minh hơn. Log-likelihood được
Ted Dunning phát triển “Một phương pháp chính xác cho việc thống kê về sự trùng hợp
ngẫu nhiên”. Phương pháp này tính toán độ tương tự giữa các users hoặc các items dựa

trên thống kê sự xuất hiện tuần hoàn xung quanh đối với các user hoặc items. Phương
pháp này tập trung vào các sự kiện mà những user hoặc items trùng nhau về sở thích,
những sự kiện khi cả users và items có thể hiện sự yêu thích, và những sự kiện mà cả
users và items đều không thể hiện sự yêu thích [18].
Trong Mahout, phương pháp này được sử dụng để tính toán độ tương tự giữa các
item và giữa các users, Khi tính toán những độ tương tự , sẽ không xem xét giá trị thể
hiện sự yêu thích thực tế, mà chỉ xem xét những sự kiện gần nhất được thảo luận và sử
dụng tỉ lệ được tính toán như trọng số để ước lượng sở thích đối với những users.

Hình 2.4: Mô hình thể hiện hai người dùng có cùng sở thích [19]
Phương thức này là trung tâm của tất cả các thuật toán sử dụng điểm số để phân
tích đếm các sự kiện, cụ thể là đếm những sự kiện xuất hiện cùng với nhau. Các việc tính
toán này có những trường hợp mà số lần 2 sự kiện đồng thời xảy ra, số lần chúng xuất
hiện cùng lúc hoặc không xuất hiện đồng thời.


×