Người dùng có thể tạo một hệ thống gợi ý nhanh hơn và dễ dàng hơn bằng cách sử dụng giao diện người dùng, các công nghệ được sử dụng để tạo ra các gợi ý và các dữ liệu đầu vào mà họ cần.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
NGÀNH KHOA HỌC MÁY TÍNH
Đề tài
XÂY DỰNG
“RECOMMENDER PLATFORM FOR ECOMMERCE”
Sinh viên: Nguyễn Văn Hoàng
Mã số: 1117833 Khóa: K37
Cần Thơ, 05/2015
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN KHOA HỌC MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
NGÀNH KHOA HỌC MÁY TÍNH
Đề tài
XÂY DỰNG
“RECOMMENDER PLATFORM FOR ECOMMERCE”
Giáo viên hướng dẫn Sinh viên thực hiện Tiến sĩ Trần Nguyễn Minh Thư Nguyễn Văn Hoàng
Mã số: 1117833
Khóa: K37
Cần Thơ, 05/2015
Trang 3Lời đầu tiên, em xin cám ơn Trường Đại Học Cần Thơ và Khoa Công Nghệ Thông Tin & Truyền Thông đã tạo điều kiện cho em thực hiện đề tài này
Để có thể hoàn thành luận văn tốt nghiệp của mình, em xin bày tỏ lòng biết ơn sâu sắc đến cô TS Trần Nguyễn Minh Thư đã tận tình hướng dẫn cho em trong suốt quá trình thực hiện luận văn tốt nghiệp
Em cũng xin gửi lời cảm ơn đến thầy cố vấn học tập TS Phạm Nguyên Khang quan tâm, giúp đỡ em trong suốt thời gian vừa qua
Em xin chân thành cảm ơn quý Thầy, Cô trong Khoa Công Nghệ Thông Tin & Truyền Thông Trường Đại Học Cần Thơ đã truyền đạt kiến thức trong 4 năm học tập vừa qua Vốn kiến thức nhận được trong quá trình học tập không chỉ là nền tảng cho quá trình nghiên cứu luận văn mà còn là hành trang quý báu để em có thể tự học tập, tự nghiên cứu và tự tin bước vào môi trường làm việc sau này
Dù đã cố gắng và nổ lực rất nhiều để hoàn thành luận văn này nhưng sai sót là điều khó tránh khỏi Em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy,
Cô
Cuối cùng em kính chúc quý Thầy, Cô dồi dào sức khỏe và thành công trong sự nghiệp cao quý, vĩ đại của mình
Trân trọng kính chào!
Cần Thơ, ngày 01 tháng 05 năm 2015
Sinh viên thực hiện
Nguyễn Văn Hoàng
Trang 4Trang
Chương 1: TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU CẦN ĐẠT 2
1.3 PHẠM VI NGHIÊN CỨU 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU 3
Chương 2: CƠ SỞ LÝ THUYẾT 4
2.1 HỆ THỐNG GỢI Ý (RECOMMENDER SYSTEM) 4
2.1.1 Giới thiệu 4
2.1.2 Nhiệm vụ của hệ thống gợi ý 5
2.1.3 Vai trò của hệ thống gợi ý 6
2.1.4 Ứng dụng của hệ thống gợi ý 7
2.1.5 Phương pháp xây dựng một hệ thống gợi ý 7
2.1.5.1 Chỉ số tương tự 8
2.1.5.2 Phương pháp lọc cộng tác (Collaborative Filtering) 9
10
2.1.5.1.2 Lọc cộng tác dựa trên mục dữ liệu (Item–Item Collaborative Filtering) 14
2.1.5.1.3 Ưu điểm và các vấn đề của phương pháp lọc cộng tác 16
2.2 APACHE MAHOUT 17
2.2.1 Giới thiệu 17
2.2.2 Mahout và hệ thống gợi ý 17
2.2.3 Phân cụm với Mahout 17
2.2.4 Phân loại nội dung với Mahout 18
2.3 SPRING IO PLATFORM 18
2.3.1 Giới thiệu 18
2.4 MONGODB 20
2.4.1 Giới thiệu 20
2.5 TẬP DỮ LIỆU MOVIELENS 21
2.5.1 Giới thiệu 21
2.5.2 Tập dữ liệu MovieLens 1M 22 2.1.5.1.1 Lọc cộng tác dựa trên người dùng (User–User Collaborative
Filtering)
Trang 53.3 PHƯƠNG PHÁP TIẾP CẬN 25
3.4 THIẾT KẾ VÀ CÀI ĐẶT 26
3.4.1 Các chức năng của hệ thống 26
3.4.2 Mô hình cơ sở dữ liệu 26
3.4.2.1 Users collection 26
3.4.2.2 Databases collection 27
3.4.2.3 Categories collection 28
3.4.2.4 Products collection 28
3.4.2.5 Transactions collection 29
3.4.2.6 Algorithms collection 29
3.4.2.7 Itembasedrecommendations collection 30
3.4.2.8 Userbasedrecommendations collection 30
3.4.3 Môi trường vận hành 31
3.4.4 Kết quả ứng dụng 32
3.4.4.1 Giao diện 32
3.4.4.2 Một số thiết kế chức năng chọn lọc 33
3.4.4.2.1 Đăng ký tài khoản 33
3.4.4.2.2 Quản lý cơ sở dữ liệu 36
3.4.4.2.3 Quản lý danh mục sản phẩm 39
3.4.4.2.4 Cập nhật thông tin sản phẩm 41
3.4.4.2.5 Quản lý giải thuật 42
TỔNG KẾT 49
KẾT QUẢ ĐẠT ĐƯỢC 49
Về mặt lý thuyết 49
Về mặt chương trình 49
HƯỚNG PHÁT TRIỂN 49
Phụ lục: GIỚI THIỆU CHƯƠNG TRÌNH 50
TÀI LIỆU THAM KHẢO 57
Trang 6Trang
Hình 2-1: Lọc cộng tác dựa trên người dùng 10
Hình 2-2: Ma trận xếp hạng 11
Hình 2-3: Ma trận trong lọc cộng tác dựa trên người dùng 12
Hình 2-4: Ví dụ lọc cộng tác dựa trên các mục dữ liệu 14
Hình 2-5: Ma trận trong lọc cộng tác dựa trên các mục dữ liệu 15
Hình 2-6: Các thành phần của Spring IO Platform 19
Hình 3-1: Sơ đồ tổng quan của hệ thống 25
Hình 3-2: Các chức năng chính của hệ thống 26
Hình 3-3: Giao diện frontend trên máy tính 32
Hình 3-4: Giao diện backend trên điện thoại di động (Nexus 7 - Portrait) 32
Hình 3-5: Đăng ký tài khoản 33
Hình 3-6: Thông báo đăng ký tài khoản thành công 33
Hình 3-7: Lưu đồ chức năng đăng ký tài khoản 34
Hình 3-8: Email đăng ký tài khoản thành công 35
Hình 3-9: Email kích hoạt tài khoản thành công 35
Hình 3-10: Lưu đồ chức năng kích hoạt tài khoản 36
Hình 3-11: Thêm cơ sở dữ liệu mới 36
Hình 3-12: Lưu đồ chức năng thêm cơ sở dữ liệu 37
Hình 3-13: Cập nhật thông tin cơ sở dữ liệu 37
Hình 3-14: Lưu đồ chức năng cập nhật thông tin cơ sở dữ liệu 38
Hình 3-15: Xoá cơ sở dữ liệu 38
Hình 3-16: Lưu đồ chức năng xoá cơ sở dữ liệu 39
Hình 3-17: Thêm danh mục sản phẩm 39
Hình 3-18: Lưu đồ chức năng thêm danh mục sản phẩm 40
Hình 3-19: Import danh mục sản phẩm từ file CSV 40
Hình 3-20: Lưu đồ chức năng import danh mục sản phẩm 41
Hình 3-21: Cập nhật thông tin sản phẩm 41
Hình 3-22: Lưu đồ chức năng cập thật thông tin sản phẩm 42
Hình 3-23: Tạo giải thuật 43
Hình 3-24: Lưu đồ chức năng tạo giải thuật 44
Hình 3-25: Cài đặt giải thuật 45
Trang 7Hình 3-28: Lưu đồ xử lý dữ liệu từ website người dùng 48
Trang 8Trang
Bảng 2-1: Xếp hạng của người dùng với các bộ phim 6
Bảng 2-2:Ví dụ sử dụng hệ số tương quan Pearson 8
Bảng 2-3: Ví dụ sử dụng hệ số tương quan khoảng cách Euclidean 9
Bảng 2-4: Ví dụ sử dụng hệ số tương quan Tanimoto 9
Bảng 2-5: Ví dụ sử dụng hệ số tương quan Log Likelihood 9
Bảng 2-6: Tính độ tương đồng giữa hai người sử dụng 13
Bảng 2-7: Tính độ tương đồng giữa hai mục dữ liệu 16
Trang 9serious business tools that are re-shaping the world of eCommerce Many of the largest commerce Web sites are already using recommender systems to help their customers find products to purchase A recommender system learns from a customer and recommends products that she will find most valuable from among the available products In this thesis we present a framework for recommender systems in eCommerce and approach collaborative filtering method for building recommender systems They can create a recommender systems for commerce Web sites faster and easier, using the interfaces they present to customers, the technologies used to create the recommendations, and the inputs they need from customers Thereby, there are many recommends suitable products for customers and help eCommerce sites increase sales
Hệ thống gợi ý mang đến những thay đổi mới cho các trang web thương mại điện tử, các công cụ kinh doanh được tái định hình trong thế giới của thương mại điện tử Nhiều trang web thương mại điện tử hàng đầu đã sử dụng các hệ thống gợi ý để giúp khách hàng của họ tìm thấy những sản phẩm cần mua Hệ thống gợi ý học từ một khách hàng
từ đó đề xuất cho cô ấy những sản phẩm được đánh giá nhất trong số các sản phẩm có sẵn Đề tài trình bày một framework cho hệ thống gợi ý trong lĩnh vực thương mại điện
tử và tiếp cận phương pháp lọc cộng tác để xây dựng các hệ thống gợi ý Người dùng
có thể tạo một hệ thống gợi ý nhanh hơn và dễ dàng hơn bằng cách sử dụng giao diện người dùng, các công nghệ được sử dụng để tạo ra các gợi ý và các dữ liệu đầu vào mà
họ cần Qua đó, nhiều sản phẩm hữu ích hơn được đề xuất cho khách hàng và tăng doanh số bán hàng cho các trang web thương mại điện tử
TÓM TẮT
Trang 10Internet, đã làm thay đổi toàn bộ cách thức hoạt động của con người cũng như tác động đến mọi lĩnh vực của đời sống kinh tế xã hội, đã tạo ra một môi trường lý tưởng cho hoạt động thương mại điện tử (E-commerce) phát triển Ngày nay, người tiêu dùng có thể dễ dàng tìm kiếm, mua sắm sản phẩm trực tuyến tại nhà thông qua internet mà không cần đi đến các cửa hàng Hàng ngàn website thương mại điện tử được tạo ra mỗi ngày, hàng triệu sản phẩm được tiến hành giao dịch thông qua internet Tại Việt Nam, nhu cầu tìm kiếm sản phẩm trên internet của người dùng đã tăng rất nhanh, khoảng 4,5 lần
từ năm 2009 đến 2014 Trong năm 2014, đã có 45% doanh nghiệp có website thương mại điện tử, doanh thu B2C (Business-to-Consumer) đạt 2,97 tỷ USD từ việc bán hàng trực tuyến (nguồn: Báo cáo Thương mại điện tử Việt Nam năm 2014 – Cục Thương mại điện tử và Công nghệ thông tin (VECITA)) Những con số cho thấy sự phát triển nhanh chóng của thương mại điện tử trong việc đáp ứng nhu cầu và lợi ích của người tiêu dùng Tuy nhiên, điều này đã dẫn đến sự bùng nổ thông tin khiến cho việc tìm kiếm thông tin, sản phẩm của người tiêu dùng gặp nhiều khó khăn, mất nhiều thời gian, công sức trong việc loại bỏ những thông tin không thật sự cần thiết và chọn lọc ra những gì phù hợp nhất cho bản thân mình, nguyên nhân là do:
- Người tiêu dùng không thực sự am hiểu về sản phẩm mà họ đang tìm Họ đưa ra những thông tin không đầy đủ hoặc không chính xác về sản phẩm cần tìm Lúc này tập kết quả trả về sẽ chứa đựng rất nhiều kết quả không phù hợp, trong khi lại
bỏ qua những sản phẩm cần tìm
- Các nhu cầu và sở thích mà người dùng nêu ra tại thời điểm yêu cầu thường chỉ là tập con của các mong muốn thật sự của họ Người sử dụng thường không thích liệt
kê quá nhiều tiêu chí tìm kiếm Đồng thời, người thiết kế hệ thống cũng luôn có
xu hướng tránh làm bực mình người sử dụng với quá nhiều các khai báo tìm kiếm ban đầu
- Có quá nhiều sản phẩm cùng loại và tương đồng với sản phẩm cần tìm như: kiểu dáng, màu sắc, kích thước, phiên bản, giá cả, nhà sản xuất, … gây khó khăn trong việc lựa chọn sản phẩm phù hợp của người tiêu dùng
Lúc này, người dùng sẽ phải cần đến sự giúp đỡ của hệ thống gợi ý Các hệ thống gợi ý (Recommender System) là công cụ hỗ trợ quyết định, nhằm cung cấp cho người dùng những đề nghị liên quan, những đề nghị hiệu quả nhất có thể từ thông tin của các mục dữ liệu, từ hồ sơ người sử dụng và từ mối liên hệ giữa những đối tượng này Ngày nay, hệ thống gợi ý được ứng dụng nhiều trong lĩnh vực thương mại điện tử như: hệ thống gợi ý bán hàng của Amazon, Netflix, YARPP, Ebay, … Lấy ví dụ với trang web Amazon, khi người dùng truy cập vào trang web này họ sẽ được gợi ý những sản phẩm tiềm năng nhất từ hàng triệu sản phẩm trong hệ thống Cụ thể, khi người dùng chọn quyển sách “Mahout in Action”, hệ thống sẽ gợi ý một danh sách những quyển sách
Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Sự phát triển của Cách mạng khoa học và công nghệ nhất là sự ra đời của mạng
Trang 11danh sách này là kết quả được tính toán dựa trên việc thu thập dữ liệu về người dùng như: khi mua hàng, khi đưa ra các đánh giá cá nhân, lịch sử mua hàng và từ những người dùng có cùng chung sở thích Việc đưa ra các dự đoán tốt nhất về sản phẩm mà người dùng có thể thích, giúp gia tăng số lượng và số loại sản phẩm bán được
Với một website thương mại điện tử có hơn 100 đơn hàng là có thể tiến hành xây dựng hệ thống gợi ý, vì để có khoảng 100 đơn hàng, website phải có từ 20,000 đến 30,000 khách truy cập mỗi ngày Tuy nhiên, việc xây dựng một hệ thống gợi ý phải mất thời gian từ ba đến sáu tháng Ngoài ra, chi phí và kinh nghiệm trong lĩnh vực phân tích
dữ liệu cũng là điều đáng quan tâm đối với các doanh nghiệp Xây dựng một platform
để hỗ trợ việc xây dựng hệ thống gợi ý cho các website thương mại điện tử một cách dễ dàng, nhanh chóng không những phát huy những ưu điểm mà hệ thống gợi ý mang lại cho người tiêu dùng và doanh nghiệp mà còn giúp các doanh nghiệp tiết kiệm chi phí, thời gian vào việc đầu tư và xây dựng hệ thống
chức năng cụ thể như sau:
- Customer Manager: Quản lý thông tin khách hàng
- Feed Data Manager: Quản lý dữ liệu, cho phép upload dữ liệu thông qua
web, FTP
- Recommender Frontend: Là RESTful API để lấy dữ liệu recommend hiển thị
lên website khách hàng, Tracking thao tác người dùng trên website khách hàng
- Recommender Engine: Là engine để thao tác trên dữ liệu của khách hàng và
build dữ liệu recommend
- Reporting: Cung cấp các loại báo cáo liên quan đến dữ liệu recommend, tính
hiệu quả của recommend, …
Đối tượng gợi ý: Các sản phẩm trên các website thương mại điện tử
Đối tượng được gợi ý: Người dùng trên trên các website thương mại điện tử Nội dung gợi ý: Danh sách các sản phẩm tiềm năng nhất mà người dùng hiện tại
sẽ quan tâm
1.2 MỤC TIÊU CẦN ĐẠT
- Nghiên cứu hệ thống gợi ý, phương pháp lọc cộng tác (Collabrative filtering), xây
1.3 PHẠM VI NGHIÊN CỨU
Nghiên cứu hệ thống gợi ý, mô hình của các hệ thống gợi ý hiện có, các phương
dựng hệ thống gợi ý dựa trên phương pháp lọc cộng tác
- Xây dựng platform cho hệ thống gợi ý trong lĩnh vực thương mại điện tử có các
- Thiết kế, xây dựng website có giao diện Responsive tương thích trên nhiều thiết
bị, dễ sử dụng và thân thiện với người dùng
Nghiên cứu các công nghệ xây dựng một website hiệu quả có tốc độ truy cập nhanh
Trang 12- Nghiên cứu các tài liệu về hệ thống gợi ý, phương pháp lọc cộng tác Nghiên cứu các giải thuật gợi ý của phương pháp lọc cộng tác
- Nghiên cứu các công nghệ liên quan để xây dựng platform cho hệ thống gợi ý, cụ thể:
Phương pháp điều tra thực tế: Tiến hành tìm hiểu, khảo sát, thu thập thông tin
về các hệ thống gợi ý hiện có như: Amazon, Ebay, Netflix, YARPP, …
Phương pháp thực nghiệm: Xây dựng platform cho hệ thống gợi ý trong lĩnh
vực thương mại điện tử, thử nghiệm hệ thống trên môi trường giả lập và trên hệ thống thực với tập dữ liệu MovieLens (http://grouplens.org/datasets/movielens/)
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp nghiên cứu lý thuyết:
Trang 13Hệ thống gợi ý (Recommender Systems) là một phân lớp của hệ thống lọc thông tin, tìm cách dự đoán mức độ ưu tiên của người dùng với đối tượng sản phẩm, từ đó đề xuất những thông tin hữu ích về sản phẩm, hàng hoá hay dịch vụ mà họ sẽ quan tâm dựa trên lịch sử tương tác của người đó và những người khác với hệ thống nhằm tăng doanh số bán hàng Các hệ thống gợi ý được xây dựng để giúp người dùng tìm thấy thông tin có liên quan một cách nhanh chóng và dễ dàng trên một cơ sở dữ liệu lớn, ví
dụ như: Youtube, Google News, Facebook, … Ngày nay, hệ thống gợi ý đã trở nên rất phổ biến và được áp dụng trong nhiều lĩnh vực khác nhau như thương mại điện tử, giải trí, khoa học, tin tức, …
Hệ thống gợi ý có thể hoạt động độc lập hoặc đóng vai trò như một chức năng trong một trang web hay một hệ thống khác
Hệ thống gợi ý bao gồm 3 thành phần:
- User là người dùng truy cập vào hệ thống (thành viên đăng ký hoặc khách vãng
lai) User là đối tượng được gợi ý
- Item là các mặt hàng hay sản phẩm Item là đối tượng gợi ý Ví dụ: item có thể là
các bộ phim mà một trang web xem phim muốn gợi ý cho người dùng, trong bán hàng trực tuyến item có thể là các mặt hàng, sản phẩm mà người cung cấp muốn gợi ý
- Transaction là tương tác giữa user với item Transaction có thể là lịch sử tìm
kiếm, lịch sử mua hàng, lịch sử xem mặt hàng hay xếp hạng, đánh giá của người dùng với các sản phẩm
Hệ thống gợi ý thường chia nhóm người dùng thành hai loại: người dùng chưa có lịch sử tương tác với hệ thống (nhóm 1) và người dùng đã có lịch sử tương tác với hệ thống (nhóm 2) Người dùng thuộc nhóm 1 có thể là khách vãng lai hoặc thành viên đăng ký mới, họ chưa có lịch sử tương tác với hệ thống hoặc chưa cập nhật nhật đủ thông tin để hệ thống có cơ sở đưa ra các gợi ý Nhóm 2 là những người dùng có đủ thông tin và lịch sử tương tác với hệ thống để hệ thống gợi ý đề xuất những thông tin
có thể sẽ được người dùng thích, quan tâm
Hệ thống gợi ý có nhiều ưu điểm, mang lại lợi ích cho cả người tiêu dùng lẫn doanh nghiệp Chính vì thế các hệ thống gợi ngày càng được quan tâm, điển hình như một số ví dụ sau đây:
- Các trang web được đánh giá cao như Amazon.com, Youtube.com, Netflix.com,
… có một hệ thống gợi ý tương đối hiệu quả Hơn nữa, ngày nay nhiều công ty truyền thông đang triển khai và phát triển hệ thống gợi ý như một phần dịch vụ quan trọng mà họ cần phải cung cấp Ví dụ như trang Netflix.com đã cung cấp giải thưởng 1 triệu đô la cho những người đưa ra một thuật toán đầu tiên đánh bại được
Chương 2
CƠ SỞ LÝ THUYẾT
2.1 HỆ THỐNG GỢI Ý (RECOMMENDER SYSTEM)
2.1.1 Giới thiệu
Trang 1410% thuật toán gợi ý của họ Và giải thưởng đó đã được một nhóm nghiên cứu có tên là “Bellkor’s Pragmatic Chaos” giành được năm 2009
- Tại các trường đại học và sau đại học trên thế giới đã có những khoá học dành riêng cho việc nghiên cứu hệ thống gợi ý, hướng dẫn hệ thống gợi ý cũng được phổ biến trong các hội nghị khoa học máy tính
- Trong các tạp chí khoa học đã có một số vấn đề đặc biệt được đưa ra bao gồm việc nghiên cứu và phát triển lĩnh vực hệ thống gợi ý Một số tạp chí dành riêng để viết
về hệ thống gợi ý như là AI Communications (2008); IEEE Intelligent Systems (2007); International Journal of Electronic Commerce (2006); International Journal of Computer Science and Applications (2006); ACM Transactions on Computer-Human Interaction (2005); and ACM Transactions on Information Systems (2004)
Qua đó cho thấy lĩnh vực nghiên cứu hệ thống gợi ý đã và đang rất được nhiều người quan tâm và khẳng định giá trị của nó trong thực tế Trong tương lai, lĩnh vực này sẽ còn được quan tâm nhiều hơn
sau:
- Tìm kiếm gợi ý tin cậy: Có một số người sử dụng không tin cậy hệ thống gợi ý, vì
vậy để đưa ra gợi ý tốt nhất cho họ cần kiểm tra hành vi tìm kiếm của họ thật đầy
đủ, chính xác và dựa trên những thông tin thật sự có ích cho việc đưa ra gợi ý
- Gợi ý một danh sách các mục tốt nhất: Hệ thống gợi ý có thể đề xuất một danh
sách một số mục tốt nhất cho người dùng Mục tốt nhất dựa trên đánh giá của người dùng, có thể là những mục được nhiều người dùng yêu thích nhất
- Gợi ý tất cả các mục tốt: Thay vì hệ thống gợi ý đề xuất một danh sách các mục
tốt nhất thì nó sẽ cung cấp cho người dùng một danh sách tất cả các mục tốt để người dùng lựa chọn
Để hiểu rõ hơn nhiệm vụ của hệ thống gợi ý ta có thể xem ví dụ minh hoạ sau đây Sau khi hệ thống lấy ý kiến cá nhân của người dùng cho các mục ta có bảng sau:
Batman Begins
Alice in Wonderland
Dumb and
Để hiểu rõ hơn công việc của hệ thống gợi ý ta sẽ xem một số nhiệm vụ phổ biến
User
- Có nhiều hội thảo và hội nghị dành riêng cho lĩnh vực này Hội nghị đặc biệt được nhiều người quan tâm là ACM Recommender Systems (viết tắt là RecSys) được thành lập năm 2007 là sự kiện uy tín tổ chức hàng năm để nghiên cứu về công nghệ gợi ý và ứng dụng Ngoài ra, hệ thống gợi ý còn được thảo luận trong các hội nghị truyền thống về lĩnh vực cơ sở dữ liệu, hệ thống thông tin và hệ thống thích nghi Trong số những hội nghị đó, cần nhắc đến một số hội nghị lớn như: ACM SIGIR Special Interest Group on Information Retrieval (SIGIR), User Modeling, Adaptation and Personalization (UMAP), and ACM’s Special Interest Group on Management Of Data (SIGMOD)
- Lấy ý kiến cá nhân: Hệ thống gợi ý tạo điều kiện cho người dùng đóng góp đánh
giá và bày tỏ ý kiến với các mục dữ liệu Người dùng có thể bình luận hoặc xếp hạng sản phẩm tuỳ theo từng hệ thống gợi ý
Trang 15Bảng 2-1: Xếp hạng của người dùng với các bộ phim
Ví dụ bảng 2-1 biểu diễn ma trận xếp hạng của người dùng với các bộ phim Trong bảng trên, có 5 người dùng là A, B, C, D và E có xếp hạng cho các bộ phim Batman Begins, Alice in Wonderland, Dumb and Dumber và Equilibrium Các giá trị trong ma trận là xếp hạng của người dùng với bộ phim Các giá trị này được đánh giá theo thang điểm từ 1 đến 5 Giá trị rỗng thể hiện người dùng không có xếp hạng cho bộ phim đó Nhiệm vụ của hệ thống gợi ý là tìm kiếm những người dùng chưa có đánh giá cho một bộ phim nào đó và dự đoán xem họ đánh giá cho bộ phim đó là bao nhiêu Đối với những mục có dự đoán điểm số cao sẽ được hệ thống lựa chọn để đưa ra gợi ý cho người dùng
nó mang lại đối với hai đối tượng là nhà cung cấp và người sử dụng hệ thống
Đối với nhà cung cấp:
- Hỗ trợ nghiên cứu thị trường giúp định hướng phát triển của doanh nghiệp trong tương lai Doanh nghiệp nắm bắt, cập nhật nhanh nhất thị hiếu của người dùng để
từ đó lựa chọn tập trung đầu tư và phát triển mạnh hơn những mặt hàng được nhiều người quan tâm
- Giới thiệu được nhiều mặt hàng, sản phẩm đến với người dùng Các nhà cung cấp
bao giờ cũng muốn phát triển quy mô hệ thống vì thế một hệ thống gợi ý có thể giới thiệu tới người dùng nhiều mặt hàng, sản phẩm khác nhau trong hệ thống là điều mà nhà cung cấp mong muốn
- Tăng số lượng mặt hàng, sản phẩm cần tiêu thụ Để có doanh thu cao phải tập
trung đẩy mạnh tiêu thụ các mặt hàng, sản phẩm trong hệ thống Hệ thống gợi ý
có thể làm được điều đó
Đối với người dùng:
- Cung cấp đúng các mặt hàng mà người dùng quan tâm Với một hệ thống gợi ý
hiệu quả, các hệ thống lớn như youtube.com, amazon.com cho thấy người dùng thật sự quan tâm đến những đề xuất của hệ thống
- Tăng sự hài lòng của người dùng Cung cấp đúng các mặt hàng người dùng quan
tâm làm tăng sự hài lòng và độ tin cậy của người dùng với hệ thống từ đó hệ thống nhận được sự tương tác tích cực từ người dùng
Hệ thống gợi ý có vai trò quan trọng trong nhiều lĩnh vực Ta xét đến lợi ích mà
- Nâng cao chất lượng hệ thống Xây dựng hệ thống có nhiều chức năng hữu ích
cho người dùng là mong muốn của nhiều nhà cung cấp Chất lượng của hệ thống thể hiện sự phát triển của doanh nghiệp
Trang 16lĩnh vực kinh doanh, giải trí và giáo dục
- Trong lĩnh vực kinh doanh Hệ thống gợi ý được sử dụng rộng rãi trên các trang
web bán hàng trực tuyến như amazon.com là trang bán sách, đĩa CD online nổi tiếng thế giới có hệ thống gợi ý giúp mang lại hiệu quả cho hệ thống Ở Việt Nam
có trang vatgia.com là trang web cung cấp nhiều mặt hàng khác nhau cho người dùng, trong hệ thống đề xuất một số mục mặt hàng được nhiều người tìm kiếm, những mục được yêu thích nhất hoặc những mục hot nhất hiện nay
- Trong lĩnh vực giáo dục Các trang web học trực tuyến hay các trang cung cấp tài
liệu như slideshare.net, tailieu.vn cũng đưa hệ thống gợi ý vào hệ thống hỗ trợ người dùng tìm kiếm tài liệu, bài học liên quan Ví dụ với trang tailieu.vn là trang tìm kiếm tài liệu, sách, bài báo, khi người dùng tìm kiếm một tài liệu bất kỳ, hệ thống sẽ cung cấp một danh sách những tài liệu có nội dung gần với nội dung người dùng tìm kiếm để họ có thể tham khảo thêm
phương pháp gợi ý dựa trên nội dung (Content-Based) và phương pháp lai (Hybrid)
- Dựa trên ý tưởng quảng cáo truyền miệng, hệ thống gợi ý đưa ra phương pháp tiếp cận lọc cộng tác, những mục gợi ý cho người dùng sẽ dựa trên những mục mà người dùng đi trước yêu thích Chính vì thế hệ thống gợi ý sử dụng phương pháp này mang tính chất gợi ý những mục, mặt hàng theo xu hướng, trào lưu người dùng
- Với phương pháp gợi ý dựa trên nội dung, hệ thống gợi ý dựa trên tính chất, nội dung những mục mà người dùng yêu thích để tìm ra các mục có tính chất, nội dung tương tự để gợi ý
- Phương pháp lọc cộng tác và phương pháp gợi ý dựa trên nội dung điều có ưu, nhược điểm của nó Vì vậy phương pháp lai ra đời để hạn chế nhược điểm và phát triển ưu điểm của hai phương pháp trên
Ngoài ba phương pháp tiếp cận phổ biến trên còn có nhiều phương pháp tiếp cận khác nhau để xây dự hệ thống gợi ý cho mỗi nhóm người dùng Ví dụ phương pháp tiếp cận dựa trên tri thức (Knowledge-based), phương pháp tiếp cận Demographic hay phương pháp gợi ý dựa trên kết nối (Communitybased)
Trong khuôn khổ của luận văn, luận văn sử dụng phương pháp lọc cộng tác để xây dựng hệ thống gợi ý cho các website thương mại điện tử
Hệ thống gợi ý được ứng dụng trong nhiều lĩnh vực khác nhau đặc biệt là trong
Hệ thống gợi ý có ba phương pháp tiếp cận chủ yếu là phương pháp lọc cộng tác,
- Trong lĩnh vực giải trí Hệ thống gợi ý cũng được ứng dụng nhiều trong lĩnh vực
giải trí như: cho thuê CD trực tuyến netfix.com, xem video youtube.com, kho game và ứng dụng nổi tiếng của google là play.google.com Ví dụ hệ thống gợi
ý trên trang youtube.com, người dùng truy cập vào gmail sau đó tìm kiếm các video, hệ thống sẽ lưu lịch sử tìm kiếm và xem video của người dùng để đề xuất những video gần với nội dung người dùng đã tìm kiếm
Trang 17Các chỉ số tương tự được sử dụng để tính toán sự tương đồng giữa các mục dữ liệu hoặc giữa những người dùng Giá trị này càng cao thể hiện hai mục hoặc hai người dùng càng có chung sự tương đồng
𝑟 = ∑ (𝑥𝑖− 𝑥̅)(𝑦𝑖− 𝑦̅)
𝑛 𝑖=1
√∑ (𝑥𝑖 − 𝑥̅)2∑𝑛 (𝑦𝑖− 𝑦̅)2
𝑖=1
𝑛 𝑖=1
Trong đó, 𝑥̅, 𝑦̅ là giá trị trung bình của tất cả các giá trị x, y
Ví dụ: với người dùng đang xét u1, ta có:
Pearson Correlation Similarity
Mục đích của mối quan là liệu có một mối quan hệ giữa hai biến số, nói cách khác, nếu các đối tượng được đánh giá cao trên một biến thì cũng được đánh giá cao trên biến khác Mối quan hệ này có thể được tính bởi hệ số tượng quan Pearson[5] Giá trị nằm trong khoản từ -1 (tương quan ngược) đến +1 (tương quan thuận)
Bảng 2-2:Ví dụ sử dụng hệ số tương quan Pearson
Euclidean distance similarity
Hệ số tương quan khoảng cách Euclidean[5] tính toán sự tương đồng dựa trên khoảng cách giữa người sử dụng Nói cách khác nó biểu diễn người sử dụng như
là các điểm trong không gian n chiều, sau đó tính toán khoảng cách giữa các điểm đó
Trang 182.1.5.2 Phương pháp lọc cộng tác (Collaborative Filtering)
Bảng 2-3: Ví dụ sử dụng hệ số tương quan khoảng cách Euclidean
Tanimoto Coefficient
Hệ số tương quan Tanimoto[5] được sử dụng khi chúng ta không quan tâm đến mức độ yêu thích của người sử dụng đối với các mục dữ liệu Nghĩa là chúng ta chỉ quan tâm đến việc người sử dụng có thích hoặc không thích, mua hoặc không mua đối với một mục dữ liệu
Bảng 2-4: Ví dụ sử dụng hệ số tương quan Tanimoto
Trang 19Phương pháp lọc cộng tác giới thiệu những mục có số đông người thích, nó mang tính trào lưu, xu hướng theo người dùng
Phương pháp này không đi sâu vào phân tích tính chất, nội dung các mục đã yêu thích để giới thiệu các mục gần giống với mục mà người dùng quan tâm
Kết quả dự đoán là các mục ngẫu nhiên thuộc nhiều chủ đề, thể loại khác nhau Phương pháp lọc cộng tác dựa trên nhóm người dùng tương đồng mà nhóm người dùng
đó có thể thích nhiều thể loại, chủ đề khác nhau nên các mục gợi ý dựa trên sở thích của
họ cũng sẽ thuộc nhiều chủ đề, thể loại khác nhau Điều này là điều mà các nhà cung cấp mong muốn, giới thiệu nhiều mục khác nhau đến với người sử dụng
Phương pháp lọc cộng tác được chia thành hai loại là lọc cộng tác dựa trên người dùng (User – User Collaborative Filtering) và lọc cộng tác dựa trên mục dữ liệu (Item – Item Collaborative Filtering)
Ý tưởng
Ý tưởng của phương pháp lọc cộng tác dựa trên người dùng là quảng cáo truyền miệng, tức là ý kiến của các thành viên trong gia đình, bạn bè đóng vai trò quan trọng trong việc đưa ra quyết định cá nhân Nó sử dụng những ý kiến của người dùng tương
tự để dự đoán đánh giá của một người dùng cho một mục dữ liệu
Người dùng tương tự là những người dùng có cùng sở thích về nhiều mục với người dùng đang xét Để tránh trường hợp dự đoán xếp hạng của người dùng dựa trên quá nhiều người dùng tượng tự, hệ thống gợi ý lựa chọn k người hàng xóm gần nhất trong số người dùng tương tự trên để lấy ý kiến của họ cho dự đoán mục của người đang xét
Hình 2-1: Lọc cộng tác dựa trên người dùng
(Nguồn: Internet)
2.1.5.1.1 Lọc cộng tác dựa trên người dùng (User–User Collaborative
Filtering)
Trang 20Trong hình 2-1 ở trên, có ba người sử dụng là {A, B, C} và bốn mục là bốn loại trái cây {nho, dâu, dưa hấu, cam}
Các mũi trên liền từ người dùng đến các mục thể hiện người dùng đó thích mục
đó Ví dụ người dùng A thích bốn loại trái cây {nho, dâu, dưa hấu, cam}, tương tự người dùng B thích {dâu}, người dùng C thích {dâu, dưa hấu}
Mũi tên cong nối hai người dùng thể hiện rằng giữa hai người dùng đó có điểm yêu thích giống nhau, hay có sự tương đồng với nhau Người dùng A và C tương đồng với nhau vì cả hai cùng thích chung hai loại trái cây {dâu, dưa hấu} Người dùng B cũng có chung sở thích với người dùng A là {dâu}, tuy nhiên điểm chung này chưa đủ
cơ sở để dự đoán người dùng B cũng thích loại quả mà người dùng A thích Vì thế không có đường nối tương đồng giữa A và B, tương tự với B và C
Mũi tên nét đứt từ mục đến người dùng thể hiện dự đoán của hệ thống về mục mà
có thể người dùng sẽ thích Ở đây, ta thấy có hai mũi tên nét đứt từ {nho, cam} đến người dùng C có nghĩa là {nho, cam} sẽ là mục được tư vấn cho người dùng C Vì người dùng A và người dùng C có sự tương đồng với nhau nên những mục A thích mà
C chưa thích được dự đoán là mục mà C có thể thích
Quy trình thực hiện
Hình 2-2: Ma trận xếp hạng (Nguồn: Internet)
Hình 2-2 là ma trận xếp hạng của người dùng Ta có thể hình dung bảng xếp hạng của người dùng là một ma trận hai chiều, các cột đại diện cho các mục, các hàng đại diện cho người sử dụng, giá trị của ma trận là xếp hạng của người dùng với mục tương ứng Giá trị này là các số tự nhiên thể hiện mức độ quan tâm của người dùng với từng mục Mỗi hệ thống khác nhau có thang điểm xếp hạng khác nhau Giá trị này có thể bằng rỗng trong trường hợp người dùng không có đánh giá gì cho mục đó
Nhiệm vụ của hệ thống gợi ý là xác định giá trị x k,m theo phương pháp lọc cộng tác dựa trên người dùng
Trang 21Hình 2-3: Ma trận trong lọc cộng tác dựa trên người dùng
(Nguồn: Internet)
Với phương pháp lọc cộng tác dựa trên người dùng ta thực hiện tính toán trên các cột của ma trận như hình 2-3
- SUR thể hiện người dùng có xếp hạng cho mục
- Unknown Rating thể hiện người dùng không có xếp hạng cho mục
Thực hiện dự đoán xếp hạng của người dùng u k với mục i m là dự đoán giá trị x k,m
dựa trên những người đã có đánh giá cho mục i m
Các bước thực hiện:
Quy ước người dùng u là người dùng đang xét
Bước 1: Tìm kiếm mục người dùng u đã có đánh giá
Bước 2: Tìm những người dùng có đánh giá cho các mục mà người dùng u đánh giá Sau khi tìm kiếm được các mục mà người dùng u đã đánh giá, ta tìm kiếm
những người dùng có đánh giá cho các mục tìm được ở bước 1
Bước 3: Tính sự tương đồng giữa người dùng u với những người dùng tìm được ở bước 2 Các chỉ số tương tự được sử dụng để tính toán sự tương đồng giữa những người dùng
Bước 4: Lực chọn k người dùng là hàng xóm
Việc hạn chế số lượng người dùng tương tự mang đến những dự đoán chính xác hơn vì thế khi thực hiện nhiều thí nghiệm trong nhiều lĩnh vực khác nhau, người ta nhận thấy với k [20, 50] là con số hợp lý
Bước 5: Tìm kiếm những mục k người dùng đã xếp hạng mà người dùng u chưa xếp hạng
Bước 6: Dự đoán đánh giá của người dùng u với mục chưa xếp hạng
Dựa trên người dùng hàng xóm ta có công thức dự đoán đánh giá của người dùng
đó với một mục như sau:
Trong một số hệ thống, người ta lựa chọn k hàng xóm là tất cả người dùng khác người dùng đang xét Còn trong một số hệ thống khác, k hàng xóm được lựa chọn tuỳ thuộc vào việc xét duyệt từng mục, với mỗi mục khác nhau sẽ lựa chọn một số lượng k hàng xóm khác nhau
Trang 22𝑝𝑢,𝑖 = 𝑟̅ + 𝑢 ∑𝑢′𝜖𝑘𝑠(𝑢, 𝑢′)(𝑟𝑢′,𝑖 − 𝑟̅̅̅)𝑢′
∑𝑢′𝜖𝑘|𝑠(𝑢, 𝑢′)|
Trong đó, k là tập người hàng xóm của người dùng u
u’
r u’,i là xếp hạng của người dùng u’ với mục i
𝑟̅̅̅ là xếp hạng trung bình của người dùng u’ 𝑢′
Ví dụ minh hoạ
Lấy ví dụ bảng đánh giá xếp hạng 5 sao của 5 người sử dụng A, B, C, D, E cho 4
bộ phim Batman Begins, Alice in Wonderland, Dumb and Dumber và Equilibrium (bảng 2-1) Xếp hạng này được đánh giá theo thang điểm 1-5 trong đó 5 là xếp hạng cao nhất của người dùng thể hiện người dùng rất thích, rất quan tâm đến bộ phim đó Trong ví dụ này, ta sẽ tìm kiếm dự đoán của người dùng C cho bộ phim Equilibrium với chỉ số tượng tự Pearson
Để giải quyết bài toán này trước hết ta cần xác định hàng xóm gần nhất của người dùng C là ai? Như ta thấy, có hai người sử dụng có đánh giá cho bộ phim Equilibrium
và chỉ có hai người này là ứng cử viên cho danh sách hàng xóm gần nhất với người dùng C đó là A và D
Sau đó thực hiện tính sự tương đồng giữa người dùng C với lần lượt người dùng
A và D theo công thức Pearson, ta có kết quả như sau:
Batman
Begins
Alice in Wonderland
Dumb and Dumber
Bảng 2-6: Tính độ tương đồng giữa hai người sử dụng
Sau khi tính toán sự tương đồng giữa người sử dụng C với hai hàng xóm gần nhất
ta thực hiện dự đoán đánh giá của người dùng C cho bộ phim Equilibrium dựa trên giá trị tương đồng vừa tìm được ở trên và đánh giá của những người hàng xóm cho bộ phim Equilibrium theo công thức dự đoán ta được:
𝑝𝐶,𝐸𝑞𝑢𝑖𝑙𝑖𝑏𝑟𝑖𝑢𝑚 = 𝑟̅ + 𝐶 𝑠(𝐶, 𝐴)(𝑟𝐴,𝑒− 𝑟̅ ) + 𝑠(𝐶, 𝐷)(𝑟𝐴 𝐷,𝑒 − 𝑟̅ )𝐷
|𝑠(𝐶, 𝐴)| + |𝑠(𝐶, 𝐷)|
= 3.667 + 0.781(5 − 4) + (−0.515)(3 − 3)
|0.781| + |−0.515| = 4.27 Như vậy, ta có thể dự đoán đánh giá người dùng C cho bộ phim Equilibrium là 4 sao
Trang 23- Các thông tin về người dùng mới chưa đủ để quyết định ai là người dùng tương tự
- Ma trận người dùng đánh giá cho các mục rất thưa thớt dẫn đến dữ liệu cho hệ thống gợi ý là không đầy đủ
- Cơ sở dữ liệu lưu trữ người dùng sẽ càng ngày càng lớn khi càng nhiều khách hàng ghé thăm trang web
- Không thể dự đoán xếp hạng của những mặt hàng mới chó đến khi có một số người
sử dụng đánh giá nó
Số lượng các mục cũng tăng theo thời gian và quy mô mở rộng của nhà cung cấp nhưng so với người sử dụng thì số lượng này có thể ít hơn thậm chí ít hơn một cách đáng kể Để khắc phục sự phức tạp khi số số lượng người dùng tăng trong phương pháp lọc cộng tác dựa trên người dùng, các nhà nghiên cứu đã tìm hiểu và đưa thêm một phương pháp là lọc cộng tác dựa trên các mục dữ liệu
Ý tưởng
Phương pháp lọc cộng tác dựa trên mục dữ liệu dựa trên ý tưởng người dùng sẽ có cùng quan tâm với những mục tương tự, hệ thống gợi ý tìm kiếm những mục tương tự với mục mà người dùng đã đánh giá để đưa ra gợi ý
Sự giống nhau giữa các mục được dựa trên xếp hạng của những người dùng khác với chúng
Hình 2-4: Ví dụ lọc cộng tác dựa trên các mục dữ liệu
Trang 24 Quy trình thực hiện
Với ma trận hiển thị xếp hạng của người dùng với các mục ở hình 2-2, ta có phương
pháp dự đoán xếp hạng của người dùng u k với mục i m dựa trên lọc cộng tác mục như sau:
Hình 2-5: Ma trận trong lọc cộng tác dựa trên các mục dữ liệu
Bước 1: Tìm kiếm mục người dùng đã có đánh giá và chưa có đánh giá Trong
bước này thực hiện 2 công việc là tìm tập những mục mà người dùng chưa đánh giá và tìm tập những mục mà người dùng đã đành giá
Bước 2: Xét mỗi mục i đã đánh giá với lần lượt các mục j chưa có đánh giá Sau
đó tính sự tương đồng giữa hai mục i và j Sự tương đồng giữa hai mục i và j dựa
trên đánh giá của những người dùng đã có xếp hạng cho cả hai mục
Bước 3: Dự đoán đánh giá của người dùng u với mục j
Các gợi ý được tạo ra từ việc chọn ra các mục ứng cử viên là những mục có dự
đoán cao nhất Sau khi thu thập bộ S các mục tương tự với mục i, công thức dự đoán đánh giá của người dùng u với mục i như sau:
𝑝𝑢,𝑖 =∑𝑗𝜖𝑆𝑠(𝑖, 𝑗)𝑟𝑢,𝑗
∑𝑗𝜖𝑆|𝑠(𝑖, 𝑗)|
Trong đó, S là tập các mục tương đồng với i
Trang 25Bảng 2-7: Tính độ tương đồng giữa hai mục dữ liệu
Người dùng C có đánh giá cho cả ba bộ phim Batman Begins, Alice in Wonderland
và Dumb and Dumber nhưng cả ta chỉ cần lực chọn 2 bộ phim gần nhất là Batman Begins và Dumb and Dumber (độ tương đồng giữa chúng với bộ phim Equilibrium là lớn nhất) Và khi đó ta dự đoán đánh giá của người dùng C với bộ phim Equilibrium như sau:
𝑝𝐶,𝑒 =𝑠(𝑏, 𝑒) 𝑟𝐶,𝑏 + 𝑠(𝑑, 𝑒) 𝑟𝐶,𝑑
|𝑠(𝑏, 𝑒)| + |𝑠(𝑑, 𝑒)| =
0.607 ∗ 5 + 0.350 ∗ 2
|0.607| + |0.350| = 3.903 Như vậy, dự đoán của người dùng C cho bộ phim Equilibrium theo phương pháp lọc cộng tác dựa trên mục dữ liệu là 4
Vấn đề của phương pháp lọc cộng tác dự trên các mục dữ liệu
Không thể đoán được các mục tương tự cho đến khi các mục đó có xếp hạng của người dùng
số lượng xếp hạng cũng tăng theo thời gian và quy mô muốn mở rộng của nhà cung cấp
- Không gợi ý cho người dùng mới và mục mới Những người dùng mới và mục mới
không có lịch sử thực hành không thể sử dụng phương pháp này để tìm kiếm các mục gợi ý
- Thiên vị các mục phổ biến Một mục phổ biến có thể được đưa vào danh sách gợi
ý cho nhiều người, ngược lại các mục ít phổ biến hơn ít hoặc thậm chí chưa từng được đưa vào danh sách gợi ý cho người dùng
- Dữ liệu thưa thớt Một người dùng có thể chỉ đánh giá một hoặc một vài mục trong
số rất nhiều mục họ quan tâm
2.1.5.1.3 Ưu điểm và các vấn đề của phương pháp lọc cộng tác
Ưu điểm của phương pháp lọc cộng tác
- Không cần phân tích chi tiết các tính năng, đặt trưng của các mục dữ liệu
- Tư vấn các mục theo trào lưu, xu hướng
- Danh sách các mục tư vấn thuộc nhiều thể loại khác nhau
Các vấn đề của phương pháp lọc cộng tác
- Quy mô được mở rộng theo thời gian Số lượng người sử dụng, số lượng mục và
Trang 26Mahout có một số lượng lớn các chức năng, đặc biệt liên quan đến việc phân cụm
k Các việc thực hiện phân loại Naive Bayes phân tán và Naive Bayes phụ
- Các khả năng của hàm phù hợp phân tán đối với lập trình tiến hóa
- Các thư viện ma trận và vectơ
qua các thư viện Taste Taste hỗ trợ đưa ra các gợi ý cho người dùng và mục dữ liệu kèm với nhiều sự lựa chọn xây dựng các gợi ý, cũng như các giao diện theo định nghĩa riêng của bạn Taste gồm 5 thành phần chính để làm việc với User (những người dùng), Item (các mục) và Preference (các sở thích) bao gồm:
- DataModel: Lưu trữ cho các User, các Item, và các Preference
- UserSimilarity: Giao diện định nghĩa sự tương đồng giữa hai người dùng
- ItemSimilarity: Giao diện định nghĩa sự tương đồng giữa hai mục
- Recommender: Giao diện để cung cấp các gợi ý
- UserNeighborhood: Giao diện để tính toán một vùng lân cận của những người
dùng tương tự có thể được Recommender (Những người gợi ý) sử dụng
Các thành phần này và các việc thực hiện của chúng giúp cho nó có thể xây dựng các hệ thống gợi ý phức tạp cho hoặc các gợi ý dựa trên thời gian thực hoặc các gợi ý ngoại tuyến (offline) Các gợi ý dựa trên thời gian thực thường có thể làm việc với vài nghìn người dùng, trong khi các gợi ý ngoại tuyến có thể mở rộng lớn hơn nhiều Taste thậm chí đi kèm với các công cụ có sử dụng Hadoop để tính toán các gợi ý ngoại tuyến Trong nhiều trường hợp, đây là một tiếp cận hợp lý để cho phép bạn đáp ứng các yêu cầu của một hệ thống lớn có dữ liệu lớn
phân cụm, các mục tương tự thường rất có ích Ví dụ, căn cứ vào tất cả các tin tức trong ngày từ tất cả các tờ báo, bạn có thể muốn tự động nhóm tất cả các bài viết về câu chuyện giống nhau cùng với nhau, sau đó bạn có thể chọn tập trung vào các nhóm và các câu chuyện cụ thể mà không cần phải vất vả lướt qua nhiều việc không liên quan
2.2.2 Mahout và hệ thống gợi ý
Mahout hiện đang cung cấp các công cụ để xây dựng một hệ thống gợi ý thông
2.2.3 Phân cụm với Mahout
Dựa vào các tập dữ liệu lớn, văn bản hoặc số, để tự động nhóm với nhau, hoặc
2.2 APACHE MAHOUT
2.2.1 Giới thiệu
Apache Mahout[4] là một dự án mã nguồn mở của Apache Software Foundation (ASF-Quỹ phần mềm Apache) với mục tiêu chính là tạo các thuật toán học máy có khả năng mở rộng, các thuật toán này là miễn phí sử dụng theo giấy phép Apache Mahout bao gồm các việc thực hiện để phân cụm, phân loại, lọc cộng tác và lập trình tiến hóa Hơn nữa, nó khôn khéo sử dụng thư viện Apache Hadoop để cho phép Mahout mở rộng hiệu quả trong đám mây
Trang 27Có nhiều cách tiếp cận để tính toán các cụm Một số cách tiếp cận thực hiện từ dưới lên, xây dựng các cụm lớn hơn từ cái nhỏ hơn, trong khi những cách khác lại chia một cụm lớn thành nhiều cụm càng nhỏ hơn càng tốt Các cách tiếp cận phổ biến gồm phân cụm k-Means và phân cụm theo hệ thống phân cấp
Mahout hỗ trợ một số việc thực hiện thuật toán phân cụm, tất cả đều được viết bằng Map-Reduce, mỗi lần thực hiện có tập riêng của nó về các mục tiêu và tiêu chuẩn:
- Canopy: Một thuật toán phân cụm nhanh thường được sử dụng để tạo ra các phôi ban đầu cho các thuật toán phân cụm khác
- k-Means (và fuzzy k-Means): Phân cụm các mục thành k nhóm dựa trên khoảng cách các mục từ trọng tâm hoặc trung tâm của lần lặp lại trước
- Mean-Shift: Thuật toán không yêu cầu bất kỳ kiến thức cần có trước về số lượng các nhóm và có thể tạo ra các nhóm có dạng tùy ý
- Dirichlet: Phân cụm dựa trên sự pha trộn của nhiều mô hình xác suất cung cấp cho
nó lợi thế là không cần phải ghi nhớ trước một khung nhìn cụ thể của các nhóm
nhóm chúng lại với nhau
Mahout hỗ trợ hai phương pháp tiếp cận liên quan đến việc phân loại/sắp xếp có
hệ thống nội dung dựa trên số liệu thống kê Bayesian Cách tiếp cận đầu tiên là một trình phân loại Naive Bayes kích hoạt Map-Reduce đơn giản Các trình phân loại Naive Bayes là nhanh và khá chính xác, mặc dù các giả định rất đơn giản (và thường không chính xác) của chúng về các dữ liệu hoàn toàn độc lập Các trình phân loại Naive Bayes thường không hoạt động khi kích thước của các tập huấn luyện cho mỗi lớp không được cân bằng hoặc khi dữ liệu đủ độc lập Phương pháp thứ hai, được gọi là Naive Bayes phụ, cố gắng chỉnh sửa một số vấn đề với cách tiếp cận Naive Bayes trong khi vẫn duy trì tính đơn giản và tốc độ của nó
Spring giúp các nhà phát triển phần mềm xây dựng ứng dụng một cách dễ dàng, linh hoạt, nhanh và mạnh dựa trên JVM và các ứng dụng
Được giới thiệu tại hội nghị SpringOne/2GX, Spring IO là một tập hợp các project tạo thành một nền tảng cơ bản cho các ứng dụng hiện đại Mục tiêu của nền tảng này là cung cấp domain-specific runtime environments (DSRs) đã được tối ưu hóa cho các ứng dụng lựa chọn Spring IO gồm có Spring IO Foundation và Spring IO Execution layers
2.2.4 Phân loại nội dung với Mahout
Mục tiêu của sự phân loại (hay phân lớp-classification) là để ghi nhãn, theo đó
2.3 SPRING IO PLATFORM
2.3.1 Giới thiệu
Spring IO[9] là dự án nguồn mở, tối ưu là và module hóa Bạn có thể triển khai một phần mà bạn cần sử dụng Danh sách chi tiết các module và version được liệt kê như dưới đây:
Trang 28Hình 2-6: Các thành phần của Spring IO Platform
Spring IO Execution
Spring IO Execution layer cung cấp domain-specific runtimes (DSRs) cho các ứng dụng phát triển trên những IO Foundation modules Một DSR có thể chạy độc lập với yêu cầu triển khai cho một external container Phiên bản release đầu tiên của Spring IO bao gồm 3 DSR như sau: Spring XD, Spring Boot, và Grails
- Spring XD: DSR hỗ trợ ứng dụng batch và stream-based hướng dữ liệu của ứng
dụng Nó cung cấp một runtime mạnh mẽ và DSR cho việc xử lý big data, phân tích, export và quản lý workflow của Hadoop
- Spring Boot: Nó giảm thiểu effort cần thiết để tạo production-ready,
DevOps-friendly, XML-free Spring applications Đơn giản hóa bootstrapping của các dự
án Spring với source code tối thiểu, thực hiện khả năng mở rộng các tính năng hoạt động như tự động kiểm tra metrics, enpoints, và hỗ trợ embedded containers cho phép tạo ra các tập lệnh có khả năng tự thực thi
- Grails: Cung cấp một full-stack web framework nhằm nâng cao productive bằng
cách kết hợp sức mạnh của các thành phần trong Spring IO Foundation với tập hợp các DSLs dựa trên Groovy
Spring IO Foundation
Spring IO Foundation layer là một tập hợp gắn kết các APIs và các thành phần có khả năng nhúng khi chạy lại với nhau để cho phép bạn xây dựng các ứng dụng giải
Trang 29sẽ tất nhiên chỉ cần một vài thành phần của nền tảng ứng dụng Spring IO Foundation giúp bạn dễ dành xách định những thành phần làm việc cùng với nhau, nó không buộc bạn phải sử dụng tất cả các thành phần nếu như không có nhu cầu
Spring IO Foundation được phân chi thành 3 thành phần chính sau đây: Powered Workloads, Data và Core
Data
Được thể hiện qua một loạt những project của Spring Data Nó giúp bạn dễ dàng
sử dụng công nghệ mới để truy cập dữ liệu, chẳng hạn như NoSQL, Map-Reduce framework và các dịch vụ dữ liệu dựa trên cloud computing Ngoài ra, Spring Data cũng cung cấp giải pháp cải tiến hỗ trợ cho kỹ thuật RDBMS vẫn đang được sử dụng ở các
về building reactive, asynchronous, event- data-driven applications và cả những ưu điểm nổi bật của Groovy language
NoSQL ra đời năm 1998 bởi Carlo Strozzi khi ông lập mới một hệ cơ sở dữ liệu quan hệ mã nguồn mở nhanh và nhẹ không liên quan đến SQL Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL khi Johan Oskarsson của Last.fm muốn tổ chức một hội thảo về cơ sở dữ liệu nguồn mở phân tán Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ CSDL mới: phân tán (distributed) và không ràng buộc (non-relational)
Khi các hệ thống lớn ra đời, sự mở rộng về mặt quy mô cũng như tốc độ truy suất trở nên cần thiết hơn bao giờ hết Cơ sở dữ liệu quan hệ khó có khả năng giải quyết triệt
để những vấn đề này Chính vì thế NoSQL ra đời nhằm khắc phục những vấn đề trên
Trang 30năm 2007, đến năm 2009, MongoDB trở thành một sản phẩm mã nguồn mở có giấy phép AGPL MongoDB được viết bằng ngôn ngữ C++ MongoDB lưu trữ dữ liệu dạng BSON Không giống như các cơ sở dữ liệu quan hệ lưu dữ cấu trúc dữ liệu theo các bảng, MongoDB lưu trữ cấu trúc dữ liệu thành văn bản dựa JSON với mô hình động (gọi là BSON) khiến cho việc tích hợp dữ liệu cho các ứng dụng trở nên dễ dàng và nhanh hơn.Với mục tiêu là kết hợp các điểm mạnh của mô hình khóa – giá trị (nhanh
mà tính mở rộng cao) với mô hình dữ liệu quan hệ (giàu chức năng)
MongoDB có một khối lượng tính năng lớn và hiệu năng cao Với các loại dữ liệu phong phú, nhiều truy vấn và việc giảm thời gian phát triển trong việc mô hình hóa các đối tượng
MongoDB được sử dụng tốt nhất với nhu cầu cần truy vấn động, cần tốc độ nhanh cho một cơ sở dữ liệu lớn vì MongoDB ngoài tốc độ đọc nhanh ra thì tốc độ ghi của nó rất nhanh
MongoDB hỗ trợ việc tìm theo trường, khoảng kết quả tìm và tìm theo cú pháp Các truy vấn có thể trả về các trường được qui định trong văn bản và cũng có thể bao gồm các hàm Javascript mà người dùng chưa định nghĩa Cũng giống như các cơ sở dữ liệu quan hệ, bất cứ một trường nào trong MongoDB đều được đánh chỉ mục MongoDB còn có hổ trợ theo mô hình chủ - khách (master - slave), mảnh, vùng dữ liệu (Sharding) MongoDB sử dụng một quá trình xử lý để xử lý các yêu cầu về dữ liệu, quản lý định dạng dữ liệu, thực hiện các hoạt động quản lý bên dưới là mongod, đây là trình xử
lý chính Trong việc mở rộng theo chiều ngang sử dụng mô hình mảnh lưu trữ, MongoDB cung cấp dịch vụ xử lý các truy vấn từ tầng ứng dụng, xác định vị trí dữ liệu trong cụm các node phân mảnh được gọi là mongos
Một số ưu điểm của MongoDB:
- Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ
- Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao
- Khả năng mở rộng tốt (distributed horizontally), khả năng cân bằng tải cao, tích hợp các công nghệ quản lý dữ liệu vẫn tốt khi kích thước và thông lượng trao đổi
dữ liệu tăng
- Miễn phí
GroupLens là một nhóm nghiên cứu tại Khoa Khoa học Máy tính và Kỹ thuật, trường Đại học Minnesota GroupLens tham gia nhiều dự án nghiên cứu liên quan đến các lĩnh vực lọc thông tin, lọc cộng tác và hệ thống gợi ý GroupLens được dẫn dắt bởi hai giáo sư John Riedl và Joseph Konstan GroupLens tiếp cận với phương pháp lọc cộng tác từ năm 1992, kể từ đó các dự án đã được mở rộng phạm vi của nó để nghiên cứu các giải pháp lọc thông tin, các phương pháp dựa trên nội dung cũng như cải thiện công nghệ lọc
2.5 TẬP DỮ LIỆU MOVIELENS
2.5.1 Giới thiệu
MovieLens[7] là tập dữ liệu được nhóm nghiên cứu GroupLens thu thập và xây dựng
Trang 31http://movielens.org ) Các tập dữ liệu được thu thập qua các thời kỳ khác nhau với kích thước khác nhau Hiện tại MovieLens đã có các tập dữ liệu như: MovieLens 100k (phát hành 4/1998), MovieLens 1M (phát hành 2/2003), MovieLens 10M (phát hành 1/2009), MovieLens 20M (phát hành 4/2015)
Tập dữ liệu bao gồm 1000209 đánh giá xếp hạng của 3900 bộ phim từ 6040 người dùng trên trang web MovieLens
Thông tin xếp hạng
Tất cả các xếp hạng của người dùng được lưu trong file "ratings.dat" với định dạng:
UserID::MovieID::Rating::Timestamp
Trong đó, UserID: là mã người dùng (giá trị từ 1 đến 6040)
Thông tin người dùng
Thông tin người dùng được lưu trong file " users.dat" với định dạng:
UserID::Gender::Age::Occupation::Zip-code
Trong đó, UserID: là mã người dùng
0: "other" or not specified
Trang 32 18: "tradesman/craftsman"
19: "unemployed"
20: "writer"
Thông tin phim
Thông tin các bộ phim được lưu trong file " movies.dat" với định dạng:
MovieID::Title::Genres Trong đó, MovieID: là mã bộ phim
Trang 33Hệ thống hỗ trợ người dùng xây dựng một hệ thống gợi ý cho website thương mại điện tử của mình một cách dễ dàng, nhanh chóng thông qua giao điện web với quy trình
cụ thể như sau:
- Để bắt đầu sử dụng, người dùng cần phải đăng ký một tài khoản trên hệ thống Tài khoản sẽ được chứng thực và kích hoạt thông qua địa chỉ email đã đăng ký
- Tạo cơ sở dữ liệu Mỗi cơ sở dữ liệu tương ứng với một website của người dùng
- Nhập danh mục và thông tin các sản phẩm hiện có trên website thương mại điện
tử của người dùng Thông tin này phục vụ cho việc hiển thị danh sách các sản phẩm gợi ý cho người dùng Hệ thống cho phép người dùng nhập dữ liệu bằng file CSV
- Tạo các giải thuật gợi ý Một website thương mai điện tử có thể có nhiều giải thuật gợi ý với cấu hình khác nhau ở từng phân hệ, chức năng khác nhau
- Cài đặt giải thuật lên website thương mại điện tử
- Hệ thống cung cấp cơ chế Push data để người dùng có thể dể dàng cập nhật lại thông tin các sản phẩm khi cần thiết
- Trong quá trình đề xuất danh sách sản phẩm gợi ý cho người dùng, hệ thống sẽ tự động lưu lại thông tin, lịch sử giao dịch của người dùng đó, làm cơ sở cho những
đề xuất tốt, hiệu quả hơn cho người dùng
Đầu vào của hệ thống:
- Thông tin người dùng đăng ký
- Cơ sở dữ liệu sản phẩm, thông tin các giải thuật gợi ý
- Dữ liệu tracking sản phẩm
Đầu ra của hệ thống:
- Danh sách các sản phẩm được dự đoán là người dùng có thể thích, quan tâm
Chương 3 RECOMMENDER PLATFORM FOR ECOMMERCE
3.1 MÔ TẢ BÀI TOÁN