aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa các khái niệm AI, mạng nơ-ron và lập trình trên máy tính

Đánh giá AI phân loại ticket: vì sao accuracy cao vẫn bỏ sót việc khẩn?

Suong Nguyen by Suong Nguyen
24/10/2026
in AI
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Bạn thêm AI để chuyển ticket khẩn sang hàng đợi ưu tiên. Dashboard báo accuracy 90%, nhưng đội hỗ trợ vẫn bỏ sót toàn bộ việc khẩn. Hai điều này có thể xảy ra đồng thời khi dữ liệu lệch lớp: phần lớn ticket vốn không khẩn.

Bài này giúp bạn xây một phép kiểm tra nhỏ trước khi quyết định đưa bộ phân loại vào quy trình. Dữ liệu bên dưới hoàn toàn tự tạo để minh họa phép tính, không phải kết quả của một model hay hệ thống thực tế.

Điều kiện và phạm vi

Ví dụ dùng Python chuẩn, đã chạy bằng Python 3.9.6. Tài liệu được đối chiếu ngày 24/10/2026. Chúng ta chỉ xét hai nhãn: 1 là khẩn, 0 là thông thường. Việc xác định một ticket có thực sự khẩn cần quy tắc nghiệp vụ và người gán nhãn; công thức không tự giải quyết phần đó.

1. Ghi đủ bốn loại kết quả

Theo cách gọi trong tài liệu Google, TP là dự đoán khẩn đúng; FP là báo khẩn nhầm; FN là bỏ sót ticket khẩn; TN là nhận đúng ticket thường. Confusion matrix của Google giải thích quan hệ giữa nhãn thật, dự đoán và ngưỡng phân loại.

Với đội hỗ trợ, hãy dịch các ô này thành việc cụ thể. FP khiến người trực phải mở thêm ticket không cần ưu tiên. FN khiến một ticket cần xử lý sớm tiếp tục nằm trong hàng đợi thường. Nếu chỉ ghi tổng số dự đoán đúng, bạn mất dấu hai kiểu lỗi có tác động khác nhau này.

Accuracy tính tỷ lệ dự đoán đúng trên mọi ticket. Precision hỏi trong các ticket bị gắn nhãn khẩn, bao nhiêu ticket thực sự khẩn. Recall hỏi trong các ticket thực sự khẩn, hệ thống tìm ra bao nhiêu. Các công thức tương ứng được trình bày trong tài liệu về các metric phân loại.

2. Tự tính trên một bộ dữ liệu nhỏ

Lưu đoạn sau thành ticket_metrics.py. Hàm trả None khi không có mẫu số, để bạn phân biệt “chưa tính được” với một kết quả bằng 0.

def metrics(actual, predicted):
    if not actual or len(actual) != len(predicted):
        raise ValueError("Hai danh sach phai cung do dai va khong rong")
    if any(type(x) is not int or x not in (0, 1)
           for x in actual + predicted):
        raise ValueError("Chi chap nhan nhan integer 0 hoac 1")

    tp = sum(a == 1 and p == 1 for a, p in zip(actual, predicted))
    fp = sum(a == 0 and p == 1 for a, p in zip(actual, predicted))
    fn = sum(a == 1 and p == 0 for a, p in zip(actual, predicted))
    tn = sum(a == 0 and p == 0 for a, p in zip(actual, predicted))
    divide = lambda n, d: n / d if d else None
    return {
        "tp": tp, "fp": fp, "fn": fn, "tn": tn,
        "accuracy": divide(tp + tn, len(actual)),
        "precision": divide(tp, tp + fp),
        "recall": divide(tp, tp + fn),
    }

actual = [1] * 10 + [0] * 90
always_normal = [0] * 100
candidate = [1] * 8 + [0] * 2 + [1] * 12 + [0] * 78

print(metrics(actual, always_normal))
print(metrics(actual, candidate))

Chạy bằng python3 ticket_metrics.py. Trường hợp luôn chọn thường cho TP=0, FP=0, FN=10, TN=90: accuracy là 0.9, precision không xác định, recall là 0.0. Trường hợp thứ hai cho TP=8, FP=12, FN=2, TN=78: accuracy là 0.86, precision là 0.4, recall là 0.8. Đây là kết quả phép tính trên fixture đã chạy, không phải benchmark AI.

3. Chọn tiêu chí theo cách vận hành

Candidate thứ hai tìm được tám trong mười ticket khẩn nhưng đưa thêm mười hai ticket thường vào hàng ưu tiên. Bạn cần hỏi đội hỗ trợ có đủ khả năng rà hai mươi ticket đó hay không. Chỉ từ accuracy giảm 90% xuống 86% chưa thể kết luận candidate kém hơn cho mục tiêu này.

Một cách thực hành là ghi trước điều kiện chấp nhận: ai xử lý FP, ai rà FN, ticket nào phải có người kiểm tra và khi nào được tắt tự động chuyển hàng đợi. Con số mục tiêu phải xuất phát từ năng lực thực tế của nhóm; không sao chép một ngưỡng tùy ý từ ví dụ.

Nếu model trả score, thay đổi ngưỡng sẽ thay đổi cách chia nhãn. Hãy chọn ngưỡng trên validation set, rồi đánh giá trên test set được giữ riêng. Hướng dẫn chia tập dữ liệu giải thích vai trò khác nhau của các tập và nguy cơ điều chỉnh quá nhiều theo kết quả test.

Kiểm tra trước khi dùng dữ liệu thật

Rà vài mẫu của từng ô thay vì chỉ xem dashboard. Đọc lại cả nội dung gốc, nhãn chuẩn và lý do dự đoán nếu có. Với ticket được gửi lại nhiều lần, cân nhắc gom cùng một nhóm trước khi chia tập để câu gần như giống nhau không rơi vào cả hai phía. Đây là lựa chọn thiết kế bộ đánh giá cần ghi lại để người khác tái tạo được.

Các lỗi dễ gặp là đảo nhãn dương, coi precision không xác định là 100%, hoặc thử nhiều prompt trên test set rồi báo kết quả tốt nhất. Khi số ticket khẩn ít, luôn công bố cả số lượng TP/FP/FN/TN để người đọc thấy quy mô mẫu.

Gợi ý tiếp theo

Tạo một file đánh giá có ID ticket đã ẩn thông tin riêng tư, nhãn chuẩn, nhãn dự đoán và phiên bản cấu hình. Bắt đầu bằng đánh giá ngoại tuyến; chỉ mở tự động hóa sau khi đã xác định trách nhiệm xử lý lỗi. Precision và recall giúp bạn đặt đúng câu hỏi, còn quyết định vận hành cần thêm bằng chứng từ dữ liệu của nhóm.

Nguồn tham khảo

  • Google: threshold và confusion matrix
  • Google: accuracy, precision và recall
  • Google: chia train, validation và test

Tags: AIĐánh giá mô hìnhPython
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa các khái niệm AI, mạng nơ-ron và lập trình trên máy tính

JSON của AI: kiểm tra schema và nghiệp vụ trước khi lưu dữ liệu

by Suong Nguyen
23/10/2026
0

Tách kiểm tra cú pháp, cấu trúc và bằng chứng nguồn để đầu ra JSON của AI trở thành dữ liệu có thể rà soát.

Minh họa các khái niệm AI, mạng nơ-ron và lập trình trên máy tính

Prompt injection: đặt ranh giới quyền khi AI đọc tài liệu và gọi tool

by Suong Nguyen
22/10/2026
0

Thiết kế lớp kiểm tra quyền ngoài mô hình để tài liệu truy xuất không tự biến thành lệnh gọi tool.

Minh họa các khái niệm AI, mạng nơ-ron và lập trình trên máy tính

RAG là gì? Thiết kế hệ thống hỏi đáp tài liệu có dẫn nguồn

by Suong Nguyen
21/10/2026
0

Hiểu hai luồng dữ liệu của RAG, cách gắn nguồn vào câu trả lời và cách kiểm tra một hệ thống hỏi đáp trước khi đưa cho người...

Minh họa các khái niệm AI, mạng nơ-ron và lập trình trên máy tính

Các khái niệm cơ bản trong AI: AI, Machine Learning, Deep Learning và GenAI

by Suong Nguyen
30/08/2026
0

Phân biệt các khái niệm nền tảng trong AI và hiểu một hệ thống AI đi từ dữ liệu, huấn luyện đến lúc tạo ra kết quả.

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native useWindowDimensions: layout đổi chiều và vẫn đọc được chữ lớn
  • Promise.all và allSettled: chờ kết quả không có nghĩa là tự hủy tác vụ
  • Android SavedStateHandle: giữ bộ lọc khi process bị hệ thống tạo lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply