Trường Đại học Khoa học Tự nhiên – ĐHQG-HCM
Khoa Công nghệ Thông tin | Môn: CSC14004 | Học kỳ 2 – 2025/2026
- Giới thiệu
- Thành viên nhóm
- Tập dữ liệu sử dụng
- Cấu trúc thư mục
- Hướng dẫn cài đặt môi trường
- Hướng dẫn chạy notebook
- Tóm tắt nội dung từng phần
- Tài liệu tham khảo
Đồ án này thực hiện phân tích thống kê và tiền xử lý dữ liệu toàn diện trên 3 loại dữ liệu khác nhau: ảnh số, dữ liệu dạng bảng, và chuỗi thời gian. Với mỗi loại, nhóm thực hiện:
- Phân tích thống kê khám phá (EDA) chuyên sâu với kiểm định định lượng.
- Thiết kế và cài đặt pipeline tiền xử lý có thể tái sử dụng.
- Ablation study để đo lường tác động của từng kỹ thuật.
- Kiểm định thống kê (KS test, ANOVA, ADF, KPSS, v.v.) để củng cố lập luận.
| MSSV | Họ và Tên | Vai trò thực hiện |
|---|---|---|
| 23120403 | Huỳnh Trọng Viên | Tiền xử lý dữ liệu Ảnh & Quản lý dự án |
| 23120347 | Nguyễn Kim Quốc | Phân tích dữ liệu Ảnh & Thống kê mô tả |
| 23120257 | Bùi Trung Hiếu | Xử lý dữ liệu Chuỗi thời gian & Kiểm định thống kê |
| 23120243 | Trần Nhật Dương | Phân tích dữ liệu Bảng & Thống kê mô tả |
| 23120248 | Nguyễn Mạnh Hà | Tiền xử lý dữ liệu Bảng & Kỹ thuật đặc trưng |
- Quản lý dự án: Lập kế hoạch, phân công nhiệm vụ, theo dõi tiến độ và đảm bảo chất lượng đầu ra của nhóm.
- Kỹ thuật tiền xử lý ảnh: Thực hiện các bước chuẩn hóa, tăng cường dữ liệu (Data Augmentation) và đánh giá chất lượng ảnh sau tiền xử lý bằng các chỉ số SSIM và PSNR.
- Phân tích Hình ảnh (Image EDA): Trực quan hóa dữ liệu gốc, thực hiện kỹ thuật tăng cường dữ liệu (Data Augmentation) để xử lý mất cân bằng lớp.
- Giảm chiều & Trực quan: Áp dụng thuật toán PCA (Principal Component Analysis) và t-SNE để trực quan hóa dữ liệu ảnh trong không gian 2D.
- Xử lý Chuỗi thời gian (Time Series): Phân tích dữ liệu chứng khoán Toyota, thực hiện các phương pháp nội suy giá trị thiếu (Linear, Polynomial, Cubic Spline, Forward Fill).
- Đánh giá mô hình: Đo lường sai số nội suy thông qua các chỉ số MAE và RMSE.
- Kiểm định thống kê: Thực hiện kiểm định Ljung-Box test để phân tích tự tương quan của phần dư và kiểm tra tính dừng của chuỗi dữ liệu.
- Phân tích dữ liệu Bảng (Tabular EDA): Khám phá tập dữ liệu Melbourne House, thực hiện thống kê mô tả và trực quan hóa phân phối các biến.
- Phân tích tương quan: Xây dựng ma trận tương quan (Correlation Matrix) để xác định mối quan hệ giữa các đặc trưng và giá trị mục tiêu (Price).
- Làm sạch dữ liệu: Xác định và xử lý các giá trị thiếu (Missing values), xử lý các bản ghi trùng lặp và chuẩn hóa tên cột.
- Tiền xử lý dữ liệu Bảng: Thực hiện kỹ thuật Feature Engineering.
- Chuẩn hóa dữ liệu: Áp dụng các thang đo (Scaling) cho dữ liệu số để chuẩn bị cho các mô hình Machine Learning.
- Tối ưu cấu trúc: Quản lý và lưu trữ các tập dữ liệu sau tiền xử lý (
.csv) đảm bảo tính nhất quán cho các bước phân tích sau.
Bảng phân công chi tiết (tỉ lệ % đóng góp từng người) có trong
docs/Report.pdf.
| Phần | Tên tập dữ liệu | Nguồn | Kích thước |
|---|---|---|---|
| Phần 1 – Ảnh | Garbage Classification (12 classes) | Kaggle | ~15,500 ảnh, 12 lớp |
| Phần 2 – Bảng | Melbourne Housing Market | Kaggle | 34.857 dòng và 21 thuộc tính |
| Phần 4 – Chuỗi thời gian | Toyota Stock Dataset 1980-2025 | Kaggle | 11000 dòng và 7 thuộc tính |
Link Google Drive (dữ liệu thô): raw
Lưu ý: Dữ liệu thô không được đưa vào repository. Tải về và đặt vào thư mục
data/raw/theo hướng dẫn bên dưới.
DataMining_Group_10/
├── README.md # Tài liệu tổng quan
├── requirements.txt # Danh sách thư viện và phiên bản
│
├── data/
│ ├── raw/
│ └── processed/
│
├── notebooks/
│ ├── 01_EDA_image.ipynb # Phần 1: Phân tích thống kê tập ảnh
│ ├── 02_preprocessing_image.ipynb # Phần 1: Tiền xử lý ảnh
│ ├── 03_EDA_tabular.ipynb # Phần 2: EDA dữ liệu bảng
│ ├── 04_preprocessing_tabular.ipynb # Phần 2: Tiền xử lý bảng
│ ├── 05_temporal_EDA.ipynb # Phần 4: EDA chuỗi thời gian
│ └── 06_temporal_preprocessing.ipynb # Phần 4: Tiền xử lý chuỗi thời gian
│
└── docs/
└── Report.pdf # Báo cáo PDF
- Python 3.10 trở lên
- RAM tối thiểu 8 GB (khuyến nghị 16 GB cho Phần 1 & 2)
- Dung lượng ổ đĩa trống tối thiểu 5 GB
# 1. Clone repository
git clone https://github.com/htvien/data-mining-group-10.git
cd data-mining-group-10
# 2. Tạo và kích hoạt virtual environment
python -m venv venv
# Windows
venv\Scripts\activate
# Linux / macOS
source venv/bin/activate
# 3. Cài đặt các thư viện cần thiết
pip install -r requirements.txt
# 4. Tải dữ liệu và đặt vào đúng thư mục
# Xem link Google Drive ở Mục 3, sau đó giải nén vào:
# data/raw/
# 5. Khởi động Jupyter Lab
jupyter lab# Chạy lệnh này trong terminal để xác nhận các thư viện quan trọng đã sẵn sàng
python -c "import numpy, pandas, cv2, sklearn, scipy, statsmodels, imagehash; print('OK')"Quan trọng: Chạy các notebook theo đúng thứ tự vì notebook sau phụ thuộc vào file output của notebook trước.
| Thứ tự | Notebook | Mô tả |
|---|---|---|
| 1 | 01_EDA_image.ipynb |
Phân tích thống kê tập ảnh |
| 2 | 02_preprocessing_image.ipynb |
Tiền xử lý ảnh |
| 3 | 03_EDA_tabular.ipynb |
EDA dữ liệu bảng |
| 4 | 04_preprocessing_tabular.ipynb |
Tiền xử lý bảng |
| 5 | 05_temporal_EDA.ipynb |
EDA chuỗi thời gian |
| 6 | 06_temporal_preprocessing.ipynb |
Tiền xử lý chuỗi thời gian |
Lưu ý: Một số cell có thể mất nhiều thời gian (vài giờ) chạy do xử lý ảnh hoặc tính toán thống kê phức tạp. Vui lòng kiên nhẫn và đảm bảo không tắt kernel giữa chừng.
Cách chạy an toàn:
Kernel → Restart Kernel and Run All Cells
Tập dữ liệu: Garbage Classification – 15,452 ảnh, 12 lớp rác thải.
EDA (01_EDA_image.ipynb):
- Phân phối pixel theo kênh RGB với kiểm định KS test (p ≈ 0)
- Phát hiện mất cân bằng lớp: Imbalance Ratio = 8.77× (
clothesvsbrown-glass) - Phát hiện ảnh trùng lặp bằng pHash
- Phân tích độ sáng/tương phản theo lớp (ANOVA p ≈ 0)
- Phân tích Aspect Ratio, Edge Density (Canny), LBP texture
- Ma trận tương quan đặc trưng (Spearman) và Class Similarity Matrix
Tiền xử lý (02_preprocessing_image.ipynb):
- Đánh giá chất lượng resize tại 3 kích thước (32×32, 64×64, 128×128) bằng SSIM/PSNR
- So sánh 4 không gian màu (RGB, Grayscale, HSV, LAB) qua PCA Explained Variance
- So sánh 4 phương pháp chuẩn hóa với KS test định lượng
- Pipeline augmentation 7 phép biến đổi, trực quan hóa t-SNE trước/sau
- Ablation study đầy đủ (kNN + Logistic Regression, metric: F1-macro)
Tập dữ liệu: Melbourne Housing Dataset – ~34,000 dòng, 21 cột, biến mục tiêu là Price.
EDA (03_EDA_tabular.ipynb):
- Kiểm định phân phối: D'Agostino-Pearson (n > 5,000) hoặc Shapiro-Wilk (n ≤ 5,000), kết quả toàn bộ cột số là Non-normal
- Đề xuất Scaler tự động theo quy tắc:
StandardScaler(normal) →RobustScaler(lệch mạnh/kurtosis cao) →MinMaxScaler(non-normal nhẹ) - Phân tích tương quan Pearson & Spearman, trực quan hoá heatmap song song để phát hiện quan hệ phi tuyến và ảnh hưởng của outlier
- Phát hiện đa cộng tuyến với ngưỡng |r| > 0.9, đề xuất loại bỏ hoặc PCA
- Phân tích giá trị thiếu bằng
missingnovà Little's MCAR test, phân loại cơ chế MCAR/MAR/MNAR
Tiền xử lý (04_preprocessing_tabular.ipynb):
- Bổ sung biến dẫn xuất
Age = 2026 - YearBuilt, loại bỏ giá trị bất thường (Age < 0 hoặc > 200) - So sánh 5 phương pháp điền khuyết trên dữ liệu thiếu nhân tạo MCAR 10%: Mean, Median, Mode, KNN Imputation, MICE (IterativeImputer)
- KNN và MICE được chuẩn hoá z-score trước khi điền, sau đó hoàn nguyên về thang đo gốc
- Đánh giá định lượng bằng RMSE tại các vị trí bị che giấu nhân tạo
Tập dữ liệu: Toyota Stock (TM) – 11,542 phiên giao dịch từ 03/1980 đến 12/2025 (~45.8 năm), biến mục tiêu là Adj_Close.
EDA (05_temporal_EDA.ipynb):
- Time Plot & Phân rã chuỗi: Sử dụng mô hình nhân (Multiplicative)
y_t = T_t · S_t · ε_tvì biên độ dao động tăng theo mức giá; nhận diện xu hướng tăng dài hạn với các đứt gãy tại khủng hoảng 2008, COVID-19 - ACF & PACF: Tính độ trễ tối đa theo công thức
L_max = min(10·log₁₀n, n/5) = 40; ACF giảm rất chậm → chuỗi không dừng; PACF cắt sau lag 1 → cấu trúc AR(1) - Rolling Statistics: Cửa sổ 7, 30, 90 ngày; rolling mean và std biến thiên mạnh → tính dừng chưa đạt
Tiền xử lý (06_temporal_preprocessing.ipynb):
- Tạo thiếu nhân tạo MCAR 5% (577 điểm) để đánh giá khách quan các phương pháp nội suy
- So sánh 5 phương pháp nội suy: Forward Fill, Linear, Polynomial (bậc 2 & 3), Cubic Spline
- Đánh giá định lượng bằng MAE và RMSE tại các vị trí bị che giấu; kiểm tra tự tương quan phần dư bằng Ljung-Box test
- Kiểm định tính dừng: ADF, KPSS, Phillips-Perron; biến đổi Box-Cox và lấy sai phân để đạt dừng
- Phát hiện ngoại lai bằng Isolation Forest; kỹ thuật tạo đặc trưng thời gian (lag, rolling features, holiday flags)
- Scikit-learn Documentation – https://scikit-learn.org/
- Statsmodels Documentation – https://www.statsmodels.org/
- OpenCV Documentation – https://docs.opencv.org/
- ImageHash Library – https://github.com/JohannesBuchner/imagehash
- Imbalanced-learn – https://imbalanced-learn.org/
- arch Library (Unit Root Tests) – https://arch.readthedocs.io/
- Garbage Classification Dataset – https://www.kaggle.com/datasets/mostafaabla/garbage-classification
- Melbourne Housing Dataset – https://www.kaggle.com/datasets/anthonypino/melbourne-housing-market
- Toyota Stock Dataset – https://www.kaggle.com/datasets/mhassansab