https://drive.google.com/drive/folders/1B2Pu5nmr2xHzRG2M-fIYY7jCqa_Tzyqj?usp=sharing
1. Vào link (Tải data.zip và mote_locs về)
2. Tạo folder data (Trong folder này tạo các folder con: raw, processed, synthetic)
3. Giải nén data.zip và lấy data.txt, mote_locs bỏ vào raw)
# 1. Start Kafka
docker-compose -f docker/docker-compose.yml up -d
# 2. Run producer
python src/streaming/producer.py
# 3. Run consumer + model
python src/main.py
# 4. Run API
uvicorn api.app:app --reload
# 5. Open UI
ui/index.html
Task này tập trung vào việc phân tích và xử lý bộ dữ liệu Intel Lab Data nhằm chuẩn bị đầu vào chất lượng cao cho các mô hình phát hiện bất thường.
Dữ liệu bao gồm:
- data.txt: chuỗi thời gian cảm biến
- mote_locs.txt: tọa độ không gian (X, Y) của sensor <br>
=> Hai nguồn dữ liệu này sẽ được kết hợp (join) để phục vụ cả phân tích thời gian và không gian.
Quy trình bao gồm:
- Khám phá dữ liệu (EDA - Temporal + Spatial)
- Làm sạch dữ liệu (Data Cleaning)
- Tạo đặc trưng (Feature Engineering)
- Giả lập dữ liệu streaming có nhãn (Data Simulation)
- Hiểu rõ đặc tính dữ liệu cảm biến:
- Noise
- Drift
- Missing Values
- Spatial inconsistency
- Xây dựng pipeline preprocessing đáng tin cậy
- Tích hợp thông tin không gian (sensor location)
- Tạo dataset có nhãn để phục vụ evaluation
- Chuẩn bị dữ liệu đầu vào cho mô hình IF + Autoencoder
data/
├── raw/
│ ├── data.txt # time-series sensor data
│ └── mote_locs.txt # sensor locations (x, y)
├── processed/ # dữ liệu sau xử lý + đã join
└── synthetic/ # dữ liệu giả lập có anomaly
notebooks/
└── eda.ipynb # phân tích dữ liệu
src/data/
├── loader.py # load + join data & location
├── preprocessing.py # cleaning + feature engineering
├── simulator.py # generate stream + inject anomaly
configs/
└── config.yaml # cấu hình xử lý dữ liệu
1. Data Understanding (EDA)
- Visualize time-series của từng sensor
- Phân tích:
- Noise: Xác định mức độ nhiễu trong dữ liệu
- Drift: Kiểm tra sự thay đổi theo thời gian
- Missing values (pattern & ratio)
- Spatial Analysis:
- Visualize vị trí sensor (scatter plot x-y)
- Phân tích:
- Sự khác biệt giữa các sensor lân cận
- Phát hiện sensor bất thường so với vùng
- Kiểm tra phân phối dữ liệu:
- Histogram, boxplot
- Correlation giữa các biến
- Phân tích tương quan giữa các biến
📍 Output: - Notebook eda.ipynb
- Báo cáo insight về đặc điểm dữ liệu (EDA_report.md)
2. Data Cleaning
- Xử lý missing:
- Interpolation cho khoảng ngắn
- Giữ NaN / loại bỏ cho khoảng dài
- Lọc nhiễu:
- Rolling mean (window nhỏ)
- Validation: So sánh trước/sau để đảm bảo không mất anomaly
📍 Output: - Dữ liệu sạch trong data/processed/
3. Feature Engineering
- Tạo các đặc trưng phục vụ model:
- Rolling mean
- Rolling standard deviation
- Derivative (rate of change)
- Spatial Features: Chênh lệch với sensor lân cận:
- Tính trung bình của sensor lân cận
- Tính chênh lệch giữa sensor và trung bình lân cận
delta = value - mean(neighbors)
📍 Output:
- Dữ liệu có đặc trưng trong data/processed/
4. Data Simulation (Streaming + Label)
- Tạo luồng dữ liệu giả lập từ dữ liệu gốc
- Inject anomaly theo kịch bản:
- Spike: Giá trị đột ngột tăng hoặc giảm
- Drift: Giá trị thay đổi dần theo thời gian
- Noise burst: Tăng nhiễu đột ngột
- Spatial anomaly: Sensor bất thường so với lân cận
- Gán nhãn cho dữ liệu (0: normal, 1: anomaly)
📍 Output:
- data/synthetic/stream.csv
- data/synthetic/labels.csv
data/raw/
├── data.txt
└── mote_locs.txt
- Config từ configs/config.yaml
- Notebook EDA (có visualization + insight)
- Dataset đã xử lý (processed/)
- Dataset có anomaly (synthetic/)
- Pipeline xử lý dữ liệu (src/data/)
- Không interpolate toàn bộ dữ liệu một cách mù quáng
- Không over-smoothing làm mất anomaly
- Luôn visualize trước và sau mỗi bước xử lý
- Spatial data
- Nhiệm vụ:
- Phân tích dữ liệu thời gian (temporal)
- Phân tích không gian (spatial từ mote_locs.txt)
- Xác định:
- Noise
- Drift
- Missing values
- Visualization:
- Time-series plot
- Sensor location (x, y)
- Histogram, boxplot
- Deliverables:
- notebooks/eda.ipynb
- EDA_report.md (bắt buộc có insight + recommendation)
- Nhiệm vụ:
- Implement preprocessing:
- Xử lý missing values (interpolation + handling)
- Smoothing (rolling mean)
- Feature engineering:
- rolling mean, std
- derivative
- spatial features (chênh lệch với neighbors)
- Đảm bảo:
- Không làm mất anomaly
- Dữ liệu sạch sẽ, có đặc trưng tốt cho model
- Implement preprocessing:
- Deliverables:
- src/data/preprocessing.py
- data/processed/ (dữ liệu đã xử lý)
Để đảm bảo integration không lỗi, dữ liệu sau preprocessing phải có format:
timestamp, mote_id, x, y,
temperature, humidity, light, voltage,
[features...]
- timestamp: thời gian ghi nhận
- mote_id: ID sensor
- x, y: tọa độ sensor
- temperature, humidity, light, voltage: giá trị cảm biến gốc
- features: các đặc trưng mới tạo (rolling mean, std, derivative, spatial features)