โครงการก่อสร้าง: ประมูลจบ แต่ราคาไม่เคยจบ!

Botnoidse3 Group5
botnoi-classroom
Published in
2 min readMay 24, 2021

ทุกๆ วันมีโครงการก่อสร้างเกิดขึ้นมากมายทั่วประเทศ และหลายๆ โครงการ ก็เป็นโครงการที่ขึ้นตรงกับหน่วยงานรัฐบาล ในวงการอาชีพผู้รับเหมาก่อสร้าง การรับงานจากหน่วยงานรัฐ ก็ถือว่าเป็นรายได้หลักรายได้ประจำที่มั่นคง และเป็นที่จับจ้องของทุกคน การก่อสร้างในแต่ละครั้ง ก็ต้องมีการจัดซื้ออุปกรณ์ก่อสร้างเป็นจำนวนมาก ก้อนอิฐ ปูน ท่อ และวัสดุต่างๆ อีกหลายรายการ ล้วนเป็นต้นทุนในการก่อสร้างทั้งสิ้น หากไม่ได้ทำงานในวงการก่อสร้าง หรือแม้กระทั่งทำบ้านด้วยตัวเอง เรื่องเหล่านี้อาจเป็นเรื่องไกลตัว แต่สำหรับโปรเจคนี้ ทำให้เราค้นพบเงื่อนไขบางอย่าง ที่เป็นเรื่องสำคัญในการควบคุมต้นทุน จากผู้ที่ประกอบอาชีพและคลุกคลีอยู่ในวงการก่อสร้างซึ่งเป็นสมาชิกในกลุ่มเรานี่เอง มันคืออะไร มันมีผลยังไง แล้วเราจะทำยังไงกับมัน มาตามไปดูพร้อมๆ กัน

ค่า K?

ในการประมูลโครงการก่อสร้างแต่ละครั้ง จะต้องมีการระบุต้นทุนและค่าใช้จ่ายอย่างชัดเจน เพื่อให้เจ้าของโครงการได้รับทราบถึงค่าใช้จ่ายที่จะต้องเสียให้กับผู้รับเหมาโดยละเอียด เมื่อชนะการประมูล จึงเริ่มต้นก่อสร้าง เมื่อเริ่มก่อสร้างจริงๆ นั้น ในช่วงระยะเวลาโครงการ ก็ต้องมีการซื้ออุปกรณ์ก่อสร้างอยู่เป็นระยะ ในขณะเดียวกัน ราคาอุปกรณ์ต่างๆ ก็มีการขึ้นลงอยู่ตลอดเวลา จึงมีการประกาศค่าดัชนีกลางของอุปกรณ์ก่อสร้างในแต่ละเดือน โดยจะเป็นประกาศจากกระทรวงพาณิชย์ เพื่อไปประกอบการคำนวณค่า K หรือตัวแปรที่จะถูกนำไปคำนวณเป็นราคากลางของวัสดุต่างๆ อีกทีหนึ่ง และสิ่งที่เราคาดไม่ถึงนั้นก็คือ ในสัญญารูปแบบหนึ่ง เมื่อผู้รับเหมาคำนวณค่าอุปกรณ์ต่างๆ ออกมาแล้ว หากราคานั้นมีราคาถูกลงกว่าจำนวนที่ได้ทำการประมูลไป ผู้รับเหมาจำเป็นจะต้องจ่ายส่วนต่าง เพื่อให้ค่าใช้จ่ายนั้น ไม่หนีไปกับราคาที่เคาะประมูลไปนั่นเอง ซึ่งค่าส่วนต่างนี้ มีค่าตั้งแต่หลักหมื่น จนไปถึงหลักแสน หรือบางครั้งก็อาจจะถึงล้านกันเลยทีเดียว

เมื่อได้รับฟัง painpoint จากคนทำงานโดยตรง ทุกคนก็เล็งเห็นว่า ถ้าเราสามารถทำนายค่า K ล่วงหน้า เพื่อนำไปใช้คำนวณค่าใช้จ่ายได้ก่อน ก็จะทำให้ผู้รับเหมา สามารถเตรียมตัวจ่ายส่วนต่างนี้ได้โดยที่คงสภาพคล่องไว้ และไม่กระทบสถาการณ์ทางการเงินใดๆ

ค่า K จะถูกแบ่งตามหมวดงานใหญ่ๆ 5 หมวด คืองานอาคาร งานดิน งานทาง งานชลประทาน และงานระบบสาธารณูปโภค ซึ่งในแต่ละหมวด ก็จะมีการแยกย่อยไปอีก แยกเป็นค่า K ของวัสดุต่างๆ ได้ 33 วัสดุ

เรานำข้อมูลมาจากกระทรวงพาณิชย์โดยตรง ซึ่งการประกาศดัชนีราคาวัสดุก่อสร้างในแต่ละครั้ง จะถูกประกาศในไฟล์ pdf และจะมีการประกาศในทุกๆ เดือน ซึ่งในเว็บนั้น มีข้อมูลย้อนหลังไปถึงปี 2554

Load & Clean

เมื่อได้ data มา เราต้องนำข้อมูลไปใส่ใน csv เพื่อที่จะทำให้ข้อมูลนั้นไปใช้งานต่อได้ เมื่อใส่ data ครบถ้วน หนึ่งในขั้นตอนที่สำคัญก่อนที่จะเริ่มทำอะไรกับข้อมูล ก็คือการทำความสะอาดข้อมูลเราก็นำมันมาตรวจสอบ null value แปลง date ให้เป็น date time และทำวันที่ให้เป็น index column เพื่อที่ว่าจะได้นำเรื่องเวลามาเป็นตัวช่วยในการหาแนวโน้มราคาของวัสดุก่อสร้างต่อไปด้วย Model LinearRegression

โดยในส่วนนี้ ต่อมาพวกเราไปปรับปรุงวิธีการดึงข้อมูลเพื่อให้ได้ข้อมูลที่สดใหม่มากยิ่งขึ้นโดยการใช้ BeautifulSoup เพื่อดึงข้อมูลต่าง ๆ ออกมาได้โดยตรงเลยที่ไม่จำเป็นต้องเข้า Excel หรือ Spreadsheet ให้เหนื่อยอีกแล้ว

ในที่นี้ เราแบ่งวัสดุออกมาเป็นทั้งหมด 13 ประเภท ตามค่าดัชนีที่ได้รับ หลังจากทำความสะอาดเสร็จเรียบร้อย data ของเราก็พร้อมที่จะไปต่อในขั้นตอนต่อไป

Train Test Split

จากข้อมูลทั้งหมด 124 แถว เราแบ่งข้อมูล train test สำหรับการเทรนโมเดลและทดสอบเป็นสัดส่วน 80/20 ซึ่งจะแบ่งได้เป็นข้อมูลสำหรับการเทรน 99 แถว และสำหรับทดสอบอีก 25 แถว จากนั้นเราก็ใช้หลักการ Linear Regression ซึ่งเป็นหลักทางสถิติเพื่อใช้ทำนายค่าตัวเลขต่างๆ ที่จะเกินขึ้นต่อไป

โดยที่การแบ่งจำนวนข้อมูลออกเป็น ทั้ง Train และ Test นี้ก็เหมือนกับการที่เราลองให้ Computer ได้ฝึกฝน และ ทำข้อสอบจริง เพื่อที่เราจะได้รู้ว่า สิ่งที่ Computer ทำนายมาเนี่ย มันใกล้เคียงความจริง มากน้อยแค่ไหนเพื่อ ตอนนำไปใช้จริง จะได้สิ่งที่มีประสิทธิภาพมากที่สุด ไปใช้กันนั่นเอง

เมื่อดูจากผลลัพธ์ในกราฟ จะเห็นว่าการทำนายมีแนวโน้มที่ใกล้เคียงกับความเป็นจริง แต่การขึ้นลงในแต่ละช่วงนั้น อาจจะไม่ดีมากนัก ซึ่งสอดคล้องกับค่า Root Mean Square Error ซึ่งเป็นตัวชี้วัดความคลาดเคลื่อนของโมเดลของเรา ซึ่งค่าดังกล่าว สูงถึง 56.24 ซึ่งเป็นอัตราการคาดเคลื่อนที่ค่อนข้างสูง จึงต้องมีการปรับปรุงโมเดลของเราให้มีประสิทธิภาพมากยิ่งขึ้น

Improve Performance

เราทำการปรับปรุงประสิทธิภาพของข้อมูลด้วยการ Decomposed Data โดยการแบ่งข้อมูลเป็น 4 ส่วน คือ

Observed, Trend, Seasonal และ Residual ซึ่งการแบ่งข้อมูลแบบนี้ จะเป็นเหมือนการกรองข้อมูลที่จำเป็น เพื่อทำให้โมเดลของเราสมบูรณ์ที่สุด

เมื่อได้กรองข้อมูลออกไปแล้ว เราจึงทำการเทรนโมเดลอีกครั้ง

ผลลัพธ์ที่ได้คือค่า Root Mean Square Error ที่ลดลง แต่ก็ยังคงมีค่าที่สูงอยู่ ซึ่งอาจจะเป็นเพราะว่า ข้อมูลที่เรานำมาเทรนอาจจะไม่เพียงพอ แต่ก็ยังมีแนวโน้มที่ดี

เมื่อเราทำการเทรนโมเดลเสร็จเรียบร้อยแล้ว เราก็จะเอาสิ่งที่เราทำมาทั้งหมดนั้นสรุปและใส่เข้าไปใน Pipeline เพื่อที่เราจะได้นำมาใช้งานต่อในอนาคตได้แบบไม่ยุ่งยาก จากสิ่งนี้ ที่เราวางเอาไว้ จะทำให้เราทำนายค่า K ออกมาได้สำหรับทุกหมวดวัสดุ เพื่อนำไปทำนายราคาวัสดุก่อสร้างประเภทต่างๆ ในงานทุกประเภทของงาน เพื่อเตรียมรับมือกับการขึ้นลงของราคาต่อไป

แม้ว่าการทำโมเดลทำนายนี้จะยังต้องมีการพัฒนาต่อไปอีกมาก แต่ก็มีทิศทางที่ดี และพวกเราก็หวังว่าโมเดลนี้ จะเป็นประโยชน์กับทุกคนที่มีความจำเป็นต้องใช้มันในการทำงานจริงๆ และสามารถช่วยแก้ปัญหาในการทำงาน ให้การทำงานเป็นไปได้อย่างราบรื่น

ดู Collab เพิ่มเติม:

https://colab.research.google.com/drive/1GwQRCRmWzPfj89yNepxeV1zIf-z3loEy?usp=sharing

--

--