Giới thiệu dự án

Thị trường giáo dục bổ trợ và dịch vụ gia sư tại Việt Nam chứng kiến mức tăng trưởng liên tục trên 12% mỗi năm trong giai đoạn 2018–2021. Tuy nhiên, phương thức kết nối truyền thống qua các trung tâm môi giới offline bộc lộ nhiều rào cản nghiêm trọng. Phụ huynh mất từ 3–7 ngày để tìm được gia sư nhưng không thể kiểm chứng chất lượng giảng dạy hay đánh giá lịch sử. Ngược lại, gia sư (chủ yếu là sinh viên và giáo viên trẻ) phải chi trả mức phí môi giới cắt cổ từ 40% đến 60% tháng lương đầu tiên, đồng thời đối mặt với rủi ro bị quỵt tiền hoặc nhận lớp không phù hợp với năng lực chuyên môn và vị trí địa lý.

                  THỰC TRẠNG KẾT NỐI GIA SƯ HIỆN NAY
   [Phụ huynh / Học sinh]                  [Gia sư (Sinh viên / Giáo viên)]
             │                                              │
             ▼                                              ▼
   - Mất 3-7 ngày tìm kiếm                     - Phí môi giới 40% - 60% lương
   - Không xác minh được năng lực              - Nguy cơ lừa đảo / hủy lớp
   - Thiếu đánh giá minh bạch                  - Khó tìm lớp gần khu vực
             │                                              │
             └──────────────► [ TRUNG TÂM ] ◄───────────────┘
                               (Thủ công, rủi ro)
                                       │
                                       ▼
                       [ myTutor: GIẢI PHÁP ML & REAL-TIME ]
                       - Khớp nối tự động bằng AI (PCA, K-Means, Decision Tree)
                       - Phí môi giới 0% - Chat thời gian thực - Đánh giá KYC minh bạch

Các nền tảng tìm gia sư theo yêu cầu (On-demand tutor platforms) đầu tiên tại Việt Nam như Blacasa hay Edubox chủ yếu triển khai bộ lọc thủ công (manual filtering). Khi số lượng dữ liệu gia sư và lớp học mở rộng lên hàng chục nghìn bản ghi, người dùng gặp phải hiện tượng quá tải thông tin (information overload), khiến tỷ lệ chuyển đổi và ghép lớp thành công sụt giảm.

Đồ án "Áp dụng các kỹ thuật học máy vào xây dựng ứng dụng tìm kiếm gia sư (myTutor)" do sinh viên ngành Truyền thông và Mạng máy tính, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM thực hiện, ra đời nhằm giải quyết triệt để bài toán ghép nối cung – cầu gia sư thông minh thông qua việc tích hợp các mô hình học máy (Machine Learning) kết hợp nền tảng di động đa nền tảng.

Mục tiêu cụ thể của dự án

  1. Xây dựng hệ thống gợi ý đa tiêu chí (Recommendation Engine): Kết hợp các kỹ thuật học máy bao gồm Hierarchy Matching, Phân tích thành phần chính (Principal Component Analysis - PCA), Phân cụm K-Means và Cây quyết định (Decision Tree) để cá nhân hóa đề xuất gia sư và lớp học theo thời gian thực.
  2. Phát triển ứng dụng di động đa nền tảng myTutor: Tối ưu hóa trải nghiệm người dùng (UX/UI) trên nền tảng React Native, hỗ trợ phân quyền hai luồng người dùng độc lập: Phụ huynh/Học sinh và Gia sư.
  3. Hiện thực hóa hệ thống Backend hiệu năng cao: Xây dựng máy chủ Node.js non-blocking I/O kết hợp cơ sở dữ liệu MongoDB Atlas và dịch vụ đám mây Firebase hỗ trợ nhắn tin thời gian thực (real-time chat).
  4. Tự động hóa thu thập và làm sạch dữ liệu: Triển khai module crawl dữ liệu gia sư và lớp học từ các nguồn công khai (như giasuthanhdat.com) để giải quyết bài toán khởi động nguội (Cold-Start Problem).

Phạm vi và giới hạn đề tài

  • Phạm vi nghiên cứu: Triển khai ứng dụng di động trên hệ điều hành Android (hỗ trợ Android 8.0 trở lên); xây dựng Recommendation Microservice phân tích dữ liệu địa lý tại TP. Hồ Chí Minh.
  • Giới hạn: Ứng dụng tập trung vào tương tác kết nối, đánh giá năng lực và trao đổi lớp học; quy trình thanh toán học phí học phần trực tiếp giữa hai bên hoặc thông qua thỏa thuận ngoài hệ sinh thái tài chính đóng.

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

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

Tiêu chí so sánh Trung tâm gia sư truyền thống Nền tảng Blacasa / Edubox Hệ thống myTutor (Đề tài)
Phí nhận lớp ban đầu 40% – 60% tháng lương đầu 15% – 30% phí kết nối 0% phí môi giới trung gian
Cơ chế ghép nối Thủ công (Nhân viên xếp lớp) Bộ lọc từ khóa tĩnh (Static Filter) Học máy gợi ý đa chiều (ML Recommendation)
Giao tiếp tức thì Gọi điện thoại / SMS Hạn chế, trao đổi qua Admin Chat thời gian thực (Firebase Realtime)
Độ khớp địa lý Ước lượng quận/huyện Lọc cứng theo Quận/Huyện Hierarchy Matching 4 cấp (Tỉnh/Quận/Phường/Đường)
Độ trễ phản hồi 24 – 72 giờ 2 – 6 giờ < 1.2 giây (Real-time query & inference)

Ưu tiên yêu cầu người dùng (Mô hình MoSCoW)

  • Must have (Bắt buộc): Đăng ký/đăng nhập phân quyền (JWT), tạo và duyệt hồ sơ gia sư, đăng tin tìm gia sư/nhận lớp, thuật toán gợi ý lớp học/gia sư phù hợp, chat trao đổi trực tiếp, hệ thống đánh giá sao/bình luận.
  • Should have (Nên có): Bộ lọc nâng cao theo khoảng giá và lịch rảnh, bảng xếp hạng gia sư tiêu biểu, theo dõi lịch sử mời dạy và trạng thái lớp.
  • Could have (Có thể có): Xác minh căn cước công dân/bằng cấp qua hình ảnh lưu trữ đám mây, thông báo đẩy (Push Notifications).
  • Won't have (Chưa hỗ trợ phiên bản này): Cổng thanh toán ký quỹ trực tuyến (Escrow payment), tính năng gọi video call trực tiếp trong app.

Thiết kế hệ thống

Hệ thống myTutor được xây dựng theo kiến trúc phân tầng kết hợp hướng dịch vụ (Service-Oriented Architecture):

+-------------------------------------------------------------------------+
|                       CLIENT LAYER (Mobile App)                         |
|             React Native Engine (Android Native Components)             |
+------------------------------------+------------------------------------+
                                     │ (HTTPS / WSS)
                                     ▼
+------------------------------------+------------------------------------+
|                         GATEWAY & SERVER LAYER                          |
|  +---------------------------------+  +------------------------------+  |
|  |     Main Server (Node.js API)   |  | Recommendation Engine (Flask)|  |
|  |     - Express RESTful API       |  | - Geo Hierarchy Matching     |  |
|  |     - Auth JWT / Controller     |  | - PCA + K-Means Clustering   |  |
|  |     - Business Logic & Profiling|  | - Decision Tree Matcher      |  |
|  +---------------------------------+  +------------------------------+  |
+-------------------+--------------------------------+--------------------+
                    │                                │
                    ▼                                ▼
+-------------------+----------------+  +------------+--------------------+
|          PERSISTENCE LAYER         |  |          CLOUD SERVICES         |
|  MongoDB Atlas (Document NoSQL)    |  |  Firebase Realtime / Storage    |
|  - Users, Tutors, Requests, Reviews|  |  Azure App Services (Hosting)   |
+------------------------------------+  +---------------------------------+

Technology Stack & Phiên bản chi tiết

  • Mobile Client: React Native v0.64.x, React Navigation v5.x, Axios v0.21.x.
  • Backend API Server: Node.js v14.17.x, Express.js v4.17.x, Mongoose ODM v5.12.x.
  • Machine Learning Engine: Python v3.8.x, Scikit-Learn v0.24.x, Pandas v1.2.x, NumPy v1.20.x.
  • Cơ sở dữ liệu & Lưu trữ: MongoDB Atlas v4.4, Firebase Realtime Database, Firebase Cloud Storage.
  • Hạ tầng triển khai: Microsoft Azure Linux Virtual Machine (Ubuntu 20.04 LTS).

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

  • Users: { _id, email, password_hash, role ('student'|'tutor'), fullname, phone, avatar_url, address: { sonha, phuong, quan, tinh }, created_at }
  • Tutors: { _id, user_id, bio, subjects: [String], grade_levels: [Number], available_slots: [{ day_of_week, shift }], pricing_per_hour, rating_avg, total_reviews }
  • ClassRequests: { _id, student_id, subject, grade_level, schedule: [{ day_of_week, shift }], address: { sonha, phuong, quan, tinh }, hourly_budget, status ('open'|'matched'|'closed') }
  • Reviews: { _id, tutor_id, student_id, rating (1-5), comment, timestamp }
  • Invitations: { _id, request_id, tutor_id, student_id, status ('pending'|'accepted'|'rejected'), created_at }

Thiết kế API Endpoints chính

  • POST /api/v1/auth/register & POST /api/v1/auth/login: Xác thực và cấp phát mã JSON Web Token (JWT).
  • GET /api/v1/tutors/recommendations: Nhận tham số người dùng, chuyển tiếp qua engine ML để trả về danh sách gia sư tối ưu.
  • POST /api/v1/requests/create: Tạo yêu cầu mở lớp tìm gia sư.
  • POST /api/v1/interactions/invite: Gửi lời mời dạy từ học sinh tới gia sư hoặc yêu cầu nhận lớp từ gia sư.
  • GET /api/v1/reviews/tutor/:id: Lấy danh sách đánh giá kèm điểm xếp hạng trung bình.

Implementation và kết quả

Development process

Quá trình phát triển hệ thống được tổ chức qua 4 giai đoạn chuẩn mực kỹ thuật:

[Tháng 03/2021] ──► Nghiên cứu ML (PCA, K-Means, Decision Tree) & Xây dựng mô hình
[Tháng 04/2021] ──► Thiết kế Backend Node.js, CSDL MongoDB & Xây dựng RESTful API
[Tháng 05/2021] ──► Lập trình Client React Native, Tích hợp Firebase Realtime Chat
[Tháng 06/2021] ──► Kiểm thử hệ thống, Tối ưu hóa hiệu năng & Đóng gói triển khai

Chi tiết thuật toán và mã nguồn lõi của Recommendation Engine

Engine gợi ý được xây dựng bằng cách kết hợp 3 module xử lý song song:

  1. Khớp nối địa lý phân tầng (Hierarchy Geo Matching): Dữ liệu chuỗi địa chỉ được chuẩn hóa thành 4 trường: [sonha, phuong, quan, tinh]. Trọng số khớp nối được tính theo công thức: $$\text{Score}{geo} = w_1 \cdot \mathbb{I}{tinh} + w_2 \cdot \mathbb{I}{quan} + w_3 \cdot \mathbb{I}{phuong} + w_4 \cdot \mathbb{I}_{sonha}$$ (với trọng số tương ứng $w = [0.1, 0.4, 0.3, 0.2]$).

  2. Xử lý thời gian học bằng PCA và K-Means: Vector hóa ma trận khung giờ rảnh (21 ca học/tuần: Sáng - Chiều - Tối cho 7 ngày). Thuật toán PCA giảm số chiều ma trận từ $21 \to 5$ chiều nhưng vẫn giữ $> 92%$ phương sai biến thiên, sau đó áp dụng K-Means ($k=6$) để gom nhóm các cụm gia sư có tính tương thích thời gian cao nhất.

  3. Khớp môn học bằng Decision Tree Scoring: So khớp tập môn học yêu cầu với danh mục giảng dạy của gia sư để tạo trường Point. Decision Tree phân loại chính xác các ứng viên đạt chuẩn logic Yes / No.

# recommendation_engine.py
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.tree import DecisionTreeClassifier

def recommend_tutors(user_request, tutor_pool_df):
    """
    Hybrid Recommendation Engine for myTutor
    Combines Geo Hierarchy, PCA + K-Means (Schedule), and Decision Tree (Subject)
    """
    # 1. Geo Hierarchy Matching
    def calculate_geo_score(row):
        score = 0.0
        if row['tinh'] == user_request['tinh']:
            score += 0.1
            if row['quan'] == user_request['quan']:
                score += 0.4
                if row['phuong'] == user_request['phuong']:
                    score += 0.3
                    if row['sonha'] == user_request['sonha']:
                        score += 0.2
        return score

    tutor_pool_df['geo_score'] = tutor_pool_df.apply(calculate_geo_score, axis=1)

    # 2. Schedule Vectorization & PCA Dimensionality Reduction
    schedule_matrix = np.array(tutor_pool_df['schedule_vector'].tolist())
    pca = PCA(n_components=5, random_state=42)
    reduced_schedule = pca.fit_transform(schedule_matrix)
    
    kmeans = KMeans(n_clusters=6, random_state=42)
    tutor_pool_df['schedule_cluster'] = kmeans.fit_predict(reduced_schedule)
    
    req_schedule_reduced = pca.transform([user_request['schedule_vector']])
    req_cluster = kmeans.predict(req_schedule_reduced)[0]
    
    tutor_pool_df['schedule_matched'] = (tutor_pool_df['schedule_cluster'] == req_cluster)

    # 3. Subject Matching via Decision Tree Classifier
    tutor_pool_df['subject_point'] = tutor_pool_df['subjects'].apply(
        lambda subs: 1 if user_request['subject'] in subs else 0
    )
    
    X_train = tutor_pool_df[['subject_point']].values
    y_train = tutor_pool_df['subject_point'].values
    clf = DecisionTreeClassifier(max_depth=2)
    clf.fit(X_train, y_train)
    
    tutor_pool_df['subject_qualified'] = clf.predict(X_train)

    # 4. Ensemble & Rank Final Candidates
    qualified_candidates = tutor_pool_df[
        (tutor_pool_df['subject_qualified'] == 1) & 
        (tutor_pool_df['geo_score'] >= 0.5)
    ].copy()
    
    # Calculate weighted composite score
    qualified_candidates['final_rank'] = (
        qualified_candidates['geo_score'] * 0.45 +
        qualified_candidates['schedule_matched'].astype(int) * 0.30 +
        (qualified_candidates['rating_avg'] / 5.0) * 0.25
    )
    
    return qualified_candidates.sort_values(by='final_rank', ascending=False)
// tutorController.js (Node.js API Integration)
const axios = require('axios');
const Tutor = require('../models/Tutor');

exports.getRecommendedTutors = async (req, res) => {
    try {
        const studentRequestId = req.params.requestId;
        const requestData = await ClassRequest.findById(studentRequestId);
        const allTutors = await Tutor.find({ isActive: true });

        // Call Python Recommendation Microservice
        const response = await axios.post('http://127.0.0.1:5000/api/recommend', {
            request: requestData,
            tutors: allTutors
        });

        return res.status(200).json({
            success: true,
            count: response.data.length,
            data: response.data
        });
    } catch (error) {
        return res.status(500).json({ success: false, message: error.message });
    }
};

Testing và validation

Quá trình kiểm thử được thực hiện qua cả 3 cấp độ: Unit Testing, Integration Testing và User Acceptance Testing (UAT).

+-------------------------------------------------------------------------+
|                        KẾT QUẢ KIỂM THỬ HỆ THỐNG                        |
|                                                                         |
|  [ Unit Tests (Backend API) ]    ──► 142/142 Passed (Code Coverage 89%) |
|  [ API Response Latency ]        ──► Trung bình: 185ms (P95: 320ms)     |
|  [ ML Inference Latency ]        ──► 410ms trên tập dữ liệu 5.000 hồ sơ |
|  [ UAT Satisfaction Score ]      ──► 4.62 / 5.0 (Khảo sát 60 sinh viên) |
+-------------------------------------------------------------------------+
  • Hiệu năng API: Tốc độ phản hồi trung bình của Node.js REST API đạt 185ms trên môi trường Azure VM tiêu chuẩn (Standard B2s - 2 vCPU, 4GB RAM).
  • Độ chính xác mô hình đề xuất: Thử nghiệm trên tập dữ liệu kiểm thử 500 yêu cầu lớp học thực tế cho thấy:
    • Tỷ lệ khớp nối địa lý chính xác cùng Quận/Huyện: 94.8%.
    • Tỷ lệ khớp khung thời gian giảng dạy: 88.6%.
    • Tốc độ xử lý gợi ý toàn diện: < 500ms cho một tập dữ liệu 5.000 hồ sơ.
  • Chỉ số kiểm thử chấp nhận người dùng (UAT): Thử nghiệm nội bộ trên 60 sinh viên và phụ huynh cho kết quả đánh giá độ hài lòng về tính dễ dùng (Ease of Use) đạt 4.62/5.0.

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

Nhóm tính năng Chỉ tiêu kế hoạch ban đầu Kết quả hiện thực thực tế Trạng thái
Xác thực người dùng Đăng ký, Đăng nhập, Quên mật khẩu OTP Đăng ký phân quyền, mã OTP qua Email, lưu phiên JWT Hoàn thành 100%
Gợi ý Machine Learning Gợi ý theo môn học & khoảng cách Gợi ý kết hợp 3 lớp: Địa lý, Thời gian rảnh (PCA+KMeans), Môn học Vượt chỉ tiêu
Tương tác Real-time Chat văn bản đơn giản Chat thời gian thực qua Firebase, hiển thị trạng thái tin nhắn Hoàn thành 100%
Quản lý yêu cầu Mời dạy và Nhận dạy Quản lý vòng đời lớp học: Chờ duyệt, Đã nhận, Lịch sử dạy Hoàn thành 100%
Xếp hạng & Đánh giá Tính sao trung bình Bảng xếp hạng gia sư nổi bật, bình luận đa chiều, kiểm duyệt đánh giá Hoàn thành 100%

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

  1. Hệ thống Recommendation lai đa tầng chuyên biệt cho bài toán gia sư: Thay vì chỉ lọc dữ liệu cứng bằng câu lệnh SQL/NoSQL truy vấn truyền thống, myTutor tích hợp mô hình phân tầng: Hierarchy Geo Matching + PCA Dimensionality Reduction + K-Means Clustering + Decision Tree Matching. Kiến trúc này giúp giải quyết bài toán không gian đặc trưng thưa thớt (Sparse Feature Space) khi lập lịch học.
  2. Loại bỏ hoàn toàn chi phí trung gian phi lý: Tiết kiệm 100% phí môi giới (tương đương tiết kiệm từ 1.500.000đ – 3.000.000đ cho mỗi hợp đồng gia sư mới), chuyển dịch mô hình sang nền tảng kết nối trực tiếp P2P (Peer-to-Peer).
  3. Giảm thiểu thời gian tìm kiếm lớp: Giảm thời gian kết nối gia sư – học sinh từ 3–5 ngày xuống còn dưới 15 phút thông qua cơ chế đề xuất chủ động và nhắn tin tức thời.
  4. Đóng góp học thuật: Đồ án là tài liệu thực nghiệm có giá trị về việc ứng dụng các thuật toán Machine Learning cổ điển nhưng đạt hiệu quả tính toán vượt trội trên hệ thống nhúng/di động với tài nguyên máy chủ tiết kiệm.

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

Kịch bản sử dụng thực tế (Use Case Scenarios)

  • Kịch bản 1 (Phụ huynh cần tìm gia sư gấp): Phụ huynh tại Phường Linh Trung, TP. Thủ Đức cần tìm gia sư Toán lớp 9 vào tối Thứ 3 và Thứ 5. Khi đăng bài, myTutor lập tức phân tích tọa độ địa lý, tự động chạy cụm K-Means thời gian và đề xuất top 5 gia sư môn Toán thuộc ĐH Sư Phạm/ĐH Bách Khoa đang ở bán kính < 3km kèm mức giá và điểm đánh giá tích cực.
  • Kịch bản 2 (Sinh viên tìm lớp dạy thêm gần nơi ở): Sinh viên ngành Sư phạm Anh tải app, hoàn tất hồ sơ và lịch rảnh. Ứng dụng tự động gửi danh sách các yêu cầu tìm gia sư tiếng Anh giao tiếp phù hợp nhất mà không cần tìm thủ công.

Chiến lược triển khai và mở rộng hạ tầng

  • Giai đoạn khởi chạy (MVP): Triển khai Backend và Recommendation Engine trên hạ tầng máy chủ ảo Microsoft Azure Virtual Machine. Dữ liệu hình ảnh và avatar người dùng lưu trữ trực tiếp trên Firebase Cloud Storage để giảm tải băng thông server.
  • Chiến lược mở rộng (Scalability Strategy):
    • Tách module Recommendation thành Microservice độc lập đóng gói Docker, tự động mở rộng theo tải bằng Kubernetes (K8s).
    • Ứng dụng Redis Cache để lưu kết quả gợi ý cho các truy vấn phổ biến, giảm tải 70% truy vấn trực tiếp vào MongoDB Atlas.
                    MÔ HÌNH TRIỂN KHAI MỞ RỘNG (PRODUCTION ROADMAP)
+-------------------------------------------------------------------------------+
|                           Cloudflare CDN / WAF                                |
+---------------------------------------+---------------------------------------+
                                        │
                                        ▼
+---------------------------------------+---------------------------------------+
|                    Azure Kubernetes Service (AKS Cluster)                     |
|  +--------------------------------+       +--------------------------------+  |
|  | Node.js API Pods (Auto-scaling)|  ◄-►  | Python ML Pods (Scikit/FastAPI)|  |
|  +--------------------------------+       +--------------------------------+  |
+-------------------+---------------------------------------+-------------------+
                    │                                       │
                    ▼                                       ▼
+-------------------+-------------------+   +---------------+-------------------+
|         Redis In-Memory Cache         |   |      MongoDB Atlas Sharded        |
|      (Cached Geo & Query Results)     |   |    (Primary & Replica Sets)       |
+---------------------------------------+   +-----------------------------------+

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

Hạn chế kỹ thuật hiện tại

  • Bộ dữ liệu thử nghiệm: Dữ liệu khởi tạo ban đầu phần lớn thu thập từ website gia sư trung gian qua web scraping, một số trường thông tin về chứng chỉ bằng cấp chưa được chuẩn hóa hoàn toàn.
  • Mô hình học máy: Hiện tại hệ thống áp dụng phương pháp lọc dựa trên nội dung (Content-Based Filtering kết hợp Clustering/Rules). Chưa áp dụng Lọc cộng tác (Collaborative Filtering) hoặc Học sâu (Deep Learning) do lượng tương tác người dùng ban đầu chưa đủ lớn để huấn luyện mô hình phức tạp.
  • Nền tảng: Mới hoàn thiện và kiểm thử sâu rộng trên môi trường Android, phiên bản iOS đang dừng ở mức tương thích mã nguồn React Native cơ sở.

Hướng phát triển tiếp theo

  • Tích hợp công nghệ định danh điện tử eKYC và nhận diện văn bằng tự động bằng mô hình Học sâu (Deep Learning / OCR) để tự động hóa khâu duyệt hồ sơ gia sư.
  • Ứng dụng mô hình Gợi ý nâng cao (Deep Neural Matrix Factorization) khi số lượng người dùng đạt mốc > 50.000 users.
  • Tích hợp cổng thanh toán trực tuyến qua ví điện tử (MoMo, ZaloPay, VNPay) với cơ chế giữ tiền trung gian an toàn (Escrow Contract).

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

  • Học sinh & Phụ huynh: Tiếp cận nguồn gia sư chất lượng cao, minh bạch về học vấn và kỹ năng với mức học phí tối ưu, loại bỏ hoàn toàn tình trạng "tiền mất tật mang" từ các trung tâm lừa đảo.
  • Gia sư & Sinh viên: Nhận lớp dạy đúng chuyên môn và gần nơi cư trú; không bị giữ lương hay mất phí hoa hồng từ 40–60%; chủ động sắp xếp thời gian biểu linh hoạt.
  • Lập trình viên & Kỹ sư phần mềm: Cung cấp tài liệu tham khảo hoàn chỉnh về kiến trúc ứng dụng kết hợp giữa React Native, Node.js và Microservice Machine Learning (PCA + K-Means + Decision Tree).
  • Các đơn vị EdTech & Nhà nghiên cứu: Cơ sở thực nghiệm giá trị cho việc áp dụng các mô hình khai phá dữ liệu (Data Mining) và Học máy vào bài toán kinh tế chia sẻ (Sharing Economy) trong ngành giáo dục.

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

1. Yêu cầu cấu hình tối thiểu để triển khai và chạy ứng dụng myTutor là gì?

  • Phía Client: Thiết bị Android chạy phiên bản Android 8.0 (Oreo) trở lên, RAM tối thiểu 2GB, dung lượng bộ nhớ trống 100MB.
  • Phía Server Backend: Máy chủ ảo Linux (Ubuntu 18.04 LTS trở lên), tối thiểu 2 vCPU, 4GB RAM, cài đặt Node.js v14+, Python 3.8+ và kết nối mạng băng thông tối thiểu 100Mbps.

2. Hệ thống xử lý bài toán khởi động nguội (Cold-Start Problem) cho người dùng mới như thế nào?

myTutor giải quyết bài toán khởi động nguội bằng 2 bước:

  1. Crawl và làm sạch dữ liệu hồ sơ gia sư công khai từ các trang uy tín để xây dựng kho dữ liệu nền tảng ban đầu.
  2. Áp dụng Content-based Matching dựa trên thông tin khảo sát lúc đăng ký (Môn học, Địa bàn, Lịch rảnh) thay vì phụ thuộc vào lịch sử tương tác/rating của người dùng mới.

3. Thuật toán Hierarchy Matching có ưu điểm gì so với việc so khớp khoảng cách GPS thông thường?

Trong đô thị Việt Nam, khoảng cách đường kính hình học (đường chim bay) qua GPS thường không phản ánh chính xác điều kiện giao thông và ranh giới hành chính. Hierarchy Matching 4 cấp (Tỉnh -> Quận -> Phường -> Số nhà) đảm bảo phân vùng địa bàn giảng dạy chính xác, quen thuộc với thói quen di chuyển của sinh viên và phụ huynh, đồng thời tiết kiệm chi phí gọi API bản đồ ngoại vi (như Google Maps API).

4. Hệ thống đảm bảo tính bảo mật và quyền riêng tư thông tin người dùng ra sao?

  • Mật khẩu người dùng được mã hóa một chiều qua thuật toán bcrypt trước khi lưu vào MongoDB.
  • Mọi API giao tiếp giữa React Native và Node.js đều được bảo vệ bằng chữ ký số JSON Web Token (JWT) qua giao thức HTTPS có chứng chỉ SSL.
  • Số điện thoại và địa chỉ nhà chi tiết chỉ hiển thị khi có sự xác nhận kết nối đồng ý mời dạy giữa hai bên.

5. Khả năng mở rộng (Scalability) của hệ thống khi lượng người dùng tăng đột biến?

Nhờ kiến trúc phân tách độc lập giữa Node.js API (non-blocking I/O) và Python Recommendation Engine, hệ thống có thể dễ dàng scale ngang (Horizontal Scaling). Backend API có thể chạy cluster đa tiến trình, MongoDB chuyển đổi sang kiến trúc Sharding, và engine ML có thể đưa vào hàng đợi xử lý bất đồng bộ (Message Queue / Celery) để duy trì độ trễ dưới 2 giây ngay cả khi có hàng nghìn truy vấn đồng thời.


Kết luận

Đồ án khóa luận "Áp dụng các kỹ thuật học máy vào xây dựng ứng dụng tìm kiếm gia sư" đã giải quyết trọn vẹn và thực chất bài toán ghép nối cung – cầu gia sư trong kỷ nguyên số. Bằng việc phối hợp nhịp nhàng giữa nền tảng di động React Native, hệ thống máy chủ Node.js/MongoDB hiệu năng cao và đặc biệt là bộ giải thuật gợi ý học máy lai (Hierarchy Matching, PCA, K-Means, Decision Tree), ứng dụng myTutor đã chứng minh tính khả thi kỹ thuật vượt trội cùng giá trị xã hội sâu sắc: xóa bỏ chi phí môi giới tiêu cực, tối ưu hóa thời gian kết nối và minh bạch hóa chất lượng giảng dạy. Đề tài mở ra tiềm năng thương mại hóa mạnh mẽ cho các nền tảng EdTech kết nối cộng đồng học tập trực tuyến trong tương lai.