1. Trang chủ
  2. » Cao đẳng - Đại học

Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ

74 39 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 10,23 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI

    • 1.1. Nhu cầu thực tế của đề tài:

    • 1.2. Các dự án đối thủ

      • 1.2.1. Sapo

      • 1.2.2. KiotViet

    • 1.3. Đối tượng nghiên cứu

    • 1.4. Phạm vi nghiên cứu

    • 1.5. Phương pháp nghiên cứu

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

    • 2.1. Flutter

      • 2.1.1. Giới thiệu về Flutter

      • 2.2.2. Tại sao sử dụng Flutter?

    • 2.3. Java Spring

      • 2.3.1. Giới thiệu về Java Spring

      • 2.3.2. Tại sao sử dụng Java Spring

    • 2.3. Hệ quản trị csdl MySql

      • 2.3.1. Giới thiệu MySQL

      • 2.3.2. Tại sao sử dụng MySQL

      • 2.4.1. Khái niệm Firebase

      • 2.4.2. Chức năng chính của Google Firebase

      • 2.4.3. Lợi ích của Google Firebase

  • CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

    • 3.1. Kiến trúc hệ thống

    • 3.2. Mô hình phân rã chức năng

    • 3.3. Mô hình usecase

      • 3.3.1. Sơ đồ usecase

      • 3.3.2. Danh sách các Actor

      • 3.3.3. Danh sách các Use Case

      • 3.3.4. Đặc tả Use Case

        • 3.3.4.1. Đặc tả Use case Đăng nhập

        • 3.3.4.2. Đặc tả Usecase Quản lý giỏ hàng

        • 3.3.4.3. Đặc tả Usecase xem tình trạng đơn hàng

        • 3.3.4.4. Đặc tả Usecase Tìm kiếm sản phẩm

        • 3.3.4.5. Đặc tả Usecase Quản lý sản phẩm yêu thích

        • 3.3.4.6. Đặc tả Usecase Đánh giá sản phẩm

        • 3.3.4.7. Đặc tả Usecase đặt mua hàng

        • 3.3.4.8. Đặc tả Usecase Chat

    • 3.4. Thiết kế dữ liệu

      • 3.4.1. Class Diagram

      • 3.4.2. Mô tả chi tiết các loại dữ liệu trong mô hình

        • 3.4.2.1. Bảng Accounts

        • 3.4.2.2. Bảng Attributes

        • 3.4.2.3. Bảng cart_item_option

        • 3.4.2.4. Bảng carts

        • 3.4.2.5. Bảng Categories

        • 3.4.2.6. Bảng CATEGORY PRODUCT

        • 3.4.2.7. Bảng COMMENTS

        • 3.4.2.8. Bảng IMAGES

        • 3.2.4.9. Bảng IMAGE PRODUCTS

        • 3.2.4.10. Bảng PRODUCTS

        • 3.2.4.11. Bảng RATING STAR

        • 3.2.4.12. Bảng Reviews

        • 3.2.4.12. Bảng RECOMMEND RATING

        • 3.2.4.13. Bảng Products

        • 3.2.4.12. Bảng Shop

  • CHƯƠNG 4. HIỆN THỰC ỨNG DỤNG MUA SẮM THỜI TRANG

    • 4.1. Tổng quan về ứng dụng Ecommerce

    • 4.2. Đặc tả giao diện của ứng dụng

      • 4.2.1. Quản lí đăng nhập

        • 4.2.1.1. Giao diện đăng nhập

        • 4.2.1.2. Giao diện đăng ký

      • 4.2.2. Giao diện trang chủ

      • 4.2.3. Giao diện danh mục

        • 4.2.3.1. Danh mục level 1

        • 4.2.3.2. Danh mục level 2

        • 4.2.3.3. Danh mục level 3

      • 4.2.4. Giao diện tìm kiếm

      • 4.2.5. Giao diện giỏ hàng

      • 4.2.6. Giao diện chat

      • 4.2.7. Giao diện yêu thích

      • 4.2.8. Giao diện thông tin Profile

      • 4.2.9. Giao diện chi tiết sản phẩm

      • 4.2.10. Giao diện lọc sản phẩm

  • CHƯƠNG 5: ÁP DỤNG RECOMMEND SYSTEM

    • 5.1. Một số định nghĩa

      • 5.1.1. Collaborative Filtering

      • 5.1.2. Neighborhood-based Collaborative Filtering (NBCF)

      • 5.1.3. Utility Matrix

      • 5.1.4. Cosine Similarity

      • 5.1.5. Root Mean Squared Error (RMSE)

    • 5.2. Phương pháp thực hiện

      • 5.2.1. Content-based Recommendation

      • 5.2.2. Neighborhood-based Collaborative Filtering

    • 5.3. Áp dụng vào dữ liệu mẫu với Python

      • 5.3.1. Content-based Recommendation

      • 5.3.2. Neighborhood-based Collaborative Filtering

        • 5.3.2.1. User-User Collaborative Filtering

        • 5.3.2.2. Item-Item Collaborative Filtering

    • 5.4. Đánh giá

      • 5.4.1. So sánh các thuật toán

      • 5.4.2. Nhận xét

        • 5.4.2.1. Content-based Recommendation

        • 5.4.2.2. Neighborhood-based Collaborative Filtering (Item-item và User-user)

    • 5.5. Áp dụng với project

  • CHƯƠNG 6: KẾT LUẬN, HƯỚNG PHÁT TRIỂN

    • 6.1. Ưu điểm

    • 6.2. Nhược điểm

    • 6.3. Hướng phát triển

Nội dung

TỔNG QUAN VỀ ĐỀ TÀI

N HU CẦU THỰC TẾ CỦA ĐỀ TÀI

Trong bối cảnh nền kinh tế đang phát triển mạnh mẽ, đời sống người dân cũng được cải thiện, thói quen ăn mặc và xu hướng thời trang trở thành vấn đề được quan tâm Sự gia tăng nhanh chóng của các shop vừa và nhỏ đã tạo ra nhu cầu cần thiết cho các ứng dụng thương mại điện tử hỗ trợ các shop khởi nghiệp, giúp họ phát triển bền vững.

Các chủ shop luôn tìm kiếm ứng dụng độc đáo để khẳng định thương hiệu và cạnh tranh hiệu quả Tuy nhiên, việc phát triển ứng dụng đáp ứng nhu cầu này không hề đơn giản Nhận thấy thách thức này, nhóm đã quyết định tập trung vào lĩnh vực thương mại điện tử, nhằm tạo ra giải pháp khác biệt cho các shop nhỏ và vừa, những đơn vị chiếm tỷ lệ lớn trong ngành thời trang.

C ÁC DỰ ÁN ĐỐI THỦ

Phần mềm Sapo hiện nay nổi bật với ưu điểm lớn nhất là ứng dụng công nghệ hiệu quả, giúp hỗ trợ quản lý và bán hàng đa kênh Nó cho phép đồng bộ đơn hàng từ nhiều kênh khác nhau, bao gồm website, Facebook và các sàn thương mại điện tử.

Phần mềm nổi bật với tính năng tích hợp đơn vị vận chuyển, cho phép đơn hàng được xử lý và chuyển ngay lập tức đến các đối tác vận chuyển Điều này giúp chủ shop rút ngắn quy trình giao hàng và theo dõi trạng thái đơn hàng một cách chính xác.

Phần mềm Sapo phân tách rõ ràng giữa màn hình bán hàng tại cửa hàng và bán hàng trực tuyến, giúp tối ưu hóa các tính năng và thông tin chuyên môn cho từng kênh Điều này cho phép người dùng dễ dàng báo cáo riêng biệt về hóa đơn và doanh thu, đồng thời đo lường hiệu quả giữa hai kênh online và offline.

Chúng tôi cung cấp nhiều phương thức thanh toán linh hoạt, bao gồm thanh toán bằng tiền mặt, chuyển khoản ngân hàng, quẹt thẻ, COD, thanh toán bằng điểm, và gần đây nhất là hình thức thanh toán qua QR Code.

Giao diện phần mềm Sapo mặc dù thu hút nhưng menu có quá nhiều mục, gây khó khăn cho người dùng mới trong việc ghi nhớ Hơn nữa, sự phong phú với hơn 20 loại báo cáo có thể khiến người mới cảm thấy bối rối; do đó, cần xem xét việc loại bỏ hoặc ẩn bớt những báo cáo không thực sự cần thiết.

Phần mềm Sapo cung cấp tính năng phân quyền cho nhân viên dựa trên vai trò và chi nhánh, tuy nhiên, thao tác của nhân viên trong trang tính hiện tại vẫn chưa ổn định và cần được cải tiến.

+ Phần mềm phù hợp với đa số ngành nghề, như thời trang, tạp hoá, siêu thị, mỹ phẩm, điện tử… cả bán buôn và bán lẻ.

Kiotviet là giải pháp lý tưởng cho các doanh nghiệp và chủ shop chuyên bán hàng tại cửa hàng và quản lý nhiều chi nhánh Nếu bạn không có kế hoạch mở rộng sang bán hàng online, Kiotviet sẽ đáp ứng tốt nhu cầu quản lý và kinh doanh của bạn.

Phần mềm Kiotviet cho phép phân quyền chi tiết cho từng tài khoản, giúp nhân viên có thể xóa hoặc sửa đơn hàng nếu được cấp quyền, mà không nhất thiết phải là tài khoản chủ cửa hàng.

Kiotviet cung cấp một màn hình duy nhất cho cả bán hàng online và tại cửa hàng, giúp người dùng dễ dàng làm quen với quy trình tạo đơn bán hàng mà không cần phải học nhiều giao diện khác nhau.

+ Bán hàng ngay cả khi mất kết nối Internet.

Phần mềm Kiot Viet chủ yếu hỗ trợ các cửa hàng bán hàng offline, nhưng khi doanh nghiệp phát triển, việc chuyển sang kinh doanh online trở nên cần thiết Điều này có thể tạo ra khó khăn trong việc quản lý và báo cáo, bởi vì không thể phân tách rõ ràng giữa doanh thu từ cửa hàng và doanh thu từ kênh online, dẫn đến việc khó đo lường hiệu quả của từng kênh bán hàng.

Việc phân quyền chi tiết cho từng tài khoản có thể tạo ra khó khăn trong việc kiểm soát, đặc biệt khi nhân viên thiếu trung thực và có ý định gian lận.

Phần mềm Kiot Viet hiện có giao diện quản trị chưa thực sự hiện đại và thân thiện, với bố cục phức tạp Các báo cáo chưa được trình bày một cách trực quan và thiếu các báo cáo chuyên sâu Ngoài ra, giao diện quản lý trên điện thoại cũng không hiển thị tốt như trên máy tính.

+Phần mềm không hỗ trợ bán hàng online và không kết nối với vận chuyển nếu shop có nhu cầu ship hàng.

+ Bên cạnh đó, các phương thức thanh toán của Kiotviet cũng mới hỗ trợ 3 hình thức là tiền mặt, thẻ và chuyển khoản.

Dịch vụ chăm sóc khách hàng và hỗ trợ kỹ thuật có phần chậm chạp, có thể do lượng khách hàng đông đảo, dẫn đến việc tiếp cận thông tin và xử lý vấn đề bị ảnh hưởng.

Đ ỐI TƯỢNG NGHIÊN CỨU

- Khoá luận này hướng đến nghiên cứu các đối tượng sau:

+ Giao diện: Quy tắc thiết kế F-layout, quy tắc phối màu mono.

+ Thuật toán: Thuật toán gợi ý sản phẩm Content-based và CollaborativeFiltering.

- Đối tượng trong phạm vị đề tài hướng đến:

+ Những doanh nghiệp, nhà bán hàng trong và ngoài nước.

+ Người tiêu dùng trong nước và quốc tế.

P HẠM VI NGHIÊN CỨU

- Ứng dụng Ecommerce được nhóm xây dựng bằng ngôn ngữ Flutter trên môi trường Android/iOS và Server được xây dựng bằng ngôn ngữ Java.

- Tìm hiểu về hệ thống gợi ý sản phẩm đối với 2 phương pháp: Content-based method, Collaborative filtering method dựa trên các khía cạnh:

Triển khai và đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu thử nghiệm là bước quan trọng Hệ thống gợi ý sản phẩm sẽ được áp dụng vào ứng dụng Ecommerce nhằm cung cấp gợi ý sản phẩm phù hợp cho người dùng.

P HƯƠNG PHÁP NGHIÊN CỨU

- Cách tiếp cận: ứng dụng được xây dựng dựa theo mô hình BloC trên nền tảng Android.

- Nhóm đã sử dụng các phương pháp nghiên cứu:

+ Phương pháp đọc tài liệu.

+ Phương pháp phân tích các ứng dụng TMĐT hiện có.

CƠ SỞ LÝ THUYẾT

F LUTTER

Flutter là một công cụ phát triển ứng dụng đa nền tảng do Google cung cấp, cho phép các lập trình viên xây dựng ứng dụng cho Android, iOS, Web và Desktop chỉ với một mã nguồn chung.

- Các đặc điểm của Flutter:

Xây dựng ứng dụng đa nền tảng cho phép phát triển trên nhiều hệ thống khác nhau như Android, iOS, web và desktop, chỉ với một mã nguồn chung.

Flutter Hot Reload giúp các nhà phát triển tăng tốc quá trình phát triển ứng dụng bằng cách cho phép thử nghiệm và xây dựng giao diện người dùng một cách nhanh chóng Ngoài ra, công cụ này cũng hỗ trợ việc thêm tính năng và sửa lỗi dễ dàng, giúp tiết kiệm thời gian và nâng cao hiệu quả làm việc.

Xây dựng giao diện người dùng đẹp mắt và thân thiện với người dùng bằng cách sử dụng các tiện ích Material Design và Cupertino tích hợp sẵn của Flutter Với API chuyển động phong phú và khả năng cuộn tự nhiên mượt mà trên nhiều nền tảng, bạn sẽ tạo ra trải nghiệm tuyệt vời cho người dùng.

Flutter's modern and reactive framework simplifies the creation of user interfaces by offering a rich collection of platforms, layouts, and widgets Tackle challenging UI issues with its powerful and flexible APIs designed for 2D graphics, animations, gestures, effects, and more.

Flutter cho phép bạn tận dụng mã Java, Swift và ObjC hiện có, giúp ứng dụng của bạn trở nên sống động hơn thông qua việc truy cập các API của nền tảng, SDK của bên thứ ba và mã native trên cả iOS và Android.

Flutter là một nền tảng phát triển ứng dụng thống nhất, cung cấp công cụ và thư viện giúp biến ý tưởng thành hiện thực trên cả iOS và Android Đây là lựa chọn lý tưởng cho những ai chưa có kinh nghiệm phát triển di động, cho phép xây dựng ứng dụng đẹp mắt một cách nhanh chóng và dễ dàng Đồng thời, Flutter cũng hỗ trợ các nhà phát triển iOS và Android có kinh nghiệm trong việc tối ưu hóa giao diện ứng dụng của họ.

2.2.2 Tại sao sử dụng Flutter?

Flutter là một framework mã nguồn mở, giúp các nhà phát triển nhanh chóng và dễ dàng xây dựng ứng dụng gốc cho cả iOS và Android.

Flutter sử dụng tính năng “Stateful Hot Reload” và “Hot Restart” để lưu giữ trạng thái và cập nhật các thay đổi mà không cần phải thực hiện lại quá trình Gradle build Điều này giúp giảm đáng kể thời gian phát triển sản phẩm.

Flutter features a unique mechanism known as "Everything is a widget," which simplifies the process for developers to create, modify, and manage user interfaces efficiently.

- Hiện nay, Flutter đang rất được ưa chuộng với các developer bởi sự linh hoạt, đơn giản và nhanh chóng trong việc phát triền sản phẩm.

J AVA S PRING

2.3.1 Giới thiệu về Java Spring

Spring là một Framework phát triển ứng dụng Java phổ biến, được hàng triệu lập trình viên tin dùng Framework này hỗ trợ tạo ra các ứng dụng có hiệu suất cao, dễ dàng kiểm thử và cho phép tái sử dụng mã nguồn hiệu quả.

- Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên)

- Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất lơn.

- Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là:

Dependency Injection và Aspect Oriented Programming.

Spring cung cấp những tính năng cốt lõi để phát triển ứng dụng Java Desktop, mobile và Java Web Mục tiêu chính của Spring là đơn giản hóa quá trình phát triển các ứng dụng J2EE thông qua mô hình POJO (Plain Old Java Object).

H Ê ̣ QUA ̉ N TRI ̣ CSDL M Y S QL

- Spring framework hỗ trợ POJO Vì vậy, bạn sẽ không bao giờ cần đến EJB

Enterprise Java Beans are often utilized within other frameworks Due to the implementation of POJO, this framework is notably lightweight, as it does not require any additional interfaces.

Spring Framework được thiết kế với cấu trúc tổ chức tốt và tính linh hoạt cao, giúp người dùng dễ dàng sử dụng mà không gặp khó khăn Mặc dù có nhiều lớp (class) và gói (package), Spring vẫn giữ được sự đơn giản và hiệu quả trong quá trình phát triển ứng dụng.

Spring Framework cung cấp một giao diện quản lý giao dịch tin cậy, được thiết kế để hỗ trợ cả giao dịch cục bộ và giao dịch toàn cầu.

- Bạn có thể lập trình và kiểm thử một ứng dụng với Spring framework rất đơn giản và dễ dàng.

- Spring dễ tích hợp với các Framework khác.

- Tính Module mạnh mẽ Nó cung cấp nhiều module như: Spring Core, Spring AOP, Spring IoC, Spring MVC, Spring JDBC, Spring ORM, Spring Transitions.

2.3 Hệ quản trị csdl MySql

Hình 2.3: Sự phát triển và độ phổ biến của MySQL2.3.1 Giới thiệu MySQL

MySQL là một hệ quản trị cơ sở dữ liệu nhanh chóng và dễ sử dụng, tương thích với các công nghệ hiện đại như C#, Java và PHP Được phát triển bởi công ty MySQL AB tại Thụy Điển vào năm 2004, MySQL đã trải qua nhiều lần thay đổi chủ sở hữu và cuối cùng được Oracle mua lại vào năm 2010.

2.3.2 Tại sao sử dụng MySQL

- Nó khá phổ biến với giới lập trình viên bởi:

+ MySQL là mã nguồn mở, hoàn toàn miễn phí khi sử dụng.

+ MySQL sử dụng form chuẩn thuộc hệ SQL.

+ MySQL dễ dàng xử lý ngay cả trên các tập dữ liệu lớn.

+ MySQL hỗ trợ giao dịch nhanh Giao dịch ACID (Atomic-Consistent-Isolated- Durable) hoàn thiện

Hình 2.4: Google Firebase Cloud 2.4.1 Khái niệm Firebase

- Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám

Firebase, ra mắt vào năm 2014 và được Google mua lại vào năm 2016, đã chứng kiến sự tăng trưởng ấn tượng từ 110.000 lên 470.000 nhà phát triển Sự phổ biến của Firebase đến từ khả năng giúp nhà phát triển xây dựng hệ thống Client – Server một cách hiệu quả, giảm thiểu đáng kể công sức và chi phí cho phía Server.

2.4.2 Chức năng chính của Google Firebase

- Realtime Database – Cơ sở dữ liệu thời gian thực

Firebase lưu trữ dữ liệu dưới dạng JSON và đồng bộ hóa cơ sở dữ liệu theo thời gian thực cho tất cả người dùng Điều này hỗ trợ xây dựng hệ thống đa nền tảng, cho phép tất cả người dùng cùng chia sẻ một cơ sở dữ liệu duy nhất Hơn nữa, Firebase tự động cập nhật dữ liệu mỗi khi có sự thay đổi, mang lại trải nghiệm mượt mà và hiệu quả.

- Firebase Authentication – Hệ thống xác thực của Firebase

Firebase cho phép tích hợp dễ dàng các công nghệ xác thực từ các nền tảng lớn như Google và Facebook, cũng như hỗ trợ xây dựng hệ thống xác thực tùy chỉnh cho ứng dụng trên mọi nền tảng như Android và iOS.

Firebase Storage cho phép lưu trữ nhiều loại dữ liệu như tệp tin, hình ảnh và video một cách đơn giản Hơn nữa, nó tích hợp tính năng bảo mật của Google, giúp việc tải lên và tải về dữ liệu trong các ứng dụng Firebase trở nên thuận tiện hơn.

Firebase cung cấp dịch vụ Cloud Messaging, một giải pháp đa nền tảng cho phép người dùng gửi tin nhắn miễn phí và nhận thông điệp theo thời gian thực.

2.4.3 Lợi ích của Google Firebase

- Triển khai ứng dụng cực nhanh

Firebase giúp lập trình viên tiết kiệm thời gian trong việc xây dựng, phát triển và đồng bộ cơ sở dữ liệu nhờ vào các API tự động và nhanh chóng Hơn nữa, Firebase còn hỗ trợ việc phát triển ứng dụng đa nền tảng một cách dễ dàng.

Quá trình đăng ký và đăng nhập vào ứng dụng sẽ trở nên tiện lợi và dễ dàng hơn nhờ vào các hệ thống xác thực mà Firebase cung cấp.

Firebase hoạt động trên nền tảng đám mây, đảm bảo bảo mật dữ liệu và kết nối giữa client và server qua giao thức SSL Việc phân quyền người dùng cũng được cải thiện, cho phép chỉ những người có quyền mới có khả năng chỉnh sửa dữ liệu, nhờ vào cú pháp JavaScript đơn giản.

- Tính linh hoạt và khả năng mở rộng

Firebase cung cấp cho các nhà phát triển khả năng xây dựng server riêng, hỗ trợ hiệu quả trong việc quản lý Hệ quản trị cơ sở dữ liệu NoSQL của Firebase giúp việc mở rộng các bảng và trường trở nên linh hoạt, tùy thuộc vào nhu cầu của lập trình viên.

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

K IẾN TRÚC HỆ THỐNG

Hình 3.1: Sơ đồ kiến trúc hệ thống

M Ô HÌNH PHÂN RÃ CHỨC NĂNG

Hình 3.2: Sơ đồ phân rã chức năng

Mô hình phân rã chức năng giúp xác định rõ ràng phạm vi các chức năng được xây dựng và phát triển trong ứng dụng Nó cung cấp cho người sử dụng cái nhìn tổng thể về các chức năng có trong ứng dụng thông qua biểu diễn phân rã theo thứ bậc đơn giản.

M Ô HÌNH USECASE

Hình 3.3.1: Sơ đồ use case tổng quát 3.3.2 Danh sách các Actor

STT Tên Actor Ý nghĩa/Ghi Chú

1 Khách hàng 2.4.1.1 Là người xem sản phẩm của shop

2.4.1.2 Thêm sản phẩm vào mục yêu thích nếu thích sản phẩm

2.4.1.3 Thêm sản phẩm vào giỏ hàng nếu có ý định mua 2.4.1.4 Mua sản phẩm nếu đã quyết định 2.4.1.5 Đánh giá sản phẩm khi đã nhận được hàng, để cho khách hàng khác cân nhắc

2 admin 2.4.1.6 Kiểm suyệt các sản phẩm nếu có hàng mới

2.4.1.7 Quản lý thu nhập 2.4.1.8 Quản lý tồn kho 2.4.1.9 Quản lý đơn hàng 2.4.1.10 Cập nhật trạng thái vận chuyển hàng 2.4.1.11 Hỗ trợ khách hàng

3.3.3 Danh sách các Use Case

STT Tên use case Ý nghĩa

1 Use case Mức tổng quát Đưa ra các actor có trong hệ thống quản lý, và chức năng chính của mỗi actor.

2 Use case Chưa đăng nhập Đánh giá mức độ yêu thích ứng dụng của người dùng (quyết định tiếp tục sự dụng ứng dụng hay không)

3 Use case Đăng nhập Yêu cầu đăng nhập để xác thực trong ứng dụng

4 Use case Quản lý người dùng

Quản lý người dùng để ứng dụng hoạt động tốt hơn (đảm bảo tính công bằng)

5 Use case Quản lý danh mục sản phẩm

Quản lý các danh mục sản phẩm hàng hóa (thêm, sửa, xóa danh mục)

6 Use case Quản lý sản phẩm

Quản lý sản phẩm (thêm, sửa, xóa sản phẩm)

7 Use case Quản lý đơn hàng

Quản lý đơn hàng (sửa đơn hàng, hủy, duyệt đơn hàng)

8 Use case Quản lý quảng cáo

Quản lý các mục quảng cáo (thêm, sửa, xóa) viết ứng dụng

10 Use case Xem bài viết Xem bài viết

11 Use case Lưu bài viết Thêm, xóa bài viết vào mục lưu trữ

12 Use case Đặt nhắc nhở xem bài viết

Thêm nhắc nhở để xem lại bài viết vào thời gian khác

13 Use case Quản lý địa chỉ giao hàng

Thêm, xóa, sửa địa chỉ giao hàng

14 Use case Quản lý giỏ hàng

Quản lý giỏ hàng (thêm, xóa, sửa sản phẩm trong giỏ hàng)

15 Use case Xem tình trạng đơn hàng

Theo dõi tình trạng đơn hàng

16 Use case Tìm kiếm sản phẩm

Tìm kiếm sản phẩm theo từ khóa

17 Use case Xem sản phẩm

Xem chi tiết thông tin sản phẩm

18 Use case Quản lý sản phẩm yêu thích

Quản lý danh mục sản phẩm yêu thích (thêm, xóa khỏi danh mục)

19 Use case Đánh giá sản phẩm Đánh giá của khách hàng về sản phẩm

20 Use case Đặt hàng sản phẩm

Khách hàng đặt hàng sản phẩm của MyStore

21 Use case Chat Khách hàng liên lạc với người bán

22 Use case Thống kê doanh thu

Xem thống kê doanh thu trong khoảng thời gian

23 Use case Liên hệ admin

Liên hệ với admin hệ thống Bảng 3.3.2 Danh sách các Actor 3.3.4 Đặc tả Use Case

3.3.4.1 Đặc tả Use case Đăng nhập Đổi mật khẩu

Tên Use Case Đăng nhập

Mô tả Chức năng đăng nhập của người dùng

Người thực hiện Khách hàng, admin Điều kiện trước xử lí Màn hình ở screen đăng nhập

Sau khi xử lý, người dùng có thể đăng nhập thành công và được hiển thị trang profile cùng với các chức năng yêu thích, đơn hàng và thông tin cá nhân Ngược lại, nếu đăng nhập thất bại, hệ thống sẽ thông báo rằng mẫu khẩu hiện tại không đúng.

Thông báo đăng nhập không thành công

Ngoại lệ(Exception) Nếu username và password không thỏa validate , nút đăng nhập sẽ bị disable

Dòng sự kiện chính 1 Hệ thống hiển thị màn hình đăng nhập.

2 Khách hàng nhập username và mật khẩu mới.

Dòng sự kiện khác 1 Hệ thống kiểm tra nhập username, mật khẩu có chính xác hay không.

2 Thông báo lỗi hoặc chuyển sang màn hình Home3.3.4.2 Đặc tả Usecase Quản lý giỏ hàng

Tên Use Case Quản lý giỏ hàng

Mô tả Xem, sửa, xóa các item trong giỏ hàng, thanh toán

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở screen Giỏ hàng

Sau xử lí(sau Use-case) 1 Cập nhật , xóa thông tin Giỏ hàng

Dòng sự kiện chính 1 Hệ thống hiển thị màn hình Giỏ hàng.

2 Khách hàng click vào các button thêm hoặc giảm số lượng của item để điều chỉnh số lượng, hoặc nhấn button dấu X để xóa item

3 Chọn các Item cần tương tác để xóa,sửa.

Dòng sự kiện khác 1 Có thể tích chọn các item cần tương tác để đặt hàng, thanh toán 3.3.4.3 Đặc tả Usecase xem tình trạng đơn hàng

Tên Use Case Xem đơn hàng

Mô tả Xem các đơn hàng đã đặt và xem tình trạng đơn hàng

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở screen đơn hàng của tôi

Sau xử lí(sau Use-case)

Dòng sự kiện chính 1 Click vào các tab “Đã xóa”,”Đã giao”,”Đang giao”,… để lựa chọn loại đơn hàng muốn xem.

2 Chọn đơn hàng cần xem

Dòng sự kiện khác 1 Có thể chọn đặt lại đơn hàng hoặc xóa ,hủy các đơn hàng được phép xóa 3.3.4.4 Đặc tả Usecase Tìm kiếm sản phẩm

Tên Use Case Tìm kiếm sản phẩm

Mô tả Tìm kiếm các sản phẩm theo filter, giá ,danh mục,…

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở screen search hoặc các screen product có filter

Sau xử lí(sau Use-case) 1 Màn hình hiển thị các sản phẩm liên quan tới các option đã chọn hoặc điền

2 Có thể thực hiện các thao tác xem, bỏ vào giỏ hàng , đối với sản phẩm

Dòng sự kiện chính 1 Click vào button “kính lúp” để search theo key word rồi nhập keyword

2 Click vào Filter để lựa chọn các mục muốn

3 Lựa chọn xong nhấn Ok để tiến hành search sản phẩm

3.3.4.5 Đặc tả Usecase Quản lý sản phẩm yêu thích

Tên Use Case Quản lý sản phẩm yêu thích

Mô tả Kiểm tra lại các sản phẩm yêu thích để tiến hành đặt hàng hoặc xóa khỏi sản phẩm yêu thích

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở Screen Yêu thích

Sau xử lí(sau Use-case) 1 Chọn sản phẩm yêu thích và thêm vào giỏ hàng, xem chi tiết sản phẩm

Dòng sự kiện chính 1 Hiển thị các sản phẩm đã yêu thích

2 Nhấn vào icon trái tim để hủy yêu thích sản phẩm

3.3.4.6 Đặc tả Usecase Đánh giá sản phẩm

Tên Use Case Đánh giá sản phẩm

Mô tả Đánh giá các sản phẩm đã giao

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở xem đơn hàng Đã giao

Sau xử lí(sau Use-case)

Ngoại lệ(Exception) Các sản phẩm đã đánh giá sẽ không hiển thị button đánh giá

Dòng sự kiện chính 1 Hiển thị các đơn hàng đã giao.

2 Nhấn vào đơn hàng muốn đánh giá.

3 Chọn button đánh giá bên góc phải các sản phẩm

4 Sheet lựa chọn star và đánh giá bằng hình ảnh, text hiển thị.

5 Sau khi chọn và điền xong Nhấn Đánh giá

3.3.4.7 Đặc tả Usecase đặt mua hàng

Mô tả Đặt hàng từ giỏ hàng

Người thực hiện Khách hàng Điều kiện trước xử lí Màn hình ở Screen Giỏ Hàng

Sau xử lí(sau Use-case) Thông báo đặt hàng thành công hoặc thất bại

Cập nhật dữ liệu đơn hàng vào database

Ngoại lệ(Exception) Các sản phẩm đã hết số lượng tồn kho hoặc vượt quá số lượng sẽ không thể đặt hàng

Dòng sự kiện chính 1 Hiển thị các sản phẩm trong giỏ hàng

2 Chọn các sản phẩm muốn đặt hàng.

3 Xem số tiền và nhấn Đặt hàng.

4 Hiển thị màn hình thanh toán

5 Chọn các option thanh toán,giao hàng,…

6 Nhấn thanh toán để đặt hàng

Mô tả Chat với các shop hoặc admin

Người thực hiện Khách hàng, admin Điều kiện trước xử lí Màn hình ở Screen thông tin shop

Sau xử lí(sau Use-case)

Dòng sự kiện chính 1 Hiển thị thông tin của shop.

2 Nhấn vào icon “Tin nhắn “ để chat với shop đã chọn

3 Màn hình nhắn tin hiển thị

4 Nhập message , hoặc hình ảnh

Dòng sự kiện khác 1 Các user khi có tin nhắn mới sẽ nhận được thông báo từ app.

2 Cách tiếp cận khác để chat, là nhấn vào icon chat trên thanh công cụ và lựa chọn đối tượng chat đã có lịch sử chat trước đó

T HIẾT KẾ DỮ LIỆU

3.4.2 Mô tả chi tiết các loại dữ liệu trong mô hình

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

USERNAME VARCHAR(255) Primary key Tên đăng nhập

PASSWORD VARCHAR(255) Not null Mật khẩu

USER_ID INT FOREIGN KEY Id của user

TINYINT(1) Not null Mã trạng thái

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã attribute

NAME VARCHAR(255) Not null Tên attribute

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key MÃ ITEM

CART_ID INT MÃ CART

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key MÃ CART

PRODUCT_ID INT MÃ PRODUCT

USER_ID INT MÃ USER

AMOUNT INT SỐ LƯỢNG

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key MÃ CART

PARENT_ID INT FOREIGN KEY MÃ CATEGORY

VARCHAR(200) TÊN TRÊN ĐƯỜNG DẪN

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

CATEGORY_ID INT FOREIGN KEY MÃ CATEGORY

PRODUCT_ID INT FOREIGN KEY MÃ PRODUCT

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID VARCHAR(45) Primary key MÃ COMMENT

PARENT_ID VARCHAR(45) MÃ COMMENT

USER_ID INT FOREIGN KEY MÃ USER

TIME_CREATED TIMESTAMP THỜI ĐIỂM TẠO

TIME_UPDATED TIMESTAMP THỜI ĐIỂM

PRODUCT_ID INT FOREIGN KEY MÃ PRODUCT

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID VARCHAR(45) Primary key MÃ IMAGE

LINK VARCHAR(255) ĐƯỜNG DẪN

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

IMAGE_ID VARCHAR(45) FOREIGN KEY MÃ HÌNH ẢNH

PRODUCT_ID INT FOREIGN KEY MÃ SẢN PHẨM

The table structure includes several key fields for product management The primary key, identified as "id," is of type integer The "MÃ SẢN PHẨM" (Product Code) is represented as "name" with a varchar data type, allowing for up to 255 characters The "admin_id" serves as a foreign key linking to the administrator responsible for the product The pricing details are captured with "price" and "final_price," both defined as decimal types with a precision of 12 and scale of 2 Additionally, "promotion_percent" indicates any discounts available, while "is_promotion" is a tiny integer flagging promotional status The "description" and "short_description" fields provide detailed and concise product information, respectively The "weight" field records the product's weight as an integer, and "quantity" tracks available stock Finally, "img_url" serves as a foreign key for the product's image link, limited to 45 characters.

ẢNH shop_free_shipping tinyint(1) MIỄN PHÍ SHIP order_count int SỐ LƯỢNG ĐÃ

ORDER rating_star_id int FOREIGN KEY MÃ RATING

The STAR stock status is represented as a tinyint(1), indicating inventory availability The category is defined by a varchar(50) field, while SKU and user SKU are both stored as varchar(45) The is_free_ship field, also a tinyint(1), denotes whether free shipping is offered Additionally, the is_event field indicates if there is a special event associated with the product Lastly, the record_status is represented as a tinyint(1), serving as a status code for the record.

Tên trường Kiểu dữ liệu Ràng buộc Mô tả id int Primary key MÃ

RATINGSTAR star1 int SỐ LƯỢNG

STAR 1 star2 int SỐ LƯỢNG

STAR 2 star3 int SỐ LƯỢNG

STAR 3 star4 int SỐ LƯỢNG

Star5 int SỐ LƯỢNG

The table structure includes several key fields: 'id' as the primary key, 'product_id' and 'user_id' as foreign keys representing the product and user respectively, 'comment' for storing user feedback, 'star' for rating, and timestamps 'time_created' and 'time_updated' to track the creation and update times of each entry.

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

User_id int Primary key Mã user products Varchar(255) List Mã sản phẩm

1 _id ObjectID Mã sản phẩm

3 stock_status Boolean trạng thái hàng

4 review [ObjectID] Mảng đánh gía sản phẩm

5 attribute [ObjectID] Mảng thuộc tính

6 name String Tên sản phẩm

7 product_code Int Mã số của sản phẩm

8 record_status Boolean Show hoặc ẩn sản phẩm

9 option_amount [ObjectID] Các option của sản phẩm

10 img_url String ảnh đại diện

11 price Int Giá gốc sản phẩm

12 promotion_percent Int Phần trăm giảm giá

13 final_price Int Giá sau khi giảm giá

14 description String Mô tả sản phẩm

15 total_review Int Tổng review

16 order_count Int Tổng đặt hàng

18 short_description String Mô tả ngắn về sản phẩm

19 rating_star ObjectID Mã đánh giá sao

20 category_id ObjectID Mã danh mục

21 categories String Mã text danh mục

22 is_freeship Boolean có freeship không

The table structure includes several key fields: the primary key 'id' is an integer, while 'name' is a varchar of up to 255 characters representing the shop's name The 'logo' field is a foreign key with a maximum length of 45 characters for the shop's logo The 'good_review_percen' is a float indicating the percentage of positive reviews, and 'score' is an integer representing the shop's rating The 'phone_number' field, also a varchar of 45 characters, stores the shop's contact number The 'warehouse_city' field is a varchar of 45 characters for the city of the warehouse, and 'is_certified' is a tinyint indicating certification status The 'user_id' is an integer foreign key linked to the user, while 'email' is a varchar of 255 characters The 'record_status' is a tinyint that indicates the status of the record, with 'time_created' and 'time_updated' as timestamps for creation and last update, respectively.

HIỆN THỰC ỨNG DỤNG MUA SẮM THỜI TRANG

T ỔNG QUAN VỀ ỨNG DỤNG E COMMERCE

- Ứng dụng Ecommerce là ứng dụng để ngừoi dùng mua sắm tất cả các loại sản phẩm được bán hiện nay.

- Ứng dụng được xây dựng trên mobile nên thuận tiện cho người dùng sử dụng ở mọi nơi.

Màu sắc chủ đạo của ứng dụng quản lý khách sạn là xanh và trắng, mang lại cảm giác dịu mát và thư thái cho người dùng Sự kết hợp này không chỉ giúp đầu óc thoải mái mà còn nâng cao hiệu quả làm việc Bên cạnh đó, ứng dụng còn có các giao diện chính phục vụ cho nhu cầu mua sắm thời trang.

Giao diện xem chi tiết sản phẩm

Giao diện thông tin cá nhân

Đ ẶC TẢ GIAO DIỆN CỦA ỨNG DỤNG

4.2.3 Giao diện danh mục4.2.3.1 Danh mục level 1

4.2.8 Giao diện thông tin Profile

4.2.9 Giao diện chi tiết sản phẩm

4.2.10 Giao diện lọc sản phẩm

ÁP DỤNG RECOMMEND SYSTEM

P HƯƠNG PHA ́ P THƯ ̣ C HIÊ ̣ N

+ rui: dự đoán của người dùng u trên item i trên tập kiểm tra

+ r ^ ui: dự đoán của người dùng u trên item i theo thuật toán gợi ý.

Hình 5.2.1.a Ví dụ rating bài hát

Hệ thống gợi ý bài hát sử dụng ma trận tiện ích, trong đó người dùng đánh giá các bài hát từ 0 đến 5 sao Các ô có dấu '?' với nền màu xám thể hiện dữ liệu chưa có trong cơ sở dữ liệu Để hoạt động hiệu quả, các hệ thống gợi ý cần phải tự động điền các giá trị này.

Trong ví dụ này, có 6 người dùng A, B, C, D, E, F và 5 bài hát, với các ô màu xanh thể hiện đánh giá từ 0 (không thích) đến 5 (rất thích) Những ô màu xám có dấu ‘?’ là những ô chưa có dữ liệu Nhiệm vụ của Hệ thống Gợi ý là dự đoán giá trị cho các ô màu xám này, từ đó cung cấp gợi ý cho người dùng Do đó, Hệ thống Gợi ý cũng được coi là một bài toán Hoàn thiện Ma trận.

Trong ví dụ đơn giản này, có hai thể loại nhạc rõ ràng: ba bài đầu là nhạc Bolero và hai bài sau là nhạc Thiếu nhi Dựa trên dữ liệu này, có thể suy luận rằng A và B yêu thích nhạc Bolero, trong khi C, D, E và F thích nhạc Thiếu nhi Hệ thống gợi ý nên đề xuất bài "Cỏ úa" cho B, "Vùng lá me bay" cho A, và "Em yêu trường em" cho D và E.

F Giả sử chỉ có hai thể loại nhạc này, khi có một bài hát mới, ta chỉ cần phân lớp nó vào thể loại nào, từ đó đưa ra gợi ý với từng người dùng.

- Content-Based Recommendations dựa trên ý tưởng trên để thực hiện gợi ý theo từng feature của item.

In content-based systems, which rely on the attributes of each item, it is essential to create a profile for every item, represented mathematically as a feature vector In straightforward scenarios, this feature vector is directly extracted from the item itself For instance, consider the various features of a song that can be utilized in recommendation systems.

1 Ca sĩ Cùng là bài Thành phố buồn nhưng có người thích bản của Đan Nguyên, có người lại thích bản của Đàm Vĩnh Hưng.

2 Nhạc sĩ sáng tác Cùng là nhạc trẻ nhưng có người thích Phan Mạnh Quỳnh, người khác lại thích MTP.

3 Năm sáng tác Một số người thích nhạc xưa cũ hơn nhạc hiện đại.

4 Thể loại Điều này thì chắc rồi, Quan họ và Bolero sẽ có thể thu hút những nhóm người khác nhau.

- Có rất nhiều yếu tố khác của một bài hát có thể được sử dụng Ngoại trừ Thể

Trong ví dụ ở Hình 5.2.1, chúng ta đã đơn giản hóa bài toán bằng cách xây dựng một vector đặc trưng hai chiều cho mỗi bài hát, trong đó chiều thứ nhất thể hiện mức độ Bolero và chiều thứ hai thể hiện mức độ Thiếu nhi Các vector đặc trưng cho mỗi bài hát được ký hiệu là x1, x2, x3, x4, x5, và được trình bày dưới dạng hàng trong hình minh họa bên dưới.

The task of finding the model θii for each user can be viewed as a Regression problem when ratings are a continuous range or a Classification problem when ratings are specific cases, such as like/dislike The training data used to build each model θii consists of pairs of (item profile, ratings) corresponding to items rated by that user Filling in the missing values in the Utility matrix involves predicting outputs for unrated items by applying the model θii The choice between Regression and Classification models depends on the application, with a simple example being the Linear model.

Regression với regularization, tức Ridge Regression.

- Để giải thích cụ thể cho mô hình tuyến tính trên, chúng ta có ví dụ sau sử dụng

Giả sử chúng ta có thể xây dựng một mô hình cho từng người dùng, được biểu diễn bằng vector cột hệ số wi và bias bn Nhờ đó, mức độ quan tâm của người dùng đối với một sản phẩm có thể được tính toán thông qua một hàm tuyến tính.

+ (Chú ý rằng xm là một vector hàng, wn là một vector cột.)

Xét một người dùng thứ n bất kỳ, nếu coi tập huấn luyện là tập hợp các thành phần đã được điền của yn, ta có thể xây dựng hàm mất mát tương tự như Ridge Regression.

Thành phần thứ hai trong công thức là hạng mục regularization, với λ là tham số dương Cần lưu ý rằng regularization thường không áp dụng cho bias bn Trong thực tế, trung bình cộng của lỗi thường được sử dụng, và do đó, hàm mất mát Ln được điều chỉnh lại.

In this context, "sn" refers to the total number of items rated by user n In other words, it represents the sum of the elements in the nth column of the rating matrix, indicating whether items have been rated or not.

+ Các bạn đã thấy loss function này quen chưa?

Biểu thức hàm mất mát chỉ phụ thuộc vào các item đã được đánh giá, do đó có thể được rút gọn bằng cách xác định ^yn là vector con của y, được tạo ra từ các thành phần khác dấu ? ở cột thứ n, tức là các item đã được user thứ n đánh giá Điều này cho phép ta trích xuất các hàng tương ứng với các item đã được user thứ n đánh giá.

+ trong đó, en là vector cột chứa sn phần tử 1.

+ Đây chính xác là hàm mất mát của Ridge Regression Cặp nghiệm wn,bn có thể được tìm qua Stochastic Gradient Descent (SGD), hoặc Mini-batch GD.

+ Trong python có thể sử dụng class Ridge trong sklearn.linear_model.

- Công việc quan trọng nhất phải làm trước tiên trong User-user Collaborative

Để thực hiện lọc, cần xác định sự tương đồng giữa hai người dùng Dữ liệu duy nhất có sẵn là ma trận Utility YY, do đó, sự tương đồng này được xác định dựa trên các cột tương ứng của hai người dùng trong ma trận Ví dụ minh họa có thể thấy trong Hình 1.

Hình 5.2.2.a minh họa ma trận tiện ích dựa trên đánh giá sao của người dùng cho một mục Hành vi của người dùng u0 tương đồng hơn với u1 so với các người dùng u2, u3, u4, u5 và u6 Do đó, có thể dự đoán rằng u0 sẽ quan tâm đến mục i2 vì u1 cũng thể hiện sự quan tâm đến mục này.

Giả sử có bảy người dùng từ u0 đến u6 và năm mục từ i0 đến i4, trong đó các giá trị trong mỗi ô vuông thể hiện số sao mà mỗi người dùng đã đánh giá cho mục, với giá trị cao hơn biểu thị mức độ quan tâm lớn hơn Các dấu hỏi chấm đại diện cho các giá trị mà hệ thống cần tìm kiếm Độ tương đồng giữa hai người dùng ui và uj được ký hiệu là sim(ui,uj).

Á P DU ̣ NG VA ̀ O DƯ ̃ LIÊ ̣ U MÂ ̃ U VƠ ́ I P YTHON

số nearest neighbors là k=2 Các bước thực hiện là:

 Xác định các users đã rated i1, đó là u0,u3,u5.

 Xác định similarities của u1 với các users này ta 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 ratings của u0,u5 cho i1, ta thu được hai giá trị lần lượt là 0.75 và 0.5.

Việc chuyển đổi các giá trị ratings đã chuẩn hóa sang thang điểm 5 có thể được thực hiện bằng cách cộng các cột trong ma trận Y với giá trị rating trung bình của từng người dùng, như đã thể hiện trong Hình 2a.

Hệ thống quyết định các sản phẩm nào nên được gợi ý cho từng người dùng có thể được thực hiện qua nhiều phương pháp khác nhau Một cách là sắp xếp các sản phẩm chưa được đánh giá theo thứ tự từ cao đến thấp dựa trên các đánh giá dự đoán Hoặc có thể chỉ chọn những sản phẩm có đánh giá dự đoán đã được chuẩn hóa và có giá trị dương, cho thấy khả năng cao hơn rằng người dùng sẽ thích những sản phẩm này.

5.3 Áp dụng vào dữ liệu mẫu với Python

Dữ liệu detailedMovies của MovieLen100k

- Tạo TF-IDF ứng với 19 số nhị phân sau mỗi dòng movie ứng với 19 feature thể loại phim

#tfidf from sklearn.feature_extraction.text import TfidfTransformer transformer = TfidfTransformer(smooth_idf=True, norm ='l2') tfidf = transformer.fit_transform(X_train_counts.tolist()).toarray()

- Tìm các hệ số của Ridge Regression cho mỗi user: from sklearn.linear_model import Ridge from sklearn import linear_model d = tfidf.shape[1] # data dimension

W = np.zeros((d, n_users)) b = np.zeros((1, n_users)) for n in range(n_users): ids, scores = get_items_rated_by_user(rate_train, n) clf = Ridge(alpha=0.01, fit_intercept = True)

Xhat = tfidf[ids, :] clf.fit(Xhat, scores)

- Sau khi đã có các hệ số Ridge, áp dụng công thức dự đoán ratings cho mỗi item

Yhat = tfidf.dot(W) + b n = 10 np.set_printoptions(precision=2) # 2 digits after ids, scores = get_items_rated_by_user(rate_test, n)

Yhat[n, ids] print('Rated movies ids :', ids ) print('True ratings :', scores) print('Predicted ratings:', Yhat[ids, n])

The algorithm is evaluated using the Root Mean Square Error (RMSE) metric, which is calculated by the function `evaluate(Yhat, rates, W, b)` This function iterates through each user, retrieving the items they have rated and their corresponding true scores It then computes the predicted scores from the model and calculates the squared errors between the true and predicted scores The sum of these squared errors is accumulated, and the count of errors is tracked Finally, RMSE is derived by taking the square root of the average squared error, providing a measure of prediction accuracy The RMSE values for both the training and test datasets are printed for analysis.

- Tương tự khi áp dụng RMSE với User-User Collaborative Filtering: rs = CF(rate_train, k = 30, uuCF = 1) rs.fit() n_tests = rate_test.shape[0]

SE = 0 # squared error for n in xrange(n_tests): pred = rs.pred(rate_test[n, 0], rate_test[n, 1], normalized = 0)

RMSE = np.sqrt(SE/n_tests) print 'User-user CF, RMSE =', RMSE

- Tương tự khi áp dụng RMSE với Item-Item Collaborative Filtering: rs = CF(rate_train, k = 30, uuCF = 0) rs.fit() n_tests = rate_test.shape[0]

SE = 0 # squared error for n in xrange(n_tests): pred = rs.pred(rate_test[n, 0], rate_test[n, 1], normalized = 0)

RMSE = np.sqrt(SE/n_tests)

Đ A ́ NH GIA ́

5.4.1 So sánh các thuật toán

- Trên bộ dữ liệu MoviesLens100K, dữ liệu test từ ua.test

Content-based User-user CF Item-item CF

Kết quả thực nghiệm cho thấy phương pháp Item-item Collaborative Filtering (CF) có độ RMSE thấp nhất, đồng nghĩa với việc mức độ lỗi là nhỏ nhất Do đó, nhóm đã quyết định chọn Item-Item CF để áp dụng vào dự án.

+ Không cần dữ liệu của những user khác.

+ Có thể gợi ý những item mới, những item không phổ biến do chỉ dựa trên feature vector.

+ Khó để tìm ra feature cho từng item.

+ Không gợi ý những item ngoài user profile.

+ Không khai thác được dữ liệu rating của những user khác.

5.4.2.2 Neighborhood-based Collaborative Filtering (Item-item và User-user)

Có thể hoạt động với nhiều loại item khác nhau.

+ 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)

+ Có xu hướng gợi ý những item phổ biến

 Một số hạn chế của User-user CF:

Số lượng người dùng thường vượt xa số lượng mặt hàng, dẫn đến ma trận tương đồng trở nên rất lớn với số phần tử cần lưu trữ vượt quá một nửa bình phương số lượng người dùng Điều này khiến việc lưu trữ ma trận này trong nhiều trường hợp trở nên không khả thi.

Ma trận Utility Y thường rất thưa thớt do số lượng người dùng lớn hơn nhiều so với số lượng mặt hàng, dẫn đến nhiều cột chỉ có vài giá trị khác 0 Nguyên nhân chính là người dùng thường không thích đánh giá Khi một người dùng thay đổi đánh giá hoặc đánh giá thêm mặt hàng, giá trị trung bình các đánh giá và vector chuẩn hóa tương ứng sẽ thay đổi đáng kể Điều này yêu cầu phải tính toán lại ma trận Similarity, một quá trình tốn nhiều bộ nhớ và thời gian.

 Ngược lại đối với Item-item CF:

Vì số lượng items thường ít hơn số lượng users, ma trận tương đồng (Similarity matrix) sẽ nhỏ hơn nhiều, điều này giúp tiết kiệm không gian lưu trữ và tối ưu hóa quá trình tính toán trong các bước tiếp theo.

Trong ma trận Utility, số lượng phần tử đã biết là đồng nhất, nhưng số hàng (items) lại ít hơn số cột (users) Do đó, trung bình mỗi hàng sẽ có nhiều phần tử đã biết hơn so với mỗi cột Điều này dễ hiểu vì mỗi item có thể nhận được đánh giá từ nhiều users.

Khi có thêm một vài đánh giá, giá trị trung bình của mỗi hàng sẽ ít bị thay đổi hơn Điều này cho phép việc cập nhật ma trận Similarity Matrix được thực hiện ít thường xuyên hơn.

- Đối với user chưa có rating hoặc số lượng sản phẩm được recommend không đủ 10

Hệ thống sẽ tự thêm vào list recommend theo top điểm WeightedRating của tất cả sản phẩm.

- WeightRating của từng sản phẩm được tính với công thức như sau:

Trong đó, v- số lượt rating của sản phẩm m- số phiếu tối thiểu cần thiết để được liệt kê trong biểu đồ

R- điểm rating trung binh của sản phẩm

C- rating trung bình của tất cả sản phẩm

 Hiển thị trên Ecommerce-app

- Đối với User mới, chưa rating, hoặc app chưa được đăng nhập thì gợi ý sẽ sử dụng phương pháp Weight Rating

- Đối với User đã có lịch sử rating thì sẽ dựa vào thuật toán để gợi ý.

Á P DU ̣ NG VƠ ́ I PROJECT

- Hoàn thành yêu cầu đặt ra ban đầu, có đầy đủ tính năng cần thiết của một ứng dụng thương mại điện tử.

- Giao diện đơn giản, bố cục hợp lý, người dùng dễ dàng theo tác trên ứng dụng.

- Tốc độ phản hồi các thao tác nhanh, tối ưu hóa năng suất của người dùng.

- Sinh viên thực hiện đã nắm được cách thức làm một ứng dụng bán hàng, hiểu biết về ngôn ngữ Java, Spring Boot.

- Ứng dụng đã được triển khai và nghiệm thu thành công trên máy thật.

Chúng tôi đã hoàn thành việc áp dụng thuật toán gợi ý Collaborative Filtering vào ứng dụng, nhằm cung cấp những gợi ý sản phẩm phù hợp hơn cho người dùng Thuật toán này dựa trên lịch sử đánh giá của người tiêu dùng, giúp tăng tỉ lệ mua hàng và từ đó nâng cao doanh thu cho người bán.

- Còn hạn chế một số tính năng:

+ Chưa tích hợp được thanh toán trực tuyến.

+ Tối ưu code chưa tốt nên tốc độ tương tác trong ứng dụng còn chậm.

+ Chưa phát triển tính năng xác thực qua bằng email, số điện thoại

- 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.

- Xây dựng các chứa năng còn thiếu, hoàn thiện các chức năng đã có

- Tích hợp thanh toán trực tuyến qua Bảo Kim, Ngân Lượng, Paypal

- Tối ưu hóa code để tăng tốc độ tương tác

- Tối ưu hóa CSDL hợp lý hơn

- Tối ưu hóa việc gợi ý

- Thêm một số gợi ý cho người dùng dựa trên: Quốc gia, thời tiết,…

Ngày đăng: 05/09/2021, 20:49

HÌNH ẢNH LIÊN QUAN

- Xây dựng các màn hình cần thiết. - Fetch API từ backend. - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
y dựng các màn hình cần thiết. - Fetch API từ backend (Trang 6)
Hình 2.3: Sự phát triển và độ phổ biến của MySQL 2.3.1. Giới thiệu MySQL - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 2.3 Sự phát triển và độ phổ biến của MySQL 2.3.1. Giới thiệu MySQL (Trang 16)
Hình 2.4: Google Firebase Cloud 2.4.1. Khái niệm Firebase - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 2.4 Google Firebase Cloud 2.4.1. Khái niệm Firebase (Trang 17)
Hình 3.1: Sơ đồ kiến trúc hệ thống - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 3.1 Sơ đồ kiến trúc hệ thống (Trang 20)
Hình 3.2: Sơ đồ phân rã chức năng - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 3.2 Sơ đồ phân rã chức năng (Trang 21)
3.2. Mô hình phân rã chức năng - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.2. Mô hình phân rã chức năng (Trang 21)
Dòng sự kiện chính 1. Hệ thống hiển thị màn hình đăng nhập. - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
ng sự kiện chính 1. Hệ thống hiển thị màn hình đăng nhập (Trang 24)
2. Thông báo lỗi hoặc chuyển sang màn hình Home - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
2. Thông báo lỗi hoặc chuyển sang màn hình Home (Trang 24)
Dòng sự kiện chính 1. Hệ thống hiển thị màn hình Giỏ hàng. - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
ng sự kiện chính 1. Hệ thống hiển thị màn hình Giỏ hàng (Trang 25)
Sau xử lí(sau Use-case) 1. Màn hình hiển thị các sản phẩm liên quan tới các option đã chọn hoặc điền - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
au xử lí(sau Use-case) 1. Màn hình hiển thị các sản phẩm liên quan tới các option đã chọn hoặc điền (Trang 26)
4. Sheet lựa chọn star và đánh giá bằng hình ảnh, text hiển thị. - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
4. Sheet lựa chọn star và đánh giá bằng hình ảnh, text hiển thị (Trang 28)
3. Màn hình nhắn tin hiển thị 4. Nhập message , hoặc hình ảnh  5. Nhấn gửi  - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3. Màn hình nhắn tin hiển thị 4. Nhập message , hoặc hình ảnh 5. Nhấn gửi (Trang 29)
3.4.2.2. Bảng Attributes ATTRIBUTES - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.4.2.2. Bảng Attributes ATTRIBUTES (Trang 30)
3.4.2. Mô tả chi tiết các loại dữ liệu trong mô hình 3.4.2.1. Bảng Accounts - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.4.2. Mô tả chi tiết các loại dữ liệu trong mô hình 3.4.2.1. Bảng Accounts (Trang 30)
3.4.2.5. Bảng Categories Categories - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.4.2.5. Bảng Categories Categories (Trang 31)
3.4.2.3. Bảng cart_item_option CART_ITEM_OPTION - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.4.2.3. Bảng cart_item_option CART_ITEM_OPTION (Trang 31)
3.2.4.9. Bảng IMAGE PRODUCTS IMAGE_PRODUCTS - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.2.4.9. Bảng IMAGE PRODUCTS IMAGE_PRODUCTS (Trang 32)
3.4.2.8. Bảng IMAGES IMAGES - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.4.2.8. Bảng IMAGES IMAGES (Trang 32)
3.2.4.13. Bảng Products - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.2.4.13. Bảng Products (Trang 34)
3.2.4.12. Bảng RECOMMEND RATING RECOMMEND_RATING - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
3.2.4.12. Bảng RECOMMEND RATING RECOMMEND_RATING (Trang 34)
Hình 5.1.3: Utility matrix - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 5.1.3 Utility matrix (Trang 51)
Hình 5.1.4. Consine similarity - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 5.1.4. Consine similarity (Trang 52)
Hình 5.2.1.a Ví dụ rating bài hát - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 5.2.1.a Ví dụ rating bài hát (Trang 53)
Hình 5.1.5. Công thức tính RMSE - Trong đó: - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
Hình 5.1.5. Công thức tính RMSE - Trong đó: (Trang 53)
- Trong ví dụ ở Hình 5.2.1 phía trên, chúng ta đơn giản hoá bài toán bằng việc xây dựng một feature vector hai chiều cho mỗi bài hát: chiều thứ nhất là mức độ Bolero, chiều thứ hai là mức độ Thiếu nhi của bài đó - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
rong ví dụ ở Hình 5.2.1 phía trên, chúng ta đơn giản hoá bài toán bằng việc xây dựng một feature vector hai chiều cho mỗi bài hát: chiều thứ nhất là mức độ Bolero, chiều thứ hai là mức độ Thiếu nhi của bài đó (Trang 55)
dụ phía dưới để hiểu rõ hơn). Khi đó, biểu thức hàm mất mát của mô hình - Tìm hiểu hệ thống gợi ý sản phẩm và xây dựng ứng dụng minh hoạ
d ụ phía dưới để hiểu rõ hơn). Khi đó, biểu thức hàm mất mát của mô hình (Trang 57)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w