Inspiration
ทีมของเราได้มีความสนใจในการแข่งขัน TMLCC ซึ่งโจทย์ในปีนี้คือการทำนายความสามารถในการดูดซับก๊าซของ Metal-Organic Frameworks (MOFs)
เราไม่ได้คาดหวังรางวัลหรืออะไร หากแต่เป็นเพียงการหาความรู้ และหากิจกรรมทำร่วมกับเพื่อนๆที่พึ่งจบม.ปลายกันมา
How we built it
ทีมเราใช้ python เขียนเป็น .ipynb บน GPU machine ของ deepnote สลับกับรันบนคอมพิวเตอร์ส่วนตัว ตลอดการทำโปรเจคครั้งนี้
Along the pathway
เนื่องจากโจทย์มีรูปแบบไปทาง Regression model เทคนิคทาง Machine Learning ที่เรามองเป็นอันดับแรกๆจึงเป็น Regression Tree แต่ว่า dataset เริ่มต้นที่ให้มา มีทั้ง numerical feature และ categorical feature
เราจึงได้มองหาเทคนิคที่มีความเหมาะสมและถูกออกแบบมาเพื่อสิ่งเหล่านั้นมากกว่า อ่านเปเปอร์กันรัวๆ เราได้ทดลองไม่ว่าจะเป็น Random Forest, Gradient Boost, Extreme Gradient Boost, และ Neural Network หาโมเดลที่มีประสิทธิภาพสูง.
Supposedly the best we can do
ในที่สุดก็ได้เป็น Light Gradient Boost Machine Regressor และ Catboost Regressor ที่มีประสิทธิภาพสูงใกล้เคียงกัน
เมื่อได้ model ที่มีประสิทธิภาพแล้ว เราก็ได้ optimize hyperparameter พื้นฐานต่างๆ รันกันข้ามวันข้ามคืนจนได้โมเดลที่เราเชื่อว่ามีประสิทธิภาพมากที่สุด
Improve Improve Improve
หลังจากตันอยู่พักหนึ่ง เราก็มีไอเดียว่าบางทีการสกัดหาข้อมูลเพิ่มเติมมาจาก file .cif อาจได้ feature ที่ทำให้ model สามารถคาดการณ์ได้ดีขึ้น จึงลองหาข้อมูลเกี่ยวกับการใช้ไฟล์ .cif
จากการลองอ่านงานวิจัยเกี่ยวกับ MOFs machime learning เราพบว่ามี open source ที่น่าสนใจมากแก่การนำมาใช้กับงานของเรา นั่นคือ pywindow และ zeo++ ที่เป็นที่ใช้กันอย่างหลากหลาย เราจึงรันกันอีกข้ามวันข้ามคืนเพื่อเพิ่ม feature ให้กับ dataset ของเรา
อย่างไรก็ตามเราพบว่า data ที่ได้เพิ่มมากลับทำให้ผลลัพธ์การคาดเดาแย่ลง และไม่ว่าจะปรับอย่างไรก็ไม่มีทีท่าว่าจะขึ้น T_T อาจจะเป็นเพราะ data ที่ได้มาเพิ่มไม่ตรงกับที่ใช้ใน simulation ด้วย
เราจึงตัดสินใจใช้ dataset ที่ได้รับมาในตอนแรก เป็นข้อมูลหลักสำหรับการรันโมเดลของเราเหมือนเดิมต่อไป
Last 15 mins (Accomplishments that we're proud of)
เราพยายามปรับ parameter และทดลองจัด data ใหม่อีกหลายครั้งจนชั่วโมงสุดท้าย ก็ยังไม่สามารถทำให้คะแนนขึ้นได้อีก จนเราเกือบจะตัดสินใจกันว่า ส่งสิ่งที่มีอยู่อันล่าสุดไปแหละ จากเด็กพึ่งจบม.ปลายที่เขียน ML ไม่เป็นเลยจนติด scoreboard ทีมที่สิบก็เก่งกันมากแล้ว
แต่บังเอิ๊ญ โดนทีมที่ 11 แซงหน้าขึ้นมา
.
.
“อยากติดท้อปสิบว่ะ” เสียงเพื่อนคนหนี่งดังออกมาจากคอลกลุ่ม เราทุกคนมองหน้ากัน หันเข้าคอม และเปิด code ขึ้นมาลองแก้กันต่อด้วยความหวังและแรงเฮือกสุดท้าย
.
สิบห้านาทีสุดท้ายเราก็ยังคงเป็นที่ 11 อยู่ ความหวังสุดท้ายหม่นหมองลงทุกที
“เพื่อน อยากลองอะไรหน่อย” สาย math คนสุดท้ายที่ยังพอจะมีความหวังยังพูดออกมา ทุกคนไม่มีไอเดียและแรงจะทดลองอะไรแล้วเลยปล่อยเพื่อนลองไปตามสบาย
.
“เพื่อนๆ คะแนนขึ้น!!!!” ทุกคนตกใจกันหมด ต่างถามกันยกใหญ่ว่าทำได้ด้วยวิธีอะไร
“จับมาหา median” เพื่อนในกลุ่มงงกันหมด ไม่เข้าใจว่าไอเดียมาจากไหน คะแนนขึ้นได้ยังไง แต่ก็ไม่เป็นไรเหลืออีกแค่ 5 นาทีแล้ว ทุกคนก็ร่วมใจกันส่งผลที่ดีๆทั้งหมดรวม 11 set เพื่อไปหาค่า median ของ MOF แต่ละตัว และนำไปส่งเป็นรอบสุดท้าย
และนั่นก็เป็น submission สุดท้ายของ competition ของเราที่ทำให้ทีมเรากลับมาเหยียบตำแหน่ง top 10 อีกครั้ง
ถึงแม้จะเป็นแค่ unofficial leaderboard ก็ตาม จากมุมมองพวกเราแล้ว นี่เป็น achievement ครั้งสำคัญที่จะคอยเป็นแรงผลักดันให้เรามุ่งมั่นต่อไปอย่างแน่นอน

Log in or sign up for Devpost to join the conversation.