
สวัสดีครับ ผมชื่อต้น เรียกสกลก็ได้ อยู่ปี3 คณะวิศวกรรมศาสตร์ ภาควิชาคอมพิวเตอร์ของจุฬาฯฮะ
บทความนี้จะเป็นการเล่าเรื่องเกี่ยวกับการเรียน Individual study ของภาคคอมนั่นเอง ซึ่งจะไม่ลงลึกถึงเนื้อหาหรือวิธีการทำขนาดนั้นนะครับ — ขอเล่าคร่าวๆก่อนว่า วิชานี้เนี่ย เป็นวิชาที่ค่อนข้างเปิดกว้างในเรื่องหัวข้อที่จะเรียนมากๆเลย เหมือนกับว่าเราสนใจเรียนเรื่องไหน ก็ไปติดต่ออาจารย์ แล้วเขาก็จะให้งานเล็กๆน้อยๆที่ตรงกับเรื่องที่เราสนใจมาเรียนรู้แล้วก็ฝึกทำ
ซึ่งผมเคยลงเรียนวิชานี้ไป 2 รอบแล้ว คราวนี้เลยอยากลองทำเกี่ยวกับสาย Data บ้าง เลยลงวิชานี้กับอาจารย์โปรดปรานครับ และอาจารย์แนะนำมาว่ามีโปรเจคทำนายผู้ติดเชื้อของผู้ป่วยโรคไตอยู่ ซึ่งจะนำขอมูลที่ได้มาทำนายว่าคนไข้คนไหนมีแนวโน้มที่จะเป็นแผลติดเชื้อ จะได้ส่งพยาบาลไปดูแลก่อน
ซึ่งน่าสนใจเลยหล่ะครับ ผมก็เลยรับปากไปว่าจะทำ
พอถึงวันที่ประชุมครั้งแรก ผมก็คิดว่าเป็นโปรเจคเล็กๆ มีข้อมูลมาให้เล่นนิดๆหน่อยๆนั่นแหละ แต่พอนั่งฟังไปเรื่อยๆแล้ว
มันโปรเจคใหญ่กว่าที่คิดเยอะเลยนิหน่า
กลายเป็นว่าผมและเพื่อนอีกคนนึงจะเป็นทีม Machine Learning ที่จะนำข้อมูลของคนป่วยที่ได้จากคุณหมอ มาวิเคราะห์และทำนายส่งไปให้ทีม Dev เพื่อที่จะเอาไปใช้งานกับรพ.จุฬาฯจริงๆเลย
ลืมแนะนำ เพื่อนที่อยู่ทีมเดียวกับผมชื่อแจ๊คครับ เรียกได้ว่าเป็นเดอะแบกของทีมก็ว่าได้เลยหล่ะ อยากอ่านเรื่องเดียวกันของฝั่งนั้นก็สามารถไปดูได้ที่นี่นะครับ Metis Sotangkur
แต่เอาจริงๆ มันไม่ได้ยากขนาดนั้นครับ อาจารย์โปรดปรานและอาจารย์พลอยจะคอยบอกว่าควรไปอ่านอะไร อ่านที่ไหนหรือเรียนอะไรเพิ่ม และมาอัปเดตกันทุกๆสัปดาห์ โดยทีมMLเนี่ย หลักๆจะเป็นอาจารย์พลอยคอยไกด์ครับ
Start!!
โดยงานจะเริ่มจากนำข้อมูลของคุณหมอมาลง colabของเรา และclean dataให้ใช้งานได้ครับ ซึ่งข้อมูลที่คุณหมอให้มาจะอยู่ในไฟล์ Excel เป็นข้อมูลของคนไข้ และค่าต่างๆที่ได้จากการตรวจแต่ละครั้ง ซึ่งในปีนึงจะตรวจ 4 รอบ ผมก็จะนำค่าแต่ละค่าที่ตรวจได้มาเฉลี่ยกัน ให้ได้ค่า Avgerageของแต่ละตัว และใช้Least squareเพื่อหาค่า Trendของข้อมูลแต่ละตัวครับ
ทีนี้หลังจากได้ค่าที่ต้องการแล้ว จะเห็นได้ว่าบางช่องในตารางมีค่าNaN (ไม่มีข้อมูล) เราเลยทำการลบข้อมูลของคนไข้ออก ถ้ามีค่าNaN มากเกินไป และเติมค่าNaN ที่เหลือด้วยค่าเฉลี่ยของค่านั้นๆ เพื่อให้ MLของเราสามารถทำนายผลได้ครับ
และเราก็มีข้อมูลที่บอกว่าคนไข้คนไหนติดเชื้อจากอีกไฟล์นึง หลังจากที่ได้ข้อมูลมาครบแล้ว ก็ถึงเวลาเริ่ม Trainingแล้วครับ
Training
และก่อนเริ่ม Train อย่าลืมว่าต้องแบ่งข้อมูลออกมาเป็น Test Data กับ Train Data ด้วยนะครับ เพื่อที่โมเดลของเราจะได้ไม่เป็นการจำค่าจากที่Train มาทำนาย โดยผมจะใช้ KFold แบ่งข้อมูลออกเป็น Train 75% — Test 25% ครับ
โดยเราจะลองใช้ Model Decision Tree ในการทำนายผล เนื่องจากเป็นการทำนายประเภท Classification ที่ทำนายถูก/ผิด ประกอบกับมี featureที่เยอะ Decision Tree เลยน่าจะเหมาะกับข้อมูลตัวนี้ครับ
ทีนี้ Decision Tree ก็จะมีเทคนิคต่างๆที่จะทำให้มันทำนายผลได้ดีขึ้น ผมเลยลองเล่นอะไรหลายๆอย่างลงไปครับ โดยเราจะใช้ confusion matrix มาใช้ในการวัดผล