Đồng thời, khách hàng có thể sử dụng tính năng lọc trên một số tiêu chí như: giá tiền, chiều cao, mức độ ưa chuộng,… để chọn ra các sản phẩm thật sự phù hợp với bản thân.. ● Amazon sử dụ
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Sinh viên thực hiện : Phạm Phùng Gia Khiêm - 20521459 Cao Phạm Tiến Anh - 20520380
Trang 2LỜI CẢM ƠN
Lời đầu tiên, chúng em xin cảm ơn ThS Nguyễn Thị Thanh Trúc đã tạo
điều kiện tốt nhất và cung cấp những kiến thức cần thiết để hoàn thành môn Đồ
Án 2
Chúng em cũng xin gửi lời cảm ơn sâu sắc đến ThS Nguyễn Thị Thanh
Trúc, người đã hỗ trợ, hướng dẫn nhóm và tạo điều kiện tốt nhất để nhóm hoàn
thành đề tài nghiên cứu này Với sự hỗ trợ nhiệt tình của cô, cuối cùng nhóm
chúng em cũng đã hoàn thiện những kiến thức cần thiết thông qua việc nghiên
cứu và học hỏi những kiến thức mới Chúng em sẽ cố gắng ngày càng hoàn thiện
mình hơn trong tương lai và tiếp tục học tập chăm chỉ để đạt được kết quả tốt nhất
Chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn bè, tập thể lớp PMCL2020 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm Đồ án này chúng em không tránh khỏi được những sai sót, chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để hoàn thiện và phát triển đồ án hơn Khóa luận tốt nghiệp trong tương lai
Cuối cùng, xin kính chúc các thầy cô giảng viên bộ môn Công nghệ Phần
mềm và cô Nguyễn Thị Thanh Trúc luôn có sức khỏe dồi dào, cuộc sống hạnh
phúc, tiếp tục hoàn thành sứ mệnh cao cả là truyền thụ tri thức cho thế hệ mai sau
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người
Thành phố Hồ Chí Minh, tháng 6 năm 2023
Trang 3NHẬN XÉT
(Của giáo viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 52 Hệ thống khuyến nghị dựa trên lọc cộng tác (Collaborative filtering
3.1.4.1 Specification of Use-case “Quản lý sản phẩm” 38 3.1.4.2 Specification of Use-case “Quản lý đơn hàng” 39 3.1.4.3 Specification of Use-case “Quản lý người dùng” 40 3.1.4.4 Specification of Use-case “Tìm kiếm người dùng” 41 3.1.4.5 Specification of Use-case “Quản lý giỏ hàng” 42 3.1.4.6 Specification of Use-case “Thêm vào giỏ hàng” 43 3.1.4.7 Specification of Use-case “Đặt hàng” 44 3.1.4.8 Specification of Use-case “Xem chi tiết sản phẩm” 45 3.1.4.9 Specification of Use-case “Đăng ký” 46 3.1.4.10 Specification of Use-case “Đăng nhập” 47 3.1.4.11 Specification of Use-case “Reset mật khẩu” 48 3.1.4.12 Specification of Use-case “Đăng xuất” 49 3.1.4.13 Specification of Use-case “Đổi mật khẩu” 50 3.1.4.14 Specification of Use-case “Tìm kiếm sản phẩm” 51 3.1.4.15 Specification of Use-case “Thanh toán đơn hàng” 52 3.1.4.16 Specification of Use-case “Kiểm tra trạng thái đơn hàng” 53
Trang 63.1.4.17 Specification of Use-case “Thay đổi thông tin” 54 3.1.4.18 Specification of Use-case “Lưu thông tin giao hàng” 55
Trang 75.3 Mô tả chi tiết màn hình 68
Trang 9Chương 1 GIỚI THIỆU CHUNG
Ngày nay, khi chất lượng cuộc sống đã được cải thiện, nhu cầu mua sắm
trực tuyến dần tăng cao Đáp ứng được nhu cầu đa dạng, tiện dụng, phù hợp
với lối sống hiện đại, hình thức mua sắm trực tuyến đang ngày càng được
người tiêu dùng sử dụng và ưa chuộng nhiều hơn Công nghệ đã thay đổi
hành vi tiêu dùng của khách hàng, những người mua sắm trực tiếp cũng dần
dần chuyển sang hình thức mua sắm online để tiết kiệm thời gian cũng như
mang đến thuận tiện trong việc mua bán Để đáp ứng những nhu cầu trên,
nhóm chúng em quyết định phát triển một ứng dụng mua sắm trực tuyến,
giúp khách hàng lựa chọn được những mẫu mã sản phẩm phù hợp với bản
thân cũng như tài chính hiện có
Ứng dụng mua sắm trực tuyến của nhóm sẽ tập trung vào các loại hình sản
phẩm về thiết bị điện tử Mỗi loại hình sản phẩm đều có 2 dạng là khuyến
mãi và thông thường Để mua được sản phẩm với giá khuyến mãi, khách
hàng phải sở hữu mã khuyến mãi tương ứng với sản phẩm Trong quá trình
lựa chọn sản phẩm, khách hàng sẽ được cung cấp rõ thông tin chi tiết sản
phẩm cũng như các phản hồi từ những người mua hàng trước Đồng thời,
khách hàng có thể sử dụng tính năng lọc trên một số tiêu chí như: giá tiền,
chiều cao, mức độ ưa chuộng,… để chọn ra các sản phẩm thật sự phù hợp
với bản thân Bên cạnh đó, chức năng giỏ hàng không những chứa các sản
phẩm khách hàng muốn mua ngay mà còn có thể lưu trữ các sản phẩm mà
họ yêu thích và có khả năng được mua trong tương lai Cuối cùng, quá trình
Trang 10thanh toán được xây dựng linh hoạt giúp người dùng có thể thoải mái chọn
lựa nhiều loại hình thanh toán khác nhau như Paypal, tiền mặt
Ứng dụng cung cấp những tính năng tiện ích giúp khách hàng có thể tiếp
cận đến các loại sản phẩm, thông tin chi tiết cũng như phản hồi về các sản
phẩm này từ các khách hàng khác Bên cạnh đó, ứng dụng còn xây dựng hệ
thống gợi ý tư vấn sản phẩm Việc này càng góp phần giúp khách hàng có
thể lựa chọn được những sản phẩm theo đúng nhu cầu và mong muốn của
bản thân Ngoài ra, nhân viên quản lý cửa hàng cũng có thể truy cập vào
Ứng dụng để cập nhật, đăng tin một cách dễ dàng và nhanh chóng
Định hướng ứng dụng của nhóm
Nhóm sẽ xây dựng một ứng dụng mua sắm trực tuyến thiết bị điện tử
không những đáp ứng được đầy đủ các yêu cầu cơ bản của một ứng dụng
mua sắm mà còn khắc phục được các vấn đề còn tồn đọng của những đối
Quản trị viên phía trung tâm muốn cung cấp thông tin (công dụng, giá cả, nhà
cung cấp, nước sản xuất) đến mọi người truy cập vào ứng dụng
Trang 11 Cho phép khách hàng thêm sản phẩm mong muốn vào giỏ hàng với số
lượng có thể linh hoạt điều chỉnh
Cho phép khách hàng thực hiện quá trình thanh toán với nhiều
phương thức khác nhau
Cho phép khách hàng tiếp cận với các thông tin về sản phẩm và các
phản hồi từ những khách hàng trước dưới dạng văn bản
Cho phép khách hàng tiếp cận với các thông báo về những đợt giảm giá
và quà tặng, thông báo về quá trình giao dịch, thông báo về đơn đặt
hàng
Cho phép khách hàng thực hiện một chức năng cơ bản như đăng xuất,
đăng nhập, đăng ký, quên mật khẩu, chỉnh sửa hồ sơ cá nhân (chỉnh sửa
ảnh đại diện và thông tin cá nhân), thay đổi mật khẩu, thiết lập phương
thức thanh toán mặc định
1.5 Yêu cầu
Tính thân thiện: Ứng dụng phải dễ sử dụng, UI/UX thân thiện với người dùng
Tính đúng đắn: Ứng dụng chạy không lỗi
Tính thích nghi: Ứng dụng có thể chạy tốt trên nhiều trình duyệt, nhiều thiết
bị cấu hình phần cứng khác nhau và thiết kế kiến trúc thiết bị khác nhau
Tính tiến hóa: Ứng dụng phải dễ dàng được phát triển thêm tính năng mà không gây ảnh hưởng đến những tính năng đã phát triển trước đó
Tính bảo trì: Ứng dụng có thể thay đổi, chỉnh sửa các chức năng mà không gây ảnh hưởng đến các chức năng khác
Tính tương tác: Ứng dụng tạo ra môi trường tương tác giữa hệ thống và người dùng
1.6 Công cụ áp dụng
Công cụ phát triển: Visual Studio Code
Công cụ dùng để phân tích, thiết kế: Figma
Trang 12 Công cụ quản lý dự án: Github, Messenger
Công cụ trao đổi thông tin giữa thành viên nhóm: Messenger, Teams
Công cụ soạn thảo báo cáo: Microsoft Word
Trang 13Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
2.1 React Native
React Native là các đoạn code đã được viết sẵn (framework) do công ty công nghệ Facebook phát triển Các lập trình viên React Native là người sử dụng những framework này để phát triển nên các hệ thống, nền tảng ứng dụng trên các hệ điều hành như IOS và Android Ngôn ngữ lập trình được sử dụng nhiều nhất là
Javascript
Sự ra đời của React Native đã giải quyết được bài toán về hiệu năng và sự phức tạp khi trước đó người ta phải dùng nhiều loại ngôn ngữ native cho mỗi nền tảng di động Chính vì thế lập trình React Native sẽ giúp tiết kiệm được phần lớn thời gian và công sức khi thiết kế và xây dựng nên một ứng dụng đa nền tảng Javascript phù hợp với rất nhiều nền tảng khác nhau
Ưu điểm
nền tảng
Trang 14● Mang đến trải nghiệm người dùng chất lượng hơn
có thể học lập trình React Native
Nhược điểm
2.2 Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống
và tăng tốc độ phát triển
Những lợi ích của Python bao gồm:
ngôn ngữ này có cú pháp cơ bản giống tiếng Anh
Trang 15● Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn để viết một chương trình Python.
dụng cho hầu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu
phổ biến khác như Java, C và C++
nhiệt tình hỗ trợ trên toàn thế giới Nếu gặp phải vấn đề, bạn sẽ có thể nhận được sự hỗ trợ nhanh chóng từ cộng đồng
dụ: bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển
chẳng hạn như Windows, macOS, Linux và Unix
Các đặc điểm sau tạo nên sự độc đáo của ngôn ngữ lập trình
Python:
Python là một ngôn ngữ thông dịch
Python là một ngôn ngữ thông dịch, điều này nghĩa là ngôn ngữ này trực tiếp chạy từng dòng mã Nếu có lỗi trong mã chương trình, nó sẽ ngừng chạy Do
đó, lập trình viên có thể nhanh chóng tìm ra lỗi trong đoạn mã
Python là một ngôn ngữ dễ sử dụng
Python sử dụng từ ngữ giống trong tiếng Anh Không giống như các ngôn ngữ lập trình khác, Python không sử dụng dấu ngoặc ôm Thay vào đó, ngôn ngữ này sử dụng thụt đầu dòng
Python là một ngôn ngữ linh hoạt
Trang 16Các lập trình viên không cần phải khai báo loại biến khi viết mã bởi vì
Python sẽ xác định chúng vào thời điểm chạy Vì vậy, bạn có thể viết các chương trình Python một cách nhanh chóng hơn
Python là một ngôn ngữ cấp cao
Python gần gũi với ngôn ngữ con người hơn các ngôn ngữ lập trình khác Do
đó, các lập trình viên không cần phải lo lắng về những chức năng cơ bản của
nó như kiến trúc và quản lý bộ nhớ
Python là một ngôn ngữ lập trình hướng đối tượng
Python coi mọi thứ đều là đối tượng, nhưng ngôn ngữ này cũng hỗ trợ các phương thức lập trình khác như lập trình hàm và lập trình cấu trúc
2.3 Firebase
Firebase là một nền tảng giúp phát triển các ứng dụng di động trong web Bên cạnh
đó, Firebase còn được hiểu là một dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây cloud với hệ thống máy chủ mạnh mẽ của Google
Trang 17Firebase chứa cơ sở dữ liệu mang đến khả năng code nhanh và thuận tiện hơn Lập trình viên có thể dễ dàng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu sẵn có
Các tính năng chính của Firebase
● Realtime Database
Realtime Database là một cơ sở dữ liệu thời gian thực Ngay sau khi bạn đăng ký tài khoản trên Firebase, bạn sẽ nhận được Realtime Database được lưu trữ dưới dạng JSON và được đồng bộ hóa theo thời gian thực đối với mọi kết nối
Đối với các ứng dụng được xây dựng trên đa nền tảng như Android, IOS và
WebApp, tất cả client sẽ cùng sử dụng một cơ sở dữ liệu Bên cạnh đó, hệ thống dữ liệu này sẽ tự động cập nhật khi lập trình viên phát triển ứng dụng Sau đó, tất cả dữ liệu này sẽ được truyền tải thông qua các kết nối SSl có 2048 bit
● Authentication
Authentication là tính năng giúp xác thực danh tính của người dùng ứng dụng Firebase cung cấp các bước xác thực thông qua Email, Facebook, Twitter, GitHub hay Google Điều này giúp cho các thông tin cá nhân của khách hàng được bảo vệ một cách tốt nhất, hạn chế được tình trạng bị hacker đánh cắp Đồng thời việc xác
Trang 18thực danh tính qua Firebase sẽ giúp người dùng tiếp cận sản phẩm nhanh chóng và
● Hosting
Trang 19Hosting được phân phối thông qua tiêu chuẩn công nghệ bảo mật SSl từ hệ thống
mạng CDN CDN là một mạng lưới máy chủ giúp lưu trữ các bản sao của các nội
dung tĩnh trên website Thông qua CDN, người dùng có thể truy cập và sử dụng các
dịch vụ trên web khi cài Firebase Hosting một cách nhanh chóng và ổn định hơn
● Cloud Functions
Cloud Functions giúp chạy code backend tự động nhằm phản hồi các sự kiện được
kích hoạt bởi tính năng của Firebase và HTTPS request Cloud Functions có tính
bảo mật cao và luôn thực hiện chính xác những gì mà bạn muốn
● Analytics
Analytics giúp bạn có thể phân tích hành vi của người sử dụng ứng dụng của bạn
Qua đó, bạn sẽ biết được khách hàng thường xuyên truy cập tính năng nào và các
thông tin về hiệu quả quảng cáo, tình trạng trả phí,… để có thể đưa ra được chiến
Trang 20lược phát triển phù hợp Để thực hiện tính năng Analytics của Firebase, bạn cần cài đặt Software Development Kit (SDK)
Chức năng của Firebase
● Phát triển ứng dụng di động
Với cơ sở dữ liệu khổng lồ, Firebase giúp lập trình viên phát triển ứng dụng di động một cách nhanh chóng và giúp giảm thiểu chi phí Song song đó, Firebase cho phép phát triển ứng dụng trên cả nền tảng iOS và Android nên có thể đáp ứng mọi yêu cầu về hệ điều hành
● Quản lý đăng nhập
Firebase Authentication giúp nhà phát triển quản lý người dùng ứng dụng một cách đơn giản và an toàn Cụ thể, Firebase cung cấp nhiều phương pháp quản lý đăng nhập thông qua email với mật khẩu Google và Facebook Việc đăng nhập này vừa đảm bảo xác thực được người dùng, vừa không để lộ thông tin cá nhân
● Phân tích dữ liệu
Chức năng phân tích dữ liệu của Firebase giúp lập trình viên có một cái nhìn tổng quan về ứng dụng thông qua các số liệu thống kê, biểu đồ, bảng biểu,… Cụ thể, bạn
Trang 21sẽ biết được số liệu về số khách hàng đã truy cập vào app và web, khách hàng đang
sử dụng trong 30 phút vừa qua,… Qua đó, bạn có thể xây dựng được những chiến lược phát triển ứng dụng sao cho phù hợp với nhu cầu của thị trường
● Hosting
Chức năng Hosting giúp lập trình viên đơn giản hóa các thao tác với cơ sở dữ liệu khi thiết lập cấu trúc website Qua đó, bạn sẽ tiết kiệm được thời gian và công sức khi xây dựng backend cho trang web của mình
Ưu điểm của Firebase
Hiện nay, Firebase được rất nhiều lập trình viên lựa chọn vì đem lại nhiều lợi ích với các ưu điểm hơn hẳn nhiều nền tảng khác Những ưu điểm của Firebase là:
● Sử dụng miễn phí và thuận tiện
Bạn có thể sử dụng những tính năng cơ bản của Firebase miễn phí thông qua gói dịch vụ Spark Với những tính năng cao hơn, bạn cần phải trả phí khá cao Bên cạnh
đó, cách đăng ký tài khoản Firebase cũng rất đơn giản Bạn có thể đăng ký tài khoản Firebase thông qua tài khoản Google
● Đáp ứng nhu cầu của người dùng
Trang 22Firebase chính là một phần của Google Vì vậy, Google đã không ngừng khai thác
và phát triển triệt để những điểm mạnh và các tính năng của Firebase nhằm tạo ra được những dịch vụ đáp ứng nhu cầu của người dùng
Theo Gartner, có tới khoảng 30% doanh nghiệp sử dụng máy học (ML – Machine Learning) trong quy trình của họ Nhận thấy được điều này, Firebase đã cung cấp cho các lập trình viên máy học với các API có sẵn cho các tính năng khác nhau của nền tảng di động Điều này sẽ giúp cho họ phát triển ứng dụng một cách tốt nhất
Nhược điểm của Firebase
● Giới hạn về quy mô ứng dụng
Firebase là một phần Subdomain của Google Nền tảng này hiện đang bị chặn ở một
số quốc gia, trong đó có Trung Quốc Bên cạnh đó, tất cả cơ sở hạ tầng của nền tảng đều hoạt động trên Google Cloud Điều này đồng nghĩa với việc người dùng không thể chạy ứng dụng Firebase trên những đơn vị cung cấp đám mây khác
● Khả năng tùy chỉnh hạn chế
Firebase chỉ có cơ sở dữ liệu được lưu dưới dạng JSON và không có SQL Điều này
sẽ gây khó khăn trong việc di chuyển và xử lý dữ liệu Hơn nữa, Firebase không phải là một mã nguồn mở Do đó, lập trình viên không thể thay đổi được mã nguồn của Firebase, từ đó gây trở ngại cho việc cải tiến sản phẩm
Bên cạnh đó, nhà phát triển không có quyền truy cập mã nguồn Vì vậy, đối với những ứng dụng lớn, việc chuyển đổi sang các nhà cung cấp khác không phải là
Trang 23một nhiệm vụ dễ dàng Để thực hiện được việc này thì toàn bộ backend sẽ cần phải xây dựng lại từ đầu
● Bảo mật còn yếu
Nhược điểm bảo mật còn yếu của Firebase có thể được thể hiện thông qua việc tất
cả cơ sở dữ liệu được lưu trữ dưới dạng JSON JSON là một định dạng nhẹ, không phụ thuộc vào ngôn ngữ và dễ sử dụng Tuy nhiên, trong một số trường hợp, JSON được đánh giá là độc hại và sẽ xảy ra các vấn đề liên quan đến bảo mật
● Amazon sử dụng nó để đề xuất sản phẩm cho khách hàng
● Netflix sử dụng gợi ý phim cho người dùng
● YouTube sử dụng nó để đề xuất các video và quyết định video sẽ phát tiếp theo trên chế độ tự động phát
● Facebook sử dụng nó để gợi ý kết bạn, đề xuất các trang để thích và mọi người theo dõi
Hướng tiếp cận
Một hệ thống gợi ý phim thường được chia thành 3 quá trình chính:
● Bước 1: Tìm các đặc trưng (features) có ảnh hưởng đến việc đánh giá của người dùng, thông qua việc phân tích và thăm dò dữ liệu
● Bước 2: Phân tích và áp dụng giải thuật filtering phù hợp
● Bước 3: Tiến hành training mô hình
Trang 24Nhìn chung, hệ thống Recommender System có thể được chia thành 4 loại chính:
● Simple Recommenders: Đưa ra các đề xuất tổng quát cho mọi người dùng, dựa trên mức độ phổ biến và/hoặc thể loại phim Ý tưởng cơ bản đằng sau hệ thống này là những bộ phim nổi tiếng hơn và được giới phê bình đánh giá cao hơn sẽ có xác suất được khán giả bình thường thích cao hơn Một ví dụ
có thể là IMDB Top 250
● Content-based Recommenders: Đề xuất các mặt hàng tương tự dựa trên một mặt hàng cụ thể Hệ thống này sử dụng siêu dữ liệu mục, chẳng hạn như thể loại, đạo diễn, mô tả, diễn viên, v.v cho phim, để đưa ra các đề xuất này Ý tưởng chung đằng sau các hệ thống giới thiệu này là nếu một người thích một mặt hàng cụ thể, họ cũng sẽ thích một mặt hàng tương tự với nó Và để khuyến nghị điều đó, nó sẽ sử dụng siêu dữ liệu mục trước đây của người dùng Một ví dụ điển hình có thể là YouTube, nơi dựa trên lịch sử của bạn,
nó gợi ý cho bạn những video mới mà bạn có thể xem
● Collaborative filtering Recommenders: Những hệ thống này được sử dụng rộng rãi và chúng cố gắng dự đoán “ratings” hoặc “preference” mà người dùng sẽ đưa ra một mặt hàng dựa trên xếp hạng trước đây và sở thích của những người dùng khác Bộ lọc cộng tác không yêu cầu siêu dữ liệu mục giống như các bộ lọc dựa trên nội dung của nó
Trang 25● Hybrid Recommenders: Hybrid Filtering là sự kết hợp của hai giải thuật Content-based Filtering và Collabrative Filtering: Hybrid Fitering được sử dụng mềm dẻo khi hệ thống Collabrative Filtering không có các hành vi (ratings), khi đó hệ thống sẽ sử dụng Content-based Filtering và ngược lại, khi Content-based Filtering không có các feature cần thiết trong việc đánh giá thì hệ thống sẽ sử dụng Collaborative Fitering để thay thế.
Một số thuật ngữ
Mục (còn gọi là tài liệu): Các thực thể mà một hệ thống đề xuất Đối với cửa hàng Google Play, các mục là các ứng dụng cần cài đặt Đối với YouTube, các mục đó là video
Truy vấn (còn được gọi là ngữ cảnh): Thông tin mà hệ thống sử dụng để tạo
đề xuất Các truy vấn có thể là sự kết hợp của các loại sau:
- Thông tin người dùng:
+ Mã nhận dạng người dùng + Các mục mà người dùng đã tương tác trước đó
Trang 26Cấu trúc chung
• Tạo ứng viên: Trong giai đoạn đầu này, hệ thống bắt đầu từ một kho dữ liệu
khổng lồ và có thể tạo ra một tập hợp con nhỏ hơn nhiều Ví dụ: trình tạo ứng viên
trong YouTube giảm hàng tỷ video xuống còn hàng trăm hoặc hàng nghìn video
Mô hình này cần đánh giá nhanh các truy vấn dựa trên kích thước khổng lồ của kho
dữ liệu Một mô hình nhất định có thể cung cấp nhiều trình tạo ứng viên, mỗi trình
tạo đề cử một tập hợp con khác nhau cho các ứng dụng
• Chấm điểm: Tiếp theo, một mô hình khác sẽ chấm điểm và xếp hạng các ứng viên để chọn tập hợp các mục (theo thứ tự 10 mục) hiển thị cho người dùng Vì mô
hình này đánh giá một tập hợp con các mục tương đối nhỏ, nên hệ thống có thể sử
dụng một mô hình chính xác hơn dựa trên các truy vấn bổ sung
• Xếp hạng lại: Cuối cùng, hệ thống phải tính đến các hạn chế khác để xếp
hạng cuối cùng Ví dụ: hệ thống sẽ xoá những mục mà người dùng rõ ràng là không thích hoặc tăng điểm số cho nội dung mới Việc xếp hạng lại cũng có thể giúp đảm
bảo tính đa dạng, tính mới mẻ và công bằng
Trang 27Các hệ thống khuyến nghị phổ biến
1 Hệ khuyến nghị dựa trên nội dung (Content-based Recommendation system):
a Giới thiệu:
Content-Based Filtering là một phương pháp hệ thống khuyến nghị dựa trên
nội dung của các sản phẩm Nó dựa trên việc xác định những sản phẩm
tương tự với sản phẩm mà người dùng đã thích trước đó, và sau đó gợi ý các
sản phẩm tương tự đó cho người dùng
Cụ thể, hệ thống sẽ xem xét các thuộc tính của sản phẩm, chẳng hạn như tiêu
đề, mô tả, tác giả, nhãn hàng, giá cả và các thuộc tính khác, để đưa ra những
sản phẩm tương tự Hệ thống sẽ dựa trên lịch sử mua hàng của người dùng
để đưa ra các gợi ý sản phẩm mới, và cũng có thể sử dụng thông tin về sở
thích cá nhân của người dùng để cải thiện độ chính xác của hệ thống
b Xây dựng:
1) Thu thập dữ liệu sản phẩm: Đầu tiên, ta cần thu thập dữ liệu về các sản
phẩm trong hệ thống, bao gồm các thông tin như tên sản phẩm, mô tả,
thương hiệu, giá cả, loại sản phẩm,
Trang 282) Tiền xử lý dữ liệu: Sau khi thu thập dữ liệu, ta cần tiền xử lý dữ liệu để chuẩn bị cho việc tính toán độ tương tự giữa các sản phẩm Các bước tiền xử
lý dữ liệu có thể bao gồm: loại bỏ các từ dễ gây nhiễu như stop words, loại
bỏ các từ không cần thiết, chuyển đổi các từ thành dạng tiêu chuẩn, …
3) Tính toán độ tương tự giữa các sản phẩm: Dựa trên các thuộc tính của sản phẩm (như mô tả, thương hiệu, giá cả, ), ta có thể tính toán độ tương tự giữa các sản phẩm Các phương pháp tính toán độ tương tự có thể bao gồm: đánh giá trọng số cho các thuộc tính, sử dụng cosine similarity,
4) Đưa ra đề xuất sản phẩm: Dựa trên độ tương tự giữa các sản phẩm, ta có thể đưa ra các đề xuất sản phẩm tương tự với sản phẩm đang được xem xét 5) Tối ưu và đánh giá hệ thống: Để tối ưu hiệu quả của hệ thống, ta có thể sử dụng các kỹ thuật như cross-validation để đánh giá chất lượng của hệ thống Ngoài ra, ta cũng có thể sử dụng các kỹ thuật như collaborative filtering để kết hợp với content-based filtering để cải thiện chất lượng của hệ thống
c Ưu & Nhược điểm:
Trang 29- Việc xác định các thuộc tính của sản phẩm để đưa ra gợi ý có thể phức tạp và đòi hỏi nhiều thời gian và công sức
2 Hệ thống khuyến nghị dựa trên lọc cộng tác (Collaborative
filtering Recommendation system):
Hệ thống khuyến nghị dựa trên lọc cộng tác (Collaborative filtering) là một phương pháp gợi ý sản phẩm dựa trên thông tin đánh giá của người dùng CF sẽ xem xét thông tin về sở thích và hành vi của người dùng, sau đó sẽ tìm kiếm những người dùng có sở thích và hành vi tương tự để đưa ra gợi ý sản phẩm
CF được chia thành hai loại chính: User-based CF và Item-based CF
a Giới thiệu:
User-based CF: Hệ thống tìm kiếm người dùng có sở thích tương tự với người dùng hiện tại, sau đó đưa ra các sản phẩm được ưa chuộng bởi những người dùng này để gợi ý cho người dùng hiện tại Ưu điểm của phương pháp này là dễ hiểu và thực hiện, nhưng có thể gặp khó khăn khi số lượng người dùng lớn
Item-based CF: Hệ thống sẽ tìm kiếm các sản phẩm tương tự với sản phẩm
mà người dùng đã mua hoặc đánh giá, sau đó đưa ra gợi ý các sản phẩm tương tự Phương pháp này có thể áp dụng được cho các dịch vụ với số lượng sản phẩm lớn
Trang 30b Xây dựng:
1) Tiền xử lý dữ liệu: Ở bước này, chúng ta sẽ tiến hành chuẩn bị dữ liệu cho việc xây dựng hệ thống khuyến nghị Dữ liệu sẽ được thu thập và xử lý để đưa về dạng ma trận, trong đó mỗi hàng tương ứng với một người dùng, mỗi cột tương ứng với một sản phẩm, và mỗi ô chứa giá trị là đánh giá của người dùng đối với sản phẩm đó (hoặc có thể là số lần mua hoặc xem sản phẩm) 2) Tính toán sự tương đồng giữa các người dùng hoặc sản phẩm: Ở bước này, chúng ta sẽ tính toán độ tương đồng giữa các người dùng hoặc sản phẩm bằng cách sử dụng các phương pháp như cosine similarity, Pearson
correlation coefficient, hay Euclidean distance
3) Xây dựng ma trận dự đoán: Ở bước này, chúng ta sẽ sử dụng sự tương đồng giữa các người dùng hoặc sản phẩm để tính toán một ma trận dự đoán, trong đó mỗi hàng tương ứng với một người dùng, mỗi cột tương ứng với một sản phẩm, và mỗi ô chứa giá trị dự đoán của đánh giá của người dùng đối với sản phẩm đó
4) Đưa ra khuyến nghị: Ở bước này, chúng ta sẽ đưa ra các sản phẩm được khuyến nghị cho người dùng dựa trên ma trận dự đoán Có nhiều phương pháp để đưa ra khuyến nghị, bao gồm:
5) Top-N recommendations: Chọn ra N sản phẩm có dự đoán đánh giá cao nhất để đưa ra khuyến nghị cho người dùng
6) Rating prediction: Dự đoán điểm đánh giá của người dùng đối với các sản phẩm chưa được đánh giá, và đưa ra khuyến nghị dựa trên dự đoán này 7) Item-to-item recommendations: Đưa ra khuyến nghị dựa trên sự tương đồng giữa các sản phẩm, tức là đưa ra các sản phẩm tương tự với các sản phẩm mà người dùng đã mua hoặc xem
c Ưu & nhược điểm:
• Ưu điểm của Collaborative filtering Recommendation:
Trang 31- Không cần phân tích nội dung của sản phẩm, do đó không phụ thuộc vào bất kỳ thông tin nào về sản phẩm
- Có thể tìm kiếm và đưa ra gợi ý cho người dùng về những sản phẩm mới, không chỉ dựa trên lịch sử mua hàng của người dùng
• Nhược điểm của Collaborative filtering Recommendation:
- Cần có dữ liệu lịch sử đánh giá của người dùng về sản phẩm
- Vấn đề về độ trễ trong việc cập nhật dữ liệu đánh giá
- Có thể gặp vấn đề khi có những người dùng mới hoặc không có lịch sử đánh giá sản phẩm
3 Hệ thống khuyến nghị dựa trên kết hợp (Hybrid
Recommendation system):
Trang 32
Trong các hệ thống đề xuất kết hợp, các sản phẩm được đề xuất sử dụng đồng thời
cả lọc dựa trên nội dung (Content-Based Filtering) và lọc cộng tác (Collaborative filtering) để đề xuất phạm vi sản phẩm rộng hơn cho khách hàng Hệ thống đề xuất này đang phát triển và được cho là cung cấp các đề xuất chính xác hơn các hệ thống
đề xuất khác
Netflix là một trường hợp tuyệt vời về hệ thống khuyến nghị kết hợp Nó đưa ra các
đề xuất bằng cách đặt các thói quen xem và tìm kiếm của người dùng cạnh nhau và tìm những người dùng tương tự trên nền tảng đó Bằng cách này, Netflix sử dụng tính năng lọc cộng tác
Bằng cách đề xuất những chương trình/phim có chung đặc điểm với những chương trình/phim được người dùng đánh giá cao, Netflix sử dụng tính năng lọc dựa trên nội dung Họ cũng có thể phủ quyết các vấn đề phổ biến trong các hệ thống đề xuất, chẳng hạn như các vấn đề về khởi động nguội và thiếu dữ liệu
Ưu điểm của Hybrid Recommendation System:
- Kết hợp ưu điểm của các phương pháp khác nhau để đưa ra những gợi ý chính xác
và phù hợp với sở thích của người dùng
- Tăng tính đa dạng của các gợi ý sản phẩm, giúp người dùng khám phá được nhiều sản phẩm mới
- Cải thiện độ chính xác của hệ thống khuyến nghị
Nhược điểm Hybrid Recommendation System:
• Tốn nhiều thời gian và công sức để tích hợp các phương pháp khác nhau vào hệ thống
• Yêu cầu có nhiều dữ liệu và thông tin chi tiết về sản phẩm và người dùng để đưa
ra gợi ý chính xác
• Có thể gặp khó khăn trong việc xác định trọng số cho các phương pháp khác nhau
Trang 332.5 Các bước triển khai
Khởi tạo và chuẩn hoá:
Trang 34 Tính giá trị hàm mất mát:
Xác định các items được đánh giá bởi 1 user, và users đã đánh giá 1 item
và các ratings tương ứng:
Trang 35 Cập nhật X,W:
Phần thuật toán chính:
Dự đoán:
Trang 36 Đánh giá kết quả bằng cách đo Root Mean Square Error:
Trang 383.1.3 Danh sách Use Case
1 Manager Quản lí sản phẩm CRUD, tìm kiếm
2 Manager Quản lí đơn hàng Sửa, xóa
3 Manager Quản lí người dùng Sửa, xóa
4 Manager Tìm kiếm người dùng
Trang 395 Customer Quản lí giỏ hàng sửa, xoá
6 Customer Thêm vào giỏ hàng
8 User, Customer Xem chi tiết sản phẩm
15 Customer Thanh toán đơn hàng
Trang 4016 Customer Kiểm tra trạng thái đơn
hàng
17 Customer Thay đổi thông tin
18 Customer Lưu thông tin giao hàng
3.1.4 Mô tả chi tiết Use Case
3.1.4.1 Specification of Use-case “Quản lý sản phẩm”
Use case’s name Quản lí sản phẩm
Pre-condition Tác nhân phải được xác thực
Basic flow 1. Chọn sản phẩm muốn gia công
2. Hệ thống sẽ chuyển hướng đến trang quản lý
3. Chỉnh sửa thông tin sản phẩm (nếu có)
4. Nhấp vào chức năng (Tạo, Xóa, Cập nhật)
5. Hệ thống sẽ xử lý Thực thi