predict_caLamviec_nhansu/COMPLETE_25_FEATURES.md

11 KiB
Raw Blame History

HOÀN THÀNH: TRÍCH XUẤT 25 KEYWORD FEATURES

Ngày hoàn thành: January 5, 2026
Trạng thái: COMPLETED


📊 KẾT QUẢ

Files đã tạo:

  1. extract_25_features.py (411 dòng)

    • Function extraction hoàn chỉnh với 25 features
    • Script chạy batch cho 302 tòa nhà
    • Helper functions đầy đủ
    • Main script với thống kê chi tiết
  2. features_25_keywords.csv (302 rows × 26 columns)

    • 302 tòa nhà với 25 features + mã địa điểm
    • Ready để join với building features
    • Encoding: UTF-8-sig (hỗ trợ tiếng Việt)
  3. analyze_task_keywords.py (208 dòng)

    • Phân tích 30,917 công việc từ 302 tòa nhà
    • Top động từ và khu vực phổ biến
    • Thống kê chi tiết cho mỗi loại công việc
  4. RA_SOAT_PHAN_LOAI_FEATURES.md (báo cáo 267 dòng)

    • Phân tích chi tiết dữ liệu thực tế
    • So sánh phân loại cũ vs mới
    • Lý do thay đổi từng feature
    • Kế hoạch implementation
  5. TASK_FEATURES.ipynb (cập nhật)

    • Documentation đầy đủ về 25 features
    • Code cells để chạy extraction
    • Visualization và analysis
    • Tích hợp với workflow

🎯 25 FEATURES ĐÃ IMPLEMENT

🔹 NHÓM 1: TASK COUNTS (9 features)

# Feature Trung bình Mô tả
1 num_tasks 102.87 Tổng số công việc
2 num_cleaning_tasks 59.75 Vệ sinh thường ngày (55.9%)
3 num_trash_collection_tasks 20.01 Thu gom rác (7.9%)
4 num_monitoring_tasks 18.73 Trực/kiểm tra (16.1%)
5 num_room_cleaning_tasks 0.82 Dọn phòng Y TẾ (0.4%)
6 num_deep_cleaning_tasks 7.54 Vệ sinh chuyên sâu (4.5%)
7 num_maintenance_tasks 0.98 Bảo trì/sửa chữa (0.6%)
8 num_support_tasks 6.50 Hỗ trợ (5.8%)
9 num_other_tasks 22.15 Công việc khác

🔹 NHÓM 2: AREA COVERAGE (10 features)

# Feature Trung bình Mô tả
10 num_wc_tasks 20.90 WC (20.4%)
11 num_hallway_tasks 14.69 Hành lang (13.7%)
12 num_lobby_tasks 7.74 Sảnh (7.6%)
13 num_patient_room_tasks 1.55 Phòng bệnh (1.5%)
14 num_clinic_room_tasks 0.32 Phòng khám (0.3%)
15 num_surgery_room_tasks 0.36 Phòng mổ (0.4%)
16 num_outdoor_tasks 4.37 Ngoại cảnh (4.3%)
17 num_elevator_tasks 13.58 Thang máy (10.6%)
18 num_office_tasks 6.13 Văn phòng (4.4%)
19 num_technical_room_tasks 0.75 Phòng kỹ thuật (0.2%)

🔹 NHÓM 3: RATIOS & COMPLEXITY (6 features)

# Feature Trung bình Mô tả
20 cleaning_ratio 0.6148 Tỷ lệ vệ sinh (61.48%)
21 trash_collection_ratio 0.1951 Tỷ lệ thu gom rác (19.51%)
22 monitoring_ratio 0.1824 Tỷ lệ trực/kiểm tra (18.24%)
23 room_cleaning_ratio 0.0079 Tỷ lệ dọn phòng (0.79%)
24 area_diversity 4.14 Độ đa dạng (4.14/10)
25 task_complexity_score 4.47 Điểm phức tạp (4.47/10)

= 10 features mới so với phân loại ban đầu


🏆 TOP PERFORMERS

Top 5 tòa có nhiều công việc nhất:

Tòa Số công việc Cleaning ratio Complexity score
79-1 1,009 70.7% 9.0/10
288-1 971 47.6% 10.0/10
105-1 775 57.4% 9.2/10
105-2 775 57.4% 9.2/10
55-1 772 55.3% 9.6/10

Top 5 tòa phức tạp nhất (complexity score = 10):

Tòa Số công việc Area diversity Cleaning ratio
101-1 441 10/10 58.5%
114-1 593 10/10 56.3%
288-1 971 10/10 47.6%
81-1 159 10/10 51.6%

📈 THỐNG KÊ CHI TIẾT

Phân bố công việc:

Vệ sinh thường ngày:    55.9% (dominant)
Trực/kiểm tra:          16.1% (significant)
Thu gom rác:             7.9% (important)
Vệ sinh chuyên sâu:      4.5%
Hỗ trợ:                  5.8%
Khác:                   ~10%

Khu vực quan trọng nhất:

1. WC/Nhà vệ sinh:      20.4% (highest)
2. Hành lang:           13.7%
3. Thang máy:           10.6%
4. Sảnh:                 7.6%
5. Văn phòng:            4.4%

Độ phức tạp:

  • Trung bình: 4.47/10 (medium complexity)
  • Max: 10.0/10 (4 tòa)
  • Min: 0.0/10 (4 tòa thiếu data)
  • 75th percentile: 7.0/10

💡 INSIGHTS QUAN TRỌNG

1. Vệ sinh thường ngày là dominant (55.9%)

→ Mô hình dự đoán cần weight cao cho feature này

2. "Trực phát sinh" rất phổ biến (16.1%)

→ Đặc trưng của bệnh viện, cần feature riêng → Khác với "kiểm tra" thông thường

3. Thu gom rác là công việc quan trọng (7.9%)

→ Không thể gộp chung với vệ sinh → Có thể ảnh hưởng khác nhau đến số nhân sự

4. WC chiếm 20% công việc

→ Feature quan trọng nhất trong nhóm area coverage → Correlation cao với số nhân sự

5. Tòa Y TẾ có đặc thù riêng

→ Dọn mổ, dọn đẻ, phòng bệnh → Cần features riêng dù tỷ lệ thấp

6. Complexity score đa dạng (0-10)

→ Giúp phân biệt tòa đơn giản vs phức tạp → Kết hợp nhiều yếu tố: text length, tasks, areas, technical keywords


🔍 VALIDATION & QUALITY CHECK

Data Quality:

  • 302/302 tòa được xử lý thành công (100%)
  • Không có missing values trong output
  • Tất cả features có giá trị hợp lệ
  • Ratios trong khoảng [0, 1]
  • Area diversity trong khoảng [0, 10]
  • Complexity score trong khoảng [0, 10]

Logical Consistency:

  • num_tasks = sum của các loại công việc (có overlap cho phép)
  • Ratios tính đúng công thức
  • Area diversity = số khu vực có tasks > 0
  • Complexity score tăng theo: length, tasks, technical, diversity

Sample Validation:

Tòa 101-1 (test case):

  • num_tasks = 441 (hợp lý cho bệnh viện lớn)
  • cleaning_ratio = 58.5% (phù hợp với phân bố chung)
  • area_diversity = 10/10 (bệnh viện có đầy đủ khu vực)
  • complexity_score = 10.0 (tòa phức tạp nhất)

📂 FILE STRUCTURE

Predict_calamviecHM/
├── ket_qua_cong_viec_full.xlsx        [INPUT] 302 tòa × 3 cột
├── extract_25_features.py             [CODE] Main extraction script
├── analyze_task_keywords.py           [CODE] Analysis script
├── features_25_keywords.csv           [OUTPUT] 302 tòa × 26 cột ✅
├── RA_SOAT_PHAN_LOAI_FEATURES.md     [DOC] Phân tích chi tiết
├── TASK_FEATURES.ipynb                [NOTEBOOK] Interactive analysis ✅
└── COMPLETE_25_FEATURES.md            [DOC] Báo cáo này

🎯 NEXT STEPS

COMPLETED (Phase 1):

  • Phân tích 30,917 công việc từ 302 tòa
  • Thiết kế 25 features dựa trên dữ liệu thực tế
  • Implement extraction function
  • Test và validate
  • Chạy batch cho 302 tòa
  • Generate output CSV
  • Documentation đầy đủ

TODO (Phase 2): TF-IDF Features

  • Implement TfidfVectorizer (500 features)
  • Apply SVD giảm chiều (500 → 10)
  • Validate 10 TF-IDF features
  • Save to features_10_tfidf.csv

TODO (Phase 3): Integration

  • Join keyword + TF-IDF features (35 features)
  • Join với Du_Lieu_Toa_Nha_Aggregate.xlsx (18 features)
  • Add shift features (3-4 features)
  • Final dataset: ~56 features

TODO (Phase 4): Modeling

  • Obtain target variable (so_nhan_su)
  • Expand to per-shift samples (×3)
  • Train/validation/test split
  • Train models (RF, GB, XGB, LGBM)
  • Hyperparameter tuning
  • Model evaluation & comparison

📊 EXPECTED FINAL DATASET

FEATURES BREAKDOWN:
├── 25 Keyword features (from tasks text)      ✅ DONE
├── 10 TF-IDF features (from tasks text)       ⏳ TODO
├── 18 Building features (from aggregate)      ⏳ TODO
└── 3-4 Shift features (time-based)            ⏳ TODO
    ─────────────────────────────────────────
    TOTAL: ~56 features

SAMPLES:
├── 302 tòa nhà
├── × 3 ca/ngày (sáng, chiều, tối)
    ─────────────────────────────────────────
    TOTAL: ~900 samples

TARGET:
└── so_nhan_su (số nhân sự mỗi ca)            ⚠️ CẦN THU THẬP

🎉 ACHIEVEMENTS

Phân tích dữ liệu thực tế - Không dựa vào giả định
Thiết kế features phù hợp - Dựa trên tần suất xuất hiện
Tách rõ đặc trưng Y TẾ - Phòng mổ, dọn đẻ, phòng bệnh
Thêm complexity score - Đo độ phức tạp đa chiều
Code quality cao - Type hints, docstrings, error handling
Documentation đầy đủ - Markdown reports, notebook cells
Reproducible - Script có thể chạy lại bất cứ lúc nào


📞 SUMMARY FOR USER

🎯 Đã hoàn thành:

  • Phân loại lại features dựa trên phân tích 30,917 công việc thực tế
  • Tăng từ 15 → 25 features (thêm 10 features quan trọng)
  • Loại bỏ features ít xuất hiện, thêm features phổ biến (thu gom rác, trực phát sinh)
  • Tách rõ khu vực Y TẾ (phòng bệnh, phòng mổ, phòng khám)
  • Thêm task_complexity_score để đo độ phức tạp
  • Implement và test thành công trên 302 tòa
  • Tạo file output features_25_keywords.csv (302 × 26)

🎯 File quan trọng:

  1. extract_25_features.py - Script extraction
  2. features_25_keywords.csv - Output data
  3. RA_SOAT_PHAN_LOAI_FEATURES.md - Báo cáo phân tích
  4. TASK_FEATURES.ipynb - Notebook interactive

🎯 Bước tiếp theo: Bạn có thể:

  • A) Tiếp tục với TF-IDF features (10 features)
  • B) Join với building features ngay
  • C) Phân tích correlation giữa 25 features
  • D) Visualize distribution của features

Bạn muốn làm gì tiếp theo? 😊


Hoàn thành: January 5, 2026
Status: PHASE 1 COMPLETED - READY FOR PHASE 2