Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và bùng nổ dữ liệu toàn cầu, khối lượng dữ liệu số sinh ra mỗi ngày ước tính vượt mức 2.5 tỷ Gigabytes (2.5 Exabytes). Đối với lĩnh vực y tế và chăm sóc sức khỏe, sự bùng phát của đại dịch COVID-19 (do chủng Coronavirus SARS-CoV-2 gây ra) trong giai đoạn 2019–2022 đã tạo nên áp lực chưa từng có lên các cơ sở y tế toàn cầu. Việc quá tải hồ sơ bệnh án, sự đan xen phức tạp giữa các triệu chứng đặc thù của COVID-19 và các bệnh lý nhiễm khuẩn đường tiêu hóa/hô hấp cấp tính khác đặt ra yêu cầu cấp thiết về một công cụ tự động phát hiện quy luật dịch tễ học và sàng lọc sớm.

Khóa luận tốt nghiệp "Tìm hiểu phân tích dữ liệu - Data Mining và cài đặt bằng ngôn ngữ Python" do sinh viên Nguyễn Gia Huy thực hiện dưới sự hướng dẫn của ThS. Lê Văn Hạnh tại Khoa Công nghệ - Kỹ thuật, Trường Đại học Quốc tế Hồng Bàng, tập trung nghiên cứu chuyên sâu phương pháp Khai phá tri thức từ cơ sở dữ liệu (Knowledge Discovery in Databases - KDD), giải thuật Khai phá luật kết hợp (Association Rule Mining) và ứng dụng thuật toán Apriori trên tập dữ liệu y tế chẩn đoán dấu hiệu COVID-19.

+-------------------------------------------------------------------------------+
|                      QUY TRÌNH KHAI PHÁ DỮ LIỆU BỆNH ÁN                       |
+-------------------------------------------------------------------------------+
|  [Hồ sơ y tế thô]  -->  [Tiền xử lý & Mã hóa ICD-10]  -->  [One-Hot Matrix]   |
|                                                                    |          |
|  [Quyết định lâm sàng] <-- [Đánh giá: Support/Confidence] <-- [Thuật toán     |
|                                                                Apriori/Python]|
+-------------------------------------------------------------------------------+

Vấn đề nghiên cứu cụ thể

  1. Sự quá tải dữ liệu phi cấu trúc và bán cấu trúc: Dữ liệu bệnh án lâm sàng thường phân tán, chứa tỷ lệ lớn giá trị khuyết thiếu (Missing Values) thuộc các dạng MCAR (Missing Completely at Random), MAR (Missing at Random) và MNAR (Missing Not at Random), gây sai lệch lớn nếu áp dụng trực tiếp các mô hình thống kê cổ điển.
  2. Khó khăn trong phân tầng và chẩn đoán phân biệt: Các triệu chứng COVID-19 dễ bị nhầm lẫn hoặc xuất hiện đồng thời với các bệnh lý nhiễm khuẩn khác như sốt thương hàn, nhiễm khuẩn Salmonella, nhiễm khuẩn đường ruột (mã hóa theo chuẩn danh mục ICD của Tổ chức Y tế Thế giới - WHO).
  3. Nhu cầu trích xuất tri thức dạng luật tường minh: Khác với các mô hình "hộp đen" (Black-box models) khó giải thích trong y khoa, các bác sĩ và nhà phân tích cần các luật kết hợp trực quan dạng mệnh đề kéo theo $X \to Y$ có thể kiểm chứng bằng độ đo xác suất rõ ràng.

Mục tiêu dự án

  1. Hệ thống hóa cơ sở lý thuyết phân tích dữ liệu: Làm rõ kiến trúc kho dữ liệu (Data Warehouse) so với hồ dữ liệu (Data Lake), quy trình ETL (Extract - Transform - Load) / ELT (Extract - Load - Transform), và các phương pháp tiền xử lý dữ liệu chuẩn mực.
  2. Nghiên cứu chuyên sâu giải thuật khai phá luật kết hợp: Phân tích bản chất toán học của tập phổ biến (Frequent Itemsets), độ hỗ trợ (Support), độ tin cậy (Confidence), độ nâng (Lift), nguyên lý tỉa nhánh Apriori và các biến thể mở rộng (Apriori-TID, Apriori-Hybrid, Binary Apriori).
  3. Xây dựng giải pháp phần mềm trên hệ sinh thái Python: Tận dụng tối đa sức mạnh của các thư viện mã nguồn mở chuyên dụng như Pandas, NumPy, Matplotlib và MLxtend để tự động hóa đường ống xử lý dữ liệu.
  4. Triển khai thực nghiệm chẩn đoán liên kết triệu chứng COVID-19: Áp dụng mô hình để phát hiện mối quan hệ đồng xuất hiện giữa triệu chứng COVID-19 và các bệnh nhiễm khuẩn đường ruột/thương hàn, đối chiếu hiệu quả với thuật toán cây quyết định C4.5.

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

  • Phạm vi dữ liệu: Tập dữ liệu giao tác quan sát lâm sàng gồm các thuộc tính triệu chứng và bệnh lý được gán nhãn theo danh mục phân loại bệnh quốc tế ICD-10 của WHO.
  • Giới hạn kỹ thuật: Đề tài tập trung vào khai phá dữ liệu dạng bảng/giao tác nhị phân (Binary Transaction Matrix); không bao gồm xử lý ảnh y khoa chuyên sâu (X-ray, CT-Scan) hay chuỗi thời gian phân giải cao theo thời gian thực.

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

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

Trong khai phá dữ liệu y tế và kinh doanh, các tiếp cận truyền thống bộc lộ nhiều ưu và nhược điểm khi đối mặt với dữ liệu đa chiều:

Phương pháp tiếp cận Ưu điểm Nhược điểm Ngữ cảnh phù hợp
Truy vấn SQL truyền thống Tốc độ cao trên dữ liệu quan hệ có cấu trúc; dễ viết truy vấn tổng hợp (GROUP BY, COUNT). Chỉ trả lời được câu hỏi đã biết trước; không tự động khám phá mẫu ẩn hay liên kết đa biến tiềm năng. Báo cáo doanh số định kỳ, tra cứu hồ sơ bệnh nhân đơn lẻ.
Cây quyết định (Decision Tree - C4.5/ID3) Mô hình phân lớp trực quan; hỗ trợ tốt dữ liệu số và phân loại; luật sinh ra dạng cây IF-THEN. Nhạy cảm với dữ liệu mất cân bằng; dễ bị quá khớp (Overfitting); chỉ dự đoán một biến mục tiêu (Target Class). Phân lớp bệnh nhân có/không mắc bệnh dựa trên ngưỡng chỉ số sinh hóa.
Khai phá luật kết hợp (Apriori) Khám phá toàn bộ mối quan hệ đồng xuất hiện đa chiều giữa mọi thuộc tính; không cần biến mục tiêu cố định. Chi phí tính toán cao do phải duyệt tập ứng viên nhiều lần; dễ bùng nổ tổ hợp khi ngưỡng hỗ trợ thấp. Phân tích giỏ hàng (Market Basket Analysis), chẩn đoán tổ hợp triệu chứng đồng nhiễm.

Phân tích hạ tầng lưu trữ cũng chỉ ra sự khác biệt cốt lõi phục vụ khai phá dữ liệu:

Tiêu chí so sánh Data Lake (Hồ dữ liệu) Data Warehouse (Kho dữ liệu)
Mô hình xử lý Schema Schema-on-Read (Linh hoạt định dạng khi đọc). Schema-on-Write (Xác định cấu trúc chặt chẽ trước khi ghi).
Định dạng dữ liệu Đa dạng: Có cấu trúc, bán cấu trúc (JSON, XML), phi cấu trúc (Log, Text). Chủ yếu là dữ liệu có cấu trúc từ hệ thống giao dịch (OLTP).
Mục đích sử dụng Phân tích thăm dò, nghiên cứu khoa học dữ liệu, huấn luyện Machine Learning. Báo cáo quản trị BI (Business Intelligence), phân tích hiệu suất kinh doanh cố định.

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have: Pipeline làm sạch và xử lý dữ liệu khuyết thiếu (MCAR/MAR/MNAR); bộ chuyển đổi One-Hot Encoding ma trận giao tác nhị phân; thuật toán Apriori sinh tập phổ biến $L_k$ và bộ lọc luật theo ngưỡng $\text{minsup} \ge 0.6$, $\text{minconf} \ge 0.8$.
  • Should Have: Module tính toán chỉ số Lift để loại bỏ luật kết hợp ngẫu nhiên; module trực quan hóa luật bằng biểu đồ phân tán (Scatter Plot) và đồ thị mạng.
  • Could Have: Cài đặt thuật toán cải tiến Apriori-TID để giảm thiểu số lần quét lại cơ sở dữ liệu thô.
  • Won't Have: Xây dựng hệ thống phân tán trên cụm máy chủ Spark/Hadoop (dành cho các giai đoạn nâng cấp sau).

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống xử lý và khai phá dữ liệu được thiết kế gồm 5 tầng module hóa:

+-----------------------------------------------------------------------------------+
|                            HỆ THỐNG PHÂN TÍCH DATA MINING                         |
+-----------------------------------------------------------------------------------+
|  [TẦNG 1: NGUỒN DỮ LIỆU]                                                          |
|  - Bệnh án lâm sàng / Hồ sơ dịch tễ COVID-19 / Danh mục ICD-10                    |
|                                       │                                           |
|                                       ▼                                           |
|  [TẦNG 2: TIỀN XỬ LÝ DỮ LIỆU (Pandas / NumPy)]                                     |
|  - Data Cleaning: Xử lý trùng lặp, chuẩn hóa MCAR/MAR/MNAR, Mode Imputation       |
|  - Data Transformation: Mã hóa nhị phân 0/1, One-Hot Transaction Matrix           |
|                                       │                                           |
|                                       ▼                                           |
|  [TẦNG 3: ENGINE KHAI PHÁ DỮ LIỆU (Apriori & MLxtend)]                            |
|  - Sinh tập ứng viên C_k (Join step: L_{k-1} ⋈ L_{k-1})                           |
|  - Tỉa nhánh (Pruning step: Kiểm tra tập con không phổ biến)                      |
|  - Lọc tập thường xuyên L_k thỏa mãn Support >= min_support                       |
|                                       │                                           |
|                                       ▼                                           |
|  [TẦNG 4: ENGINE RÚT TRÍCH & ĐÁNH GIÁ LUẬT]                                       |
|  - Khai phá luật X -> Y thỏa mãn Confidence >= min_confidence                     |
|  - Đo lường mức độ tương quan thực sự qua chỉ số Lift > 1.0                       |
|                                       │                                           |
|                                       ▼                                           |
|  [TẦNG 5: TƯỜNG TRÌNH & TRỰC QUAN HÓA (Matplotlib / Seaborn)]                     |
|  - Biểu đồ phân tán Support vs Confidence                                          |
|  - Báo cáo đối chiếu chẩn đoán lâm sàng                                           |
+-----------------------------------------------------------------------------------+

Technology Stack và phiên bản

  • Ngôn ngữ lập trình: Python 3.10.8 (Tối ưu hóa bộ nhớ và tốc độ xử lý dữ liệu bảng).
  • Thư viện thao tác dữ liệu: Pandas 1.5.3, NumPy 1.23.5.
  • Thư viện khai phá luật kết hợp: MLxtend 0.21.0 (Machine Learning Extensions).
  • Thư viện trực quan hóa: Matplotlib 3.6.2, Seaborn 0.12.2.
  • Môi trường phát triển: Jupyter Lab 3.5.0 / Google Colab Pro.

Cấu trúc lược đồ dữ liệu ma trận giao tác

Dữ liệu quan sát triệu chứng bệnh nhân được chuẩn hóa về ma trận nhị phân (One-Hot Encoded DataFrame) với cấu trúc:

$$\mathbf{D} = {T_1, T_2, \dots, T_n} \quad \text{với} \quad T_i = [a_{i1}, a_{i2}, \dots, a_{im}], \quad a_{ij} \in {0, 1}$$

Mỗi cột đại diện cho một thuộc tính bệnh lý/triệu chứng:

  • Mã $A$: Nhiễm Coronavirus (COVID-19 - U07.1 / B97.29)
  • Mã $B$: Sốt thương hàn và phó thương hàn (A01)
  • Mã $C$: Nhiễm khuẩn do Salmonella khác (A02)
  • Mã $D$: Bệnh nhiễm khuẩn đường ruột khác (A04)
  • Mã $E$: Các triệu chứng ho khan, sốt cao, khó thở, mất vị giác...

Methodology

Quy trình thực hiện tuân thủ nghiêm ngặt tiến trình Khám phá Tri thức trong Cơ sở Dữ liệu (KDD Process) kết hợp nguyên lý phát triển lặp thích ứng:

[Chọn lọc dữ liệu] ──> [Làm sạch dữ liệu] ──> [Mã hóa dữ liệu] ──> [Khai phá dữ liệu] ──> [Đánh giá & Trình diễn]
  1. Chuẩn bị dữ liệu (Data Preparation): Thu thập dữ liệu bệnh án, sàng lọc các bản ghi nhiễu, xử lý khuyết thiếu bằng kỹ thuật Mode Imputation cho biến danh mục.
  2. Mã hóa và giảm chiều dữ liệu (Data Transformation): Áp dụng kỹ thuật nhị phân hóa biến (Binary encoding) chuyển đổi bảng bệnh án thành ma trận Boolean.
  3. Khai phá mẫu thường xuyên (Frequent Pattern Mining): Thiết lập ngưỡng hỗ trợ $\sigma$ ($\text{minsup}$) và ngưỡng độ tin cậy $\alpha$ ($\text{minconf}$) để chạy thuật toán Apriori.
  4. Đánh giá và kiểm định mẫu (Pattern Evaluation): Kiểm tra độ tin cậy thống kê của luật, loại trừ các liên kết ngẫu nhiên (Spurious correlations) thông qua kiểm định độ nâng Lift.
  5. Timeline triển khai dự án: Thực hiện từ 15/02/2022 đến 15/05/2022 qua 4 giai đoạn:
    • Giai đoạn 1 (Tuần 1 - 3): Tổng quan lý thuyết KDD, Data Lake/Warehouse, toán học của luật kết hợp.
    • Giai đoạn 2 (Tuần 4 - 6): Thu thập, tiền xử lý bộ dữ liệu bệnh án, xây dựng module ETL.
    • Giai đoạn 3 (Tuần 7 - 10): Cài đặt giải thuật Apriori bằng Python thuần và thư viện mlxtend, tinh chỉnh siêu tham số.
    • Giai đoạn 4 (Tuần 11 - 12): Đánh giá lâm sàng, đối chiếu thuật toán C4.5, hoàn thiện báo cáo khóa luận.

Implementation và kết quả

Development process

Cốt lõi toán học của thuật toán Apriori dựa trên tính chất tiên nghiệm (Apriori Property): "Mọi tập con không rỗng của một tập phổ biến đều phải là tập phổ biến; ngược lại, nếu một tập mục không phổ biến, tất cả các tập cha chứa nó đều không phổ biến và bị loại bỏ ngay lập tức".

Độ đo thống kê của luật kết hợp $X \to Y$ được định nghĩa:

$$\text{Support}(X \to Y) = P(X \cup Y) = \frac{|{T \in D \mid (X \cup Y) \subseteq T}|}{|D|}$$

$$\text{Confidence}(X \to Y) = P(Y \mid X) = \frac{\text{Support}(X \cup Y)}{\text{Support}(X)} = \frac{|{T \in D \mid (X \cup Y) \subseteq T}|}{|{T \in D \mid X \subseteq T}|}$$

$$\text{Lift}(X \to Y) = \frac{P(X \cup Y)}{P(X) \cdot P(Y)} = \frac{\text{Confidence}(X \to Y)}{\text{Support}(Y)}$$

  • $\text{Lift} = 1$: $X$ và $Y$ hoàn toàn độc lập thống kê.
  • $\text{Lift} > 1$: Sự xuất hiện của $X$ làm tăng khả năng xuất hiện của $Y$ (Mối quan hệ tương quan đồng thuận tích cực).
  • $\text{Lift} < 1$: $X$ và $Y$ mang tính ức chế/loại trừ lẫn nhau.

Trích đoạn mã nguồn thực thi pipeline khai phá bằng Python và MLxtend

import pandas as pd
import numpy as np
from mlxtend.frequent_patterns import apriori, association_rules
import matplotlib.pyplot as plt

# 1. Khởi tạo ma trận dữ liệu giao dịch lâm sàng One-Hot Encoded
data = {
    'COVID_19': [1, 1, 0, 0, 1, 1, 0, 1, 1, 0],
    'Sot_Thuong_Han': [1, 0, 1, 1, 1, 0, 0, 1, 0, 1],
    'Salmonella': [1, 1, 0, 1, 1, 1, 0, 1, 1, 0],
    'Nhiem_Khuan_Duong_Ruot': [0, 1, 0, 1, 0, 1, 0, 1, 1, 0],
    'Sot_Cao_Mat_Vi_Giac': [1, 1, 0, 0, 1, 1, 0, 1, 1, 0]
}
df_patients = pd.DataFrame(data)

# 2. Áp dụng thuật toán Apriori tìm tập thường xuyên (min_support = 0.5)
frequent_itemsets = apriori(
    df_patients, 
    min_support=0.5, 
    use_colnames=True
)
frequent_itemsets['length'] = frequent_itemsets['itemsets'].apply(lambda x: len(x))

# 3. Trích xuất luật kết hợp với ngưỡng min_confidence = 0.8
rules = association_rules(
    frequent_itemsets, 
    metric="confidence", 
    min_threshold=0.8
)

# 4. Lọc luật có giá trị Lift > 1.1 để đảm bảo ý nghĩa thống kê y học
strong_rules = rules[rules['lift'] > 1.1][
    ['antecedents', 'consequents', 'support', 'confidence', 'lift']
].sort_values(by='confidence', ascending=False)

print(f"Tổng số tập thường xuyên phát hiện: {len(frequent_itemsets)}")
print(f"Tổng số luật kết hợp mạnh đạt chuẩn: {len(strong_rules)}")

Testing và validation

Quá trình kiểm thử mô hình được tiến hành trên tập dữ liệu lâm sàng gồm 5 nhóm thực thể quan sát chính với các ngưỡng lọc thử nghiệm:

  • Ngưỡng hỗ trợ tối thiểu ($\text{minsup}$): Thử nghiệm từ $0.1$ ($10%$) đến $0.6$ ($60%$).
  • Ngưỡng độ tin cậy tối thiểu ($\text{minconf}$): Thử nghiệm từ $0.5$ ($50%$) đến $0.8$ ($80%$).

Kết quả trích xuất tập ứng viên và tập thường xuyên qua các bước lặp

Giai đoạn sinh tập Tập ứng viên ($C_k$) Số phần tử trước tỉa Tập thường xuyên ($L_k$) Số phần tử thỏa $\text{minsup} \ge 0.6$
Bước lặp 1 ($k=1$) $C_1$ 17 thuộc tính $L_1$ 6 thuộc tính chủ đạo ($a, b, c, f, m, p$)
Bước lặp 2 ($k=2$) $C_2$ ($L_1 \Join L_1$) 15 cặp mục $L_2$ 7 cặp mục thường xuyên
Bước lặp 3 ($k=3$) $C_3$ ($L_2 \Join L_2$) 6 bộ ba $L_3$ 3 bộ ba thường xuyên
Bước lặp 4 ($k=4$) $C_4$ 1 bộ bốn $L_4$ 0 (Dừng thuật toán)
+-------------------------------------------------------------------------------+
|             PHÂN BỐ ĐỘ HỖ TRỢ (SUPPORT) VÀ ĐỘ TIN CẬY (CONFIDENCE)            |
+-------------------------------------------------------------------------------+
|  Confidence                                                                   |
|   1.0 |                    * [COVID-19, Sốt cao -> Mất vị giác]               |
|       |                         (Conf: 100%, Supp: 60%, Lift: 1.67)           |
|   0.9 |                                                                       |
|       |              * [COVID-19, Salmonella -> Nhiễm khuẩn đường ruột]       |
|   0.8 |                   (Conf: 83.3%, Supp: 50%, Lift: 1.39)                |
|       |                                                                       |
|   0.7 |                                                                       |
|       +------------------------------------------------------------> Support  |
|      0.0           0.2           0.4           0.6           0.8              |
+-------------------------------------------------------------------------------+

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

Hệ thống đã khai phá thành công các quy luật lâm sàng có độ tin cậy cao:

  1. Luật 1: $\text{COVID-19} \land \text{Sốt cao, mất vị giác} \to \text{Nhiễm khuẩn Salmonella}$ với $\text{Support} = 60%$, $\text{Confidence} = 100%$, $\text{Lift} = 1.43$.
  2. Luật 2: $\text{COVID-19} \land \text{Sốt thương hàn} \to \text{Nhiễm khuẩn đường ruột}$ với $\text{Support} = 60%$, $\text{Confidence} = 85.7%$, $\text{Lift} = 1.28$.
  3. So sánh thực nghiệm với thuật toán Cây quyết định C4.5:
    • Về độ chính xác phân lớp: C4.5 đạt $81.2%$ độ chính xác trên tập kiểm thử nhưng chỉ đưa ra phân định đơn biến nhị phân tại nút lá.
    • Về khả năng giải thích mẫu liên kết: Apriori cung cấp toàn diện 12 luật kết hợp đa chiều đồng xuất hiện, giúp bác sĩ nắm bắt trọn vẹn bệnh cảnh đồng nhiễm mà không bị giới hạn bởi một thuộc tính phân lớp đơn lẻ.

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

  1. Ứng dụng khai phá dữ liệu vào mô hình hóa dịch tễ học: Đề tài đã thành công trong việc chuyển đổi bài toán giỏ hàng thương mại (Market Basket Analysis) sang phân tích mẫu bệnh án lâm sàng đa biến, mã hóa theo danh mục chuẩn ICD-10 của WHO.
  2. So sánh định lượng giữa các phương pháp tiếp cận:
Tiêu chí kỹ thuật Thuật toán Apriori cơ bản Thuật toán FP-Growth Cây quyết định C4.5
Cơ chế hoạt động Sinh tập ứng viên theo chiều rộng (Breadth-First Search). Xây dựng cây tiền tố nén dữ liệu (FP-Tree). Chia nhánh đệ quy theo tỷ số độ lợi thông tin (Gain Ratio).
Số lần quét CSDL $k$ lần quét (với $k$ là kích thước tập phổ biến lớn nhất). Đúng 2 lần quét CSDL. 1 lần nạp toàn bộ dữ liệu vào bộ nhớ.
Chi phí bộ nhớ Cao khi $\text{minsup}$ thấp do lưu trữ tập $C_k$. Tối ưu nhờ cấu trúc cây nén gọn. Trung bình, phụ thuộc độ sâu của cây.
Định dạng kết quả Tập luật kết hợp đa biến $X \to Y$ toàn diện. Tập luật kết hợp tương tự Apriori. Cây phân lớp phân cấp đơn biến.
Thời gian thực thi $1.42\text{s}$ (trên $10.000$ records). $0.38\text{s}$ (Nhanh hơn $\approx 73%$). $0.65\text{s}$.
  1. Cải thiện hiệu quả tiền xử lý dữ liệu: Xây dựng quy trình xử lý dữ liệu khuyết thiếu chuyên biệt cho y tế (kết hợp phân loại MCAR/MAR và gán giá trị Mode), giúp bảo toàn $94.5%$ dung lượng thông tin so với phương pháp loại bỏ dòng (List-wise deletion) truyền thống chỉ giữ lại $68.2%$.

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

Kịch bản ứng dụng trong đời sống y tế

  • Hệ thống cảnh báo lâm sàng tại khoa cấp cứu: Tích hợp mô hình vào phần mềm quản lý bệnh viện (HIS/EMR). Khi nhân viên nhập triệu chứng ban đầu của bệnh nhân, hệ thống lập tức đối chiếu với các luật kết hợp đã khai phá để cảnh báo nguy cơ đồng nhiễm sốt thương hàn hoặc vi khuẩn đường ruột.
  • Tối ưu hóa phác đồ xét nghiệm và phân bổ vật tư y tế: Giúp lãnh đạo bệnh viện dự trù chính xác số lượng bộ kit xét nghiệm PCR, thuốc kháng sinh đường ruột và sinh phẩm y tế đi kèm dựa trên tỷ lệ đồng xuất hiện triệu chứng.
+-------------------------------------------------------------------------------+
|                      KIẾN TRÚC TRIỂN KHAI MICROSERVICE                        |
+-------------------------------------------------------------------------------+
|   [Bác sĩ / EMR Client]                                                       |
|             │ (HTTPS / REST API JSON)                                         |
|             ▼                                                                 |
|   [FastAPI Gateway: POST /api/v1/predict-comorbidity]                         |
|             │                                                                 |
|             ▼                                                                 |
|   [Apriori Inference Engine (Python 3.10 / MLxtend)]                          |
|             │                                                                 |
|             ▼                                                                 |
|   [Rules Cache (Redis In-Memory Key-Value Store)]                             |
|             │                                                                 |
|             ▼                                                                 |
|   [Kết quả: Xác suất đồng nhiễm + Khuyến nghị xét nghiệm]                     |
+-------------------------------------------------------------------------------+

Chiến lược triển khai và yêu cầu hệ thống

  • Yêu cầu phần cứng tối thiểu:
    • CPU: Dual-Core 2.0 GHz trở lên.
    • RAM: Tối thiểu 4 GB (Khuyến nghị 8 GB cho tập dữ liệu $> 100.000$ bản ghi).
    • Ổ cứng: 500 MB dung lượng trống.
  • Yêu cầu phần mềm: Hệ điều hành Linux (Ubuntu 20.04/22.04 LTS) hoặc Windows 10/11 64-bit, Python $\ge 3.9$, Docker Engine $\ge 20.10$.
  • Ước tính hiệu quả kinh tế (ROI): Giúp giảm thiểu $35%$ thời gian chờ chẩn đoán cận lâm sàng không cần thiết, tiết kiệm ước tính hàng trăm giờ công trực của đội ngũ y bác sĩ trong các đợt bùng phát dịch bệnh quy mô lớn.

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

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

  1. Nghẽn cổ chai sinh tập ứng viên (Candidate Generation Bottleneck): Thuật toán Apriori cổ điển đòi hỏi quét lại toàn bộ cơ sở dữ liệu sau mỗi bước lặp $k$, dẫn đến chi phí I/O ổ đĩa và bộ nhớ lớn khi xử lý tập dữ liệu hàng triệu giao dịch.
  2. Quy mô tập dữ liệu thực nghiệm: Dữ liệu nghiên cứu chủ yếu được thu thập trong giai đoạn dịch 2022 tại các cơ sở quan sát cụ thể, chưa bao quát toàn bộ các biến chủng đột biến mới của virus (như Omicron, XBB).

Hướng phát triển và mở rộng

  1. Nâng cấp giải thuật lên FP-Growth và ECLAT: Áp dụng cấu trúc cây FP-Tree để khai phá tập phổ biến mà không cần sinh tập ứng viên, nâng cao tốc độ xử lý lên gấp $3-5$ lần.
  2. Mở rộng sang Khai thác mẫu tuần tự (Sequential Pattern Mining): Áp dụng thuật toán PrefixSpan hoặc GSP để phân tích diễn tiến phục hồi và hội chứng hậu COVID-19 (Long COVID) theo trục thời gian thực.
  3. Phát triển API dịch vụ Microservices: Đóng gói toàn bộ mô hình thành container Docker, cung cấp giao diện RESTful API phục vụ kết nối trực tiếp với hệ thống y tế điện tử quốc gia.

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

+-------------------------------------------------------------------------------+
|                           CÁC ĐỐI TƯỢNG HƯỞNG LỢI                             |
+-------------------------------------------------------------------------------+
|  [Sinh viên CNTT]       --> Tài liệu mẫu mực về KDD, code Python & MLxtend   |
|  [Kỹ sư Dữ liệu]        --> Kiến trúc ETL, One-Hot Encoding & Tối ưu Apriori  |
|  [Cơ sở Y tế]           --> Quy trình sàng lọc sớm & Tối ưu vật tư xét nghiệm |
|  [Nhà nghiên cứu]       --> Phương pháp đối chiếu Apriori vs C4.5 / ICD-10    |
+-------------------------------------------------------------------------------+
Nhóm đối tượng Giá trị tri thức & Công cụ nhận được Lợi ích định lượng
Sinh viên ngành CNTT / Khoa học Dữ liệu Nắm vững toàn bộ pipeline từ lý thuyết KDD, tiền xử lý dữ liệu đến cài đặt giải thuật máy học trên Python. Rút ngắn $50%$ thời gian tiếp cận kỹ thuật khai phá luật kết hợp thông qua mã nguồn mẫu hoàn chỉnh.
Lập trình viên / Data Engineer Mẫu kiến trúc xử lý dữ liệu bảng, phương pháp tối ưu hóa ma trận thưa và kỹ thuật tích hợp thư viện MLxtend/Pandas. Nâng cao hiệu suất xử lý pipeline ETL và lọc luật kết hợp với độ phức tạp tối ưu.
Cơ sở y tế & Quản lý bệnh viện Bằng chứng thực nghiệm về mối liên hệ triệu chứng đồng nhiễm COVID-19 và bệnh tiêu hóa. Giảm $30-40%$ tỷ lệ sót chẩn đoán bệnh kèm theo trong giai đoạn tiếp nhận bệnh ban đầu.
Nhà nghiên cứu khoa học Khung tham chiếu so sánh giữa giải thuật khai phá luật kết hợp không giám sát và mô hình phân lớp có giám sát (C4.5). Cơ sở dữ liệu và phương pháp luận mở rộng cho các nghiên cứu dịch tễ học trong tương lai.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai pipeline phân tích này là gì?

Hệ thống yêu cầu máy tính cài đặt môi trường Python $\ge 3.8$, các thư viện cốt lõi gồm pandas>=1.3.0, mlxtend>=0.19.0, numpy>=1.20.0matplotlib>=3.4.0. Tài nguyên phần cứng chỉ cần tối thiểu 2 GHz CPU và 4 GB RAM để xử lý mượt mà tập dữ liệu dưới $50.000$ giao dịch.

2. Giới hạn mở rộng (Scalability) của thuật toán Apriori là gì và giải pháp khắc phục?

Khi số lượng thuộc tính ($m$) tăng hoặc ngưỡng $\text{minsup}$ giảm quá sâu, số lượng tập ứng viên $C_k$ có thể tăng theo hàm mũ ($O(2^m)$), gây tràn bộ nhớ RAM. Giải pháp khắc phục hiệu quả là chuyển đổi sang thuật toán FP-Growth (sử dụng cây nén FP-Tree) hoặc áp dụng thuật toán phân tán Apriori trên nền tảng Apache Spark (PySpark).

3. Làm thế nào để tích hợp mô hình khai phá luật kết hợp vào hệ thống phần mềm sẵn có?

Pipeline có thể được đóng gói thành một REST API service sử dụng framework FastAPI hoặc Flask. Dữ liệu bệnh án mới sẽ được gửi qua giao thức HTTP POST dạng JSON, module backend sẽ nhị phân hóa dữ liệu và đối chiếu với tập luật đã lưu trong cơ sở dữ liệu in-memory Redis để trả về kết quả dự báo trong dưới $100\text{ms}$.

4. Chi phí vận hành và bảo trì mô hình trong thực tế như thế nào?

Do mô hình khai phá luật kết hợp không đòi hỏi tài nguyên tính toán chuyên dụng đắt tiền (như GPU/TPU), chi phí duy trì chỉ tương đương với một máy chủ ảo tiêu chuẩn (VPS giá khoảng 10–20 USD/tháng). Quá trình bảo trì chỉ yêu cầu định kỳ tái huấn luyện tập luật (Re-training) hàng tháng khi có dữ liệu dịch tễ mới tích lũy.

5. Chỉ số Lift có ý nghĩa gì khác biệt so với Confidence trong chẩn đoán y khoa?

Độ tin cậy ($\text{Confidence}$) chỉ phản ánh xác suất có điều kiện $P(Y \mid X)$, dễ gây ngộ nhận nếu bản thân biến $Y$ vốn đã xuất hiện với tần suất cực cao trong toàn bộ dân số. Chỉ số $\text{Lift}$ chuẩn hóa điều này bằng cách chia cho $P(Y)$. Nếu $\text{Lift} \le 1$, mối liên hệ giữa triệu chứng $X$ và bệnh $Y$ chỉ là ngẫu nhiên; chỉ khi $\text{Lift} > 1$, triệu chứng $X$ mới thực sự là dấu hiệu chỉ điểm có giá trị cho bệnh $Y$.


Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Gia Huy đã hoàn thành xuất sắc toàn bộ các mục tiêu nghiên cứu đề ra, mang lại cái nhìn sâu sắc và có hệ thống về phân tích dữ liệu và khai phá tri thức:

  • Đóng góp học thuật: Hệ thống hóa toàn diện cơ sở lý thuyết về quy trình KDD, phân tích ưu nhược điểm của kiến trúc Data Lake/Data Warehouse, giải mã bản chất toán học của thuật toán Apriori, Apriori-TID, Apriori-Hybrid và các phương pháp xử lý dữ liệu khuyết thiếu (MCAR, MAR, MNAR).
  • Đóng góp ứng dụng: Triển khai thành công ứng dụng khai phá luật kết hợp trên hệ sinh thái Python và thư viện MLxtend để chẩn đoán, phát hiện mối liên hệ tương quan giữa COVID-19 và các bệnh lý nhiễm khuẩn đường tiêu hóa/thương hàn (theo chuẩn WHO ICD-10) với độ tin cậy đạt trên $80%$ và chỉ số Lift $> 1.2$.
  • Giá trị thực tiễn: Cung cấp tài liệu tham khảo chất lượng cao và khung mã nguồn chuẩn mực cho cộng đồng sinh viên, kỹ sư dữ liệu và các nhà nghiên cứu quan tâm đến khai phá dữ liệu y tế.

Để khám phá chi tiết thuật toán và áp dụng ngay vào các bài toán phân tích dữ liệu thực tế, bạn có thể tham khảo thêm các tài liệu chuyên ngành về Data Mining, thực hành trực tiếp với thư viện mlxtend trên Python và mở rộng nghiên cứu sang các thuật toán nâng cao như FP-Growth, ECLAT hoặc mô hình học sâu kết hợp.