5. Nội dung nghiên cứu
1.3.3. Bài toán gợi ý
Theo [5], trong hầu hết các trƣờng hợp, bài toán gợi ý đƣợc coi là bài toán ƣớc lƣợng đánh giá (rating) của các sản phẩm (phim, CD, sách, nhà hàng,…) chƣa đƣợc ngƣời dùng xem xét. Việc ƣớc lƣợng này thƣờng dựa trên các đánh giá đã có của ch nh ngƣời dùng đó hoặc những ngƣời dùng khác. Những sản phẩm có hạng cao nhất sẽ đƣợc dùng để gợi ý.
Một cách hình thức, bài toán gợi ý được mô tả như sau:
Gọi U là tập các ngƣời dùng (Users) của hệ thống.
Gọi I là toàn bộ không gian đối tƣợng sản phẩm (Items).
Hàm r(u,i) là đánh giá (rating) của ngƣời dùng u với sản phẩm i.
Trong hệ thống gợi ý, độ phù hợp của một sản phẩm thƣờng đƣợc cho bằng điểm, ví dụ ngƣời dùng A đánh giá bộ phim Star war 3 đƣợc điểm 7/10, hoặc đánh giá theo sao 3/5 sao. Tuy nhi n, nhìn chung độ phù hợp có thể là một hàm bất kì tùy thuộc vào ứng dụng cụ thể. Giá trị của r có thể đƣợc xác định bởi ngƣời dùng hoặc đƣợc tính toán bởi công thức nào đó. Mỗi ngƣời dùng trong không gian U đƣợc xác định bởi một hồ sơ (profile). Hồ sơ này có thể gồm rất nhiều loại thông tin: tuổi, giới tính, thu nhập, … hoặc có thể chỉ gồm một mã ngƣời dùng (user id) duy nhất. Tƣơng tự, mỗi sản phẩm trong không gian I cũng đƣợc xác định bởi một tập các đặc trƣng. V dụ, trong hệ thống gợi ý phim, đặc trƣng của mỗi bộ phim có thể là : tên phim, thể loại,
đạo diễn, năm sản xuất, diễn vi n ch nh … Vấn đề chính của hệ thống gợi ý là r không đƣợc xác định trên toàn không gian U × I mà chỉ trên một miền nhỏ của không gian đó. Điều này dẫn tới việc hàm r phải đƣợc ngoại suy trong không gian U I. Thông thƣờng, độ phù hợp đƣợc thể hiện bằng điểm và chỉ xác định trên tập các sản phẩm đã từng đƣợc ngƣời dùng đánh giá từ trƣớc. Ví dụ, bảng 1 mô tả đánh giá của một số ngƣời dùng với các phim mà họ đã xem (thang điểm từ 1-5, kí hiệu Ø nghĩa là bộ phim chƣa đƣợc ngƣời dùng đánh giá). Từ những thông tin đó, hệ thống gợi ý phải dự đoán điểm cho các bộ phim chƣa đƣợc ngƣời dùng đánh giá, từ đó đƣa ra những gợi ý phù hợp nhất.
Bản 1. 6. M n ọa đán á a n ƣờ dùn về 1 số ộ p đã xe
Harry Potter X-Men Iron Man Spider Man
User A 3 Ø 5 Ø
User B 2 1 Ø Ø
User C Ø 5 2 4
1.4. Một số p ƣơn p áp ợi ý
Có rất nhiều cách để dự đoán, ƣớc lƣợng hạng/điểm cho các sản phẩm nhƣ sử dụng học máy, lí thuyết xấp sỉ, các thuật toán dựa trên kinh nghiệm … Theo [5], các hệ thống tƣ vấn thƣờng đƣợc phân thành ba loại:
˗ Phƣơng pháp Gợi ý dựa trên nội dung (content-based): Ngƣời dùng sẽ đƣợc tƣ vấn những sản phẩm tƣơng tự với những sản phẩm đã đƣợc ngƣời dùng đó ƣa th ch trƣớc đây.
˗ Phƣơng pháp Gợi ý dựa trên lọc cộng tác (Collaborative filtering - CF): Ngƣời dùng sẽ đƣợc tƣ vấn những sản phẩm đƣợc ƣa chuộng xuất phát từ những ngƣời dùng có cùng thị hiếu và sở thích với mình.
˗ Phƣơng pháp Gợi ý dựa trên sự kết hợp giữa CF và content-based (hybrid): Kết hợp hai phƣơng pháp tiếp cận dựa trên nội dung và cộng tác.
1.4.1. Content-based (Phương pháp Gợi ý dựa trên nội dung)
˗ Các phƣơng pháp lọc cộng tác chỉ dựa tr n tƣơng tác của ngƣời dùng, thì các phƣơng pháp dựa trên nội dung sử dụng thông tin bổ sung (features) về ngƣời dùng và sản phẩm.
Ví dụ về hệ thống gợi ý phim: Thông tin bổ sung (features) có thể là:
độ tuổi, giới tính, công việc của ngƣời dùng, thể loại, diễn viên chính, thời lƣợng của bộ phim.
˗ Sau đó, ý tƣởng của phƣơng pháp dựa trên nội dung là cố gắng xây dựng một mô hình dựa trên các thông tin bổ sung. Ví dụ chúng ta xây dựng đƣợc mô hình thực tế chỉ ra rằng phụ nữ có xu hƣớng đánh giá tốt một số phim, nam giới trẻ tuổi lại có xu hƣớng đánh giá tốt một số phim khác,...
˗ Nếu xây dựng đƣợc mô hình nhƣ vậy, thì việc dự đoán cho ngƣời dùng mới rất dễ dàng: chúng ta chỉ cần xem xét hồ sơ (tuổi, giới tính,..) của ngƣời dùng và dựa trên những thông tin này để đề xuất phim.
1.4.2. Collaborative filtering - CF (Phương pháp lọc cộng tác)
˗ Lọc cộng tác thực hiện gợi ý các sản phẩm, dịch vụ, nội dung cho một ngƣời dùng nào đó dựa trên mối quan tâm, sở thích (preferences) của những ngƣời dùng tƣơng tự đối với các sản phẩm, dịch vụ, nội dung đó.
˗ Lọc cộng tác đƣợc xem là một trong ba cách tiếp cận chính trong xây dựng các hệ thống gợi ý.
Có nhiều kỹ thuật lọc cộng tác và đƣợc chia thành hai dạng chính: Memory–based: lọc cộng tác dựa trên việc ghi nhớ toàn bộ dữ liệu. Model–based: Lọc cộng tác dựa trên các mô hình phân lớp, dự đoán.
1.4.2.1 Ma trận đánh giá (rating matrix, user-item rating matrix)
˗ m ngƣời dùng U = { u1, u2, ..., um} ˗ n sản phẩm I = {i1, i2, ..., in}
Bản 1. 7. Ma trận đán á I1 I2 I3 I4 U1 4 ? 5 5 U2 4 2 1 U3 3 2 4 U4 4 4 U5 2 1 3 5
Shrek Snow White Spider-man Super-man
Alice Like Like Dislike
Bod Like Dislike Like
Chris Dislike Like
Tony Like Dislike ?
a. Ma trận tƣờng minh (explicit rating matrix)
Ngƣời dùng đánh giá trực tiếp đối với các sản phẩm, dịch vụ, nội dung. Thang điểm thƣờng là:
o Nhị phân: Like, Dislike. o Liên tục trong đoạn [0,1]
o Năm mức rời rạc: 1, 2, 3, 4, 5 (với 5 là mức đánh giá tốt nhất)
b. Ma trận đán á suy d n (implicit rating matrix)
Ma trận đƣợc suy diễn từ thông tin thu thập đƣợc về hành vi ngƣời dùng nhƣ: o Tìm kiếm (browsing) o Đọc (reading) o Xem (watching) o Chia sẻ (sharing) o Mua (buying)
Sau đó ánh xạ hành vi ngƣời dùng vào các mức điểm.
1.4.2.2. Các tính chất của lọc cộng tác
a. Dữ li u t ƣa (Data sparsity)
˗ Ma trận đánh giá có thể rất thƣa.
˗ Dữ liệu thƣa ảnh hƣởng rất nhiều đến hiệu quả hệ gợi ý bởi rất khó tính toán sự tƣơng tự giữa các ngƣời dùng (users) hoặc giữa các sản phẩm (items)
o Hai sản phẩm có thể rất giống nhau nhƣng có t ngƣời cùng đánh giá đồng thời hai sản phẩm.
o Hai ngƣời dùng có thể giống nhau về sở th ch nhƣng chƣa đánh giá cùng sản phẩm.
Giải pháp: Áp dụng các kỹ thuật giảm số chiều (dimensionality
reduction)
b. Xuất phát nguội (Cold start)
˗ Vấn đề ngƣời dùng mới (new user problem) o Chƣa đánh giá sản phẩm nào
o Chƣa có các dữ liệu về các hành vi
˗ Vấn đề sản phẩm mới (new item problem)
o Chƣa đƣợc ngƣời dùng nào đánh giá o Chƣa đƣợc ai xem, mua, tìm kiếm, ... Giải pháp:
o Gợi ý các sản phẩm phổ biến, ngẫu nhi n cho ngƣời dùng mới; các sản phẩm mới đƣợc xuất hiện ở đầu trang
o Content-boosted CF: tích hợp thêm hồ sơ (profile) ngƣời dùng mới hoặc sử dụng th m các đặc tính của sản phẩm.
c. Khả năn ở rộng (Scalability)
thời gian tính toán sẽ tăng cao, khó đáp ứng gợi ý thời gian thực hoặc gần thời gian thực.
Giải pháp:
o Áp dụng các kỹ thuật giảm số chiều nhƣ SVD, PCA.
o Item-based CF có khả năng mở rộng cao hơn so với user-based CF.
d. Vấn đề từ đồn n ĩa (Synonymy)
˗ Các từ đồng nghĩa có thể gây cản trở cho việc t nh toán độ tƣơng tự. ˗ Ví dụ: children movie và children film có thể gây ra keyword- mismath, làm ảnh hƣởng đến việc t nh toán độ tƣơng tự.
Giải pháp: Áp dụng các kỹ thuật phân tích ngữ nghĩa nhƣ LSI (Latent Semantic Indexing), mô hình chủ đề (Topic Models) hoặc Deep Learning để giải quyết vấn đề này.
e. Gray sheep và Black sheep
˗ Gray sheep:
o Những ngƣời có sở thích không giống ai. o CF không có hiệu quả trong trƣờng hợp này. o Có thể kết hợp CF và content-based.
˗ Black sheep:
o Những ngƣời có đánh giá kì quặc (ví dụ nhƣ th ch nhƣng lại dùng những từ ngữ đánh giá nhƣ không th ch) n n không thể recommend chính xác cho những ngƣời này.
f. Shilling attacks
˗ Xảy ra khi cạnh tranh không lành mạnh:
o Đánh giá sản phẩm của mình cao, đánh giá sản phẩm của đối thủ thấp. ˗ Item-based CF ít bị ảnh hƣởng bởi shilling attacks hơn so với user-based CF.
phát hiện ngoại lệ.
1.4.2.3. Lọc cộng tác dựa trên ghi nhớ (Memory-based CF)
˗ Sử dụng ma trận đánh giá để thực hiện dự đoán và gợi ý.
˗ Giả sử mỗi ngƣời dùng thuộc ít nhất một nhóm những ngƣời có chung sở thích, mối quan tâm.
˗ Ngƣời cần đƣợc gợi ý đƣợc gọi là active user.
˗ Những ngƣời dùng có sở th ch tƣơng tự với active user đƣợc gọi là láng giềng gần (neighbors).
˗ Cách tiếp cận:
o User-based: dựa tr n ngƣời dùng để dự đoán. o Items-based: dựa trên sản phẩm để dự đoán.
a. Cá ƣớc thực hi n
˗ Bƣớc 1: Similarity computation - T nh toán độ tƣơng tự giữa các
ngƣời dùng (wa,u) đối với user-based và giữa các sản phẩm (wi,j) đối với items- based.
˗ Bƣớc 2: Prediction- Ƣớc lƣợng hay dự đoán giá trị rating của
active user đối với một sản phẩm nào đó dựa trên thông tin từ bƣớc 1.
@ Thuật toán:
Bước 1: Tìm những ngƣời tƣơng tự u với ngƣời dùng a dựa trên các
sản phẩm chung mà họ đã xếp hạng, gọi là wa,u.
Bước 2: Với mỗi sản phẩm mà những ngƣời tƣơng tự u với ngƣời
dùng a đã xếp hạng (nhƣng a chƣa xếp hạng), dự đoán mức độ xếp hạng của ngƣời dùng a đối với sản phẩm này.
∑ ∑( )
Bước 3: Sinh dự đoán đánh giá của với sản phẩm chƣa đánh giá py: Gọi ̂ là tập K1 ngƣời dùng tƣơng tự nhất đối với (Tập láng giềng với ). Khi đó mức độ phù hợp của ngƣời dùng với sản phẩm mới py đƣợc xác định nhƣ một hàm các đánh giá của tập láng giềng theo một số phƣơng pháp phổ dụng dƣới đây:
( ) ∑ ̂
( ) ∑ ̂ ( )
( ) ̅ ∑ ̂ ( ) ( ̅̅̅)
Trong đó: đƣợc gọi là nhân tố chuẩn hóa, ̅ là trung bình các đánh giá của ngƣời dùng đƣợc xác định theo công thức:
∑ ̂ ( ) ̅ | |∑
* | +
b. Gợi ý Top-N sản phẩm
˗ Xác định k ngƣời dùng tƣơng tự nhất với active user và gọi là k ngƣời dùng láng giềng (neighbors).
˗ Tổng hợp từ k ngƣời dùng láng giềng top-N sản phẩm phổ biến nhất để gợi ý cho active user.
Bƣớc 1: Tính toán m độ tƣơn tự (similarity computation)
Đối với item-based CF: T nh toán độ tƣơng tự wi,j giữa hai item i và j dựa trên những ngƣời dùng cùng đánh giá hai item này.
Đối với user-based CF: t nh toán độ tƣơng tự wu,v giữa hai ngƣời dùng u, v dựa trên những đánh giá của hai ngƣời dùng này trên cùng các items.
Bƣớc 2: Dự đoán v ợi ý - Weight Sum of Other's Rating
Dự đoán mức độ rating của a t ve user a đối với một sản phẩm i nào đó, ký hiệu là Pa,i:
̅ ∑ ( ̅ ) ∑ | |
ra và ru là rating trung bình của a và u trên các sản phẩm. wa,u là mức độ tƣơng tƣơng tự giữa hai ngƣời dùng a và u. U là tập tất cả ngƣời dùng (trừ a) đã đánh giá sản phẩm i.
Dự đoán v ợi ý - Simple Weighted Average
Với gợi ý dựa trện sản phẩm (item-based), giá trị dự đoán rating của một ngƣời dùng u trên sản phẩm i, ký hiệu là Pu,i, đƣợc t nh nhƣ sau:
∑ ∑ | | Trong đó:
J là tập tất cả các sản phẩm (trừ i) mà ngƣời dùng u đã đánh giá. wi,j là mức độ tƣơng tự giữa hai sản phẩm i và j.
ru,j là rating của ngƣời dùng đối với sản phẩm j. Gợi ý top-N sản phẩ t eo n ƣời dùng (user-based)
˗ Gọi a là active user
˗ Tìm Ua là tập k ngƣời dùng tƣơng tự nhất với a. o Dùng độ đo tƣơng quan Pearson hoặc Cosine
˗ Gọi C là tập tất cả các sản phẩm mà các ngƣời dùng trong Ua đã mua hoặc đánh giá mà a chƣa mua hay đánh giá.
˗ Xếp hạng các sản phẩm trong C giảm dần theo số ngƣời dùng (trong Ua) mua hoặc đánh giá.
˗ Lấy top-N sản phẩm từ C theo thứ tự xếp hạng tr n để gợi ý hay gợi ý cho a.
Gợi ý top-N sản phẩm theo sản phẩm (items-based)
˗ Gọi a là active user, R là ma trận đánh giá.
˗ Gọi Ia là tập sản phẩm mà a đã mua hoặc đánh giá.
˗ Với mỗi sản phẩm i trong Ia, xác định k sản phẩm tƣơng tự nhất với i.
˗ C là tập tất cả các sản phẩm tƣơng tự các sản phẩm trong Ia. ˗ Loại bỏ các sản phẩm Ia trong C.
˗ T nh độ tƣơng tự giữa các sản phẩm trong C với tập sản phẩm Ia. ˗ Xếp hạng C giảm dần theo mức độ tƣơng tự nói trên.
˗ Lấy top N sản phầm từ C theo thứ tự giảm dần của độ tƣơng tự, sau đó gợi ý cho ngƣời dùng a.
1.4.2.4. Lọc cộng tác dựa trên mô hình (model-based CF)
˗ Thực hiện gợi ý dựa trên các mô hình học máy.
˗ Các mô hình đƣợc xây dựng dựa trên dữ liệu huấn luyện.
˗ Các phƣơng pháp để xây dựng mô hình lọc cộng tác thƣờng dùng:
o Bayesian models o Clustering model
1.4.3. Hybrid approach (các phương pháp lai)
Các phƣơng pháp này là sự kết hợp các phƣơng pháp tiếp cận dựa trên nội dung và lọc cộng tác, chúng cho kết quả tốt trong nhiều trƣờng hợp và do đó, đƣợc sử dụng trong nhiều hệ thống đề xuất quy mô lớn hiện nay. Sự kết hợp đƣợc thực hiện trong các phƣơng pháp lai có thể chủ yếu có hai dạng:
˗ Huấn luyện hai mô hình một cách độc lập (một mô hình lọc cộng tác và một mô hình dựa trên nội dung) và kết hợp các đề xuất của chúng
˗ Trực tiếp xây dựng một mô hình để thống nhất cả hai cách tiếp cận bằng cách sử dụng làm thông tin trƣớc khi nhập (về ngƣời dùng và/hoặc
vật phẩm) cũng nhƣ thông tin tƣơng tác của cộng tác trực tuyến.
1.5. Ti u kết ƣơn 1
Nhƣ vậy, luận văn đã giới thiệu tổng quan về đồ thị, CSDL đồ thị, CSDL đồ thị Neo4j, tìm hiểu ƣu điểm của truy vấn đối với dữ liệu lớn trên CSDL đồ thị so với CSDL quan hệ, ngôn ngữ truy vấn Cypher; hệ gợi ý, các phƣơng pháp tiếp cận phổ biến trong xây dựng hệ gợi ý kèm theo những hạn chế của từng phƣơng pháp.
Dựa trên các tài liệu mà luận văn đã tham khảo, khi thực thi truy vấn trên dữ liệu lớn, CSDL truyền thống gặp khó khăn về vấn đề thời gian đặc biệt với dữ liệu có cấu trúc dạng đồ thị, đồng thời CSDL Neo4j có nhiều ƣu điểm hơn so với các CSDL truyền thống khi thực thi truy vấn trên dữ liệu lớn có cấu trúc dạng đồ thị.
Bài toán hệ gợi ý là bài toán đang có phạm vi ứng dụng rất rộng lớn, đặc biệt là trong giai đoạn bùng nổ thƣơng mại điện tử, mạng xã hội... Vấn đề xây dựng một hệ gợi ý trên dữ liệu lớn có độ tin cậy cao mà vẫn đảm bảo đƣợc vấn đề thời gian là một thách thức.
Trong chƣơng tiếp theo, luận văn sẽ tập trung nghiên cứu, sử dụng CSDL đồ thị mà cụ thể là CSDL Neo4J để lƣu trữ dữ liệu và xây dựng các chức năng t nh toán trong Hệ gợi ý bằng NNLT Python, ngôn ngữ truy vấn Cypher và thƣ viện py2neo.
CHƢƠNG 2. XÂY DỰNG HỆ GỢI Ý SỬ DỤNG NEO4J
Trong chƣơng này, luận văn tập trung vào nghiên cứu xây dựng CSDL trên Neo4j, thực hiện các thuật toán của hệ gợi ý dựa trên bộ dữ liệu MovieLens để đƣa ra gợi ý các bộ phim cho từng ngƣời dùng dựa vào các phim họ đã đánh giá và những ngƣời dùng khác đã đánh giá bằng NNLT Python, ngôn ngữ truy vấn Cypher và thƣ viện py2neo. Cách tiếp cận thực