บริการแท็กซี่ที่ดีควรปลอดภัย เชื่อถือได้ และรวดเร็ว ผู้ใช้จะไม่ลงรายละเอียด: เป็นสิ่งสำคัญสำหรับเขาที่เขาคลิกปุ่ม "สั่งซื้อ" และรับรถโดยเร็วที่สุดที่จะพาเขาจากจุด A ไปยังจุด B หากไม่มีรถยนต์อยู่ใกล้ ๆ บริการควร แจ้งเรื่องนี้ทันทีเพื่อไม่ให้ลูกค้ามีความคาดหวังที่ผิดพลาด แต่หากป้าย "ไม่มีรถยนต์" ปรากฏบ่อยเกินไปก็มีเหตุผลที่บุคคลหนึ่งจะหยุดใช้บริการนี้และไปหาคู่แข่ง
ในบทความนี้ ฉันต้องการพูดคุยเกี่ยวกับวิธีการใช้การเรียนรู้ของเครื่อง เราแก้ไขปัญหาการค้นหารถยนต์ในพื้นที่ที่มีความหนาแน่นต่ำ (กล่าวอีกนัยหนึ่ง เมื่อมองแวบแรก ไม่มีรถยนต์) และได้อะไรมาบ้าง
ประวัติศาสตร์
ในการเรียกแท็กซี่ ผู้ใช้ทำตามขั้นตอนง่ายๆ เพียงไม่กี่ขั้นตอน แต่จะเกิดอะไรขึ้นภายในบริการ
ผู้ใช้งาน | เวที | แบ็กเอนด์ Yandex.Taxi |
---|---|---|
เลือกจุดเริ่มต้น | หมุด | เรากำลังเปิดตัวการค้นหาผู้สมัครแบบง่าย - การค้นหาด้วยหมุด จากไดรเวอร์ที่พบ เวลาที่คาดว่าจะมาถึง - ETA อยู่ในหมุด คำนวณค่าสัมประสิทธิ์ที่เพิ่มขึ้น ณ จุดที่กำหนด |
เลือกจุดหมายปลายทาง ค่าโดยสาร ข้อกำหนด | เสนอ | เราสร้างเส้นทางและคำนวณราคาสำหรับภาษีทั้งหมดโดยคำนึงถึงค่าสัมประสิทธิ์ที่เพิ่มขึ้น |
กดปุ่ม “เรียกแท็กซี่” | สั่งซื้อ | เราเปิดตัวการค้นหารถยนต์อย่างเต็มรูปแบบ เราเลือกไดรเวอร์ที่เหมาะสมที่สุดและเสนอคำสั่งซื้อให้เขา |
เกี่ยวกับ
การค้นหาบนพินนั้นคล้ายกับการค้นหาคำสั่งซื้อ เพียงแต่จะไม่สร้างคำสั่งซื้อและการค้นหาจะดำเนินการเพียงครั้งเดียวเท่านั้น นอกจากนี้ยังใช้การตั้งค่าแบบง่ายสำหรับจำนวนผู้สมัครและรัศมีการค้นหา การลดความซับซ้อนดังกล่าวมีความจำเป็นเนื่องจากมีพินที่มีขนาดมากกว่าคำสั่ง และการค้นหาเป็นการดำเนินการที่ค่อนข้างยาก ประเด็นสำคัญสำหรับเรื่องราวของเรา: หากในระหว่างการค้นหาเบื้องต้นไม่พบผู้สมัครที่เหมาะสมบนพิน เราจะไม่อนุญาตให้คุณทำการสั่งซื้อ อย่างน้อยมันก็เคยเป็นแบบนั้น
นี่คือสิ่งที่ผู้ใช้เห็นในแอปพลิเคชัน:
ค้นหารถยนต์ที่ไม่มีรถยนต์
วันหนึ่งเรามีสมมติฐาน: บางทีในบางกรณี คำสั่งซื้อยังสามารถดำเนินการให้เสร็จสิ้นได้ แม้ว่าจะไม่มีรถอยู่บนหมุดก็ตาม ท้ายที่สุดแล้ว เวลาผ่านไประหว่างพินและคำสั่งซื้อ และการค้นหาคำสั่งซื้อจะสมบูรณ์ยิ่งขึ้นและบางครั้งก็เกิดซ้ำหลายครั้ง: ในช่วงเวลานี้ไดรเวอร์ที่พร้อมใช้งานอาจปรากฏขึ้น นอกจากนี้เรายังรู้สิ่งที่ตรงกันข้าม: หากพบไดรเวอร์ที่พิน ก็ไม่ใช่ข้อเท็จจริงที่ว่าจะพบไดรเวอร์เหล่านั้นเมื่อทำการสั่งซื้อ บางครั้งพวกเขาก็หายไปหรือทุกคนปฏิเสธคำสั่ง
เพื่อทดสอบสมมติฐานนี้ เราได้ทำการทดลอง: เราหยุดตรวจสอบการมีอยู่ของรถยนต์ในระหว่างการค้นหาพินสำหรับกลุ่มทดสอบของผู้ใช้ กล่าวคือ พวกเขามีโอกาสที่จะทำการ "สั่งซื้อโดยไม่มีรถยนต์" ผลลัพธ์ค่อนข้างคาดไม่ถึง: หากรถไม่ได้อยู่บนหมุดก็จะพบใน 29% ของกรณีในภายหลัง - เมื่อค้นหาตามคำสั่งซื้อ! นอกจากนี้ คำสั่งซื้อที่ไม่มีรถยนต์ไม่แตกต่างอย่างมีนัยสำคัญจากคำสั่งซื้อปกติในแง่ของอัตราการยกเลิก คะแนน และตัวชี้วัดคุณภาพอื่น ๆ การจองที่ไม่มีรถยนต์คิดเป็น 5% ของการจองทั้งหมด แต่มีเพียง 1% ของการเดินทางที่ประสบความสำเร็จทั้งหมด
เพื่อทำความเข้าใจว่าผู้ดำเนินการตามคำสั่งเหล่านี้มาจากไหน มาดูสถานะของพวกเขาระหว่างการค้นหาพิน:
- มีอยู่: ว่าง แต่ด้วยเหตุผลบางอย่างไม่รวมอยู่ในผู้สมัคร เช่น เขาอยู่ไกลเกินไป
- ในการสั่งซื้อ: ยุ่งมาก แต่ก็สามารถปลดปล่อยตัวเองหรือว่างได้
คำสั่งลูกโซ่ ; - ยุ่ง: ความสามารถในการรับคำสั่งซื้อถูกปิดใช้งาน แต่จากนั้นคนขับก็กลับไปที่สาย
- ไม่สามารถใช้ได้: คนขับไม่ได้ออนไลน์ แต่เขาปรากฏตัวขึ้น
มาเพิ่มความน่าเชื่อถือกัน
คำสั่งซื้อเพิ่มเติมนั้นดีมาก แต่การค้นหาที่ประสบความสำเร็จ 29% หมายความว่า 71% ของเวลาที่ผู้ใช้รอเป็นเวลานานและสุดท้ายก็ไปไหนไม่ได้ แม้ว่านี่จะไม่ใช่เรื่องเลวร้ายจากมุมมองของประสิทธิภาพของระบบ แต่จริงๆ แล้วมันทำให้ผู้ใช้มีความหวังผิดๆ และเสียเวลา หลังจากนั้นพวกเขาก็อารมณ์เสียและ (อาจ) หยุดใช้บริการ เพื่อแก้ไขปัญหานี้ เราเรียนรู้ที่จะคาดการณ์ความเป็นไปได้ที่จะพบรถตามสั่ง
โครงการเป็นดังนี้:
- ผู้ใช้ใส่พิน
- การค้นหาจะดำเนินการบนหมุด
- หากไม่มีรถยนต์เราคาดการณ์ว่าบางทีรถเหล่านั้นอาจปรากฏขึ้น
- และขึ้นอยู่กับความน่าจะเป็นเราอนุญาตหรือไม่อนุญาตให้คุณทำการสั่งซื้อ แต่เราขอเตือนคุณว่าความหนาแน่นของรถยนต์ในพื้นที่นี้ในเวลานี้ต่ำ
ในแอปพลิเคชันมีลักษณะดังนี้:
การใช้แบบจำลองช่วยให้คุณสร้างคำสั่งซื้อใหม่ได้แม่นยำยิ่งขึ้นและไม่สร้างความมั่นใจให้กับผู้คนโดยเปล่าประโยชน์ นั่นคือเพื่อควบคุมอัตราส่วนของความน่าเชื่อถือและจำนวนคำสั่งซื้อที่ไม่มีเครื่องจักรโดยใช้แบบจำลองการเรียกคืนที่แม่นยำ ความน่าเชื่อถือของบริการมีอิทธิพลต่อความปรารถนาที่จะใช้ผลิตภัณฑ์ต่อไป กล่าวคือ ท้ายที่สุดแล้วทั้งหมดก็ขึ้นอยู่กับจำนวนการเดินทาง
เล็กน้อยเกี่ยวกับการจดจำอย่างแม่นยำงานพื้นฐานอย่างหนึ่งในการเรียนรู้ของเครื่องคืองานการจัดหมวดหมู่: การกำหนดออบเจ็กต์ให้กับหนึ่งในสองคลาส ในกรณีนี้ ผลลัพธ์ของอัลกอริธึมการเรียนรู้ของเครื่องมักจะกลายเป็นการประเมินเชิงตัวเลขของการเป็นสมาชิกในคลาสใดคลาสหนึ่ง เช่น การประเมินความน่าจะเป็น อย่างไรก็ตาม การดำเนินการที่ดำเนินการมักจะเป็นแบบไบนารี่: หากมีรถว่าง เราจะให้คุณสั่งซื้อ และถ้าไม่ เราก็จะไม่ทำ หากต้องการเจาะจง เรามาเรียกอัลกอริทึมที่สร้างแบบจำลองการประมาณการเชิงตัวเลข และกฎการแยกประเภทที่กำหนดให้กับหนึ่งในสองคลาส (1 หรือ –1) หากต้องการสร้างตัวแยกประเภทตามการประเมินโมเดล คุณต้องเลือกเกณฑ์การประเมิน ขึ้นอยู่กับงานมากน้อยเพียงใด
สมมติว่าเรากำลังทำการทดสอบ (ลักษณนาม) สำหรับโรคที่หายากและเป็นอันตราย จากผลการตรวจ เราอาจส่งผู้ป่วยไปตรวจโดยละเอียดเพิ่มเติม หรือพูดว่า “ดี กลับบ้าน” สำหรับเรา การส่งคนป่วยกลับบ้านนั้นแย่กว่าการตรวจสุขภาพคนสุขภาพดีโดยไม่จำเป็นมาก นั่นคือเราต้องการให้การทดสอบได้ผลกับคนป่วยจริงๆ ให้ได้มากที่สุด ค่านี้เรียกว่าการเรียกคืน =. ตัวแยกประเภทในอุดมคติมีการเรียกคืนได้ 100% สถานการณ์เลวร้ายคือส่งทุกคนไปตรวจสอบ จากนั้นการเรียกคืนก็จะเป็น 100% เช่นกัน
มันยังเกิดขึ้นในทางกลับกัน ตัวอย่างเช่น เรากำลังสร้างระบบทดสอบสำหรับนักเรียน และมีเครื่องตรวจจับการโกง หากการโกงบางกรณีการตรวจสอบไม่ได้ผลก็แสดงว่าไม่เป็นที่พอใจ แต่ก็ไม่สำคัญ ในทางกลับกัน เป็นการเลวร้ายอย่างยิ่งที่จะกล่าวหานักเรียนอย่างไม่ยุติธรรมถึงสิ่งที่พวกเขาไม่ได้ทำ นั่นคือเป็นสิ่งสำคัญสำหรับเราที่ในบรรดาคำตอบเชิงบวกของตัวแยกประเภทนั้นมีคำตอบที่ถูกต้องมากที่สุดเท่าที่จะเป็นไปได้บางทีอาจทำให้จำนวนเสียหายได้ ซึ่งหมายความว่าคุณต้องเพิ่มความแม่นยำให้สูงสุด = . หากการทริกเกอร์เกิดขึ้นกับวัตถุทั้งหมด ความแม่นยำจะเท่ากับความถี่ของคลาสที่กำหนดในตัวอย่าง
หากอัลกอริธึมสร้างค่าความน่าจะเป็นเป็นตัวเลข เมื่อเลือกเกณฑ์ที่ต่างกัน คุณจะได้ค่าการเรียกคืนที่แม่นยำที่แตกต่างกัน
ในปัญหาของเราสถานการณ์จะเป็นดังนี้ การเรียกคืนคือจำนวนคำสั่งซื้อที่เราสามารถนำเสนอได้ ความแม่นยำคือความน่าเชื่อถือของคำสั่งซื้อเหล่านี้ นี่คือลักษณะของเส้นโค้งการเรียกคืนที่แม่นยำของโมเดลของเรา:
มีกรณีร้ายแรงอยู่ 0 กรณี คือ ไม่อนุญาตให้ใครสั่ง และ อนุญาตให้ทุกคนสั่งได้ หากคุณไม่อนุญาตให้ใครก็ตาม การเรียกคืนจะเป็น 100: เราไม่ได้สร้างคำสั่งซื้อ แต่จะไม่มีใครล้มเหลว หากเราอนุญาตให้ทุกคน การเรียกคืนจะเป็น 29% (เราจะได้รับคำสั่งซื้อที่เป็นไปได้ทั้งหมด) และความแม่นยำจะอยู่ที่ 71% นั่นคือ XNUMX% ของคำสั่งซื้อจะไม่ดี
เราใช้พารามิเตอร์ต่าง ๆ ของจุดเริ่มต้นเป็นสัญญาณ:
- เวลา/สถานที่
- สถานะของระบบ (จำนวนเครื่องจักรที่ถูกครอบครองของภาษีและหมุดทั้งหมดในบริเวณใกล้เคียง)
- พารามิเตอร์การค้นหา (รัศมี จำนวนผู้สมัคร ข้อจำกัด)
เพิ่มเติมเกี่ยวกับสัญญาณ
ตามแนวคิดแล้ว เราต้องการแยกความแตกต่างระหว่างสองสถานการณ์:
- “ป่าลึก” - ตอนนี้ไม่มีรถยนต์
- “ โชคร้าย” - มีรถยนต์ แต่เมื่อค้นหาไม่มีคันที่เหมาะสม
ตัวอย่างหนึ่งของ “โชคร้าย” คือ เมื่อมีความต้องการจำนวนมากในศูนย์ในช่วงเย็นวันศุกร์ มีคำสั่งซื้อจำนวนมาก ผู้คนเต็มใจ และมีไดรเวอร์ไม่เพียงพอสำหรับทุกคน อาจกลายเป็นดังนี้: ไม่มีไดรเวอร์ที่เหมาะสมในพิน แต่แท้จริงแล้วภายในไม่กี่วินาทีพวกมันก็ปรากฏขึ้นเพราะในเวลานี้มีคนขับจำนวนมากในสถานที่นี้และสถานะของพวกเขาก็เปลี่ยนแปลงอยู่ตลอดเวลา
ดังนั้นตัวบ่งชี้ระบบต่าง ๆ ในบริเวณใกล้เคียงกับจุด A จึงกลายเป็นคุณสมบัติที่ดี:
- จำนวนรถยนต์ทั้งหมด.
- จำนวนรถยนต์ในการสั่งซื้อ
- จำนวนรถยนต์ที่ไม่สามารถสั่งซื้อได้ในสถานะ "ไม่ว่าง"
- จำนวนผู้ใช้
ท้ายที่สุดแล้วยิ่งมีรถยนต์มากเท่าไรก็ยิ่งมีแนวโน้มว่าจะมีหนึ่งในนั้นมากขึ้นเท่านั้น
ในความเป็นจริง มันเป็นสิ่งสำคัญสำหรับเราที่ไม่เพียงแต่มีรถยนต์เท่านั้น แต่ยังรวมถึงการเดินทางที่ประสบความสำเร็จด้วย จึงสามารถทำนายความน่าจะเป็นของการเดินทางได้สำเร็จ แต่เราตัดสินใจที่จะไม่ทำเช่นนี้ เนื่องจากค่านี้ขึ้นอยู่กับผู้ใช้และไดรเวอร์เป็นอย่างมาก
อัลกอริธึมการฝึกโมเดลคือ
ผลของการ
ผลลัพธ์ของการทดสอบเป็นไปตามที่คาดไว้: การใช้แบบจำลองทำให้คุณสามารถเพิ่มจำนวนการเดินทางที่ประสบความสำเร็จได้อย่างมากเนื่องจากคำสั่งซื้อที่ไม่มีรถยนต์ แต่ไม่กระทบต่อความน่าเชื่อถือ
ในขณะนี้ กลไกนี้ได้เปิดตัวแล้วในทุกเมืองและทุกประเทศ และด้วยความช่วยเหลือนี้ ทำให้การเดินทางที่ประสบความสำเร็จประมาณ 1% เกิดขึ้น นอกจากนี้ในบางเมืองที่มีรถยนต์ความหนาแน่นต่ำส่วนแบ่งของการเดินทางดังกล่าวถึง 15%
โพสต์อื่น ๆ เกี่ยวกับเทคโนโลยีแท็กซี่
เรากระจายคำสั่งซื้อระหว่างคนขับใน Yandex.Taxi อย่างไร การกำหนดราคาแบบไดนามิกหรือวิธีที่ Yandex.Taxi คาดการณ์ความต้องการที่สูง วิธีใช้คอมพิวเตอร์วิทัศน์เพื่อประเมินสภาพรถยนต์ ประสบการณ์ Yandex.Taxi Yandex.Taxi คาดการณ์เวลารับรถโดยใช้การเรียนรู้ของเครื่องอย่างไร
ที่มา: will.com