การแนะนำ:

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

บริษัทสามารถมอบหมายพนักงานขับรถไปยังสถานที่ที่เหมาะสมโดยขึ้นอยู่กับความต้องการสูง รถไปรับยอดนิยม รถไปส่งยอดนิยม และช่วงเวลาเร่งด่วน

ข้อมูลแท็กซี่นำมาจากเว็บไซต์ของรัฐบาลนิวยอร์ก https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page

ข้อมูลตั้งแต่เดือนมกราคมและกุมภาพันธ์ 2014 ถือเป็นข้อมูลการฝึกอบรมและการทดสอบตามลำดับ

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

คำชี้แจงปัญหา:

เพื่อออกแบบโมเดล Machine Learning ที่สามารถทำนายจำนวนแท็กซี่ที่มีในแต่ละสถานที่ในช่วงเวลาที่กำหนด 10 นาที

มาตรการวัดประสิทธิภาพ:

Root Mean Square Error (RMSE): สำหรับโมเดลที่ดีที่สุด ค่าจะเป็นศูนย์ ใช้เพื่อเปรียบเทียบโมเดลต่างๆ เพื่อค้นหาโมเดลที่ดีที่สุด เป็นค่าเฉลี่ยของผลต่างกำลังสองระหว่างค่าจริงและค่าทำนายของตัวแปรเป้าหมาย เป้าหมายของเราคือการลดมูลค่าของ MSE ให้เหลือน้อยที่สุด

ข้อผิดพลาดเปอร์เซ็นต์สัมบูรณ์เฉลี่ย (MAPE): ข้อผิดพลาดเปอร์เซ็นต์เฉลี่ยสัมบูรณ์ (MAPE) ใช้เพื่อคาดการณ์ข้อผิดพลาด เนื่องจากหน่วยของตัวแปรถูกปรับขนาดเป็นหน่วยเปอร์เซ็นต์

การวิเคราะห์ข้อมูลเชิงสำรวจ:

นี่เป็นก้าวแรกสำหรับการสร้างแบบจำลองแมชชีนเลิร์นนิง ขนาดข้อมูลของเราอยู่ที่ประมาณ 2GB มีมากกว่า 13 ล้านบันทึก ชุดข้อมูลจะได้รับการสำรวจในแง่ของปริมาณ จำนวนคุณลักษณะ ประเภทข้อมูลของคุณลักษณะ ค่าเฉพาะ ค่าที่หายไป จุดข้อมูลที่ซ้ำกัน เป็นต้น

มี 19 คุณสมบัติ -

  • รหัสผู้ขาย
  • tpep_pickup_datetime
  • tpep_dropoff_datetime
  • ผู้โดยสาร_นับ
  • ระยะการเดินทาง
  • RatecodeID
  • store_and_fwd_flag
  • PULocationID
  • DOLocationID
  • การชำระเงิน_ประเภท
  • ค่าโดยสาร_จำนวน
  • พิเศษ
  • mta_tax
  • เคล็ดลับ_จำนวน
  • ค่าผ่านทาง_จำนวน
  • การปรับปรุง_คิดค่าบริการ
  • รวม_จำนวน
  • ความแออัด_คิดค่าบริการ
  • สนามบิน_ค่าธรรมเนียม

เราจะใช้คุณสมบัติที่เกี่ยวข้องกับคำชี้แจงปัญหาของเรา เราจะใช้ tpep_pickup_datetime, PULocationID, trip_distance และจะได้รับคุณลักษณะอื่นๆ จากสิ่งเหล่านี้

เวลาวันที่รับและเวลาวันที่ส่งจะอยู่ในรูปแบบ yyyy-mm-dd hh:mm:ss ข้อมูลมาจากเดือนมกราคม 2014 โดยมีหลายบันทึกในแต่ละวันของเดือนนี้

การประมวลผลข้อมูลล่วงหน้า:

มีค่าที่ขาดหายไปในข้อมูลในคอลัมน์ store_and_fwd_flag, congestion_ allowance, Airport_fee เราจะไม่ใช้คุณสมบัติเหล่านี้ ดังนั้นเราจึงไม่จำเป็นต้องจัดการกับค่า na ในกรณีนี้

มีบันทึกที่ซ้ำกัน 172 รายการ เราจะลบบันทึกที่ซ้ำกันเหล่านี้

เวลาวันที่รับและเวลาวันที่ส่งจะอยู่ในรูปแบบ yyyy-mm-dd hh:mm:ss เราจะแปลงและแยกออกเป็นคุณสมบัติหลายประการ เราจะใช้วันที่ที่ไม่มีการประทับเวลาเป็นคุณลักษณะ นอกจากนี้เรายังจะแบ่งวันที่เป็นเดือน วัน ชื่อวัน ชั่วโมง นาที

มีบันทึกบางอย่างที่ระยะทางการเดินทางน้อยกว่าหรือเท่ากับ 0 เราจะละเว้นสิ่งเหล่านั้นจากชุดข้อมูลเนื่องจากเป็นข้อมูลที่ไม่ถูกต้องตามตรรกะ

เราจะแบ่งเวลาของวันออกเป็นช่วงเช้า บ่าย เย็น เที่ยงคืน ชั่วโมงระหว่าง 5–11 จะถูกแท็กเป็นตอนเช้า ชั่วโมงระหว่าง 11–17 จะถูกแท็กเป็นช่วงบ่าย ชั่วโมงระหว่าง 17–23 จะถูกแท็กเป็นตอนเย็น และชั่วโมงระหว่าง 23–5 จะถูกแท็กเป็นเที่ยงคืน เราต้องการมอบค่าตัวเลขให้กับบัคเก็ตในเวลากลางวันเหล่านี้เพื่อความสะดวกในการปรับขนาดข้อมูล เช้า บ่าย เย็น เที่ยงคืน จะแสดงเป็น 0, 1, 2, 3 ตามลำดับ

เราจะจัดทำรายการวันหยุดในเดือนมกราคม 2014 ซึ่งจะช่วยให้เราแท็กรับคุณลักษณะวันหยุดได้ เราจะได้วันหยุดเป็น 1 หากวันนั้นเป็นวันอาทิตย์หรือเป็นวันหยุดของสหรัฐอเมริกาที่อยู่ในรายการวันหยุด มิฉะนั้นจะถูกแท็กว่าไม่ใช่วันหยุด เช่น 0

นาทีมีตั้งแต่ 0 ถึง 60 เราจะแบ่งออกเป็น 6 กลุ่มๆ ละ 10 นาที เราจะรวมกลุ่มชั่วโมงและนาทีเพื่อให้มีคุณลักษณะเดียว ในหนึ่งวันมี 24 ชั่วโมง และ 6 บัคเก็ตสำหรับนาที ดังนั้นในหนึ่งวันจะมี 144 บัคเก็ต

มาแปลงวันที่เป็นรูปแบบที่ปรับขนาดได้ ข้อมูลเป็นของเดือนมกราคม 2014 ดังนั้นวันที่ที่แตกต่างระหว่างวันที่และจุดเริ่มต้นของเดือนนี้จึงถือเป็นคุณลักษณะ

มาจับจำนวนแท็กซี่ที่มีอยู่ในแต่ละสถานที่ในช่วง 5 ช่วงเวลาที่ผ่านมา (สำหรับ 1 ชั่วโมงที่ผ่านมา) ในฟีเจอร์ที่แตกต่างกัน 5 แบบ

ยิ่งไปกว่านั้น เราจะรวบรวมข้อมูลตามสถานที่รับ วันที่ ช่วงเวลาชั่วโมง_นาที กลางวัน และวันหยุด จำนวนบันทึกจะทำให้เราทราบจำนวนแท็กซี่ที่มีให้บริการ ณ จุดรับ วันที่ ชั่วโมง และนาที

จำนวนแท็กซี่คือการตอบสนองหรือตัวแปรตาม

ข้อมูลตัวอย่างก่อนการปรับขนาดจะมีลักษณะดังนี้-

การสร้างแบบจำลอง:

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

ไลบรารี Sklearn มีโมเดลการถดถอยเชิงเส้นหลายแบบ ในที่นี้ มีการใช้แบบจำลอง SGDRegressor, LinearRegression และการถดถอยพหุนามเพื่อตรวจสอบประสิทธิภาพการถดถอยระดับที่สูงกว่า

เทคนิคการปรับขนาดเช่นการทำให้เป็นมาตรฐานและการกำหนดมาตรฐานถูกนำมาใช้ที่นี่

โมเดล 1: มีการใช้คุณลักษณะสามประการในการรับสถานที่ วันที่ ชั่วโมง_นาทีในโมเดลนี้ ข้อมูลถูกปรับขนาดให้มีช่วงระหว่าง -1 ถึง 1 SGDRegressor ใช้กับ alpha=0.0001 และ max_iter=1000

ขึ้นอยู่กับ Stochastic Gradient Descent ซึ่งการไล่ระดับสีของการสูญเสียจะถูกประมาณค่าแต่ละตัวอย่างในแต่ละครั้ง และแบบจำลองจะได้รับการอัปเดตไปพร้อมกันด้วยตารางความแข็งแกร่งที่ลดลง (หรือที่เรียกว่าอัตราการเรียนรู้)

ตัวทำให้สม่ำเสมอ/การลงโทษจะถูกเพิ่มในฟังก์ชันการสูญเสียที่จะย่อพารามิเตอร์โมเดลให้เหลือเวกเตอร์ศูนย์โดยใช้ค่ามาตรฐานยูคลิดกำลังสอง L2 หรือค่ามาตรฐานสัมบูรณ์ L1 หรือทั้งสองอย่างรวมกัน (Elastic Net) หากการอัพเดตพารามิเตอร์ข้ามค่า 0.0 เนื่องจากตัวปรับมาตรฐาน การอัพเดตจะถูกตัดทอนเป็น 0.0 เพื่อให้เรียนรู้โมเดลแบบกระจัดกระจายและสามารถเลือกคุณลักษณะออนไลน์ได้

ด้วยคุณสมบัติ 3 ประการ RMSE ของรุ่นนี้คือ 44 โมเดลทำงานได้ไม่ดีจึงเป็นรุ่นที่ไม่ดี เราจะไปต่อกับรุ่นอื่น

รุ่น 2: มีการใช้คุณลักษณะสามประการในการรับสถานที่ วันที่ ชั่วโมง_นาทีในรุ่นนี้ ข้อมูลถูกปรับขนาดให้มีช่วงระหว่าง -1 ถึง 1 ใช้ SGDRegressor และปรับแต่งด้วยไฮเปอร์พารามิเตอร์อัลฟ่า คะแนนการฝึกอบรมและการทดสอบ MSE การฝึกอบรมและการทดสอบจะถูกบันทึกไว้ในแต่ละรอบ ฝึกอบรมและทดสอบ MSE ได้รับการพล็อตเพื่อให้เห็นภาพคุณค่าของพวกเขา

ข้อผิดพลาดในการฝึกและการทดสอบลดลงเมื่ออัลฟ่าเปลี่ยนจาก 10², 10¹, 10^-1, 10^-2 และอื่นๆ มันคงตัวที่ alpha=0.01 MSE ยังคงสูงมาก และโมเดลทำงานได้ไม่ดีในการตั้งค่านี้

รุ่น 3: มีการใช้คุณลักษณะสามประการในการรับสถานที่ วันที่ ชั่วโมง_นาทีในรุ่นนี้ การกำหนดมาตรฐานใช้เป็นเทคนิคการปรับขนาด นี่เป็นข้อแตกต่างเพียงอย่างเดียวระหว่างรุ่น 1 และรุ่น 3 ประสิทธิภาพใกล้เคียงกับรุ่น 1

รุ่น 4: มีการใช้คุณลักษณะสามประการในการรับสถานที่ วันที่ ชั่วโมง_นาทีในรุ่นนี้ การกำหนดมาตรฐานใช้เป็นเทคนิคการปรับขนาด โมเดล LinearRegression ถูกใช้จากไลบรารี sklearn มันใช้วิธีกำลังสองน้อยที่สุดสามัญ เหมาะกับแบบจำลองเชิงเส้นที่มีค่าสัมประสิทธิ์ w = (w1, …, wp) เพื่อลดผลรวมที่เหลือของกำลังสองระหว่างเป้าหมายที่สังเกตในชุดข้อมูลกับเป้าหมายที่ทำนายโดยการประมาณเชิงเส้น RMSE คือ 44.22 สิ่งนี้ไม่ได้สร้างความแตกต่างในประสิทธิภาพการทำงาน

โมเดล 5: ใช้การถดถอยพหุนามพร้อมคุณลักษณะ 3 ประการ: สถานที่รับ วันที่ ชั่วโมง_นาที แบบจำลองนี้ลองใช้องศาพหุนามตั้งแต่ 1 ถึง 10 การปรับขนาดจะดำเนินการในระดับหนึ่งเพื่อรองรับการเปลี่ยนแปลงในช่วงของข้อมูล ระดับ 2 ให้ประสิทธิภาพที่ดีกว่าองศาอื่นๆ แต่ RMSE ยังคงสูงอยู่ ดังนั้นแนวทางนี้จึงไม่ช่วยอะไรมากนัก โมเดลทั้งหมดนี้ใช้ 3 คุณสมบัติจากชุดข้อมูล เราจะเพิ่มคุณสมบัติเพิ่มเติมจากชุดข้อมูลเพื่อปรับปรุงโมเดล

รุ่น 6: ใช้ SGDRegressor พร้อมฟีเจอร์ 10 ประการที่นี่ เวลาของวัน วันหยุด และจำนวนรถแท็กซี่ที่มีให้บริการในช่วง 5 ช่วงที่ผ่านมาในชั่วโมงก่อนหน้า การกำหนดมาตรฐานใช้กับฟีเจอร์และพารามิเตอร์ที่ใช้เป็น alpha=0.0001 และ max_iter=1000

โมเดลทำงานได้ค่อนข้างดีแม้ในข้อมูลทดสอบ Training RMSE และ Test RMSE เท่ากับ 9.95 และ 9.91 ตามลำดับ คะแนนการฝึกอบรมและการทดสอบ 0.9529 และ 0.9548 ตามลำดับ

บทสรุป:

โมเดล 6 ทำงานได้ดีมากด้วย SGD Regressor และฟีเจอร์ 10 รายการ มีขอบเขตในการปรับแต่งโมเดลเพิ่มเติม คะแนน R2 คือ 0.95 ใกล้เคียงกับ1ซึ่งเป็นการวัดที่ดี MAPE อยู่ที่ 44% อยู่ระหว่าง 20–50 ดังนั้นจึงบ่งชี้ว่าเป็นการคาดการณ์ที่สมเหตุสมผล RMSE คือ 9.9 ด้วยข้อมูลการทดสอบที่มากขึ้นและการปรับแต่งไฮเปอร์พารามิเตอร์ โมเดลนี้สามารถปรับปรุงให้ดีที่สุดในตลาดได้

คำแนะนำ:

บริษัทควรดูแลสถานที่แต่ละแห่งโดยคำนึงถึงความต้องการแท็กซี่และสถานที่รับรถ

ควรเปิดตัวข้อเสนอสุดสัปดาห์เพื่อเพิ่มจำนวนคนในวันอาทิตย์

ควรเปิดตัวโปรโมชั่นชานเมืองเพื่อเพิ่มรายได้

ควรเปิดตัวแคมเปญเช่นการพักผ่อนช่วงสุดสัปดาห์และการเดินทางแบบไปเช้าเย็นกลับ

บริษัทสามารถดูการฟื้นฟูบริการ Carpooling Service ได้ด้วยความช่วยเหลือจากโมเดลนี้

การรับทราบ:

ขอขอบคุณที่อ่านบล็อกนี้ โปรดแสดงความคิดเห็นด้วย คุณอาจพบโค้ดทั้งหมดได้ใน "ลิงก์" GitHub นี้ คุณสามารถเชื่อมต่อกับฉันได้ที่ "Linkedin"

ทีม Scaler ได้ช่วยฉันในการสร้างเรื่องราวนี้

ข้อมูลอ้างอิง:



ผลงานในอนาคต:

ฉันวางแผนที่จะเพิ่มคุณสมบัติเพิ่มเติม เช่น ค่าเฉลี่ยเอ็กซ์โปเนนเชียล ค่าเฉลี่ยสะสม ให้กับชุดข้อมูลนี้ โมเดล ML ที่ใช้คุณสมบัติเหล่านี้จะช่วยเพิ่มประสิทธิภาพ