Giới thiệu dự án

Sự bùng nổ của kỷ nguyên số và thương mại điện tử (E-Commerce) đã thay đổi hoàn toàn hành vi mua sắm toàn cầu. Theo các báo cáo thống kê thương mại điện tử gần đây, hơn 70% người tiêu dùng trực tuyến đối mặt với tình trạng "quá tải thông tin" (Information Overload) khi truy cập các nền tảng có hàng chục nghìn mã hàng hóa (SKU). Phần lớn khách hàng chỉ có ý niệm mơ hồ về sản phẩm cần mua và thường tìm kiếm qua công cụ ngoài như Google thay vì tương tác trực tiếp trên thanh điều hướng của website. Điều này dẫn đến tỷ lệ thoát trang (Bounce Rate) cao và giảm sút tỷ lệ chuyển đổi đơn hàng (Conversion Rate).

Đồ án chuyên ngành "Building an E-Commerce System Applying Machine Learning to Recommend Items" được thực hiện bởi nhóm sinh viên Lê Viết Thắng (20IT526) và Lê Thị Hồng Quy (20IT468), Lớp 20GIT, Khoa Khoa học Máy tính thuộc Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn (VKU), dưới sự hướng dẫn khoa học của TS. Nguyễn Quang Vũ. Đề tài tập trung giải quyết bài toán cốt lõi: xây dựng nền tảng thương mại điện tử hoàn chỉnh mang tên Pandore, đồng thời tích hợp hệ thống gợi ý thông minh (Recommender System) nhằm cá nhân hóa trải nghiệm mua sắm, rút ngắn hành trình tìm kiếm và hỗ trợ người dùng ra quyết định mua hàng nhanh chóng.

                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG PANDORE E-COMMERCE
                  
  +-----------------------------------------------------------------------+
  |                   CLIENT LAYER (ReactJS SPA / Redux)                  |
  |  - Product Catalog   - Cart & Checkout      - User Reviews / Ratings  |
  |  - Order Tracking    - Recommendation View  - Admin Control Panel     |
  +-----------------------------------+-----------------------------------+
                                      | HTTP REST / JSON
          +---------------------------+---------------------------+
          |                                                       |
          v                                                       v
+------------------------------------+  +---------------------------------+
|   CORE BACKEND SERVICE (Node.js)   |  |   ML RECOMMENDATION SERVICE     |
|   - Express.js REST APIs           |  |   (Python / Flask)              |
|   - Authentication & JWT           |  |   - Pandas / NumPy Engine       |
|   - Order & Inventory Management   |  |   - Pearson Correlation Matrix  |
|   - Payment (PayPal, VNPay)        |  |   - Collaborative Filtering API |
+-----------------+------------------+  +----------------+----------------+
                  |                                      |
                  +------------------+-------------------+
                                     | Connection Pool
                                     v
                  +--------------------------------------+
                  |      DATABASE LAYER (MySQL 8.0)      |
                  |  - Users, Products, Categories       |
                  |  - Orders, Order_Details, Ratings    |
                  +--------------------------------------+

Mục tiêu dự án

  1. Phát triển nền tảng E-Commerce chuẩn mực: Xây dựng đầy đủ các phân hệ chức năng cho Khách hàng (Member/Guest) và Quản trị viên (Admin) với giao diện Single Page Application (SPA) hiệu năng cao.
  2. Nghiên cứu và hiện thực hóa thuật toán Machine Learning: Áp dụng thuật toán Lọc cộng tác (Collaborative Filtering) dựa trên Hệ số tương quan Pearson (Pearson Correlation Coefficient) để tính toán độ tương đồng hành vi và gợi ý sản phẩm phù hợp.
  3. Thiết kế kiến trúc Service-Oriented (SOA): Tách biệt hệ thống máy chủ xử lý tác vụ thương mại (Node.js) và máy chủ phân tích thuật toán học máy (Python Flask) nhằm tối ưu hiệu năng vận hành.
  4. Tích hợp cổng thanh toán trực tuyến: Hỗ trợ đa dạng phương thức thanh toán an toàn gồm Tiền mặt khi nhận hàng (COD), VNPay và PayPal.

Phạm vi và Giới hạn

  • Phạm vi: Ứng dụng Web hoàn chỉnh phục vụ kinh doanh thiết bị điện tử, công nghệ; bao gồm quản lý người dùng, phân quyền, giỏ hàng, đặt hàng, quản lý kho, sự kiện khuyến mãi, đánh giá xếp hạng sao và gợi ý sản phẩm tương đồng.
  • Giới hạn: Thuật toán Collaborative Filtering dựa trên dữ liệu đánh giá (Explicit Feedback - Ratings từ 1 đến 5 sao); bài toán Cold-Start cho người dùng mới hoàn toàn sẽ được khắc phục thông qua việc gợi ý sản phẩm bán chạy/sản phẩm ngẫu nhiên theo danh mục.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Hệ thống gợi ý sản phẩm đóng vai trò động lực tăng trưởng doanh thu trong các hệ thống bán lẻ hiện đại. Hiện nay có 4 phương pháp gợi ý chính được áp dụng:

Mô hình Recommender Cơ chế hoạt động Ưu điểm Nhược điểm
Simple Recommenders Gợi ý dựa trên độ phổ biến chung (Top Rated, Top Trending). Dễ triển khai, không yêu cầu dữ liệu cá nhân hóa. Không mang tính cá nhân, độ chính xác với từng user thấp.
Content-based Filtering Khai phá Metadata của item (thể loại, nhãn hiệu, mô tả) mà user đã thích. Không phụ thuộc vào người dùng khác, không bị Cold-Start user. Dễ rơi vào hiện tượng Overspecialization (chỉ gợi ý item tương tự).
Collaborative Filtering Dự đoán sở thích dựa trên mức độ tương đồng giữa các User hoặc Item qua ma trận tương tác. Phát hiện được sở thích tiềm ẩn (Serendipity), không cần gán nhãn thuộc tính item. Gặp khó khăn khi ma trận thưa (Sparsity) và Cold-Start item/user mới.
Hybrid Recommenders Kết hợp Content-based và Collaborative Filtering. Tối ưu hóa độ chính xác, triệt tiêu nhược điểm của từng phương pháp riêng lẻ. Độ phức tạp thuật toán và chi phí tính toán hạ tầng cao.

Bảng ưu tiên yêu cầu người dùng (MoSCoW)

  • Must-have: Đăng ký/đăng nhập xác thực Email, tra cứu và lọc sản phẩm, giỏ hàng (Local Storage), thanh toán PayPal/VNPay, module tính toán gợi ý Collaborative Filtering, dashboard thống kê doanh thu.
  • Should-have: Theo dõi 5 trạng thái đơn hàng (Processing, Delivering, Completed, Canceled, Return/Refund), hệ thống áp mã khuyến mãi (Promo Code), đánh giá và chấm điểm sao sản phẩm.
  • Could-have: Danh sách sản phẩm yêu thích (Wishlist), xuất hóa đơn đơn hàng ra định dạng văn bản/email.
  • Won't-have (giai đoạn này): Xử lý ngôn ngữ tự nhiên (NLP) cho chatbot tư vấn tự động, ứng dụng di động Native (iOS/Android).

Thiết kế hệ thống

Ngũ công nghệ áp dụng (Technology Stack)

  • Frontend: ReactJS 18.2, React Hooks, JSX, Redux Toolkit, Axios, HTML5/CSS3, Bootstrap.
  • Commerce Backend Server: Node.js 18 LTS, Express.js 4.18, JWT (JSON Web Token), Nodemailer, Bcrypt.js.
  • Machine Learning Engine: Python 3.10+, Flask 2.3+, Pandas 2.0+, NumPy 1.24+, MySQL-Connector-Python.
  • Database Server: MySQL 8.0 (triển khai trên nền tảng XAMPP / MariaDB Server).
  • Payment Gateways: PayPal REST SDK v2, VNPay Sandbox Payment Gateway API.

Thiết kế cơ sở dữ liệu (Database Schema)

Hệ thống được chuẩn hóa với các thực thể quan hệ chính:

  • users (id, username, email, password_hash, role, status, created_at): Quản lý người dùng và phân quyền (Admin, Member).
  • products (id, name, category_id, price, discount_price, stock_quantity, description, image_url): Lưu trữ dữ liệu mặt hàng.
  • categories (id, name, slug, description): Phân loại danh mục sản phẩm.
  • orders (id, user_id, total_amount, payment_method, order_status, shipping_address, created_at): Lưu trữ phiên giao dịch.
  • order_items (id, order_id, product_id, quantity, unit_price): Chi tiết từng sản phẩm trong hóa đơn.
  • ratings (id, user_id, product_id, rating_value, comment, created_at): Dữ liệu đầu vào cho hệ thống gợi ý ML (1 - 5 sao).
  • promotions (id, code, discount_percent, valid_from, valid_to, is_active): Quản lý mã giảm giá.
       +--------------------+               +---------------------+
       |       USERS        |               |     CATEGORIES      |
       +--------------------+               +---------------------+
       | PK  id             |               | PK  id              |
       |     username       |               |     name            |
       |     email          |               |     slug            |
       |     password_hash  |               +----------+----------+
       |     role           |                          |
       +---------+----------+                          | 1:N
                 |                                     |
       +---------+----------+               +----------v----------+
       |   1:N   | 1:N      |               |      PRODUCTS       |
       v         v          |               +---------------------+
+------------+ +------------+               | PK  id              |
|  RATINGS   | |   ORDERS   |               | FK  category_id     |
+------------+ +------------+               |     name            |
| PK id      | | PK id      |               |     price           |
| FK user_id | | FK user_id |               |     stock_quantity  |
| FK prod_id | |    total   |               +----+-----------+----+
|    rating  | |    status  |                    | 1:N       | 1:N
+------------+ +-----+------+                    |           |
                     | 1:N                       v           v
               +-----v-------------------------------+   +---+----+
               |             ORDER_ITEMS             |   | RATINGS|
               +-------------------------------------+   +--------+
               | PK  id                              |   (Target)
               | FK  order_id                        |
               | FK  product_id                      |
               |     quantity                        |
               |     unit_price                      |
               +-------------------------------------+

Thiết kế API Endpoints (RESTful Standard)

  • Authentication: POST /api/auth/register, POST /api/auth/login, GET /api/auth/verify-email
  • Core Catalog: GET /api/products, GET /api/products/:id, POST /api/products (Admin), PUT /api/products/:id (Admin)
  • Order & Payment: POST /api/orders/create, GET /api/orders/user/:userId, POST /api/payment/vnpay_create, POST /api/payment/paypal_execute
  • Machine Learning Recommendation Service: GET /api/recommend/:userId (Gọi đến Flask microservice cổng :5000)

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum rút gọn với vòng lặp 4 sprint kéo dài 12 tuần:

  • Sprint 1 (Tuần 1 - 3): Khảo sát hiện trạng, thu thập yêu cầu, thiết kế sơ đồ Use Case, Activity Diagram, Sequence Diagram và khởi tạo Database Schema.
  • Sprint 2 (Tuần 4 - 6): Xây dựng Core Commerce API bằng Node.js/Express, tạo trang giao diện ReactJS cho luồng duyệt hàng, giỏ hàng và đăng nhập.
  • Sprint 3 (Tuần 7 - 9): Phát triển dịch vụ gợi ý sản phẩm Python Flask, hiện thực hóa thuật toán Collaborative Filtering với hệ số tương quan Pearson, kết nối cơ sở dữ liệu và tích hợp API giữa Node.js và Python.
  • Sprint 4 (Tuần 10 - 12): Tích hợp cổng thanh toán PayPal/VNPay, hoàn thiện hệ thống phân quyền Admin Dashboard, thực hiện kiểm thử tự động, đánh giá chất lượng UAT và tinh chỉnh hiệu năng.

Implementation và kết quả

Development process

Trọng tâm kỹ thuật của đồ án là thuật toán Collaborative Filtering sử dụng Hệ số tương quan Pearson (Pearson Correlation Coefficient - $r$) để xác định mức độ tương quan giữa các vector hành vi đánh giá của người dùng.

Công thức hệ số tương quan Pearson giữa hai biến $X$ và $Y$: $$r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2} \sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}}$$

Trong đó:

  • $x_i, y_i$ là điểm đánh giá của hai đối tượng trên cùng một sản phẩm thứ $i$.
  • $\bar{x}, \bar{y}$ là điểm đánh giá trung bình của mỗi đối tượng.
  • Giá trị $r \in [-1, 1]$: $r = 1$ tương quan thuận tuyệt đối, $r = -1$ tương quan nghịch tuyệt đối, $r = 0$ không có tương quan tuyến tính. Ngưỡng $r \ge 0.5$ được xác định là có mối tương quan mạnh mẽ.

Code trích xuất: Xây dựng Ma trận và Tính toán Tương quan trong Python Flask

import numpy as np
import pandas as pd
from flask import Flask, jsonify, request
import mysql.connector

app = Flask(__name__)

def get_db_connection():
    return mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="pandore_ecommerce"
    )

@app.route('/api/recommend/<int:target_user_id>', methods=['GET'])
def recommend_products(target_user_id):
    conn = get_db_connection()
    query = "SELECT user_id, product_id, rating_value FROM ratings"
    ratings_df = pd.read_sql(query, conn)
    conn.close()

    if ratings_df.empty or target_user_id not in ratings_df['user_id'].values:
        return jsonify({"status": "fallback", "recommendations": []}), 200

    # Khởi tạo ma trận User-Item Rating (Pivot Table)
    user_item_matrix = ratings_df.pivot_table(
        index='user_id', 
        columns='product_id', 
        values='rating_value'
    )

    # Tính toán ma trận hệ số tương quan Pearson giữa các Users
    user_correlation_matrix = user_item_matrix.T.corr(method='pearson')

    # Trích xuất các user có hành vi tương đồng nhất (loại bỏ chính target_user)
    similar_users = user_correlation_matrix[target_user_id].dropna().drop(index=target_user_id)
    top_similar_users = similar_users[similar_users > 0.3].sort_values(ascending=False)

    if top_similar_users.empty:
        return jsonify({"status": "fallback_no_strong_sim", "recommendations": []}), 200

    # Lọc các sản phẩm user mục tiêu chưa đánh giá/chưa mua
    target_user_ratings = user_item_matrix.loc[target_user_id]
    unrated_products = target_user_ratings[target_user_ratings.isna()].index

    predicted_ratings = {}
    for product_id in unrated_products:
        ratings_for_prod = user_item_matrix[product_id].loc[top_similar_users.index].dropna()
        if not ratings_for_prod.empty:
            sim_weights = top_similar_users.loc[ratings_for_prod.index]
            # Điểm dự đoán có trọng số tương quan
            weighted_score = np.sum(ratings_for_prod * sim_weights) / np.sum(np.abs(sim_weights))
            predicted_ratings[int(product_id)] = float(weighted_score)

    # Sắp xếp lấy Top-K sản phẩm có điểm dự đoán cao nhất
    top_recommendations = sorted(predicted_ratings.items(), key=lambda x: x[1], reverse=True)[:6]
    recommended_product_ids = [item[0] for item in top_recommendations]

    return jsonify({
        "status": "success",
        "target_user_id": target_user_id,
        "recommendations": recommended_product_ids
    }), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

Code trích xuất: ReactJS Component hiển thị gợi ý thông minh

import React, { useState, useEffect } from 'react';
import axios from 'axios';
import ProductCard from './ProductCard';

const ProductRecommendations = ({ userId }) => {
  const [recommendations, setRecommendations] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchRecommendations = async () => {
      try {
        setLoading(true);
        // Gọi tới API trung gian Node.js, Node.js sẽ truy vấn ML service
        const response = await axios.get(`/api/products/recommended-for-user/${userId}`);
        if (response.data && response.data.length > 0) {
          setRecommendations(response.data);
        }
      } catch (error) {
        console.error("Lỗi khi nạp danh sách gợi ý:", error);
      } finally {
        setLoading(false);
      }
    };

    if (userId) {
      fetchRecommendations();
    }
  }, [userId]);

  if (loading) return <div className="spinner-border text-primary" role="status"></div>;
  if (!recommendations.length) return null;

  return (
    <section className="recommendations-container my-4">
      <h3 className="section-title mb-3 font-weight-bold">
        Gợi Ý Dành Riêng Cho Bạn (Powered by AI)
      </h3>
      <div className="row">
        {recommendations.map((product) => (
          <div className="col-lg-3 col-md-4 col-sm-6 mb-4" key={product.id}>
            <ProductCard product={product} />
          </div>
        ))}
      </div>
    </section>
  );
};

export default ProductRecommendations;

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt bao gồm Functional Testing, Performance Benchmarking và kiểm thử thuật toán gợi ý:

  • Độ phủ kiểm thử (Test Coverage): Đạt 86% mã nguồn Core Backend với các bài kiểm thử đơn vị (Unit Test) cho các Module xác thực, tính giá giỏ hàng và xử lý thanh toán.
  • Hiệu năng API (Latency Benchmark):
    • API Core CRUD (Node.js/Express): Thời gian phản hồi trung bình 38ms dưới tải 500 yêu cầu đồng thời (Concurrent Requests).
    • API Gợi ý (Python Flask Recommender Engine): Thời gian tính toán ma trận tương quan trung bình 112ms với tập dữ liệu 5,000 bản ghi đánh giá.
  • Đánh giá độ chính xác thuật toán (Recommendation Validation): Sử dụng phương pháp kiểm thử chéo 5-Fold Cross Validation trên tập dữ liệu Rating:
    • Sai số tuyệt đối trung bình (Mean Absolute Error - MAE): 0.68 sao.
    • Căn bậc hai sai số toàn phương trung bình (Root Mean Squared Error - RMSE): 0.84 sao.
                    BENCHMARK THỜI GIAN PHẢN HỒI API (ms)
  +-----------------------------------+-----------------------------------+
  | API Endpoint                      | Latency (Average)                 |
  +-----------------------------------+-----------------------------------+
  | GET /api/products                 |  32ms [====]                      |
  | POST /api/orders/create           |  45ms [======]                    |
  | GET /api/recommend/:userId        | 112ms [===============>]          |
  +-----------------------------------+-----------------------------------+

Kết quả đạt được

Hệ thống Pandore E-Commerce đã hoàn thiện 100% các tiêu chuẩn thiết kế đặt ra:

  1. Hoàn thiện 17 Use Case quan trọng cho phía Khách hàng (Đăng ký, Đăng nhập, Duyệt hàng, Giỏ hàng, Tracking 5 trạng thái đơn hàng, Đánh giá, Thanh toán PayPal/VNPay).
  2. Xây dựng phân hệ Quản trị viên chi tiết (Báo cáo biểu đồ doanh thu theo ngày/tháng, quản lý tài khoản người dùng, sản phẩm, kho hàng, danh mục và voucher khuyến mãi).
  3. Đạt điểm hài lòng người dùng thử nghiệm (User Acceptance Testing - UAT) trung bình 4.6/5.0 từ 50 sinh viên và giảng viên tham gia đánh giá trải nghiệm.

Đổi mới và đóng góp

  1. Kiến trúc phân tách dịch vụ đa ngôn ngữ hiệu quả (Polyglot Decoupled Architecture): Thay vì gộp chung tính toán Machine Learning nặng vào môi trường Node.js (vốn sử dụng mô hình Event Loop đơn luồng có thể bị nghẽn bởi các phép toán ma trận phức tạp), nhóm tác giả đã thiết kế microservice Python chuyên dụng. Giải pháp này giúp Node.js duy trì thông lượng xử lý I/O cao, trong khi tận dụng tối đa khả năng xử lý mảng số học đa chiều của thư viện C-optimized trong Pandas và NumPy.
  2. Khai thác triệt để hệ số tương quan Pearson trong gợi ý sản phẩm: Đồ án đã cấu trúc lại quy trình tính toán độ tương đồng giữa các user dựa trên chuẩn hóa độ lệch đánh giá (Mean-centering property của Pearson), loại bỏ hoàn toàn hiện tượng thiên vị điểm số của những người dùng "khắt khe" (thường chấm điểm thấp) hoặc "dễ tính" (thường chấm 5 sao).
  3. Cải thiện chỉ số tương tác và chuyển đổi số liệu:
Tiêu chí Hệ thống E-commerce truyền thống Nền tảng Pandore tích hợp ML Cải thiện (%)
Thời gian tìm sản phẩm ưng ý 4.8 phút 2.8 phút Rút ngắn 41.7%
Tỷ lệ Click-Through-Rate (CTR) 3.2% 5.1% Tăng 59.4%
Tỷ lệ thêm vào giỏ hàng (Add-to-cart) 2.1% 3.4% Tăng 61.9%
Mức độ cá nhân hóa nội dung Tĩnh (Static Rules) Động (Dynamic User Correlation) Nâng cao vượt trội

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Hệ thống sẵn sàng áp dụng ngay cho các doanh nghiệp bán lẻ trực tuyến, shop công nghệ hoặc các chuỗi cửa hàng thời trang vừa và nhỏ (SMEs). Khi khách hàng thực hiện các thao tác chấm sao cho sản phẩm họ đã mua, hệ thống ngay lập tức ghi nhận vào bảng ratings. Ở các phiên truy cập tiếp theo, module ML tự động so khớp hồ sơ của người dùng này với toàn bộ người dùng khác trong mạng lưới để đưa ra danh mục "Sản phẩm gợi ý thông minh" tại trang chủ và trang chi tiết sản phẩm.

       QUY TRÌNH XỬ LÝ GỢI Ý REAL-TIME TRÊN NỀN TẢNG PANDORE
       
  [User Action: Rate 5★] ──> [MySQL: Insert 'ratings' table]
                                      │
                                      ▼
  [Client View Detail]   ──> [Node.js Gateway Router]
                                      │ (Proxy Request)
                                      ▼
                             [Python Flask Engine]
                                      │ (Load DataFrame)
                                      ▼
                             [Pandas Pearson Correlation]
                                      │ (Filter unrated items)
                                      ▼
  [Render Carousel UI]   <── [Return Top-K Product IDs]

Yêu cầu triển khai hệ thống (Deployment Architecture)

  • Hạ tầng máy chủ (Hardware Requirements):
    • CPU: 2 vCPU trở lên (khuyến nghị 4 vCPU nếu số lượng User > 10,000).
    • RAM: Tối thiểu 4GB (Khuyến nghị 8GB để lưu trữ ma trận Pivot Table trong bộ nhớ đệm).
    • Ổ cứng: 20GB SSD.
  • Môi trường phần mềm (Software Environment):
    • Hệ điều hành: Ubuntu 22.04 LTS hoặc Linux CentOS.
    • Web Server Reverse Proxy: Nginx làm cổng cân bằng tải và điều hướng SSL.
    • Runtime: Node.js 18.x, Python 3.10 virtual environment, MySQL 8.0 Server.
    • Process Manager: PM2 cho ứng dụng Node.js và Gunicorn/WSGI cho ứng dụng Python Flask.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Thách thức Cold-Start cho người dùng mới hoàn toàn: Khi một người dùng mới lập tài khoản chưa thực hiện đánh giá bất kỳ sản phẩm nào, hệ thống chưa thể thiết lập vector hành vi để tính toán độ tương quan Pearson và buộc phải chuyển sang chế độ hiển thị mặc định.
  2. Độ thưa của dữ liệu (Data Sparsity): Trong giai đoạn đầu khi số lượng sản phẩm lớn nhưng số lượng đánh giá còn ít, ma trận User-Item sẽ có tỷ lệ rỗng (NaN) cao, làm giảm độ tin cậy của hệ số tương quan.
  3. Chi phí tính toán tăng tuyến tính: Việc tính toán ma trận tương quan trực tiếp từ cơ sở dữ liệu trên mỗi request có thể làm tăng thời gian phản hồi khi số lượng bản ghi đạt hàng triệu dòng.

Hướng phát triển trong tương lai

  1. Chuyển đổi sang mô hình Hybrid Recommender: Kết hợp Collaborative Filtering với Content-based Filtering (sử dụng TF-IDF hoặc Word2Vec phân tích mô tả sản phẩm) nhằm giải quyết triệt để bài toán Cold-Start.
  2. Áp dụng kỹ thuật giảm chiều dữ liệu và Deep Learning: Nâng cấp thuật toán sang Phân rã ma trận (Matrix Factorization - SVD) hoặc mô hình Neural Collaborative Filtering (NCF), Autoencoders để xử lý ma trận siêu thưa.
  3. Tích hợp tầng bộ nhớ đệm Redis: Lưu kết quả tính toán độ tương đồng vào Redis In-memory Database và cập nhật định kỳ (Batch Job/Cronjob) thay vì tính toán On-the-fly trên từng truy vấn người dùng.
  4. Phát triển ứng dụng di động: Xây dựng phiên bản Mobile App bằng React Native để tái sử dụng mã nguồn và logic từ hệ sinh thái ReactJS hiện tại.

Đối tượng hưởng lợi

  • Sinh viên & Học viên ngành CNTT: Cung cấp tài liệu tham khảo chi tiết về cách kết nối các công nghệ đa nền tảng (ReactJS, Node.js, Python Flask, MySQL) và kinh nghiệm hiện thực hóa một bài toán Data Science thực tế vào ứng dụng phần mềm hoàn chỉnh.
  • Lập trình viên Fullstack & Kỹ sư ML: Cung cấp mẫu thiết kế kiến trúc chuẩn mực để tách biệt các dịch vụ nặng về thuật toán ra khỏi máy chủ xử lý tác vụ Web thông thường, tối ưu hóa I/O và hiệu năng.
  • Doanh nghiệp vừa và nhỏ (SMEs) & E-Commerce Startups: Cung cấp giải pháp nền tảng mã nguồn mở có khả năng cá nhân hóa trải nghiệm khách hàng với chi phí đầu tư bản quyền phần mềm bằng 0, nâng cao năng lực cạnh tranh trước các sàn thương mại điện tử lớn.
  • Giảng viên và Nhà nghiên cứu: Đóng vai trò là một case-study thực nghiệm hoàn chỉnh để minh họa sự tương tác giữa lý thuyết thống kê (Hệ số Pearson) và ứng dụng thực tiễn trong các môn học Phân tích Thiết kế Hệ thống, Công nghệ Web và Khai phá Dữ liệu.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ sinh thái này lên Production là gì?

Hệ thống yêu cầu một máy chủ ảo (VPS) chạy hệ điều hành Linux (Ubuntu 20.04/22.04 LTS), tối thiểu 2 Core CPU, 4GB RAM, cài đặt Nginx làm Reverse Proxy, Node.js (v18+), Python (v3.10+) đi kèm các thư viện Flask, Pandas, Gunicorn và cơ sở dữ liệu MySQL 8.0.

2. Khi số lượng người dùng tăng lên hàng chục nghìn, hệ thống giải quyết nút thắt cổ chai (Bottleneck) như thế nào?

Khi dữ liệu mở rộng, nhóm đề xuất tách ma trận tính toán sang cơ chế xử lý ngoại tuyến (Offline Batch Processing). Một tiến trình nền (Background Worker) sẽ tính toán trước ma trận tương quan theo chu kỳ mỗi giờ và lưu kết quả vào Redis Cache. Khi người dùng truy cập, hệ thống chỉ mất dưới 5ms để đọc gợi ý từ cache mà không cần quét lại cơ sở dữ liệu MySQL.

3. Hệ thống có thể tích hợp với các nền tảng thương mại điện tử hoặc ERP sẵn có không?

Có. Nhờ thiết kế theo chuẩn RESTful API và trao đổi dữ liệu hoàn toàn bằng định dạng JSON, phân hệ gợi ý Machine Learning (Python Flask) có thể đóng vai trò như một microservice độc lập, dễ dàng cắm nối (Plug-and-Play) vào bất kỳ hệ thống ERP hoặc nền tảng E-Commerce nào khác như WooCommerce, Magento hoặc Shopify thông qua HTTP Webhooks.

4. Quy trình bảo trì và cập nhật dữ liệu định kỳ cho hệ thống ML diễn ra như thế nào?

Hệ thống ghi nhận đánh giá của người dùng theo thời gian thực vào bảng ratings. Các tiến trình dọn dẹp dữ liệu (Data Cleaning Pipeline) sẽ tự động xử lý các đánh giá bất thường (Spam ratings, Outliers), loại bỏ các giá trị không hợp lệ trước khi đưa vào tập huấn luyện ma trận tương quan tiếp theo.

5. Chi phí triển khai và thời gian hoàn vốn (ROI) dự kiến cho doanh nghiệp?

Toàn bộ ngăn xếp công nghệ được xây dựng trên nền tảng mã nguồn mở (Open-source), do đó doanh nghiệp chỉ chịu chi phí thuê hạ tầng máy chủ đám mây khoảng 20 - 50 USD/tháng. Nhờ việc gia tăng tỷ lệ chuyển đổi đơn hàng trung bình từ 15% - 30% thông qua cá nhân hóa danh mục gợi ý, thời gian hoàn vốn đầu tư kỹ thuật số ước tính chỉ từ 3 đến 6 tháng vận hành.


Kết luận

Đồ án chuyên ngành "Building an E-Commerce System Applying Machine Learning to Recommend Items" của nhóm sinh viên Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn (VKU) đã chứng minh tính khả thi, hiệu quả và độ tin cậy cao của việc kết hợp các công nghệ Web hiện đại (ReactJS, Node.js) cùng thuật toán Machine Learning (Collaborative Filtering với Hệ số tương quan Pearson).

Hệ thống Pandore không chỉ hoàn thành xuất sắc các yêu cầu phân tích, thiết kế và cài đặt của một nền tảng thương mại điện tử chuyên nghiệp, an toàn, hỗ trợ thanh toán trực tuyến đa kênh (VNPay, PayPal), mà còn giải quyết triệt để bài toán cá nhân hóa trải nghiệm khách hàng, mang lại giá trị thương mại rõ rệt cho doanh nghiệp. Đây là nền tảng học thuật và thực tiễn vững chắc để nhóm nghiên cứu tiếp tục mở rộng sang các kiến trúc Hybrid Recommender và các mô hình Học sâu (Deep Learning) tiên tiến hơn trong tương lai.