วางแผนเที่ยว Singapore ด้วย Network Analysis

Jaturabhut Imwut
Data Growing
Published in
3 min readMay 24, 2019

อีกส่วนหนึ่งของการทำ Data Science นอกจากการต้องนำข้อมูลมาศึกษา (Exploration) การเตรียมข้อมูล (Preparation) ตอนจนต้องใช้ Model ต่าง ๆ ทั้งการทำ Prediction, Association หรือ Clustering ต่าง ๆ แล้ว

ปัจจุบันก็จะมีการวิเคราะห์ข้อมูลเกี่ยวกับ Network Analysis ซึงมีกระบวนการต่าง ไม่ว่าจะเป็น การหา Shortest path , MST Minimal ,Centrality ,Betweenness , Closeness ,Community Detection สำหรับผู้ที่สนใจอ่าน เพิ่มเติมได้ Link Medium ของเพื่อน ๆ หลักสูตรป.โท วิศวกรรมข้อมูลขนาดใหญ่ มหาวิทยาลัยธุรกิจบัณฑิตย์ ได้ด้านล่างนี้ครับ

ส่วนในบทความนี้ จะนำ Network Analysis ไปใช้วางแผนการท่องเที่ยวต่างประเทศ คือ ประเทศสิงค์โปร์ สำหรับทริปคราวนี้ ขอไปสถานที่ยอดนิยม อันได้แก่
1.สนามบินชางฮี (Changi Airport)
2.ที่พักแถวเกล้ง (Hotel)
3.สิงห์โตพ่นน้ำ หรือ Merlion
4. Merina bay sands และGarden by the bay
5.เกาะ Sentosa และ Universal Studio
6.ถนน Orchard
7.Clarke Quay
8.Little India
9.ย่าน China Town
10.กระเช้าลอยฟ้า (Singapore Flyer)

เมื่อนำมาวาดแผนที่การเดินทางไปสถานที่ต่าง ๆ จะได้ดังรูป

เมื่อเราได้ร่างคร่าว ๆ แล้ว ทำการแปลงให้อยู่ในรูปกราฟ ในที่นี้คำนวณจากจุดนึงไปจุดนึง โดยเลือกใช้การโดยสารรถไฟฟ้าและคำนวณเวลา เมื่อทำเป็นกราฟจะได้ลักษณะดังรูป

ทำให้เป็น Adjacency Matrix จากนั้นใช้ R Studio ในการ Plot โดยใช้คำสั่ง

เริ่มติดตั้ง Package iGraph และ Philentropy โดยใช้คำสั่ง

install.packages (“igraph”)
install.packages(“philentropy”)

จากนั้นใช้คำสั่งให้ Plot แผนที่การเดินทางให้เป็นรูปกราฟ

data <- matrix(c(0,52,0,0,0,0,0,0,0,0,
0,0,26,0,0,0,0,24,0,23,
0,26,0,16,0,24,15,20,14,18,
0,0,16,0,0,0,0,0,19,16,
0,0,0,0,0,0,0,0,46,0,
0,0,24,0,0,0,14,31,0,0,
0,0,15,0,0,14,0,0,15,0,
0,24,20,0,0,31,0,0,0,0,
0,0,14,19,0,0,15,0,0,0,
0,23,18,16,0,0,0,0,0,0
),nrow=10,ncol=10)
SGGraph <- graph_from_adjacency_matrix(data , mode=”undirected”,weighted=TRUE)
plot(SGGraph,edge.label=round(E(g2)$weight, 3))

เริ่มแบบง่าย ๆ ใช้ Shortest Path ในการหาการเดินทางจากสนามบิน (1) แล้วแวะเที่ยวตามที่ต่าง ๆ จนสุดเส้นทางที่เกาะ Sentosa/Universal Studio(5) โดยใช้คำสั่ง

news.path <- shortest_paths(gg,from = V(gg)[1], to = V(gg)[5], output = “both”)
news.path

เราจะได้เส้นทางเที่ยวที่สั้นที่สุด แวะผ่านจุดต่าง ๆ 1.สนามบิน → 2.ที่พักแถวเกล้ง (Hotel) → 3.สิงห์โตพ่นน้ำ หรือ Merlion → 9.ย่าน China Town → 5.เกาะ Sentosa และ Universal Studio โดยใช้เวลาเดืนทางทั้งหมด 52+26+14+46 = 138 นาที

ต่อไปแล้วถ้าเกิดอยากเที่ยวมันซะทุกที่จะไปเส้นทางไหนที่ใช้เวลาสั้นที่สุดจะทำอย่างไร ซึ่งมีการทำแบบนี้คือการหา Minimum spanning tree (MST) โดยใช้คำสั่งง่าย ๆ คือ

mst(gg)

ก็จะได้การเดินทางดังรูป จาก 1.สนามบินชางฮี (Changi Airport) → 2.ที่พักแถวเกล้ง (Hotel) → 10.กระเช้าลอยฟ้า (Singapore Flyer) → 4. Merina bay sands และGarden by the bay →3.สิงห์โตพ่นน้ำ หรือ Merlion → 8.Little India → 3.สิงห์โตพ่นน้ำ หรือ Merlion → 9.ย่าน China Town → 5.เกาะ Sentosa และ Universal Studio → 9.ย่าน China Town → 7.Clarke Quay → 6.ถนน Orchard

โดยจะใช้การเดินทางทั้งสิ้น ประมาณ 52 + 23 + 16+ 16+ 20+ 20+ 16+ 46+ 46+15+14 = 284 นาที

บทความนี้คงได้เป็นแนวทางในการนำเรื่อง Network Analysis ไปใช้ในการวิเคราะห์ข้อมูลที่เป็นลักษณะ Network ต่อไปครับ

ทั้งนี้ขอขอบพระคุณท่าน อาจารย์ ดร.เอกสิทธิ์ พัชรวงศ์ศักดา ที่ให้ความรู้ความเข้าใจในรายวิชา “การวิเคราะห์สังคมและเครือข่ายสารสนเทศ” หลักสูตรวิศวกรรมศาสตรมหาบัณฑิต สาขาวิศวกรรมข้อมูลขนาดใหญ่ มหาวิทยาลัยธุรกิจบัณฑิตย์ ไว้ด้วยครับ

--

--

Jaturabhut Imwut
Data Growing

Manager of Integration marketing and sales division@National Telecom,Data scientist, Master of Big Data Engineering program, CITE, Dhurakij Pundit University