Skip to content

htvien/data-mining-group-10

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSC14004 – Khai Thác Dữ Liệu và Ứng Dụng

Đồ Án 1: Tiền Xử Lý Dữ Liệu

Python Jupyter License

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


Mục lục

  1. Giới thiệu
  2. Thành viên nhóm
  3. Tập dữ liệu sử dụng
  4. Cấu trúc thư mục
  5. Hướng dẫn cài đặt môi trường
  6. Hướng dẫn chạy notebook
  7. Tóm tắt nội dung từng phần
  8. Tài liệu tham khảo

1. Giới thiệu

Đồ á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.

2. Thành viên nhóm

Danh sách thành viên nhóm

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

Chi tiết nhiệm vụ từng cá nhân

1. Huỳnh Trọng Viên (23120403)

  • 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.

2. Nguyễn Kim Quốc (23120347)

  • 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.

3. Bùi Trung Hiếu (23120257)

  • 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.

4. Trần Nhật Dương (23120243)

  • 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.

5. Nguyễn Mạnh Hà (23120248)

  • 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.


3. Tập dữ liệu sử dụng

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.


4. Cấu trúc thư mục

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

5. Hướng dẫn cài đặt môi trường

Yêu cầu hệ thống

  • 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

Cài đặt từng bước

# 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

Kiểm tra cài đặt

# 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')"

6. Hướng dẫn chạy notebook

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

7. Tóm tắt nội dung từng phần

Phần 1 – Tiền xử lý dữ liệu ảnh (01 & 02)

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× (clothes vs brown-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)

Phần 2 – Tiền xử lý dữ liệu bảng (03 & 04)

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 missingno và 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

Phần 4 – Tiền xử lý chuỗi thời gian (05 & 06)

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 · ε_t vì 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 MAERMSE 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)

8. Tài liệu tham khảo


Nhóm 10 – CSC14004 – HK2 2025/2026 | Trường ĐH Khoa học Tự nhiên, ĐHQG-HCM

About

Khai thác dữ liệu và ứng dụng - CQ2023/24 - Nhóm 10

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors