Bối cảnh và vấn đề nghiên cứu

Sự bùng nổ của công nghệ số và thói quen mua sắm trực tuyến đã thúc đẩy sự tăng trưởng nhanh chóng của thị trường thương mại điện tử, đặc biệt là lĩnh vực thời trang. Trong môi trường kinh doanh này, khách hàng thường xuyên đối mặt với khối lượng sản phẩm phong phú nhưng mất nhiều thời gian tìm kiếm, trong khi các doanh nghiệp bán lẻ cần các giải pháp tự động hóa thông minh nhằm nâng cao năng lực cạnh tranh và duy trì doanh thu. Nhằm giải quyết bài toán trên, đồ án môn học "Phát triển các hệ thống thông minh" với đề tài "Xây dựng website bán quần áo (Recommendation System)" (trong nội dung còn được gọi là Xây dựng hệ thống quản lý và gợi ý sản phẩm cho website bán hàng thời trang trực tuyến) do sinh viên Phạm Quốc Dương và Trần Việt Quang (lớp D21CQCNPM01-N, Khoa Công nghệ Thông tin 2, Học viện Công nghệ Bưu chính Viễn thông cơ sở tại TP. Hồ Chí Minh) thực hiện dưới sự hướng dẫn của giảng viên Nguyễn Ngọc Duy.

Mục tiêu nghiên cứu được tác giả xác định cụ thể gồm hai nhóm nội dung chính:

  1. Phân tích và thiết kế hệ thống quản lý bán hàng trực tuyến toàn diện, trong đó trọng tâm là phát triển hệ thống gợi ý sản phẩm cá nhân hóa dựa trên việc phân tích dữ liệu hành vi và đánh giá của khách hàng, nhằm mang lại trải nghiệm mua sắm nhanh chóng, tiện lợi.
  2. Đánh giá hiệu quả của hệ thống gợi ý trong việc gia tăng sự hài lòng của người dùng và tối ưu hóa giá trị đơn hàng cho doanh nghiệp thông qua việc áp dụng các thuật toán học máy và trí tuệ nhân tạo.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Nền tảng thương mại điện tử chuyên biệt cho ngành hàng thời trang may mặc và các thuật toán gợi ý sản phẩm (Recommendation System) phục vụ bài toán lọc cộng tác.
  • Phạm vi không gian: Mô hình website bán lẻ trực tuyến tích hợp dịch vụ API gợi ý, triển khai thử nghiệm trên môi trường máy chủ cục bộ và dịch vụ thanh toán nội địa.
  • Phạm vi thời gian: Đồ án được hoàn thành và báo cáo trong năm học 2024 (ghi nhận vào tháng 5 và nghiệm thu vào tháng 10 năm 2024).

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình sử dụng

Tác giả tiếp cận đề tài dựa trên nền tảng lý thuyết về hệ thống thông minh (Intelligent Systems) và học máy (Machine Learning). Các khái niệm và phân loại học máy được hệ thống hóa gồm:

  • Học có giám sát (Supervised Learning): Huấn luyện mô hình dựa trên dữ liệu có gán nhãn để phân loại hoặc dự đoán.
  • Học không giám sát (Unsupervised Learning): Khai phá các quy luật, cấu trúc ẩn hoặc phân cụm dữ liệu mà không cần nhãn định trước.
  • Học tăng cường (Reinforcement Learning): Tác nhân tự học và tối ưu hành vi thông qua cơ chế thưởng - phạt từ môi trường.

Về phương pháp gợi ý, đồ án đặt trọng tâm vào kỹ thuật Lọc cộng tác (Collaborative Filtering - CF). Tác giả phân tích, so sánh giữa hai mô hình:

  • User-user Collaborative Filtering: Dự đoán mức độ quan tâm của người dùng đối với một sản phẩm dựa trên hành vi của các người dùng khác có mức độ tương đồng cao.
  • Item-item Collaborative Filtering: Xác định sự tương đồng giữa các sản phẩm dựa trên lịch sử đánh giá của toàn bộ người dùng, từ đó gợi ý những sản phẩm tương tự với sản phẩm mà người dùng hiện tại đã quan tâm.

Đồ án lựa chọn mô hình Item-item Collaborative Filtering kết hợp với độ đo Cosine Similarity và thuật toán K-láng giềng gần nhất (K-Nearest Neighbors - KNN) để xử lý bài toán dự đoán đánh giá.

Phương pháp nghiên cứu và xử lý thực tế

Tác giả áp dụng các bước xử lý dữ liệu ma trận chuyên biệt:

  • Xây dựng ma trận mức độ hữu dụng (Utility Matrix / User-Item Matrix): Hàng biểu diễn người dùng, cột biểu diễn sản phẩm, các ô chứa điểm đánh giá (từ 1 đến 5 sao). Các ô chưa có tương tác được biểu diễn bằng giá trị thiếu (missing values).
  • Chuẩn hóa dữ liệu (Data Normalization): Trừ giá trị đánh giá cho trung bình cộng đánh giá của người dùng/sản phẩm nhằm triệt tiêu thiên vị do người dùng khó tính hoặc dễ tính; thay thế giá trị thiếu bằng 0 để đưa ma trận về dạng ma trận thưa (Sparse Matrix), giúp tối ưu hóa bộ nhớ và tăng tốc độ tính toán.
  • Tính toán ma trận tương đồng (Similarity Matrix): Áp dụng công thức Cosine Similarity giữa các vector đặc trưng của sản phẩm, loại bỏ các giá trị tự tương quan trên đường chéo chính.
  • Dự đoán điểm đánh giá (Rating Prediction): Ước tính mức độ quan tâm thông qua công thức trung bình có trọng số của $k$ sản phẩm láng giềng có độ tương đồng cao nhất (sử dụng giá trị tuyệt đối ở mẫu số để xử lý trọng số âm).

Nguồn dữ liệu

Nguồn dữ liệu trong hệ thống được cấu trúc hóa từ cơ sở dữ liệu MongoDB, bao gồm thông tin tài khoản người dùng, danh mục, thuộc tính biến thể sản phẩm, lịch sử giao dịch và mảng dữ liệu đánh giá sản phẩm (rating từ 1 đến 5 điểm kèm bình luận).


Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình phân tách giữa ứng dụng thương mại điện tử cốt lõi và dịch vụ tính toán thông minh chuyên biệt.

Tầng kiến trúc / Phân hệ Công nghệ / Tài nguyên sử dụng Vai trò và chức năng chính
Giao diện người dùng (Frontend) Angular, TypeScript, HTML, CSS Xây dựng ứng dụng một trang (SPA), cung cấp giao diện cho khách hàng và trang quản trị Admin.
Máy chủ ứng dụng (Backend) Node.js, Express.js Xử lý logic nghiệp vụ, quản lý định tuyến, xác thực bảo mật JWT, kết nối dữ liệu và API RESTful.
Cơ sở dữ liệu (Database) MongoDB (NoSQL) Lưu trữ tài liệu dạng BSON/JSON, quản lý các collection người dùng, sản phẩm, đơn hàng, danh mục.
Dịch vụ thông minh (AI Service) Python, FastAPI / Flask Xây dựng API tính toán ma trận thưa, huấn luyện mô hình Item-item CF và trả về danh sách gợi ý.
Cổng thanh toán ngoại vi VNPAY Hỗ trợ thanh toán trực tuyến bên cạnh phương thức thanh toán khi nhận hàng (COD).

Cấu trúc cơ sở dữ liệu

Hệ thống sử dụng các lược đồ thực thể chính trong MongoDB:

  • User: Lưu trữ họ tên, email (duy nhất), mật khẩu, vai trò (Customer, Admin), mảng danh sách địa chỉ giao hàng, lịch sử đơn hàng, mảng giỏ hàng (cart), giới tính (0: Nam, 1: Nữ), mã OTP và hạn sử dụng OTP.
  • Product: Lưu tên, slug (duy nhất phục vụ URL), mô tả, tham chiếu danh mục (category), mảng các biến thể variants (gồm tên màu sắc, mảng kích cỡ và số lượng tồn kho stock, đường dẫn hình ảnh, trạng thái isUsed), giá bán, lượt xem, điểm đánh giá trung bình averageRating và mảng đánh giá reviews. Hệ thống áp dụng cơ chế xóa mềm: khi sản phẩm đã phát sinh trong đơn hàng hoặc đơn nhập, trường isUsed sẽ chuyển thành false thay vì xóa vĩnh viễn.
  • Order: Quản lý tham chiếu người mua, mảng orderItems (lưu vết sản phẩm, số lượng, giá tại thời điểm mua, kích cỡ, màu sắc, ảnh), địa chỉ nhận hàng, trạng thái thanh toán isPaid, tổng tiền, phí vận chuyển và trạng thái đơn hàng (Waiting, Pending, Shipped, Delivered, Cancelled).
  • ImportOrder: Lưu trữ phiếu nhập hàng của quản trị viên gồm mảng chi tiết nhập importOrderItems (sản phẩm, kích cỡ, màu sắc, số lượng, giá nhập), tổng chi phí và trạng thái đơn nhập (Pending, Complete, Cancelled).

Triển khai thuật toán và kiểm thử API

Quy trình thực thi của module thông minh gồm:

  • Tải toàn bộ dữ liệu tương tác từ cơ sở dữ liệu thành User-Item Matrix khi khởi động ứng dụng và lập lịch cập nhật lại ma trận sau mỗi 24 giờ.
  • Chuẩn hóa ma trận, tính toán ma trận tương đồng giữa các item và lọc các sản phẩm có độ tương đồng lớn hơn 0.
  • Thực nghiệm kiểm thử lệnh gọi API: kiểm thử API lấy danh sách sản phẩm tương đồng với sản phẩm có mã định danh 6727a2146b0f82053731b29d và kiểm thử API lấy danh sách gợi ý cá nhân hóa cho người dùng có mã định danh 6727aaa9462f5ac96426e0f1.

Nội dung chính theo từng chương

Giới thiệu đề tài

Chương này làm rõ tính cấp thiết của việc xây dựng nền tảng mua sắm thời trang trực tuyến tích hợp trí tuệ nhân tạo. Tác giả phân tích hành vi người tiêu dùng hiện đại, chỉ ra rằng việc cá nhân hóa giao diện và danh mục sản phẩm không chỉ rút ngắn thời gian tìm kiếm của khách hàng mà còn là công cụ giúp tăng giá trị trung bình trên mỗi đơn hàng (AOV) và nâng cao tỷ lệ giữ chân khách hàng cho doanh nghiệp. Mục tiêu nghiên cứu và các nhiệm vụ kỹ thuật được xác lập rõ ràng làm kim chỉ nam cho toàn bộ đồ án.

Hệ thống thông minh (Intelligent System)

Tác giả trình bày tổng quan lý thuyết về trí tuệ nhân tạo, mối quan hệ giữa học máy và hệ thống thông minh, cùng các phương pháp tiếp cận học có giám sát, không giám sát và học tăng cường. Đáng chú ý, chương này đi sâu vào quy trình xây dựng, triển khai hệ thống thông minh gồm 5 bước: thu thập và xử lý dữ liệu; phân tích và lựa chọn mô hình; huấn luyện mô hình; kiểm thử và đánh giá; tối ưu hóa. Tác giả cũng phân tích hai bài toán đánh đổi cốt lõi:

  • Đánh đổi giữa độ chính xác và tốc độ xử lý (độ phức tạp tính toán so với thời gian phản hồi).
  • Đánh đổi giữa tiêu chuẩn đạo đức và hiệu suất (nguy cơ xâm phạm quyền riêng tư khi khai thác dữ liệu người dùng và vấn đề kiểm soát độ thiên vị - bias).

Phân tích thiết kế

Chương này mô tả chi tiết hệ thống bằng ngôn ngữ tự nhiên, phân định rõ vai trò của hai tác nhân: Khách hàng (Customer) và Quản trị viên (Admin). Toàn bộ kiến trúc chức năng được thể hiện qua sơ đồ Use Case tổng quát, sơ đồ phân cấp chức năng và mô hình dữ liệu quan hệ (ERD / NoSQL Data Dictionary).

  • Nghiệp vụ của Admin: Quản lý danh mục sản phẩm (thêm, sửa, xóa với điều kiện danh mục chưa chứa sản phẩm nào), quản lý sản phẩm và các biến thể, quản lý đơn nhập hàng, quản lý băng rôn (banner), cấu hình bộ lọc giá (price filter), quản lý người dùng và cập nhật trạng thái đơn đặt hàng. Quy tắc nghiệp vụ quy định: đơn hàng một khi đã chuyển sang trạng thái Shipped thì không được phép hủy (Cancel).
  • Nghiệp vụ của Customer: Đăng ký (yêu cầu đầy đủ họ tên, email hợp lệ chưa tồn tại, mật khẩu xác thực, địa chỉ, số điện thoại 10 số, ngày sinh, giới tính), đăng nhập (cấp token JWT), quản lý giỏ hàng (thêm, cập nhật số lượng, xóa sản phẩm, tính tổng tiền), đặt hàng, theo dõi lịch sử trạng thái đơn hàng, đánh giá và chỉnh sửa đánh giá các sản phẩm đã mua.

Thiết kế thông minh

Chương IV tập trung hoàn toàn vào nền tảng thuật toán gợi ý. Tác giả phân tích hạn chế của phương pháp User-user CF: số lượng người dùng thực tế luôn lớn hơn rất nhiều so với số lượng sản phẩm khiến ma trận tương đồng có kích thước khổng lồ; ma trận người dùng rất thưa do người dùng ít khi đánh giá toàn bộ danh mục, dẫn tới việc mỗi khi người dùng thay đổi đánh giá thì toàn bộ ma trận tương đồng phải tính toán lại từ đầu.

Ngược lại, mô hình Item-item CF giải quyết triệt để các hạn chế này vì số lượng sản phẩm ít biến động hơn, số phần tử đã biết trên mỗi hàng của ma trận sản phẩm phong phú hơn, giúp ma trận tương đồng nhỏ gọn hơn và cho phép thực hiện việc phân cụm sản phẩm (item clustering) tự nhiên. Tác giả trình bày chi tiết công thức toán học chuẩn hóa dữ liệu, độ đo Cosine, thuật toán KNN để dự đoán và cơ chế trích xuất Top-N sản phẩm có điểm dự đoán cao nhất.

Giao diện UI

Chương này giới thiệu toàn bộ các màn hình giao diện thực tế của hệ thống được lập trình qua Angular, phân tách rõ giao diện dành cho khách hàng (đăng nhập, đăng ký, danh sách sản phẩm, bộ lọc, chi tiết sản phẩm kèm khối "Sản phẩm tương tự", giỏ hàng, thanh toán VNPAY) và bảng điều khiển quản trị (quản lý sản phẩm, thêm/sửa biến thể, quản lý danh mục, xem và chuyển trạng thái đơn hàng, theo dõi đơn nhập kho).


Kết quả và đóng góp

Kết quả chính đạt được

  • Xây dựng hoàn chỉnh website thương mại điện tử chuyên ngành thời trang với đầy đủ luồng nghiệp vụ mua bán, quản lý kho và thanh toán trực tuyến.
  • Thiết kế và triển khai thành công dịch vụ gợi ý sản phẩm độc lập sử dụng thuật toán Item-item Collaborative Filtering, có khả năng tính toán trên ma trận thưa và trả về kết quả qua giao diện API.
  • Tích hợp thành công cơ chế cập nhật ma trận tương đồng định kỳ 24 giờ một lần và xử lý logic lọc gợi ý theo ngưỡng tương đồng dương ($Sim > 0$).
  • Kiểm thử thành công các kịch bản gọi API gợi ý cho sản phẩm mẫu (id: 6727a2146b0f82053731b29d) và gợi ý danh sách sản phẩm cho người dùng cụ thể (id: 6727aaa9462f5ac96426e0f1).

Giải pháp và đóng góp của đề tài

  • Đề xuất giải pháp kiến trúc kết hợp linh hoạt giữa Node.js (phục vụ web tốc độ cao, xử lý I/O non-blocking) và Python (xử lý tính toán đại số ma trận cho học máy).
  • Ứng dụng kỹ thuật chuẩn hóa dữ liệu để giải quyết sự sai lệch điểm số giữa người dùng khó tính và dễ tính, đồng thời chuyển đổi ma trận về dạng thưa nhằm tối ưu bộ nhớ RAM máy chủ.
  • Thiết kế cơ chế toàn vẹn dữ liệu trong thương mại điện tử: áp dụng cờ xóa mềm isUsed để bảo toàn lịch sử đơn hàng và phiếu nhập kho; tự động xóa tệp hình ảnh biến thể cũ khỏi bộ nhớ khi quản trị viên cập nhật ảnh mới nhằm tránh dư thừa dữ liệu.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung được công bố trong văn bản, đồ án còn tồn tại một số điểm hạn chế và hướng mở:

  • Vấn đề dữ liệu khởi đầu (Cold-Start) và độ thưa: Mặc dù Item-item CF giảm tải tính toán so với User-user CF, hệ thống vẫn phụ thuộc nhiều vào các đánh giá đã có. Với người dùng mới hoặc sản phẩm mới nhập chưa có tương tác/đánh giá, thuật toán chưa có cơ chế kết hợp dựa trên nội dung thuộc tính (Content-based Filtering) để khắc phục triệt để.
  • Tần suất cập nhật ma trận: Chu kỳ tính toán ma trận tương đồng cố định 24 giờ một lần có thể tạo ra độ trễ nhất định đối với các hành vi tương tác mới phát sinh trong ngày của khách hàng.
  • Thuật toán học máy chuyên sâu: Báo cáo có đề cập đến các công nghệ mạng nơ-ron học sâu (Deep Learning với TensorFlow, PyTorch) ở phần cơ sở lý thuyết, nhưng trong phạm vi triển khai thực tế chỉ dừng lại ở thuật toán lọc cộng tác truyền thống kết hợp KNN.
  • Độ nhất quán kỹ thuật: Phần lý thuyết giới thiệu framework FastAPI dựa trên chuẩn ASGI, nhưng ở phần tổng hợp kết nối dịch vụ lại nhắc tới việc tích hợp qua Flask API; văn bản chưa trình bày số liệu đo lường cụ thể về độ chính xác (như RMSE, MAE) hay thời gian phản hồi mili-giây của hệ thống khi chịu tải lớn.

Giá trị tham khảo

Đồ án là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn dành cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Nắm bắt được quy trình phát triển một ứng dụng thương mại điện tử hoàn chỉnh theo kiến trúc hiện đại, từ thiết kế sơ đồ Use Case, phân rã chức năng đến xây dựng từ điển dữ liệu MongoDB chi tiết.
  • Người nghiên cứu hệ thống gợi ý (Recommendation Systems): Cung cấp tài liệu minh họa trực quan, từng bước về toán học đằng sau phương pháp Collaborative Filtering (từ xây dựng Utility Matrix, chuẩn hóa dữ liệu, tính Cosine Similarity đến cách bù đắp missing values bằng ma trận thưa).
  • Lập trình viên muốn xây dựng hệ thống lai (Hybrid Stack): Cung cấp mô hình tham khảo thực tế về việc tách biệt phân hệ web nghiệp vụ (Node.js/Express/Angular) và phân hệ thông minh (Python/FastAPI) qua các giao thức RESTful API.

Câu hỏi thường gặp

1. Tại sao nhóm tác giả lại lựa chọn Item-item Collaborative Filtering thay vì User-user Collaborative Filtering?

Trong văn bản, tác giả chỉ ra hai lý do kỹ thuật chính:

  • Thứ nhất, trong thực tế các website thương mại điện tử, số lượng người dùng luôn lớn hơn rất nhiều so với số lượng sản phẩm. Do đó, ma trận tương đồng giữa các sản phẩm có kích thước nhỏ hơn rất nhiều so với ma trận tương đồng giữa các người dùng, giúp tiết kiệm bộ nhớ và giảm độ phức tạp tính toán.
  • Thứ hai, ma trận người dùng thường rất thưa do khách hàng ít đánh giá, khiến vector chuẩn hóa của người dùng liên tục biến động mỗi khi họ đánh giá thêm sản phẩm. Trong khi đó, mỗi sản phẩm nhận được đánh giá từ nhiều người dùng khác nhau nên giá trị trung bình ổn định hơn, cho phép hệ thống cập nhật ma trận tương đồng với chu kỳ thưa hơn (24 giờ một lần).

2. Ý nghĩa của việc trừ giá trị trung bình đánh giá trong bước chuẩn hóa ma trận là gì?

Việc trừ đi điểm đánh giá trung bình của mỗi người dùng có hai tác dụng:

  • Xóa bỏ sự thiên vị giữa người dùng dễ tính (thường cho 4-5 sao) và người dùng khó tính (thường cho 2-3 sao), đưa đánh giá về các giá trị mang tính tương đối: số dương thể hiện sự yêu thích, số âm thể hiện không thích, và số 0 thể hiện chưa xác định.
  • Cho phép thay thế toàn bộ các giá trị chưa biết (missing ratings) bằng số 0 mà không làm sai lệch ý nghĩa thống kê, từ đó chuyển ma trận về dạng ma trận thưa (sparse matrix) nhằm tối ưu hóa dung lượng lưu trữ trên bộ nhớ RAM.

3. Quy tắc xử lý đơn hàng và trạng thái đơn hàng được quy định thế nào trong hệ thống?

Hệ thống thiết lập 5 trạng thái tuần tự cho một đơn hàng: Waiting, Pending, Shipped, Delivered, và Cancelled. Đơn hàng mới tạo mặc định ở trạng thái Waiting hoặc Pending. Tác giả quy định rõ ràng ràng buộc nghiệp vụ: khi người quản trị đã cập nhật đơn hàng sang trạng thái Shipped thì hệ thống không cho phép thực hiện thao tác hủy (Cancel) đơn hàng đó nữa.

4. Hệ thống giải quyết việc xóa sản phẩm như thế nào để không làm hỏng dữ liệu đơn hàng cũ?

Đồ án áp dụng giải pháp xóa mềm: nếu sản phẩm chưa từng xuất hiện trong bất kỳ đơn đặt hàng hoặc đơn nhập kho nào, hệ thống cho phép xóa vĩnh viễn khỏi cơ sở dữ liệu. Ngược lại, nếu sản phẩm đã phát sinh trong các giao dịch, hệ thống sẽ giữ nguyên bản ghi và cập nhật thuộc tính isUsed thành false. Khi truy vấn danh sách hiển thị cho khách hàng, hệ thống chỉ lọc các sản phẩm có isUsed = true.

5. Việc kiểm thử dịch vụ thông minh được thực hiện dựa trên các dữ kiện thực tế nào trong văn bản?

Tác giả đã triển khai kiểm thử giao tiếp API trực tiếp với hai trường hợp cụ thể:

  • Gọi API truy vấn các sản phẩm tương đồng với sản phẩm thời trang có mã định danh product_id là 6727a2146b0f82053731b29d.
  • Gọi API đề xuất danh sách các sản phẩm phù hợp nhất cho người dùng có mã định danh user_id là 6727aaa9462f5ac96426e0f1.

Kết luận

Đồ án "Xây dựng website bán quần áo (Recommendation System)" của sinh viên Phạm Quốc Dương và Trần Việt Quang đã hoàn thành mục tiêu thiết kế và tích hợp một hệ thống thương mại điện tử chuyên ngành thời trang với module gợi ý thông minh. Nghiên cứu giải quyết bài toán cá nhân hóa trải nghiệm khách hàng thông qua mô hình Item-item Collaborative Filtering được tối ưu hóa bằng ma trận thưa và độ đo Cosine. Sự kết hợp chặt chẽ giữa các công nghệ hiện đại gồm Node.js, Angular, MongoDB và Python đã tạo nên một giải pháp ứng dụng hoàn chỉnh, minh chứng rõ ràng cho khả năng gắn kết giữa lý thuyết học máy và phát triển phần mềm trong thực tiễn.