- Giới thiệu cách triển khai kiểm soát quá trình thống kê (SPC) bằng Python để nắm bắt biến động theo thời gian của chất lượng sản phẩm và thời điểm cần can thiệp
- Sử dụng
pandas, plotnine, scipy để thực hiện xử lý dữ liệu, trực quan hóa và tính toán thống kê
- Dùng dữ liệu suối nước nóng ở tỉnh Kagoshima, Nhật Bản làm ví dụ để phân tích nhiệt độ, pH, hàm lượng lưu huỳnh làm chỉ số kiểm soát chất lượng
- Thông qua thống kê nhóm con, biểu đồ kiểm soát (X-bar, S, biểu đồ khoảng dao động di chuyển) để đánh giá độ ổn định của quá trình và phát hiện ngoại lệ
- Trình bày quy trình chẩn đoán trực quan trạng thái quá trình và hỗ trợ quyết định cải tiến dựa trên dữ liệu
Tổng quan về kiểm soát quá trình thống kê bằng Python
- Kiểm soát quá trình thống kê (SPC) là cách tiếp cận thống kê nhằm đo lường biến động của chất lượng sản phẩm và xác định thời điểm cần can thiệp
- Trong Python, dùng
plotnine để trực quan hóa, pandas để thao tác dữ liệu, scipy để tính toán thống kê
- Trong phần thực hành, các khái niệm SPC được áp dụng thông qua trường hợp quản lý chất lượng nước suối nóng
- Nhiệt độ, pH, hàm lượng lưu huỳnh của suối nóng được chọn làm các chỉ số chất lượng chính
Gói thư viện và hàm do người dùng định nghĩa
- Các gói cần thiết:
pandas, plotnine, scipy
- Các hàm do người dùng định nghĩa được lấy từ thư mục
functions/ trong kho GitHub
functions_distributions.py: hàm về độ tin cậy và phân phối
functions_process_control.py: hàm phục vụ kiểm soát quá trình
- Thêm thư mục hàm vào đường dẫn Python bằng
sys.path.append('functions'), sau đó import
Ví dụ: quản lý chất lượng suối nước nóng ở Nhật Bản
- Suối nước nóng Nhật Bản (onsen) là tài nguyên du lịch cốt lõi của kinh tế địa phương, và nhiệt độ, pH, hàm lượng lưu huỳnh là các tiêu chuẩn chất lượng
- Tiêu chuẩn nhiệt độ: Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
- Tiêu chuẩn pH: Acidic(pH<3) ~ Alkaline(pH>8.5)
- Tiêu chuẩn lưu huỳnh: được phân loại là suối lưu huỳnh khi từ 1mg/kg trở lên
- Dữ liệu suối nước nóng của tỉnh Kagoshima được lấy mẫu 20 lần mỗi tháng trong 15 tháng để phân tích biến động chất lượng
Tải dữ liệu và thống kê cơ bản
- Tải tệp
onsen.csv để kiểm tra dữ liệu nhiệt độ, pH, hàm lượng lưu huỳnh
- Dùng hàm
describe() để tính trung bình (mean) và độ lệch chuẩn (sd)
- Kết quả ví dụ: trung bình 44.85°C, độ lệch chuẩn 1.99°C
- Các giá trị thống kê này là chỉ số cơ bản để nắm bắt tâm quá trình và mức độ biến động
Trực quan hóa tổng quan quá trình
- Dùng
plotnine để trực quan hóa phân bố nhiệt độ theo thời gian bằng biểu đồ hộp (boxplot) và phân bố điểm
- Đường trung tâm là giá trị trung bình toàn bộ, cho phép so sánh phân bố theo từng thời điểm
- Hiển thị phân bố nhiệt độ tổng thể bằng histogram để kiểm tra tâm quá trình và độ rộng biến động
Tính thống kê nhóm con
- Gom từng thời điểm (time) thành nhóm con để tính trung bình (xbar), khoảng dao động (r), độ lệch chuẩn (sd)
- Ví dụ: trung bình của nhóm đầu tiên là 44.635°C, khoảng dao động là 4.2°C
- Tính σₛ (độ lệch chuẩn trong nhóm con) và sai số chuẩn (se) để thiết lập giới hạn trên/dưới (±3σ)
- Qua đó có thể đánh giá độ ổn định theo thời gian của quá trình
Thống kê toàn bộ quá trình
- Gộp toàn bộ các nhóm để tính trung bình tổng (xbbar), khoảng dao động trung bình (rbar), độ lệch chuẩn trung bình (sdbar)
- Ví dụ: xbbar 44.85, rbar 7.26, sdbar 1.94
- So sánh với σₜ (độ lệch chuẩn tổng thể) để nắm được biến động bên trong và giữa các quá trình con
Biểu đồ kiểm soát (X-bar và S)
- Biểu đồ X-bar: hiển thị trung bình của từng nhóm con theo trục thời gian
- Đường trung tâm: trung bình tổng thể, giới hạn trên/dưới: ±3σ
- Vùng tô bóng là phạm vi giới hạn kiểm soát
- Nếu vượt ra ngoài giới hạn kiểm soát hoặc xuất hiện mẫu hình không ngẫu nhiên, thì có khả năng quá trình đang bất thường
Kiểm tra học tập: trực quan hóa quá trình pH
- Dùng cùng hàm
ggprocess() để tạo biểu đồ tổng quan quá trình cho dữ liệu pH
- So sánh trực quan đường trung bình và phân bố theo từng thời điểm
Biểu đồ khoảng dao động di chuyển (n=1)
- Khi chỉ có các giá trị đo riêng lẻ, sử dụng khoảng dao động di chuyển (Moving Range)
- Tính chênh lệch tuyệt đối giữa các giá trị đo liên tiếp để ước lượng mức độ biến động
- Tính khoảng dao động di chuyển trung bình (mrbar), giới hạn trên (upper), giới hạn dưới (lower=0)
- Biểu đồ khoảng dao động di chuyển hữu ích để giám sát biến động quá trình dựa trên dữ liệu cá thể
Kết luận
- Có thể dùng Python để tạo tổng quan quá trình, thống kê nhóm con, biểu đồ khoảng dao động di chuyển
- Thông qua các công cụ SPC, có thể chẩn đoán trực quan độ ổn định và dấu hiệu bất thường của quá trình
- Các phân tích này có thể được dùng cho cải tiến chất lượng và ra quyết định dựa trên dữ liệu
1 bình luận
Ý kiến trên Hacker News
Gợi tôi nhớ đến một dự án trước đây
Chúng tôi đã thay thế thành công hàng nghìn bộ phát hiện bất thường chuỗi thời gian dựa trên deep learning phức tạp tại một công ty FANG bằng các mô hình kiểm soát quy trình mang tính thống kê (phi tham số, bán tham số)
Mô hình mới có ít hơn 3–4 bậc độ lớn về số lượng tham số huấn luyện, và đủ đơn giản để một nhóm 3–4 người có thể quản lý hàng nghìn luồng dữ liệu
Các mô hình deep learning rất khó debug và diễn giải, nên việc vận hành quá vất vả
Nếu là một nhóm nhỏ, tôi vẫn rất khuyến nghị cách tiếp cận dựa trên thống kê
Tuy nhiên, vì lý do chính trị nội bộ, lựa chọn này có thể không hẳn tốt cho sự nghiệp. Những người đã đặt cược rất lớn thường không thích khi có bằng chứng ngược lại xuất hiện
Đây cũng là lý do tôi hoài nghi về bầu không khí AI bị thổi phồng hiện nay
Trong nhiều trường hợp, các phương pháp cổ điển sẵn có ổn định và hiệu quả hơn nhiều, nên tôi không hiểu vì sao các công ty lại cố chọn những cách phức tạp và kém ổn định hơn
Công ty khoe một mô hình ML hào nhoáng để trình diễn ở hội nghị, nhưng những người vận hành thực tế lại rất không hài lòng vì độ chính xác và khả năng diễn giải kém
Vì vậy tôi đã viết lại mã dựa trên các quy tắc toán học đơn giản mà đội vận hành thực sự dùng, và đạt kết quả tốt hơn nhiều
Nó hợp với OCR, nhưng hiệu quả kém hơn trong các tác vụ phân loại
Nếu tập trung vào ánh sáng tốt và các kỹ thuật thị giác máy tính truyền thống, nhiều khi sẽ cho kết quả tốt hơn
Tôi cũng đồng cảm với vấn đề chính trị trong việc áp dụng công nghệ. Vì thế tôi thường đề xuất cách tiếp cận lai kết hợp deep learning với thị giác máy tính truyền thống
Có vẻ như phần lớn tham số đều không ổn định hoặc tương quan với nhau
Trước đây tôi từng lấy chứng chỉ Lean Six Sigma Green Belt và làm một dự án kiểm soát quy trình bằng thống kê cho quy trình back office của ngân hàng đầu tư bằng Minitab
Giờ có vẻ chẳng ai còn nhớ đến Minitab nữa. Ai cũng chỉ dùng Python
Nó vẫn đang được cập nhật, và còn có cả giao diện Python → gói mtbpy
Các công cụ mã nguồn mở chỉ hỗ trợ đến x-bar/S/R, còn thiếu những tính năng nâng cao như phân tích đa biến
Vài năm trước tôi đã viết một hướng dẫn thực hành cho người mới bắt đầu với SPC
Có thể hữu ích để tham khảo → Statistical Process Control: A Practitioner’s Guide
Với các bộ dữ liệu nhỏ như dữ liệu lâm sàng, thống kê cổ điển vẫn là cốt lõi
Việc thu thập và đồng bộ metadata rất khó, và trong nghiên cứu bệnh hiếm, nhiều khi ngay cả machine learning hay hồi quy cũng khó áp dụng
Dữ liệu ngoài đời thực không bao giờ sạch cả
Phần lớn thời gian được dùng cho quản lý chất lượng dữ liệu
Giá trị ngoại lai có thể do lỗi đo lường hoặc thay đổi trong quy trình, và để hiểu điều đó thì cần trực giác về chính quy trình ấy
Vì thế, các công cụ trưởng thành cho phép trực quan hóa và khám phá nhanh là rất quan trọng
Tự viết code để tạo biểu đồ SPC Cpk là không hiệu quả
SPC thực sự là một công cụ tuyệt vời
Nó đơn giản hơn nhiều và hoạt động tốt hơn so với các bộ công cụ phức tạp khác
Có khá nhiều lỗi chính tả
Tôi thực sự thích thiết kế và không khí của trang này