#predictive_maintenance #machine_learning
ผมต้องการทำนายอายุการใช้งานของ component ครับ ทางเรามีดาต้าดังรูป ดาต้าที่มีเป็นแบบ static ไม่ใช่ time-series ครับ
สวัสดีครับ ปัญหาของคุณ @KWN นั้นน่าสนใจ และสามารถนำวิธีการทาง machine learning เข้ามาใช้เพื่อช่วยแก้ปัญหานี้ได้ และอาจต้อง Formulate ปัญหาให้ชัดเจนขึ้นก่อนครับ ผมขออนุญาตลองแนะนำเบื้องต้นดังนี้ก่อนนะครับ ถ้ามีอะไรสามารถถามเพิ่มเติมได้ครับ
Step 1 เนื่องจากตัวแปรที่ต้องการทำนายคือ “ระยะเวลาการเสื่อมจากเฟส X —> X+1” ตัวแปรนี้ ไม่มีในตาราง ดังนั้นวิธีการที่ง่ายที่สุดคือต้องเก็บข้อมูลตัวแปรนี้ขึ้นมาก่อนครับ ซึ่งอาจจะเพิ่มสองคอลัมภ์ ลงไปในตารางคือ y1 (ระยะเวลาจากเฟส 1 —> 2) และ y2 (ระยะเวลาจากเฟส 2 —> 3)
โดย y1 และ y2 อาจจะเป็น 0 สำหรับอุปกรณ์ที่ปัจจุบันอยู่ในเฟส 1 และ y2 เป็น 0 สำหรับอุปกรณ์ที่ปัจจุบันอยู่เฟส 2 ครับ
ถ้าสามารถเก็บข้อมูลตรงนี้ได้เราจะสามารถมองเป็นปัญหา Regression ได้ครับ (เนื่องจากข้อมูลตรงนี้ไม่อยู่ในตารางและสำคัญมาก ไม่แน่ใจว่าเก็บได้ไหมครับ)
นอกจากนี้พบว่าข้อมูลเป็นแบบ static, structured data และยังมีจำนวนไม่เยอะ ในเบื้องต้นอาจจะไม่จำเป็นต้องใช้ deep learning (ซึ่งเหมาะกับปัญหา Unstructured data และข้อมูลมีเยอะ) และสามารถใช้วิธีการที่ง่ายกว่า เช่น linear regression หรือ decision tree เพื่อสร้างโมเดลที่เป็น baseline มาก่อนได้ครับ จุดสำคัญอีกอย่างคืออย่างน้อยควรมีปริมาณข้อมูลมากพอที่จะทำระบบ Validation test เพื่อทดสอบความแม่นยำของระบบ (จะมีกรณีศึกษาของ Matlab และ Azure ที่คล้ายๆ กับปัญหาของคุณ KWN ครับ)
Step 2 ถ้าเก็บข้อมูลเป็น time series และมีจำนวนข้อมูลมากพอ สามารถใช้ LSTM เข้ามาช่วยได้ (การใช้ LSTM สำหรับปัญหาแนวนี้ จะมีตัวอย่างกรณีศึกษาของ Azure และการแข่งขัน VSB ครับ)
ผมขออนุญาตให้ไอเดียเสริมเล็กน้อยนะครับ เนื่องจากการ Formulate ปัญหาและการเก็บข้อมูลนั้นแม้นไม่ค่อยมีคนพูดถึงเมื่อเราพูดถึง AI หรือ Machine Learning แต่จริงๆ แล้วเป็นกระบวนการครึ่งแรกที่สำคัญที่สุดเลยทีเดียวครับ ในกรณีที่คุณ @KWN สามารถเก็บตัวแปร y1 และ y2 ได้อย่างที่คุณ @nameless กล่าวก็อาจจะไปต่อได้
ทว่าในกรณีที่ตัวแปร y1 และ y2 เราไม่สามารถเก็บได้ เราอาจจำเป็นต้อง simplify ปัญหาลงมา (ซึ่งอาจไม่ตรงตามความต้องการแรก แต่พอเป็นไปได้ในข้อมูลที่มีอยู่ในมือ)
ยกตัวอย่างเช่น เราอาจเปลี่ยนปัญหาใหม่ เป็น "ทำนายเฟสการเสื่อม" (เฟส 1, 2 หรือ 3) จากตัวแปรอื่นๆ ปัญหานี้จะกลายเป็น 3-classes classification
ในกรณีที่เราทำปัญหา classification นี้สำเร็จด้วย Neural Networks และมีความแม่นยำเพียงพอ ตรง Layer สุดท้ายก่อนที่จะ Classify เราอาจมองเวกเตอร์ ณ Layer นี้เป็น representation ของอุปกรณ์แต่ละ ID และเราอาจพอที่จะบอกได้ว่า อุปกรณ์ใน Class 1 ตัวไหนที่ใกล้เคียง Class2 (คือมีแนวโน้มที่จะเปลี่ยนจากเฟส 1 ไป เฟส2 มากหรือน้อย แต่ไม่สามารถบอกระยะเวลาได้) หรืออุปกรณ์ใน Class2 ใดที่ใกล้เคียง Class3 ครับ
การ Formulate ปัญหานี้อาจไม่ตอบโจทย์เรื่อง "การทำนายอายุการใช้งานที่เหลือ" (ซึ่งยากกว่า Classification พอสมควรและต้องการข้อมูลเยอะกว่า) แต่จะสามารถทำบนข้อมูลที่มีอยู่ได้ครับ และก็อาจจะช่วยประหยัดเวลาของ Expert ที่ต้องมาประเมินเฟสของอุปกรณ์ทุกชิ้นได้ดีเลยครับ นอกจากนี้เราอาจทำ Visualize เพิ่มเติมทำให้เราเข้าใจธรรมชาติของตัวแปรต่างๆ ที่มีต่อเฟสได้ดียิ่งขึ้น
ในขั้นถัดไป เราอาจลองพยายาม Formulate ปัญหาในรูปแบบอื่นๆ เพิ่มเติม ก็อาจได้ปัญหาที่สามารถตอบโจทย์ที่ต้องการ บนข้อมูลที่เรามีอยู่ได้มากขึ้นครับ (อีกทางเลือกคือ ออกแบบกระบวนการเก็บข้อมูลเพิ่มเติมแบบลงแรงน้อยที่สุด เพื่อให้การทำนายทำได้ตรงใจมากขึ้น)
ขอบคุณคุณ nameless และคุณ The Neural Engineer สำหรับคำแนะนำมากครับ
เบื้องต้นผมสนใจ formulate ปัญหาแบบ regression ครับ ตามที่คุณ nameless แนะนำ แต่เรามีข้อจำกัดในการเก็บข้อมูลในทางปฏิบัติครับ เนื่องจาก component อันนี้เมื่อถูกเปลี่ยนออก ยกตัวอย่างเช่น หลังจากใช้งานมาแล้ว 12 เดือน component ใหม่จะถูกใส่แทนที่ครับ ทำให้เราไม่สามารถ track การเปลี่ยนเฟสแบบต่อเนื่องได้ครับ เมื่อถูกเปลี่ยนออกมาแล้ว เราต้องอาศัยผู้เชี่ยวชาญด้าน material science เพื่อ inspect ว่าการเสื่อมอยู่ในเฟส 1, 2 หรือ 3 ครับผม ความท้ายทายที่สำคัญคือ ชิ้นงานอันนี้ในขณะใช้งานจะติดตั้งอยู่ใน package โลหะแบบปิด เราไม่สามารถเปิดออกดูได้จนกว่าจะถึงเวลาเปลี่ยนชิ้นใหม่ครับ
ในขณะที่ยังไม่ถูกเปลี่ยนออก ข้อมูลที่เราทราบคือ process conditions (ในคอลัมภ์ B และ D to K) เท่านั้นครับ
ขอบคุณคุณ The Neural Engineer ที่ช่วยแปะรูปครับ ปัญหา 3-class classification ที่แนะนำน่าสนใจมากครับ เนื่องจากข้อจำกัดของข้อมูลที่มี การทำนายโดยบอกความน่าจะเป็นว่า component ใดๆ ที่ผ่านกระบวนการใช้งานมาระยะหนึ่งจนถึงปัจจุบัน โดยใช้ข้อมูลในคอลัมภ์ B, D to K จะมีความเสื่อมอยู่ในคลาสใด และ (ถ้าเป็นไปได้) ความน่าจะเป็นที่จะเปลี่ยนจากคลาสปัจจุบัน ไปเป็นคลาสถัดไปเท่าไหร่ หากมี link ตัวอย่างปัญหาที่มีข้อจำกัดด้านข้อมูลคล้ายๆ กันที่ผมพอไปศึกษาด้วยตัวเองแนะนำ จะขอบคุณมากครับ
การทำนายโดยบอกความน่าจะเป็นว่า component ใดๆ ที่ผ่านกระบวนการใช้งานมาระยะหนึ่งจนถึงปัจจุบัน โดยใช้ข้อมูลในคอลัมภ์ B, D to K จะมีความเสื่อมอยู่ในคลาสใด และ (ถ้าเป็นไปได้) ความน่าจะเป็นที่จะเปลี่ยนจากคลาสปัจจุบัน ไปเป็นคลาสถัดไปเท่าไหร่ หากมี link ตัวอย่างปัญหาที่มีข้อจำกัดด้านข้อมูลคล้ายๆ กันที่ผมพอไปศึกษาด้วยตัวเองแนะนำ จะขอบคุณมากครับ
ผมเองก็ยังไม่เคยเจอปัญหาที่คล้ายกันจังๆ นะครับ แต่พออธิบายไอเดียอย่างง่ายได้ดังนี้ ลองดูไว้เป็นทางเลือกนะครับ
โดยกระบวนการสร้าง Vector Representation บน layer สุดท้ายก่อน Softmax นั้นสามารถทำได้ตรงๆ (ตรงนี้ง่าย) หลังจากฝึก Neural Networks สำเร็จแล้วและได้ตรวจสอบผลลัพธ์เป็นที่พอใจแล้ว (ความยากอยู่จุดนี้)
โดยลองค้นรูปใน literatures มาจะคล้ายๆ รูปนี้ครับ ในรูปนี้ คือ 3-Layers Neural Network (FC1-3) โดยมี output เป็น Softmax ที่ FC4 ที่ทำหน้าที่ Classify ข้อมูล (FC ย่อมาจาก Fully Connected ซึ่งเป็น layer พื้นฐานที่สุดของ Neural Networks [ใน Keras เรียกว่า Dense Layer])
เราสามารถเทรน Neural Network แบบปกติ (FC1-4) ด้วยข้อมูลปัจจุบันของคุณ @KWN และเมื่อเทรนจนได้ผลลัพธ์ที่น่าพอใจแล้ว output ของ FC3 (ก่อนเข้า FC4) จะเป็น embedding vector ที่ represent vector ของแต่ละอุปกรณ์ ID ได้ครับ
พอได้ embedding vectors ที่แทนอุปกรณ์แต่ละ ID แล้ว การเปลี่ยน "ระยะทาง" ไปเป็น "ความน่าจะเป็น" ก็ทำได้หลายวิธี เช่นที่แนะนำในกระทู้นี้ครับ https://stackoverflow.com/questions/23459707/how-to-convert-distance-into-probability
ขอบคุณมากสำหรับคำแนะนำจากคุณ The Neural Engineer และคุณ nameless อีกครั้งครับ ผมลองเอา keywords จากแนวคิดที่แนะนำไปค้นหาความหมายเพิ่มเติม เนื่องจากมี terminology ใหม่สำหรับผมเยอะ ? และลองไปศึกษาเพิ่มเติมจากหน้ารีวิวแหล่งเรียนรู้ชั้นนำและ tutorial บนกูเกิลครับ พบตัวอย่างการทำ multi-class classification ด้วย neural network เพื่อแยกชนิดของดอกไม้ 3 ชนิด จากขนาดของส่วนประกอบที่ใช้เป็น features ผมมีข้อสงสัยเพิ่มเติมดังนี้ครับ
1. ตัวอย่างปัญหาการแยกชนิดของดอกไม้ 3 ชนิดดังกล่าวสามารถเทียบเคียงได้กับแนวคิดที่คุณ @neural-engineer แนะนำหรือเปล่าครับ
2. จากแนวคิดที่คุณ The Neural Engineer แนะนำ การทำ 3-Layers Neural Network คือการวางชั้น hidden layer 3 layers และ output layer 1 layer โดยใช้ฟังก์ชัน softmax ที่ output layer เพื่อให้ได้ output ที่บอกเราว่า ชิ้นงานนี้มีความน่าจะเป็นที่จะอยู่ในเฟส 1, 2 หรือ 3 เท่าไหร่ ไม่แน่ใจว่าผมเข้าใจถูกต้องหรือเปล่าครับ
3. คำว่า fully connected คือ hidden layer หรือเปล่าครับ ถ้าใช่ ผมกำหนด network topology เป็นแบบนี้ถูกต้องหรือเปล่าครับ
x feature inputs -> [256 hidden nodes] -> [64 hidden nodes] -> [16 hidden nodes] -> 3 outputs
มีข้อแนะนำเบื้องต้นเพื่อกำหนดจำนวน hidden nodes หรือเปล่าครับ
4. หากตัวอย่างปัญหาการแยกชนิดของดอกไม้ 3 ชนิดข้างต้นสามารถเทียบเคียงได้กับแนวคิดที่คุณ The Neural Engineer แนะนำ การเข้าถึง embedding vector (ที่ represent vector ของแต่ละอุปกรณ์ ID) ทำได้อย่างไรเมื่อใช้ Keras ในการสร้างโมเดลครับ
ขอบคุณมากครับ ?