DataMine AI —
Từng bước từ data thô đến insight
Hướng dẫn thực tế, theo đúng luồng làm việc trong app — từ khi bạn có file Excel/CSV thô đến khi xuất báo cáo hoàn chỉnh. Không cần biết lập trình.
Luồng tổng quan — Tôi có data thô, làm gì?
5 phút đọc để biết toàn bộ quy trình trước khi bắt tay vào làm
https://cengagechapter10-nurarv2yv8uwffhazzezdz.streamlit.app/ — không cần cài đặt gì. Trên điện thoại cũng dùng được.aistudio.google.com → Get API Key. Không có key vẫn dùng được nhưng không có AI Chat và AI Blueprint.Giao diện app — Ở đâu làm gì
Cần biết để không bị lạc khi dùng
Sidebar (cột trái)
Nơi nhập API Key, upload file, chọn sheet, chọn file đang phân tích. Theo dõi tiến độ 4 bước workflow ở đây.
Tab điều hướng (đầu trang)
Sau khi upload file, trang chính chia thành các tab: 💬 AI Chat luôn ở đầu tiên. Tiếp theo là Prep Data, EDA, Run ML Models, Results.
Vùng nội dung chính
Hiển thị preview data, công cụ xử lý, biểu đồ EDA, cấu hình model, kết quả metrics — tuỳ theo tab đang chọn.
Change Log
Mỗi bước Prep Data được ghi lại ở Change Log. Có nút ↩️ Undo để hoàn tác bước cuối nếu làm nhầm.
Bước 1 — Upload & Đọc dữ liệu
Mục tiêu: Đưa data vào app và kiểm tra app đọc đúng chưa
🎯 Các bước thực hiện
.xlsx .xlsm .xls .csv .json — tối đa 30MB.✅ Dấu hiệu upload thành công
Bảng preview hiện ra đúng với tên cột bạn mong đợi. Sidebar chuyển sang bước 2 trong workflow indicator. Stat bar ở đầu trang hiển thị số dòng, cột, % null.
❌ Nếu cột bị sai / đọc nhầm
Thử tăng "Dòng header" nếu có hàng thừa ở đầu. Nếu CSV bị encoding lỗi (tiếng Việt vỡ), lưu lại file CSV với encoding UTF-8 trước khi upload.
Bước 2 — Làm sạch & Chuẩn bị dữ liệu
Mục tiêu: Biến data thô thành data sạch mà model có thể hiểu được
📍 Vị trí trong app
13 Công cụ Prep Data
Dùng theo đúng thứ tự, áp dụng từng bước một
| Công cụ | Làm gì | Khi nào dùng | Lưu ý thực tế |
|---|---|---|---|
| Fill Missing | Điền giá trị bị thiếu: số → mean, text → mode (giá trị phổ biến nhất) | Khi có cột nào đó có % null > 0 (xem ở stat bar) | Làm trước tiên trước mọi bước khác |
| Remove Duplicates | Xóa dòng bị trùng lặp hoàn toàn, giữ lại dòng đầu | Khi duplicate count > 0 | App báo số dòng xóa trước khi confirm |
| Cap Outlier | Kẹp giá trị bất thường lại tại ngưỡng 3×IQR, giữ nguyên dòng | Có outlier nhưng dòng đó vẫn hợp lệ (không phải lỗi nhập) | Dòng không bị xóa, chỉ giá trị thay đổi |
| Clean Outlier | Xóa hẳn dòng có outlier cực đoan | Outlier là lỗi nhập liệu thực sự (vd: tuổi = 999) | Dùng sau khi đã xem EDA để biết outlier ở đâu |
| Encode Ordinal | Mã hóa text → số có thứ tự: Low=1, Medium=2, High=3 | Biến text có thứ tự tự nhiên (vd: Low/Medium/High, S/M/L/XL) | Có thể tùy chỉnh thứ tự trong expander |
| Encode Nominal | One-Hot: tạo cột 0/1 riêng cho mỗi giá trị | Biến text không có thứ tự (vd: màu sắc, loại sản phẩm, tỉnh thành) | N giá trị → N cột mới, dataset sẽ rộng hơn |
| Binning | Chia cột số liên tục thành N khoảng bằng nhau theo số lượng (Equal Count), đánh số 1, 2, ..., N | Trước khi chạy Naive Bayes. Biến liên tục cần rời rạc hóa | Giống hệt Solver Analytics — dùng khi muốn kết quả so sánh được |
| Grouping | Gộp nhiều giá trị text thành ít nhóm hơn theo mapping tự định nghĩa | Khi có quá nhiều category (vd: 50 tỉnh → 3 miền) | Tự nhập mapping: HN → Miền Bắc, TP.HCM → Miền Nam |
| Filter | Lọc chỉ giữ lại các giá trị chọn của một cột cụ thể | Muốn phân tích một subset (vd: chỉ khách hàng ở HN) | Hiển thị số dòng còn lại trước khi apply |
| Partition | Giữ toàn bộ class thiểu số (vd: Loan=1) + lấy N dòng sample từ class đa số (vd: Loan=0) | Khi dataset mất cân bằng nặng (imbalanced): vd: 10% class 1, 90% class 0 | Vd: all 480 Loan=1 + random 256 Loan=0 → dataset cân bằng hơn |
| head(n) | Giữ n dòng đầu tiên của dataset | Dataset quá lớn, muốn thử nhanh với một phần nhỏ | Deterministic, luôn lấy đúng n dòng đầu |
| sample(n) | Lấy ngẫu nhiên n dòng (seed=42, reproducible) | Lấy mẫu đại diện từ dataset lớn | seed=42 đảm bảo kết quả giống nhau mỗi lần |
| Ceiling | Làm tròn lên số nguyên gần nhất (2.1 → 3; 3.0 → 3) | Biến số thập phân không cần thiết sau khi tính toán | Thường dùng sau khi tạo derived feature |
Bước 3 — Khám phá dữ liệu (EDA)
Mục tiêu: Hiểu data trước khi chọn model — đừng bỏ qua bước này
📍 Vị trí trong app
Overview — Nhìn tổng quan
Số dòng, cột, kiểu dữ liệu từng cột, % null, top values. Xem trước khi làm bất cứ điều gì.
Distributions — Phân phối
Histogram và boxplot cho từng cột số. Phát hiện skewed data, outlier, phân phối có chuẩn không.
Correlations — Tương quan
Heatmap correlation giữa các cột số. Tìm feature nào tương quan cao với target, feature nào redundant.
Missing & Outliers
Bar chart tỷ lệ null từng cột. Boxplot phát hiện outlier trước khi quyết định Cap hay Clean.
Bước 4 — Chọn và chạy mô hình ML
Mục tiêu: Cấu hình đúng rồi nhấn Run — app làm phần còn lại
🎯 Quy trình cấu hình model
Bước 5 — Đọc và hiểu kết quả
Mục tiêu: Biết model tốt hay không và tại sao
Confusion Matrix
Đọc từng ô để biết model sai ở đâu
Đúng: predict 0, thật 0
Sai: predict 1, thật 0
Sai: predict 0, thật 1
Đúng: predict 1, thật 1
| Metric | Công thức | Ý nghĩa thực tế |
|---|---|---|
| Accuracy | (TN+TP) / Total | Tổng % dự đoán đúng |
| Sensitivity | TP / (TP+FN) | Bắt được bao nhiêu % class 1 thực sự (quan trọng với fraud, loan) |
| Specificity | TN / (TN+FP) | Tránh báo nhầm bao nhiêu % class 0 |
| Precision | TP / (TP+FP) | Khi predict là 1, đúng bao nhiêu % |
| AUC | Area under ROC | Khả năng phân biệt tổng quát — xem bên dưới |
ROC Curve & AUC
Đánh giá tổng thể khả năng phân biệt của model
AUC ≥ 0.90
Xuất sắc — Model phân biệt tốt class 0 vs 1. Có thể dùng để triển khai thực tế.
AUC 0.70–0.90
Tốt — Dùng được. Thử tune hyperparameters hoặc thêm feature để cải thiện.
AUC < 0.70
Yếu — Kiểm tra lại data quality, thêm feature có ý nghĩa, hoặc thử model khác.
Decile Lift Table
Ứng dụng thực tế nhất: biết nên target ai trước
App sắp xếp toàn bộ validation set theo xác suất dự đoán giảm dần, chia thành 10 nhóm bằng nhau (mỗi nhóm = 10% data). Lift = tỷ lệ class 1 trong nhóm đó ÷ tỷ lệ class 1 trung bình toàn bộ.
Bước 6 — Xuất báo cáo Excel
File Excel xuất ra có cùng cấu trúc với Solver Analytics/XLMiner
📍 Cách xuất file
Dùng để so sánh before/after — không bị thay đổi
Tất cả thuật toán ML
Chọn cái nào, khi nào dùng, default params tương thích Solver
App tự động detect: nếu features là integer (đã qua Binning) → dùng CategoricalNB giống Solver. Nếu features là số thực → dùng GaussianNB. Đây là thuật toán được tối ưu nhất để cho kết quả giống Solver.
→ Dùng khi: muốn kết quả so sánh được với Solver Analytics, dataset vừa, đã qua Binning.
Tìm ranh giới tuyến tính tối ưu giữa các lớp. Hiệu quả khi data gần phân phối chuẩn, ít features hơn samples. Không cần scale trước.
→ Dùng khi: features numeric, dataset không quá lớn, muốn model interpretable.
Classify dựa trên k láng giềng gần nhất. k=3 (Solver default). k nhỏ → overfit; k lớn → underfit. Cần scale data trước nếu features có đơn vị khác nhau.
→ Dùng khi: muốn baseline nhanh, dataset không quá lớn (<10k dòng).
Cây quyết định IF-THEN dễ giải thích. Sau khi chạy, xem Decision Tree Rules trong expander để đọc luật dưới dạng ngôn ngữ tự nhiên. max_depth=5 tránh overfit.
→ Dùng khi: cần giải thích model cho người không chuyên, cần business rules cụ thể.
Tìm hyperplane tối ưu. C lớn = fit sát data; C nhỏ = generalize tốt hơn. rbf kernel cho non-linear boundaries. Chậm hơn với dataset lớn.
→ Dùng khi: dataset nhỏ-vừa, features đã được scale, cần độ chính xác cao.
Ensemble 100 cây quyết định — robust, ít overfit, tự xử lý missing value tốt. Cung cấp Feature Importance ranking để biết cột nào quan trọng nhất.
→ Dùng khi: muốn accuracy cao nhất, cần Feature Importance, dataset có noise.
Baseline interpretable nhất. Coefficient của từng feature nói lên tác động trực tiếp. C=regularization (nhỏ → regularize mạnh hơn). Nhanh và ổn định.
→ Dùng khi: muốn hiểu tác động của từng biến, baseline đơn giản, cần deploy nhanh.
Dùng khi target là số liên tục (vd: giá nhà, doanh thu). Metrics: R² (≥0.8 tốt; <0.4 yếu) và RMSE (sai số trung bình). Khác với Classification — không có Confusion Matrix.
→ Dùng khi: target là số liên tục, không phải 0/1 hay loại.
Phân nhóm tự động, không cần nhãn. Dùng Elbow Chart để chọn K tối ưu (K tại điểm "gãy" của đường inertia). Silhouette Score ≥ 0.5 = tốt. Data được StandardScaler trước khi cluster.
→ Dùng khi: muốn phân khúc khách hàng, tìm nhóm tự nhiên trong data mà không có nhãn.
Tìm luật: "Nếu mua A thì hay mua B". Support = tần suất A∩B. Confidence = P(B|A). Lift > 1 = A và B có liên quan dương tính. Phù hợp cho market basket analysis.
→ Dùng khi: data là giao dịch (purchase, click), muốn tìm patterns kiểu "sản phẩm nào hay đi cùng nhau".
So sánh với Solver Analytics / XLMiner
Giống nhau ở đâu, khác nhau ở đâu, và khi nào nên dùng cái nào
DataMine AI
Web app miễn phí, không cần cài. Chạy trên browser. Hỗ trợ AI Chat, AI Blueprint, tự động suggest thuật toán. Export ra Excel dạng Solver.
✅ Miễn phí, mọi thiết bị, AI-powered, 10+ models
Solver Analytics / XLMiner
Add-in Excel. Chạy trong Excel. Giao diện quen thuộc. Chuẩn hóa giảng dạy ở nhiều trường đại học. Cần license.
📌 Cần Excel license, desktop only, chuẩn học thuật
| Tính năng | Solver Analytics | DataMine AI | Trạng thái |
|---|---|---|---|
| Binning | Equal Count, giá trị = Rank 1..N | pd.qcut Equal Count, rank 1..N | ✅ Khớp hoàn toàn |
| Naive Bayes | CategoricalNB, Laplace alpha=1, Prior=Empirical | Auto-detect CategoricalNB/GaussianNB, alpha=1 | ✅ Khớp hoàn toàn |
| KNN | k=3 mặc định | k=3 mặc định (thay được) | ✅ Khớp hoàn toàn |
| Metrics | Accuracy, Sensitivity, Specificity, Precision, F1, AUC | Giống hệt, cùng công thức tính | ✅ Khớp hoàn toàn |
| Decile Lift | 10 rows: Decile, Mean, Std.Dev, Min, Max, ID, Lift | Giống hệt cấu trúc | ✅ Khớp hoàn toàn |
| PostProb | PostProb:0, PostProb:1 cho từng record | Giống hệt (100 dòng đầu) | ✅ Khớp hoàn toàn |
| Sheet format | NB_TrainingScore, NB_ValidationScore, NB_ValidationLiftChart | Model_TrainScore, Model_ValScore, Model_LiftChart | 🔵 Khớp format |
| Decision Trees | max_depth=5, gini | max_depth=5, gini + class_weight=balanced | 🔵 Gần giống |
| Validation split | 40% validation mặc định | 40% mặc định (thay được) | ✅ Khớp hoàn toàn |
| Partition/Oversample | 50% success class trong training | Partition tool + Oversample option | 🔵 Tương đương |
| Logistic Regression | Ridge/Lasso với Cross-Validation | L2, C=1 cố định (không có CV) | ⚠️ Khác — không có CV |
| AI Chat | Không có | Có — Gemini AI giải thích kết quả | 🔵 DataMine AI có thêm |
| Random Forest, SVM | Có (XLMiner) | Có | 🔵 Tương đương |
| Platform | Excel Add-in, Windows only | Web browser, mọi thiết bị | 🔵 Khác nhau — đều dùng được |
- Bin các biến liên tục với 20 khoảng trước khi chạy Naive Bayes
- Chọn Validation = 40% (Solver Analytics default)
- Dùng Partition: đảm bảo ~50% class 1 trong training set (giống oversampling của Solver)
- Trong Hyperparameter Settings, chọn "Default (Solver style)"
- Chạy Naive Bayes — app tự dùng CategoricalNB với alpha=1
AI Chat
Hỏi AI về data của bạn, kết quả model, hoặc kiến thức data science
Vị trí trong app
Tab "💬 AI Chat" ở đầu tiên trong navigation bar — luôn sẵn sàng, không cần upload data trước.
Context-aware
AI tự biết bạn đang làm gì: file nào đang mở, bao nhiêu dòng, kết quả model nào đã chạy, AUC là bao nhiêu.
API Key
Cần Gemini API Key miễn phí từ aistudio.google.com → Get API Key. Nhập vào ô đầu tiên trong sidebar. Giới hạn 15 request/phút với Flash model.
Hỏi gì hiệu quả?
Thay vì "Kết quả model tốt không?", hỏi: "Dựa vào Naive Bayes AUC=0.92 và Lift Decile 1=6×, model này có phù hợp để phân khúc khách hàng marketing không?"