Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี

Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี

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

ในบทความนี้ ฉันต้องการพูดคุยเกี่ยวกับวิธีการใช้การเรียนรู้ของเครื่อง เราแก้ไขปัญหาการค้นหารถยนต์ในพื้นที่ที่มีความหนาแน่นต่ำ (กล่าวอีกนัยหนึ่ง เมื่อมองแวบแรก ไม่มีรถยนต์) และได้อะไรมาบ้าง

ประวัติศาสตร์

ในการเรียกแท็กซี่ ผู้ใช้ทำตามขั้นตอนง่ายๆ เพียงไม่กี่ขั้นตอน แต่จะเกิดอะไรขึ้นภายในบริการ

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

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

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

นี่คือสิ่งที่ผู้ใช้เห็นในแอปพลิเคชัน:

Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี

ค้นหารถยนต์ที่ไม่มีรถยนต์

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

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

เพื่อทำความเข้าใจว่าผู้ดำเนินการตามคำสั่งเหล่านี้มาจากไหน มาดูสถานะของพวกเขาระหว่างการค้นหาพิน:

Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี

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

มาเพิ่มความน่าเชื่อถือกัน

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

โครงการเป็นดังนี้:

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

ในแอปพลิเคชันมีลักษณะดังนี้:

Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี

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

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

สมมติว่าเรากำลังทำการทดสอบ (ลักษณนาม) สำหรับโรคที่หายากและเป็นอันตราย จากผลการตรวจ เราอาจส่งผู้ป่วยไปตรวจโดยละเอียดเพิ่มเติม หรือพูดว่า “ดี กลับบ้าน” สำหรับเรา การส่งคนป่วยกลับบ้านนั้นแย่กว่าการตรวจสุขภาพคนสุขภาพดีโดยไม่จำเป็นมาก นั่นคือเราต้องการให้การทดสอบได้ผลกับคนป่วยจริงๆ ให้ได้มากที่สุด ค่านี้เรียกว่าการเรียกคืน =Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี. ตัวแยกประเภทในอุดมคติมีการเรียกคืนได้ 100% สถานการณ์เลวร้ายคือส่งทุกคนไปตรวจสอบ จากนั้นการเรียกคืนก็จะเป็น 100% เช่นกัน

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

หากอัลกอริธึมสร้างค่าความน่าจะเป็นเป็นตัวเลข เมื่อเลือกเกณฑ์ที่ต่างกัน คุณจะได้ค่าการเรียกคืนที่แม่นยำที่แตกต่างกัน

ในปัญหาของเราสถานการณ์จะเป็นดังนี้ การเรียกคืนคือจำนวนคำสั่งซื้อที่เราสามารถนำเสนอได้ ความแม่นยำคือความน่าเชื่อถือของคำสั่งซื้อเหล่านี้ นี่คือลักษณะของเส้นโค้งการเรียกคืนที่แม่นยำของโมเดลของเรา:
Yandex.Taxi ค้นหารถยนต์อย่างไรเมื่อไม่มี
มีกรณีร้ายแรงอยู่ 0 กรณี คือ ไม่อนุญาตให้ใครสั่ง และ อนุญาตให้ทุกคนสั่งได้ หากคุณไม่อนุญาตให้ใครก็ตาม การเรียกคืนจะเป็น 100: เราไม่ได้สร้างคำสั่งซื้อ แต่จะไม่มีใครล้มเหลว หากเราอนุญาตให้ทุกคน การเรียกคืนจะเป็น 29% (เราจะได้รับคำสั่งซื้อที่เป็นไปได้ทั้งหมด) และความแม่นยำจะอยู่ที่ 71% นั่นคือ XNUMX% ของคำสั่งซื้อจะไม่ดี

เราใช้พารามิเตอร์ต่าง ๆ ของจุดเริ่มต้นเป็นสัญญาณ:

  • เวลา/สถานที่
  • สถานะของระบบ (จำนวนเครื่องจักรที่ถูกครอบครองของภาษีและหมุดทั้งหมดในบริเวณใกล้เคียง)
  • พารามิเตอร์การค้นหา (รัศมี จำนวนผู้สมัคร ข้อจำกัด)

เพิ่มเติมเกี่ยวกับสัญญาณ

ตามแนวคิดแล้ว เราต้องการแยกความแตกต่างระหว่างสองสถานการณ์:

  • “ป่าลึก” - ตอนนี้ไม่มีรถยนต์
  • “ โชคร้าย” - มีรถยนต์ แต่เมื่อค้นหาไม่มีคันที่เหมาะสม

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

ดังนั้นตัวบ่งชี้ระบบต่าง ๆ ในบริเวณใกล้เคียงกับจุด A จึงกลายเป็นคุณสมบัติที่ดี:

  • จำนวนรถยนต์ทั้งหมด.
  • จำนวนรถยนต์ในการสั่งซื้อ
  • จำนวนรถยนต์ที่ไม่สามารถสั่งซื้อได้ในสถานะ "ไม่ว่าง"
  • จำนวนผู้ใช้

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

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

ผลของการ

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

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

โพสต์อื่น ๆ เกี่ยวกับเทคโนโลยีแท็กซี่

ที่มา: will.com

เพิ่มความคิดเห็น