Mỗi hàng trên tương ứng với feature vector của một item (ở đây là một bộ phim).
Kết quả dự đốn: dự đốn rating cho user có id là 120, kết quả tìm
được là:
Hình 5-11. Kết quả dự đốn content-based
Tính tốn RMSE cho tập dữ liệu train và dữ liệu test, kết quả là:
5.1.2.2. Neighborhood-based Collaborative Filtering
Hình 5-13. Bảng số sao user U rate cho item I
Giả sử có các user từ u0 đến u6 và các item từ i0 đến i4, trong đó các số trong mỗi ơ vng thể hiện số sao mà mỗi user đã rate cho item với giá trị càng cao thể hiện mức độ quan tâm cao. Các dấu hỏi chấm là các giá trị mà hệ thống cần phải đi tìm. Đặt mức độ giống nhau của 2 user ui, uj là sim(ui, uj). Quan sát qua ta có thể nhận thấy là u0, u1 thích i0, i1, i2 và khơng thích i3, i4 cho lắm. Điều ngược lại xảy ra ở các user cịn lại. Vì vậy, 1 similarity function tốt cần đảm bảo: sim(u0, u1) > sim(u0, ui), ∀i > 1
Từ đó, để xác định mức độ quan tâm của u0 lên i2, nên dựa trên hành vi của u1 lên sản phẩm này. Vì u1 thích i2 nên hệ thống cần gợi ý i2 cho u0
Câu hỏi đặt ra là: hàm số similarity như thế nào là tốt? Để đo similarity giữa 2 user, cách thường làm là xây dựng feature vector cho mỗi user rồi áp dụng 1 hàm có khả năng đo similarity giữa 2 vector đó. Chú ý rằng việc feature vector này khác với việc xây dựng item profile như trong Content- based System. Các vector này được xây dựng trực tiếp dựa trên utility matrix chứ không dùng dữ liệu ngồi như item profile. Với mỗi user, thơng tin duy nhất mà biết là các rating mà user đó đã thực hiện, tức cột tương ứng vì mỗi user thường chỉ rate một số lượng rất nhỏ các item. Cách khắc phục là bằng cách nào đó, ta giúp hệ thống điền các giá trị này sao cho việc điền không
làm ảnh hưởng nhiều tới sự giống nhau giữa 2 vector. Việc điền này chỉ phục vụ cho việc tính similarity chứ khơng phải là suy luận ra giá trị cuối cùng.
Hình 5-14. Các bước thực hiện Neighborhood-based CF
Ví dụ mơ tả User-user CF: a) utility matrix (UM) ban đầu. b) UM đã được chuẩn hoá. c) User similarity matrix. d) Dự đốn các (normalized) rating cịn thiếu. e) Vd về cách dự đoán normalized rating của u1 cho i1. f) Dự đốn các (denormalized) rating cịn thiếu
Chuẩn hố dữ liệu:
Hàng cuối cùng trong hình a) là giá trị trung bình của rating cho mỗi user. Giá trị cao tương ứng với các user dễ tính và ngược lại. Khi đó nếu tiếp tục trừ từ mỗi rating đi giá trị này và thay các giá trị chưa biết bằng 0, ta sẽ được ma trận chuẩn hố như hình b). Vì sao bước chuẩn hố này lại quan trọng?
Việc trừ đi trung bình cộng của mỗi cột khiến trong mỗi cột có giá trị dương và âm. Những giá trị dương tương ứng với việc user thích item,
bằng 0 tương ứng với việc chưa xác định được liệu user có thích item hay không.
Về mặt kỹ thuật, số chiều của utility matrix là rất lớn với hàng triệu user và item, nếu lưu toàn bộ giá trị trong 1 ma trận thì khả năng cao sẽ khơng đủ bộ nhớ. Thấy rằng số lượng rating biết trước thường là một số rất nhỏ so với kích thước của utility matrix, sẽ tốt hơn nếu lưu ma trận này dưới dạng sparse matrix, tức là chỉ lưu các giá trị khác 0 và vị trí của chúng. Vì vậy, tốt hơn hết, các dấu ‘?’ nên được thay bằng giá trị ‘0’, tức chưa xác định liệu user có thích item hay khơng. Việc này khơng những tới ưu bộ nhớ mà việc tính tốn similarity matrix sau này cũng hiệu quả hơn.
Sau khi đã chuẩn hoá dữ liệu như trên, một vài similarity function thường được sử dụng là:
• Cosine Similarity: Đây là hàm được sử dụng nhiều nhất, và nó cũng quen thuộc nhất vì nó giống với cơng thức tính cos của góc giữa 2 vector u1, u2.
cosine_similarity(u1, u2) = cos(u1, u2) = 𝑢1⋅𝑢2
‖𝑢1‖.‖𝑢2‖
Trong đó, u1,2 là vector tương ứng với user 1, 2 đã được chuẩn hoá như ở trên. Độ similarity của 2 vector là 1 số trong đoạn [-1, 1]. Giá trị bằng 1 thể hiện 2 vector hoàn toàn giống nhau. Hàm số cos của 1 góc bằng 1 nghĩa là góc giữa 2 vector bằng 0, tức 1 vector bằng tích của 1 số dương với vector còn lại. Giá trị cos = -1 thể hiện 2 vector này hoàn toàn trái ngược nhau.
Ví dụ về cosine_similarity của các user trong hình b) được cho trong hình c). Similarity matrix S là 1 ma trận đối xứng vì cos là 1 hàm chẵn, và nếu user A giống user B thì điều ngược lại cũng đúng. Các ô màu xanh trên đường chéo đều bằng 1 vì đó là cos của góc giữa 1 vector và chính nó, tức cos(0) = 1. Khi tính tốn ở các bước sau, ta không cần quan tâm tới các giá
trị 1 này. Tiếp tục quan sát các vector hàng tương ứng với u0, u1, u2 ta sẽ thấy một vài điều thú vị:
+ u0 gần với u1 và u5 (độ giống nhau là dương) hơn các user còn lại. Việc similarity cao giữa u0 và u1 là dễ hiểu vì cả 2 đều có xu hướng quan tâm tới i0, i1, i2 hơn cái item còn lại. Việc u0 gần với u5 thoạt đầu có vẻ vơ lý vì u5 đánh giá thấp các item mà u0 đánh giá cao; tuy nhiên khi nhìn vào ma trận đã chuẩn hố ở hình b), ta thấy rằng điều này là hợp lý. Vì item duy nhất mà cả 2 đã cung cấp thông tin là i1 với các giá trị tương ứng đều là tích cực.
+ u1 gần với u0 và xa các user còn lại
+ u2 gần với u3, u4, u5, u6 và xa các user còn lại
Từ similarity matrix này, ta có thể phân nhóm các user ra làm 2 nhóm (u0, u1) và (u2, u3, u4, u5, u6). Vì ma trận S này nhỏ nên có thể dễ dàng quan sát thấy điều này; khi số user lớn hơn, việc xác định bằng mắt thường là bất khả thi. Việc xây dựng thuật tốn phân nhóm user (user clustering) là việc tối quan trọng.
Pearson correlation:
Pearson correlation hay còn gọi là hệ số tương quan pearson, dùng để đo lường mức độ tương quan giữa 2 người dùng. Nguyên tắc cơ bản của thuật toán là đo lường sự phụ thuộc tuyến tính giữa 2 biến (hoặc người dùng). Do đó phân tích tương quan Pearson cịn được gọi là phân tích hồi quy đơn giản.
Hệ số tương quan Pearson (r) nhận giá trị từ -1 đến +1. Khi r = 0 hoặc gần bằng 0, điều đó có nghĩa là 2 biến khơng có liên quan gì đến nhau. Khi r > 0 nghĩa là 2 biến tuyến tính dương, nghĩa là khi giá trị của biến này tăng thì giá trị của biến kia cũng tăng. Ngược lại khi r < 0 nghĩa là 2 biến tuyến tính âm, nghĩa là nếu giá trị của biến này tăng thì biến kia sẽ giảm và ngược lại.
Cho 2 biến số x, y từ n mẫu, hệ số tương quan Pearson được ước tính bằng cơng thức sau:
Hình 5-15. Cơng thức tính hệ sống tương quan Pearson giữa x và y
Rating prediction:
Việc xác định mức độ quan tâm của 1 user lên 1 item dựa trên các user gần nhất (neighbor user) tương tự phương pháp K-nearest neighbors (KNN). Tương tự như KNN, trong CF, missing rating cũng được xác định dựa trên thông tin về k neighbor user. Tất nhiên chỉ quan tâm tới các user đã rate item đang xét. Predicted rating thường được xác định là trung bình cộng trọng số của các rating đã chuẩn hố. Có 1 điểm cần lưu ý, trong KNN, các trọng số được xác định dựa trên khoảng cách giữa 2 điểm, và các khoảng cách này là các số khơng âm.
Trong khi đó, trong CF, các trọng số được xác định dựa trên similarity giữa 2 user, những trọng số này có thể nhỏ hơn 0 như trong hình c).
Cơng thức được sử dụng để dự đốn rating của u cho i là:
𝑦̂𝑖,𝑢 =
∑𝑢𝑗∈𝑁(𝑢,𝑖)𝑦𝑖,𝑢𝑗𝑠𝑖𝑚(𝑢, 𝑢𝑗) ∑𝑢𝑗∈𝑁(𝑢,𝑖)|𝑠𝑖𝑚(𝑢, 𝑢𝑗)|
Trong đó 𝑁(𝑢, 𝑖) là tập hợp k user trong neighborhood (tức là có similarity cao nhất) của u và đã rate i.
Hình d) thể hiện việc điền các giá trị cịn thiếu trong ma trận chuẩn hố. Các ơ màu nền đỏ thể hiện các giá trị dương, tức các item mà có thể user đó quan tâm. Ở đây, lấy ngưỡng bằng 0, cũng có thể hồn tồn chọn các ngưỡng khác 0.
Một ví dụ về việc tính normalize rating của u1 cho i1 được cho trong hình e) với số nearest neighbors là k = 2. Các bước thực hiện như sau:
+ Xác định các user đã rate i1, đó là u0, u3, u5.
+ Xác định similarity của u1 và các user này, nhận được 0.83, - 0.40, -0.23. Hai (k=2) giá trị lớn nhất là 0.83 và -0.23 tương ứng với u0 và u5
+ Xác định các normalized rating của u0 và u5 cho i1, thu được 2 giá trị lần lượt là 0.75 và 0.5
+ Dự đoán kết quả:
𝑦̂𝑖1,𝑢1 = 0.83 × 0.75 + (−0.23) × 0.5
|0.83| + |−0.23| ≈ 0.48
Việc hệ thống quyết định gợi ý item nào cho mỗi user có thể được xác định bằng nhiều cách khác nhau. Có thể sắp xếp các unrate item theo thứ tự từ lớn đến bé của các predicted rating, hoặc chỉ chọn các item có normalized predicted rating dương – tương ứng với việc user này có nhiều khả năng thích hơn.
5.1.3. Đánh giá
5.1.3.1. So sánh kết quả
- Trên bộ dữ liệu MoviesLens100K, với dữ liệu train từ file ua.base và dữ liệu test từ ua.test
Content-based Neighborhood- based RMSE training 0.908843 0.894275 RMSE test 1.270618 0.98679
Bảng 5-1 Neighborhood-based cho kết quả tốt nhất (RMSE nhỏ nhất).
5.1.3.2. Ưu điểm và Nhược điểm Content-based Recommender System
- Ưu điểm:
• Khơng cần dữ liệu của những user khác.
• Tiết kiệm bộ nhớ và thời gian tính tốn. Đồng thời, hệ thống có khả năng tận dụng các thông tin đặc trưng của mỗi item như được mô tả trong bản mơ tả (description) của mỗi item
• Có thể gợi ý những item mới, những item khơng phổ biến - Nhược điểm:
• Khó để tìm ra feature cho từng item.
• Khơng gợi ý những item ngồi user profile.
• Khơng khai thác được thơng tin của những user khác
• khơng phải lúc nào chúng ta cũng có bản mơ tả cho mỗi item
Neighborhood-based Collaborative Filtering
- Ưu điểm:
• Đưa ra gợi ý chính xác hơn do sử dụng dữ liệu rating từ nhiều user khác nhau.
• Có thể hoạt động với nhiều loại item khác nhau. - Nhược điểm:
• Khởi đầu lạnh (Cold Start): cần một số lượng đủ user trong hệ thống để tìm được gợi ý phù hợp.
• Ma trận thưa (Sparsity): Utility matrix (ma trận rating) thường thưa thớt dẫn đến khó khăn trong việc tìm những users cùng rate một item.
• Khơng gợi ý được những item chưa có rating (item mới).
5.2. Áp dụng các thuật toán Recommedation vào ứng dụng 5.2.1. Gợi ý cho bạn 5.2.1. Gợi ý cho bạn
Trong ứng dụng có mục “Có thể bạn thích” ở các màn hình trang chủ, profile gợi ý này sẽ áp dụng thuật toán Neighborhood-based Collaborative Filtering dựa vào ratings của các user cho sản phẩm, sẽ tính ra các sản phẩm có độ tương đồng với người dùng đang đăng nhập. Nếu trường hợp user chưa có dữ liệu rating hoặc user mới thì sẽ dựa vào thuật toán WeightedRating để gợi ý top sản phẩm cho người dùng.
Sau khi nhận được dữ liệu gợi ý, ứng dụng sẽ hiển thị kết quả trong mục “gợi ý cho bạn”
5.2.2. Có thể bạn cũng thích
- Mục “Có thể bạn cũng thích” sẽ hiển thị trong một số màn hình chi tiết sản phẩm, màn hình sản phẩm u thích, hồ sơ người dùng, …
- “Có thể bạn cũng thích” áp dụng thuật toán Content-Based để gợi ý cho người dùng. Dữ liệu sẽ dựa vào sản phẩm đã xem, sản phẩm yêu thích, sản phẩm trong giỏ hàng và đã đặt hàng để gợi ý cho người dùng. - Sau khi nhận được dữ liệu gợi ý, ứng dụng sẽ hiển thị kết quả trong
mục “Có thể bạn cũng thích”
5.2.3. Sản phẩm tương tự
- Mục “sản phẩm tương tự” sẽ dựa vào thuật tốn Content-Based để tính độ tương đồng về mô tả đối với các sản phẩm khác. Sẽ trả về cho người dùng sản phẩm tương tự với sản phẩm người dùng hướng đến.
5.2.4. Tìm kiếm phổ biến
Khi tìm kiếm sản phẩm, ứng dụng sẽ hiển thị cho khách hàng những tìm kiếm phổ biến dựa vào thuật toán WeightedRating
Chương 6. KẾT LUẬN 6.1. Kết quả đạt được
6.1.1. Lý thuyết
- Hiểu được bài toán khuyến nghị với 2 phương pháp chính: Contend- based và Collaborative Filtering, bên cạnh cịn có phương pháp WeightedRating để xếp hạng sản phẩm.
- Nắm bắt được nghiệp vụ bán hàng online.
6.1.2. Công nghệ
Biết cách sử dụng các công nghệ hỗ trợ (Flutter, Java Spring Boot, MySQL) để xây dựng ứng dụng
- Java Spring Boot: Khoá luận sử dụng Java Spring Boot để xây dựng backend, tạo các API cho ứng dụng.
- MySQL: Sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu trữ database của ứng dụng.
- Flutter: xây dựng ứng dụng mobile để người dùng sử dụng, mua sắm thời trang.
6.1.3. Ứng dụng
6.1.3.1. Đối với ứng dụng
- Hoạt động tốt trên 2 nền tảng Android và iOS.
- Khách hàng có thể thực hiện được các chức năng có trong ứng dụng - Giao diện trực quan và tiện lợi cho người dùng
- Tạo được sự liên kết logic giữa các màn hình để khách hàng có thể chuyển màn hình một cách nhanh nhất và thuận tiện nhất
6.1.3.2. Đối với hệ thống gợi ý sản phẩm
- Hệ thống có thể gợi ý sản phẩm phù hợp cho người dùng mới (chưa đăng nhập) và người dùng cũ (đã đăng nhập).
- Dự đoán dược sở thích của người dùng dựa vào dữ liệu ratings.
6.1.3.3. Đối với người dùng
- Có thể đăng ký và đăng nhập để vào ứng dụng - Có thể tìm kiếm và xem thơng tin sản phẩm.
- Có thể xem các danh mục và tìm sản phẩm theo danh mục. - Được gợi ý các sản phẩm phù hợp với sở thích
- Có thể chỉnh sửa thơng tin cá nhân.
- Có thể thêm sản phẩm vào giỏ hàng, u thích sản phẩm, xem các sản phẩm đã xem.
- Có thể xem lịch sử đơn hàng của và quản lý đơn hàng muốn thanh tốn.
- Có thể đánh giá sản phẩm khi mua hàng thanh tốn thành cơng.
6.2. Hạn chế
- Vì quỹ thời gian khá ít và gặp một số khó khăn trong việc làm đề tài, nên ứng dụng cịn nhiều chức năng thiếu sót và ứng dụng cịn nhiều hạn chế:
+ Chưa tích hợp được thanh tốn trực tuyến.
+ Chưa phát triển tính năng xác thực qua bằng email, số điện thoại.
+ Chưa có tích hợp chức năng nhận thơng báo.
+ Chưa có chức năng admin để quản lý sản phẩm, bài viết và đơn hàng
+ Hệ thống gợi ý chưa hiệu quả với những trường hợp chưa có dữ liệu, thời gian cập nhật lại dữ liệu gợi ý chậm hơn thời gian thực.
+ Tối ưu code chưa tốt nên tốc độ tương tác trong ứng dụng cịn chậm.
+ Các thuật tốn ở mức độ hiểu và code thuần nên chưa tối ưu hố.
+ Một số chức năng chưa hồn thiện.
Chương 7. Hướng phát triển
- Xây dựng các chứa năng cịn thiếu, hồn thiện các chức năng đã có. - Tích hợp thanh tốn trực tuyến Paypal, Momo, thẻ ATM…
- Tích hợp các đơn vị vận chuyển và khuyến mãi giảm giá vận chuyển. - Tối ưu hóa code để tăng tốc độ tương tác.