สวัสดีครับ
พอดีทำงานสาย Data มาสักพัก แล้วมีอย่างนึงที่รู้สึกมาตลอดว่ามัน “เสียเวลาชีวิต” ที่สุดคือ feature engineering บน relational data โดยใช้ Langsat.ai เข้ามาช่วยงานผม
คือข้อมูลจริงมันไม่เคยอยู่ในตารางเดียว ใช่ไหมครับ มันกระจายอยู่ในหลายตาราง — customers, orders, order_items, sessions, products แล้วเวลาจะทำโมเดลทำนายอะไรสักอย่าง เช่น churn เราต้องมานั่ง
• join ตารางทั้งหมดให้เป็นตารางเดียว
• ปั้น aggregate feature เป็นร้อยๆ คอลัมน์ (ยอดซื้อ 30 วันล่าสุด, จำนวนครั้งที่เข้าเว็บ, ค่าเฉลี่ยตะกร้า, …)
• ระวัง data leakage จาก time window
• แล้วค่อยโยนเข้า XGBoost
ขั้นตอนนี้กินเวลาเป็นสัปดาห์ และตัวโมเดลจริงๆ ใช้เวลาเทรนแค่ไม่กี่นาที ตลกดี
แล้วผมไปเจอแนวคิดที่ชื่อว่า Relational Deep Learning
ไอเดียมันง่ายมากครับ — ถ้าฐานข้อมูลมันเป็นกราฟอยู่แล้ว ทำไมต้องบี้ให้แบนก่อนด้วย?
คือ foreign key มันก็คือเส้นเชื่อม (edge) ระหว่างตาราง ลูกค้าคนนึงเชื่อมไปหาออเดอร์หลายอัน ออเดอร์เชื่อมไปหาสินค้า มันคือ heterogeneous graph โดยธรรมชาติ ถ้าเราเอา GNN มาเรียนบนโครงสร้างนี้ตรงๆ โมเดลจะเห็นความสัมพันธ์ที่ aggregate feature มองไม่เห็น และเราไม่ต้องมานั่งเดาว่าควรปั้น feature อะไรบ้าง
เรื่องนี้ไม่ใช่ของใหม่นะครับ ฝั่งวิจัยเขาทำกันมาพักใหญ่ (ใครสนใจลองไปหา RelBench ของ Stanford อ่านดู เป็น benchmark สำหรับงานสายนี้โดยเฉพาะ) แต่ที่ผ่านมามันเป็นของที่ต้องเขียน PyTorch Geometric เองล้วนๆ
พอดีไปเจอเว็บนึงที่เอามาทำเป็นเครื่องมือให้ใช้เลย
ชื่อ Langsat (langsat.ai) มีฟรีเทียร์ให้ลอง ผมเลยเอาชุดข้อมูลตัวอย่างไปโยนดู กระบวนการคร่าวๆ คือ
1. อัปโหลด CSV / Parquet หลายไฟล์เข้าไป (หรือต่อ Postgres / MySQL)
2. มันสแกนหา primary key, foreign key, คอลัมน์ timestamp เอง แล้วโชว์ schema graph ให้เรากดยืนยัน — อันไหนมันเดาผิดเราแก้ได้
3. บอกว่าอยากทำนายคอลัมน์ไหน
4. ถ้าอัปตารางเดียวมันเทรนโมเดล tabular ให้ (MLP / FT-Transformer / ResNet / TabNet) ถ้าอัปหลายตารางที่เชื่อมกัน มันสร้างกราฟแล้วเทรน GNN (SAGE / GATv2 / GIN)
5. เทรนเสร็จได้ dashboard เมตริกตามชนิดงาน — งาน regression ก็ R²/MAE/RMSE, งาน binary ก็ AUROC + ROC curve + confusion matrix, ไม่ได้ยัดเมตริกมั่วๆ มาให้ดู
6. ได้ REST endpoint มาเรียกใช้เลย มี mode ให้เลือกด้วยว่าจะ score เอนทิตี้ที่อยู่ในเทรนนิ่งเซ็ตอยู่แล้ว (transductive) หรือของใหม่ที่โมเดลไม่เคยเห็น (inductive)
รองรับ 6 กลุ่มงาน — regression, binary/multi-class classification, clustering, anomaly detection และ link prediction (อันหลังนี่ใช้ทำ recommendation ได้)
สิ่งที่ผมชอบ
• ไม่ต้อง join ไม่ต้องปั้น feature จริงๆ อันนี้คือของหลัก ประหยัดเวลาไปเยอะมาก
• schema detection แม่นกว่าที่คิด และแก้ทับได้ ไม่ได้บังคับ
• มี benchmark mode ที่เทรนทุกโมเดลในรีจิสทรีแข่งกัน แล้วเก็บตัวที่ดีสุด + ensemble ของ top-3 ไว้ให้ (แต่อยู่ในแพลนสูง กินเครดิตเยอะ)
• มี input monitoring ดู drift รายฟีเจอร์ (KS / Jensen-Shannon), null rate, unseen ID — ส่วนนี้ปกติต้องไปต่อ Evidently หรือเขียนเองเลยนะ
• fine-tune แบบ incremental ต่อยอดจาก checkpoint เดิมด้วยข้อมูลใหม่ ไม่ต้องเทรนใหม่ทั้งก้อน และมันเก็บ lineage ว่าเวอร์ชันไหนแตกมาจากไหน
สิ่งที่ต้องคิดก่อนใช้ (ผมว่าตรงนี้สำคัญกว่าข้อดี)
• เอาโมเดลออกมาไม่ได้ อันนี้ชัดเจนใน FAQ เขาเลย ทุกแพลนรวมถึง Team ก็ export ไม่ได้ ใช้ผ่าน API เขาอย่างเดียว export ได้แค่ผลลัพธ์เป็น CSV — ใครกลัว vendor lock-in ต้องชั่งใจหนักๆ
• ข้อมูลต้องขึ้นคลาวด์เขา เขาบอกว่า workspace แยกต่อบัญชี เข้ารหัสทั้งตอนส่งและตอนเก็บ ไม่เอาไปเทรนให้คนอื่น แต่ถ้าเป็นข้อมูลลูกค้าจริงต้องเช็ค PDPA และนโยบายบริษัทตัวเองก่อน อย่าเพิ่งอัปมั่ว
• ฟรีเทียร์เลือกโมเดลไม่ได้ มันยัดตัวที่เร็วสุดมาให้ ต้องขึ้น Pro ถึงเลือกเองได้ ดังนั้นถ้าจะตัดสินว่า “GNN ดีกว่า XGBoost ที่ผมปั้นเองไหม” จากฟรีเทียร์อย่างเดียว อาจจะยังไม่แฟร์กับมัน
• เพดาน 20M rows ต่อ 1 training run ใครข้อมูลใหญ่กว่านี้ต้องคิดวิธีอื่น
สรุปความเห็นส่วนตัว
ผมไม่คิดว่ามันมาแทน data scientist นะครับ อ่าน marketing เขาเคลมว่า “no data team required” ซึ่งผมว่าเวอร์ไป — คนที่ไม่เข้าใจ data leakage หรือไม่รู้ว่า AUROC 0.9 บนข้อมูล imbalanced แปลว่าอะไร ก็ยังจะตีความผลผิดอยู่ดี ต่อให้ UI สวยแค่ไหน
แต่ในฐานะ เครื่องมือทำ baseline เร็วๆ ผมว่าน่าสนใจมาก จากเดิมกว่าจะรู้ว่าปัญหานี้ ML ช่วยได้จริงไหมต้องลงแรงสองสัปดาห์ กลายเป็นรู้ภายในบ่ายเดียว ถ้า baseline มันออกมาห่วยก็แปลว่าข้อมูลเราอาจจะยังไม่พอ ประหยัดเวลาไปเยอะ
อยากถามเพื่อนๆ สาย Data ในนี้ครับ
1. มีใครเคยลองเอา GNN มาจับ relational data ในงานจริงบ้างไหมครับ ผลเทียบกับ XGBoost + feature ที่ปั้นเองเป็นยังไง
2. เรื่อง export โมเดลไม่ได้ นี่ deal breaker สำหรับทุกคนเลยหรือเปล่า หรือถ้ามันช่วยประหยัดเวลาจริงก็ยอมรับได้
3. ที่ทำงานใครใช้ AutoML แล้วเวิร์กจริงบ้างครับ ผมเคยลองมาหลายเจ้าแล้วส่วนใหญ่จบที่กลับไปเขียนเองอยู่ดี
ใครมีประสบการณ์มาเล่าสู่กันฟังหน่อยครับ 🙏
ปล. ผมเป็นหนึ่งในที่ปรึกษาพัฒนาเว็บไซต์ ยินดีรับทุกความเห็นครับ
เบื่อการทำ feature engineering จนไปลองของที่เทรน GNN บนตารางดิบๆ เลย — มาเล่าให้ฟัง
พอดีทำงานสาย Data มาสักพัก แล้วมีอย่างนึงที่รู้สึกมาตลอดว่ามัน “เสียเวลาชีวิต” ที่สุดคือ feature engineering บน relational data โดยใช้ Langsat.ai เข้ามาช่วยงานผม
คือข้อมูลจริงมันไม่เคยอยู่ในตารางเดียว ใช่ไหมครับ มันกระจายอยู่ในหลายตาราง — customers, orders, order_items, sessions, products แล้วเวลาจะทำโมเดลทำนายอะไรสักอย่าง เช่น churn เราต้องมานั่ง
• join ตารางทั้งหมดให้เป็นตารางเดียว
• ปั้น aggregate feature เป็นร้อยๆ คอลัมน์ (ยอดซื้อ 30 วันล่าสุด, จำนวนครั้งที่เข้าเว็บ, ค่าเฉลี่ยตะกร้า, …)
• ระวัง data leakage จาก time window
• แล้วค่อยโยนเข้า XGBoost
ขั้นตอนนี้กินเวลาเป็นสัปดาห์ และตัวโมเดลจริงๆ ใช้เวลาเทรนแค่ไม่กี่นาที ตลกดี
แล้วผมไปเจอแนวคิดที่ชื่อว่า Relational Deep Learning
ไอเดียมันง่ายมากครับ — ถ้าฐานข้อมูลมันเป็นกราฟอยู่แล้ว ทำไมต้องบี้ให้แบนก่อนด้วย?
คือ foreign key มันก็คือเส้นเชื่อม (edge) ระหว่างตาราง ลูกค้าคนนึงเชื่อมไปหาออเดอร์หลายอัน ออเดอร์เชื่อมไปหาสินค้า มันคือ heterogeneous graph โดยธรรมชาติ ถ้าเราเอา GNN มาเรียนบนโครงสร้างนี้ตรงๆ โมเดลจะเห็นความสัมพันธ์ที่ aggregate feature มองไม่เห็น และเราไม่ต้องมานั่งเดาว่าควรปั้น feature อะไรบ้าง
เรื่องนี้ไม่ใช่ของใหม่นะครับ ฝั่งวิจัยเขาทำกันมาพักใหญ่ (ใครสนใจลองไปหา RelBench ของ Stanford อ่านดู เป็น benchmark สำหรับงานสายนี้โดยเฉพาะ) แต่ที่ผ่านมามันเป็นของที่ต้องเขียน PyTorch Geometric เองล้วนๆ
พอดีไปเจอเว็บนึงที่เอามาทำเป็นเครื่องมือให้ใช้เลย
ชื่อ Langsat (langsat.ai) มีฟรีเทียร์ให้ลอง ผมเลยเอาชุดข้อมูลตัวอย่างไปโยนดู กระบวนการคร่าวๆ คือ
1. อัปโหลด CSV / Parquet หลายไฟล์เข้าไป (หรือต่อ Postgres / MySQL)
2. มันสแกนหา primary key, foreign key, คอลัมน์ timestamp เอง แล้วโชว์ schema graph ให้เรากดยืนยัน — อันไหนมันเดาผิดเราแก้ได้
3. บอกว่าอยากทำนายคอลัมน์ไหน
4. ถ้าอัปตารางเดียวมันเทรนโมเดล tabular ให้ (MLP / FT-Transformer / ResNet / TabNet) ถ้าอัปหลายตารางที่เชื่อมกัน มันสร้างกราฟแล้วเทรน GNN (SAGE / GATv2 / GIN)
5. เทรนเสร็จได้ dashboard เมตริกตามชนิดงาน — งาน regression ก็ R²/MAE/RMSE, งาน binary ก็ AUROC + ROC curve + confusion matrix, ไม่ได้ยัดเมตริกมั่วๆ มาให้ดู
6. ได้ REST endpoint มาเรียกใช้เลย มี mode ให้เลือกด้วยว่าจะ score เอนทิตี้ที่อยู่ในเทรนนิ่งเซ็ตอยู่แล้ว (transductive) หรือของใหม่ที่โมเดลไม่เคยเห็น (inductive)
รองรับ 6 กลุ่มงาน — regression, binary/multi-class classification, clustering, anomaly detection และ link prediction (อันหลังนี่ใช้ทำ recommendation ได้)
สิ่งที่ผมชอบ
• ไม่ต้อง join ไม่ต้องปั้น feature จริงๆ อันนี้คือของหลัก ประหยัดเวลาไปเยอะมาก
• schema detection แม่นกว่าที่คิด และแก้ทับได้ ไม่ได้บังคับ
• มี benchmark mode ที่เทรนทุกโมเดลในรีจิสทรีแข่งกัน แล้วเก็บตัวที่ดีสุด + ensemble ของ top-3 ไว้ให้ (แต่อยู่ในแพลนสูง กินเครดิตเยอะ)
• มี input monitoring ดู drift รายฟีเจอร์ (KS / Jensen-Shannon), null rate, unseen ID — ส่วนนี้ปกติต้องไปต่อ Evidently หรือเขียนเองเลยนะ
• fine-tune แบบ incremental ต่อยอดจาก checkpoint เดิมด้วยข้อมูลใหม่ ไม่ต้องเทรนใหม่ทั้งก้อน และมันเก็บ lineage ว่าเวอร์ชันไหนแตกมาจากไหน
สิ่งที่ต้องคิดก่อนใช้ (ผมว่าตรงนี้สำคัญกว่าข้อดี)
• เอาโมเดลออกมาไม่ได้ อันนี้ชัดเจนใน FAQ เขาเลย ทุกแพลนรวมถึง Team ก็ export ไม่ได้ ใช้ผ่าน API เขาอย่างเดียว export ได้แค่ผลลัพธ์เป็น CSV — ใครกลัว vendor lock-in ต้องชั่งใจหนักๆ
• ข้อมูลต้องขึ้นคลาวด์เขา เขาบอกว่า workspace แยกต่อบัญชี เข้ารหัสทั้งตอนส่งและตอนเก็บ ไม่เอาไปเทรนให้คนอื่น แต่ถ้าเป็นข้อมูลลูกค้าจริงต้องเช็ค PDPA และนโยบายบริษัทตัวเองก่อน อย่าเพิ่งอัปมั่ว
• ฟรีเทียร์เลือกโมเดลไม่ได้ มันยัดตัวที่เร็วสุดมาให้ ต้องขึ้น Pro ถึงเลือกเองได้ ดังนั้นถ้าจะตัดสินว่า “GNN ดีกว่า XGBoost ที่ผมปั้นเองไหม” จากฟรีเทียร์อย่างเดียว อาจจะยังไม่แฟร์กับมัน
• เพดาน 20M rows ต่อ 1 training run ใครข้อมูลใหญ่กว่านี้ต้องคิดวิธีอื่น
สรุปความเห็นส่วนตัว
ผมไม่คิดว่ามันมาแทน data scientist นะครับ อ่าน marketing เขาเคลมว่า “no data team required” ซึ่งผมว่าเวอร์ไป — คนที่ไม่เข้าใจ data leakage หรือไม่รู้ว่า AUROC 0.9 บนข้อมูล imbalanced แปลว่าอะไร ก็ยังจะตีความผลผิดอยู่ดี ต่อให้ UI สวยแค่ไหน
แต่ในฐานะ เครื่องมือทำ baseline เร็วๆ ผมว่าน่าสนใจมาก จากเดิมกว่าจะรู้ว่าปัญหานี้ ML ช่วยได้จริงไหมต้องลงแรงสองสัปดาห์ กลายเป็นรู้ภายในบ่ายเดียว ถ้า baseline มันออกมาห่วยก็แปลว่าข้อมูลเราอาจจะยังไม่พอ ประหยัดเวลาไปเยอะ
อยากถามเพื่อนๆ สาย Data ในนี้ครับ
1. มีใครเคยลองเอา GNN มาจับ relational data ในงานจริงบ้างไหมครับ ผลเทียบกับ XGBoost + feature ที่ปั้นเองเป็นยังไง
2. เรื่อง export โมเดลไม่ได้ นี่ deal breaker สำหรับทุกคนเลยหรือเปล่า หรือถ้ามันช่วยประหยัดเวลาจริงก็ยอมรับได้
3. ที่ทำงานใครใช้ AutoML แล้วเวิร์กจริงบ้างครับ ผมเคยลองมาหลายเจ้าแล้วส่วนใหญ่จบที่กลับไปเขียนเองอยู่ดี
ใครมีประสบการณ์มาเล่าสู่กันฟังหน่อยครับ 🙏
ปล. ผมเป็นหนึ่งในที่ปรึกษาพัฒนาเว็บไซต์ ยินดีรับทุกความเห็นครับ