เทคนิคการ Feature Engineering จากพิกัดละติจูด ลองจิจูด

เทคนิคการ Feature Engineering จากพิกัดละติจูด ลองจิจูด

28 กรกฎาคม 2565

ในปัจจุบัน เราจะพบข้อมูลพิกัดบอกตำแหน่ง ละติจูด (Latitude) และลองจิจูด (Longitude) เป็นจำนวนมาก โดยการนำไปใช้ประโยชน์เชิงวิเคราะห์นั้น หากเลือกใช้ ละติจูด และลองจิจูดเป็นสองตัวแปรแยกกันมักจะได้ผลออกมาแล้วตีความยาก ในบทความนี้จะทำการอธิบายและนำเสนอตัวอย่างวิธีการ Feature Engineering จากข้อมูลพิกัดจุด

การเลือกใช้ ละติจูด และลองจิจูดเป็นสองตัวแปรแยกกันมักจะได้ผลออกมาแล้วตีความยาก

การสร้าง Feature จากข้อมูลพิกัดจุด (Geospatial Data) นั้นจำเป็นต้องใช้ความเข้าใจในความสัมพันธ์จากบริบทของภูมิศาสตร์ กับโจทย์ปัญหาที่เราต้องการแก้ เช่น หากโจทย์ต้องการทำนายราคาบ้าน เราอาจจะเริ่มด้วยการคิดว่ามีปัจจัยใดบ้างที่มีผลต่อราคา เช่น ระยะทางจากสถานีรถไฟฟ้า, ระยะทางจากศูนย์กลางเมือง, ระยะห่างจากทะเล เป็นต้น ดังนั้นเราจะต้องแปลงปัจจัยดังกล่าวให้เป็นตัวเลขเพื่อนำไปใช้ในการวิเคราะห์ และนำไปใช้ประโยชน์ได้

ในบทความนี้ เราจะยกตัวอย่างการใช้ข้อมูลพิกัดจุดเพื่อใช้ทำนายราคาบ้านโดยใช้ข้อมูล Kaggle California Housing Prices ในการวิเคราะห์ ซึ่งเป็นข้อมูลสำรวจ Census ในปี 1990 แต่ละระเบียนจะเป็นข้อมูลของสิ่งปลูกสร้าง 1 บล็อก ในชุดข้อมูลนี้จะมีข้อมูลอยู่ทั้งหมด 10 คอลัมน์ แต่เราจะเลือกใช้แค่ 4 คอลัมน์ ได้แก่

  1. longitude – ตำแหน่งพิกัดลองจิจูด
  2. latitude –  ตำแหน่งพิกัดละติจูด
  3. median_house_value – ค่ามัธยฐานของมูลค่าบ้านใน block
  4. ocean_proximity – label ความห่างจากทะเล

รูปภาพประกอบในบทความนี้สามารถสร้างได้จากชุดคำสั่งใน Python ซึ่งผู้อ่านสามารถทำตามได้จาก House Value California: Feature Engineering

หากเรานำพิกัดจุดมาใช้โดยตรงนั้นจะไม่ค่อยได้ประโยชน์เท่าไหร่ เพื่อให้เห็นภาพชัดเจนเราจะใช้ scatter plot ระหว่างตัวแปรและค่าราคาบ้าน

Fig.1 Scatter Plot ระหว่างตัวแปรละติจูด (Latitude) และ ลองจิจูด (Longitude) กับราคาบ้าน

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

การใช้ Diagonal เพื่อประเมินระยะห่างจากชายฝั่ง
Fig.2 Scatter Plot แสดงตำแหน่งบ้านระบายสีตามราคา

จาก Fig.2 จะมองเห็นได้ชัดเจนว่าบ้านที่อยู่ใกล้กับชายฝั่งจะมีราคาแพงมากกว่าบ้านที่อยู่ห่างจากชายฝั่ง โดยเราสามารถแปลความใกล้กับชายฝั่งได้แบบง่ายๆ โดยการนำเอาพิกัดละติจูดและลองจิจูดมาบวกกันเป็น Feature ใหม่ที่ชื่อว่า Diagonal

เมื่อย้อนกลับไปดูที่ Fig. 2 จะสามารถเห็นได้ว่าถ้าผลบวกน้อยจะใกล้ชายฝั่ง (เส้นสีเขียว) ถ้าผลบวกมากจะอยู่ห่างจากชายฝั่ง (เส้นส้ม) [1]

Fig.3 Scatter Plot แสดงความสัมพันธ์ระหว่างตัวแปร diagonal และราคาบ้านระบายสีตาม label ความใกล้จากทะเล

จะเห็นได้ว่า Diagonal นั้นมีความสัมพันธ์กับราคาบ้านที่ชัดเจนขึ้นและสอดคล้องกับ Label ที่ได้มาจากคอลัมน์ ocean_proximity การคำนวณ Diagonal นั้นมีข้อดีที่ใช้ง่ายและสามารถมองเห็นได้ด้วยตาเปล่า แต่อาจจะต้องปรับการใช้ตามลักษณะรูปร่างขอเมือง ในกรณีนี้สามารถใช้ได้ดีเป็นกรณีพิเศษเนื่องจากรัฐ California มีลักษณะเป็นแนวเส้นเฉียงจากซ้ายบนลงขวาล่าง (ตามรูป) โดยในประเทศไทยนั้นมีจังหวัดที่มีรูปร่างที่เหมาะกับการใช้ Diagonal ได้แก่ กระบี่, ตรัง และสตูล เป็นต้น

Fig.4 เปรียบเทียบลักษณะรูปร่างของเมือง California, กระบี่ และตรัง มีลักษณะติดชายฝั่งเฉียงจากซ้ายบนลงขวาล่าง
การใช้ Principal Component Analysis

ในส่วนนี้เราจะนำการใช้ Principal Component Analysis [3]เพื่อนำแนวความคิดของการใช้ diagonal มาใช้กับเมืองที่อยู่ติดชายฝั่ง แต่อาจจะไม่ได้เฉียงจากซ้ายบนลงขวาล่าง โดยจังหวัดในประเทศไทยที่เข้าข่ายนี้ ได้แก่ ชลบุรี และ ประจวบครีขันธ์

Fig. 5 จังหวัดชลบุรี และประจวบคีรีขันธ์มีลักษณะติดชายฝั่ง แต่ไม่ได้เฉียงเป็นแนวเดียวกันกับ California เราสามารถกะได้โดยสายตาคร่าวๆ โดยการวาดเส้นสีแดง (ใกล้ชายฝั่ง) และ เส้นสีน้ำเงิน (ไกลชายฝั่ง)

การใช้ Principal Component Analysis (PCA) นั้นจะให้ตัวโปรแกรมหาแกนที่เหมาะสมให้เราเอง โดยหลักการคร่าวๆนั้นตัวโปรแกรมจะทำการลากเส้นบนแผนที่ (ตาม Fig.4) แล้วเลือกแกนที่มีการกระจายตัวของข้อมูลมากที่สุดเป็น PCA 1 และเลือกแกนที่ตั้งฉากกันเป็น PCA 2

Fig.6 Scatter plot ระบายสีจุดตามค่า Principal Component 1 และ 2

จะเห็นได้ว่าค่าของ PCA 2 ที่ได้มานั้นจะมีค่าสูงเมื่อบ้านอยู่ห่างจากชายฝั่ง และต่ำเมื่อบ้านอยู่ใกล้ชายฝั่ง จึงทำให้นำมาใช้แทน Diagonal ได้ แต่วิธีการนี้ก็ยังมีข้อจำกัดอยู่ที่ว่าสามารถใช้ได้กับเมืองที่มีลักษณะเป็นแนวเฉียงเท่านั้น ซึ่งในกรณีอื่นนั้นอาจจะนำความรู้เรื่องตำแหน่งของใจกลางเมืองมาช่วยในการสร้าง Feature เพื่อนำมาใช้ประโยชน์ได้

การใช้ระยะห่างจากเมืองใหญ่
Fig.7 แผนที่แสดงพิกัดบ้าน (สีน้ำเงิน) และเมืองใหญ่ (สีขาว)

ย้อนกลับไปที่ Fig. 2 เราอาจสังเกตได้ว่าบ้านที่มีราคาสูงจะกระจุกตัวอยู่ใกล้ตัวเมือง Los Angeles และ San Francisco ซึ่งค่อนข้างสมเหตุสมผล เนื่องจากมีระยะใกล้กับสิ่งอำนวยความสะดวกและสถานที่ทำงานมากกว่า ทำให้มีความราคาแพงกว่าบ้านที่อยู่ห่างจากตัวเมือง ในกรณีนี้เราอาจจะเลือกใช้ระยะห่างจากเมืองใหญ่ถึงบ้านใช้เป็น feature ที่ใช้ในการทำนายราคาบ้านได้ โดยการคำนวณระยะทางจากพิกัดละติดจูด และ ลองจิจูด ตามหลักแล้วจะต้องใช้ฟังก์ชั่น Haversine (มีฟังก์ชั่นสำเร็จรูปใน Python – คู่มือการใช้) เพื่อการคำนวณให้แม่นยำ แต่ในกรณีนี้เราใช้เพื่อนำมาทำ Feature Engineering อาจจะไม่ต้องการความแม่นยำมาก เราอาจจะใช้สูตรพิทาโกรัส เพื่อคำนวณระยะห่างแบบง่ายๆ

โดยเราจะเลือกใช้ระยะทางจากเมืองที่อยู่ใกล้บ้านที่สุดมาใช้คำนวณได้

สรุปผล

การทำ Feature Engineering นั้น สิ่งที่จะต้องคำนึงถึงเป็นอย่างแรกคือลักษณะรูปร่างของเมืองและความสัมพันธ์ของข้อมูล ในบทความนี้เราได้ยกตัวอย่างรัฐ California ซึ่งมีลักษณะเฉพาะตัว โดยได้ยกตัวอย่างการทำ Feature Engineering อยู่ 3 วิธีคือ Diagonal, Principal Component Analysis และ การใช้ระยะห่างจากเมืองใหญ่ โดยเน้นวิธีการที่สามารถตีความได้ง่ายและไม่ซับซ้อน

โดยในบางกรณีการนำข้อมูล Geospatial ไปใช้ยังมีวิธีอื่นที่ไม่ได้รวมไว้อยู่ในบทความนี้ เช่น Clustering, geohash [6] โดยผู้ทำการวิเคราะห์สามารถเลือกใช้ให้เข้ากับบริบทของโจทย์

อ้างอิง

  1. Bayesian Regression – House Price Prediction
  2. Geospatial Feature Engineering and Visualisation
  3. A Step-by-Step Explanation of Principal Component Analysis (PCA)
  4. Calculating distance between two geo-locations in Python
  5. Geospatial Feature Engineering and Visualization
  6. Feature engineering: all I learnt about Geo-spatial features

Formal Senior Data Scientist at Big Data Institute (Public Organization), BDI

แบ่งปันบทความ

กลุ่มเนื้อหา

แท็กยอดนิยม

แจ้งเรื่องที่อยากอ่าน

คุณสามารถแจ้งเรื่องที่อยากอ่านให้เราทราบได้ !
และเราจะนำไปพัฒนาบทความให้มีเนื้อหาที่น่าสนใจมากขึ้น

ไอคอน PDPA

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ “นโยบายคุ้กกี้” และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ “ตั้งค่า”

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่มีความจำเป็น (Strictly Necessary Cookies)
    เปิดใช้งานตลอด

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

  • คุกกี้เพื่อการวิเคราะห์และประเมินผลการใช้งาน (Performance Cookies)

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

  • คุกกี้เพื่อการใช้งานเว็บไซต์ (Functional Cookies)

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

  • คุกกี้เพื่อการโฆษณาไปยังกลุ่มเป้าหมาย (Targeting Cookies)

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

บันทึกการตั้งค่า
ไซต์นี้ลงทะเบียนกับ wpml.org ในฐานะไซต์พัฒนา สลับไปยังไซต์การผลิตโดยใช้รหัส remove this banner.