- แนะนำวิธีนำ การควบคุมกระบวนการเชิงสถิติ (SPC) มาทำใน Python เพื่อทำความเข้าใจ ความแปรผันตามเวลาและจุดที่ควรแทรกแซง ของคุณภาพผลิตภัณฑ์
- ใช้
pandas, plotnine, scipy สำหรับ การประมวลผลข้อมูล การทำภาพข้อมูล และการคำนวณทางสถิติ
- ใช้ข้อมูลออนเซ็นจากจังหวัดคาโงชิมะของญี่ปุ่นเป็นตัวอย่าง เพื่อวิเคราะห์ อุณหภูมิ pH และปริมาณกำมะถัน เป็นตัวชี้วัดการควบคุมคุณภาพ
- ใช้ สถิติซับกรุ๊ป แผนภูมิควบคุม (X-bar, S, แผนภูมิพิสัยเคลื่อนที่) เพื่อตรวจสอบเสถียรภาพของกระบวนการและค้นหาค่าผิดปกติ
- นำเสนอขั้นตอนสำหรับ วินิจฉัยสถานะของกระบวนการด้วยภาพและสนับสนุนการตัดสินใจปรับปรุง โดยอิงข้อมูล
ภาพรวมของการควบคุมกระบวนการเชิงสถิติด้วย Python
- การควบคุมกระบวนการเชิงสถิติ (SPC) คือแนวทางทางสถิติสำหรับ วัดความแปรผันของคุณภาพผลิตภัณฑ์และตัดสินว่าควรแทรกแซงเมื่อใด
- ใน Python ใช้
plotnine สำหรับการทำภาพข้อมูล, pandas สำหรับจัดการข้อมูล และ scipy สำหรับคำนวณทางสถิติ
- ในตัวอย่างปฏิบัติ ใช้ กรณีศึกษาการควบคุมคุณภาพน้ำออนเซ็น เพื่อประยุกต์แนวคิดของ SPC
- กำหนด อุณหภูมิ, pH, ปริมาณกำมะถัน เป็นตัวชี้วัดคุณภาพหลักของออนเซ็น
แพ็กเกจและฟังก์ชันที่ผู้ใช้กำหนดเอง
- แพ็กเกจที่ต้องใช้:
pandas, plotnine, scipy
- ฟังก์ชันที่ผู้ใช้กำหนดเองนำเข้าจากไดเรกทอรี
functions/ ใน GitHub repository
functions_distributions.py: ฟังก์ชันด้านความเชื่อมั่นและการแจกแจง
functions_process_control.py: ฟังก์ชันสำหรับการควบคุมกระบวนการ
- เพิ่มไดเรกทอรีฟังก์ชันเข้าไปในพาธของ Python ด้วย
sys.path.append('functions') แล้วจึง import
กรณีศึกษา: การควบคุมคุณภาพออนเซ็นในญี่ปุ่น
- ออนเซ็นญี่ปุ่น (onsen) เป็นทรัพยากรท่องเที่ยวสำคัญของเศรษฐกิจท้องถิ่น โดย อุณหภูมิ pH และปริมาณกำมะถัน เป็นเกณฑ์คุณภาพ
- เกณฑ์อุณหภูมิ: Extra Hot (>42°C), Hot (41~34°C), Warm (33~25°C)
- เกณฑ์ pH: Acidic (pH<3) ~ Alkaline (pH>8.5)
- เกณฑ์กำมะถัน: หากมีตั้งแต่ 1mg/kg ขึ้นไป จะจัดเป็นออนเซ็นกำมะถัน
- วิเคราะห์ความแปรผันของคุณภาพจากข้อมูลออนเซ็นในจังหวัดคาโงชิมะ โดยเก็บตัวอย่างเดือนละ 20 ครั้งเป็นเวลา 15 เดือน
การโหลดข้อมูลและสถิติพื้นฐาน
- โหลดไฟล์
onsen.csv เพื่อตรวจสอบข้อมูล อุณหภูมิ pH และปริมาณกำมะถัน
- ใช้ฟังก์ชัน
describe() เพื่อคำนวณค่าเฉลี่ย (mean) และส่วนเบี่ยงเบนมาตรฐาน (sd)
- ตัวอย่างผลลัพธ์: ค่าเฉลี่ย 44.85°C, ส่วนเบี่ยงเบนมาตรฐาน 1.99°C
- ค่าสถิติเหล่านี้เป็นตัวชี้วัดพื้นฐานสำหรับทำความเข้าใจจุดศูนย์กลางและความแปรผันของกระบวนการ
การทำภาพรวมของกระบวนการ
- ใช้
plotnine เพื่อทำภาพ การกระจายของอุณหภูมิตามเวลา ด้วย boxplot และการกระจายของจุดข้อมูล
- เส้นกึ่งกลางคือค่าเฉลี่ยรวม และสามารถเปรียบเทียบการกระจายของแต่ละช่วงเวลาได้
- แสดงการกระจายอุณหภูมิทั้งหมดด้วยฮิสโตแกรมเพื่อดู ศูนย์กลางของกระบวนการและช่วงความแปรผัน
การคำนวณสถิติซับกรุ๊ป
- จัดแต่ละช่วงเวลา (time) เป็นซับกรุ๊ป แล้วคำนวณ ค่าเฉลี่ย (xbar), พิสัย (r), ส่วนเบี่ยงเบนมาตรฐาน (sd)
- ตัวอย่าง: กลุ่มแรกมีค่าเฉลี่ย 44.635°C และพิสัย 4.2°C
- คำนวณ σₛ (ส่วนเบี่ยงเบนมาตรฐานภายในซับกรุ๊ป) และ ค่าคลาดเคลื่อนมาตรฐาน (se) เพื่อกำหนดเส้นขีดจำกัดบน-ล่าง (±3σ)
- ใช้สิ่งเหล่านี้เพื่อประเมิน เสถียรภาพตามเวลาของกระบวนการ
สถิติของกระบวนการโดยรวม
- รวมทุกกลุ่มเข้าด้วยกันแล้วคำนวณ ค่าเฉลี่ยรวม (xbbar), พิสัยเฉลี่ย (rbar), ส่วนเบี่ยงเบนมาตรฐานเฉลี่ย (sdbar)
- ตัวอย่าง: xbbar 44.85, rbar 7.26, sdbar 1.94
- เปรียบเทียบกับ σₜ (ส่วนเบี่ยงเบนมาตรฐานรวม) เพื่อทำความเข้าใจความแปรผันทั้งภายในและระหว่างกระบวนการ
แผนภูมิควบคุม (X-bar และ S chart)
- แผนภูมิ X-bar: แสดงค่าเฉลี่ยของแต่ละซับกรุ๊ปบนแกนเวลา
- เส้นกึ่งกลาง: ค่าเฉลี่ยรวม, เส้นขีดจำกัดบน-ล่าง: ±3σ
- พื้นที่แรเงาคือช่วงของขีดจำกัดการควบคุม
- หากค่าทะลุเส้นขีดจำกัดการควบคุมหรือเกิดรูปแบบที่ไม่สุ่ม ก็อาจบ่งชี้ว่า กระบวนการมีความผิดปกติ
แบบฝึกหัดตรวจความเข้าใจ: การทำภาพกระบวนการของ pH
- ใช้ฟังก์ชัน
ggprocess() เดิมเพื่อสร้างแผนภูมิภาพรวมกระบวนการของข้อมูล pH
- เปรียบเทียบเส้นค่าเฉลี่ยและการกระจายของแต่ละช่วงเวลาด้วยสายตา
แผนภูมิพิสัยเคลื่อนที่ (n=1)
- เมื่อมีเพียงค่าที่วัดรายตัว ให้ใช้ พิสัยเคลื่อนที่ (Moving Range)
- คำนวณผลต่างสัมบูรณ์ระหว่างค่าที่วัดต่อเนื่องกันเพื่อประมาณความแปรผัน
- คำนวณค่าพิสัยเคลื่อนที่เฉลี่ย (mrbar), ค่าขีดจำกัดบน (upper), ค่าขีดจำกัดล่าง (lower=0)
- แผนภูมิพิสัยเคลื่อนที่มีประโยชน์สำหรับ ติดตามความแปรผันของกระบวนการจากข้อมูลรายตัว
บทสรุป
- ใช้ Python เพื่อสร้าง ภาพรวมกระบวนการ สถิติซับกรุ๊ป และแผนภูมิพิสัยเคลื่อนที่
- ด้วยเครื่องมือ SPC สามารถ วินิจฉัยเสถียรภาพและความผิดปกติของกระบวนการด้วยภาพ ได้
- การวิเคราะห์ลักษณะนี้สามารถนำไปใช้กับ การปรับปรุงคุณภาพและการตัดสินใจบนพื้นฐานข้อมูล ได้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ทำให้นึกถึงโปรเจกต์เก่า
เราเคยแทนที่ ตัวตรวจจับความผิดปกติของอนุกรมเวลาที่ใช้ดีปเลิร์นนิง อันซับซ้อนหลายพันตัวในบริษัทระดับ FANG ได้สำเร็จด้วยโมเดลควบคุมกระบวนการเชิงสถิติ (nonparametric, semiparametric)
โมเดลใหม่มีจำนวนพารามิเตอร์สำหรับการเรียนรู้น้อยกว่าระดับ 3–4 หลัก และเรียบง่ายพอที่ทีม 3–4 คนจะดูแลสตรีมหลายพันสตรีมได้
โมเดลดีปเลิร์นนิงนั้น ดีบักและตีความได้ไม่โปร่งใส ทำให้ดูแลยากมาก
ถ้าเป็นทีมเล็ก ผมยังแนะนำแนวทางที่อิงสถิติอย่างมาก
แต่ด้วยเหตุผลทางการเมือง การเลือกแบบนี้อาจไม่ใช่ทางเลือกที่ดีต่ออาชีพเสมอไป คนที่เดิมพันครั้งใหญ่ไปแล้วมักไม่ชอบเห็นหลักฐานที่ขัดแย้ง
นี่คือเหตุผลที่ช่วงนี้ผมมอง กระแส AI ที่ร้อนแรงเกินจริง อย่างสงสัย
ในหลายกรณี วิธีคลาสสิกเดิม ๆ เสถียรและมีประสิทธิภาพกว่ามาก จึงไม่เข้าใจว่าทำไมบริษัทถึงตั้งใจเลือกวิธีที่ซับซ้อนและไม่เสถียร
บริษัทชอบอวดโมเดล ML เท่ ๆ สำหรับงานประชุมวิชาการ แต่ผู้ปฏิบัติงานจริงกลับไม่พอใจกับ ความแม่นยำและการตีความที่ไม่เพียงพอ
สุดท้ายผมเลยเขียนโค้ดใหม่จากกฎทางคณิตศาสตร์ง่าย ๆ ที่ผู้ปฏิบัติงานใช้กันจริง และได้ผลลัพธ์ที่ดีกว่ามาก
มันเหมาะกับ OCR แต่ไม่ค่อยมีประสิทธิภาพกับงานจำแนกประเภท
ถ้าโฟกัสที่แสงที่ดีและ เทคนิคคอมพิวเตอร์วิชันแบบดั้งเดิม ก็มักได้ผลลัพธ์ที่ดีกว่า
ผมก็เข้าใจปัญหาทางการเมืองของการนำเทคโนโลยีมาใช้เช่นกัน เลยมักเสนอ แนวทางแบบไฮบริด ที่ผสานดีปเลิร์นนิงกับวิชันแบบดั้งเดิม
ดูเหมือนว่าพารามิเตอร์ส่วนใหญ่จะไม่เสถียรหรือมีความสัมพันธ์กันเอง
เมื่อก่อนผมเคยสอบได้ใบรับรอง Lean Six Sigma Green Belt และทำโปรเจกต์ควบคุมกระบวนการเชิงสถิติสำหรับกระบวนการ back office ของธนาคารเพื่อการลงทุนด้วย Minitab
ทุกวันนี้เหมือนไม่มีใครจำ Minitab ได้แล้ว ทุกคนใช้แต่ Python
มันยังมีอัปเดตอยู่จนถึงตอนนี้ และมี Python interface ด้วย → mtbpy package
เครื่องมือโอเพนซอร์สมักรองรับแค่ x-bar/S/R และยังขาดฟีเจอร์ขั้นสูงอย่าง การวิเคราะห์พหุตัวแปร
เมื่อหลายปีก่อนผมเขียนคู่มือภาคปฏิบัติสำหรับคนที่เพิ่งเริ่มใช้ SPC
อาจมีประโยชน์ → Statistical Process Control: A Practitioner’s Guide
สำหรับชุดข้อมูลขนาดเล็กอย่างข้อมูลทางคลินิก สถิติแบบคลาสสิก ก็ยังเป็นแกนหลัก
การเก็บและทำ metadata ให้สอดคล้องกันเป็นเรื่องยาก และในการวิจัยโรคหายาก หลายครั้งแม้แต่แมชชีนเลิร์นนิงหรือรีเกรสชันก็ยังทำได้ยาก
ข้อมูลในโลกจริงไม่มีทางสะอาดสมบูรณ์
เวลาส่วนใหญ่หมดไปกับ การจัดการคุณภาพข้อมูล
ค่าผิดปกติอาจเกิดจากความผิดพลาดในการวัดหรือการเปลี่ยนแปลงของกระบวนการ และการจะเข้าใจเรื่องนี้ได้ต้องมีสัญชาตญาณต่อกระบวนการนั้นเอง
เพราะแบบนั้น เครื่องมือที่พัฒนาเต็มที่แล้ว ซึ่งช่วยให้ทำ visualization และการสำรวจได้รวดเร็วจึงสำคัญ
การเขียนโค้ดทำกราฟ SPC Cpk เองนั้นไม่มีประสิทธิภาพ
SPC เป็นเครื่องมือที่ยอดเยี่ยมจริง ๆ
มันเรียบง่ายกว่าชุดเครื่องมือซับซ้อนอื่น ๆ มาก และใช้งานได้ดี
มีคำพิมพ์ผิดเยอะ
ชอบ ดีไซน์และบรรยากาศ ของหน้านี้มาก