Summary slide >> https://docs.google.com/presentation/d/1syeXdzHFysq3FCxdqZwLT8tFFmz4Th96UtgyikkLMog/edit?usp=sharing
คำเตือน
- การ deploy ensemble model บน production มีความเสี่ยงโปรด เรื่อง resource โปรดศึกษา model serving
Inspiration
- การทำ Machine learning และการทำไอเดียเพี้ยน ๆ ที่น่าลอง ถ้ามันเวิร์คยิ่งฟิน
- ใบกระท่อมสดสามใบต่อวัน จะช่วยให้มีไอเดียที่ดีขึ้นอย่างมีนัยสำคัญ มากกว่านั้นอยากจะน็อคได้
What it does
ทำนายความสามารถในการดูดซับ CO2 ของ Metal-Organic Framework
How we built it
ใช้ Machine learning environment ทั้งบน Deepnote, Google collab และ Kaggle
Challenges we ran into
- ทีมเราไม่มีคนที่มีพื้นฐานด้าน Material เลย เลยต้องใช้เวลาในการทำความเข้าใจความรู้ใหม่นี้
- แม้จะมีเครื่อง performance ของ deepnote มาให้ แต่ช่วงแรกใช้ standard version ในการเทรนด์ทำให้ต้องใช้ทริคทำ Checkpoint ในเทรนด์ข้อมูลขนาดใหญ่ ด้วย resource ที่จำกัด
Accomplishments that we're proud of
- ไอเดียการใช้ Transformer model มา encode RDF ที่มาจาก MOF ไฟล์อีกที
- ไอเดียแปลก ๆ อย่างการทำ
- คะแนนไม่ขี้เหร่มาก
What we learned
เทคนิคการใช้ Keras และ การ process sequence data บน Chemical structure
What's next for Delicious Men
ขอพักก่อน กินบุตเฟ่ต์ หมูกะทะ ครับ
Submission 1 - Public Test Score = 1.1973797183
Link to code >> https://github.com/SuradechKKPB/TMLCC_Submission068 เริ่มจากใช้ preprocessing pipeline จากน้องเปรม version RDF_V1 โดยยังเก็บ feature functional groups, topology, _space_group_crystal_system และ metal linker เอาไว้ จากนั้นเอา dataframe ที่ได้มา filter train data ที่ไม่พบใน test data ออก เช่น organic linker ใน test data ไม่มีเลข 59 ก็ filter ออกไป ค่าอื่นๆ เช่น CO2/N2_selectivity น้อยกว่า 172, volume น้อยกว่า 78969 เป็นต้น จากนั้นก็เพิ่มบาง feature จากการทำ feature engineering เช่น density, volumetric surface area เสร็จแล้วก็นำมาแบ่ง fold แบบ stratified 5 folds ตาม topology และทำ target median encoding สำหรับ categorical features ทุกตัวแปร ด้วยค่า median ของ CO2 working capacity และ fillna ด้วย kNNImputer จากนั้นก็ rescale data ด้วย MinMaxScaler แล้วลอง train CV 5 folds เพื่อจูน hyper parameter และเลือกโมเดลที่ดีที่สุด พบว่าค่าที่ดีที่สุดคือ Voting regressor ด้วย Catboost, ExtraTreesRegressor, และ LightGBM ด้วย weight 0.4, 0.2, 0.4 ตามลำดับ โมเดลนี้ให้ค่า Public Test Score = 1.2037590378 ขอเรียกว่าSubmission068
จากนั้นนำ Submission068 มา Blend กับ Submission ของน้องเปรมที่ชื่อ e09630cdcdc39ed00007efdd854b37c4b52aa20e0e7e5e6824dbb2b9ba81be11 (1) ด้วย Ratio 0.45, 0.55 พบว่าได้ Public Test Score = 1.2024542817 ขอเรียก Blended submission นี้ว่า submission081
ขอพักตรงนี้ไว้ก่อน มาลอง RDF_V3 เริ่มจากการ Fork pipeline น้องเปรมมาเลยใน Kaggle ตัว notebook ใหม่อยู่ในลิงก์ https://www.kaggle.com/suradechk/fork-of-fix-sra/edit/run/77186115 ใช้ไอเดียการ process data เหมือนเดิมเลย คือ filter train data ที่ไม่พบใน test data ออก ทำ feature engineering และทำ target median encoding สำหรับทุก categorical variable แต่โมเดลนี้ไม่ได้รัน CV หาค่าใหม่ ใช้ โมเดลจาก pipeline น้องเปรมไปเลย พบว่า โมเดลนี้ให้ค่า Public Test Score = 1.2036254357 ขอเรียกว่าSubmission090
นำ Submission081 มา blend กับ Submission090 ด้วย weight ratio 0.5, 0.5 จะได้ Public Test Score = 1.1973797183
Built With
- jupyter
- python
Log in or sign up for Devpost to join the conversation.