كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها

كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها

يجب أن تكون خدمة سيارات الأجرة الجيدة آمنة وموثوقة وسريعة. لن يخوض المستخدم في التفاصيل: من المهم بالنسبة له أن ينقر على زر "اطلب" ويستلم السيارة في أسرع وقت ممكن والتي ستنقله من النقطة أ إلى النقطة ب. إذا لم تكن هناك سيارات قريبة، يجب أن تكون الخدمة قم بإبلاغ هذا على الفور حتى لا يكون لدى العميل توقعات خاطئة. ولكن إذا ظهرت علامة "ممنوع السيارات" في كثير من الأحيان، فمن المنطقي أن يتوقف الشخص ببساطة عن استخدام هذه الخدمة ويذهب إلى أحد المنافسين.

أريد في هذه المقالة أن أتحدث عن كيف تمكنا، باستخدام التعلم الآلي، من حل مشكلة البحث عن السيارات في المناطق منخفضة الكثافة السكانية (وبعبارة أخرى، حيث لا توجد سيارات للوهلة الأولى). وما جاء منه.

قبل التاريخ

لاستدعاء سيارة أجرة، يقوم المستخدم ببعض الخطوات البسيطة، ولكن ماذا يحدث داخل الخدمة؟

مستخدم مرحلة الواجهة الخلفية Yandex.Taxi
يختار نقطة البداية دبوس نحن نطلق بحثًا مبسطًا عن المرشحين - بحث الدبوس. بناءً على برامج التشغيل التي تم العثور عليها، يتم توقع وقت الوصول - ETA في الدبوس. يتم حساب معامل الزيادة عند نقطة معينة.
يختار الوجهة والأجرة والمتطلبات عرض نقوم ببناء طريق وحساب الأسعار لجميع التعريفات، مع مراعاة المعامل المتزايد.
الضغط على زر "استدعاء سيارة أجرة". Заказ نبدأ البحث الكامل عن السيارة. نختار السائق الأنسب ونقدم له الطلب.

حول الوقت المتوقع للوصول إلى الدبوس, حساب السعر и اختيار السائق الأنسب لقد كتبنا بالفعل. وهذه قصة حول العثور على السائقين. عند إنشاء أمر، يتم البحث مرتين: على الدبوس وعلى الأمر. يتم البحث عن الأمر على مرحلتين: تجنيد المرشحين والتصنيف. أولاً، يتم العثور على السائقين المرشحين المتاحين الأقرب على الرسم البياني للطريق. ثم يتم تطبيق المكافآت والتصفية. يتم ترتيب المرشحين المتبقين ويتلقى الفائز عرضًا للطلب. إذا وافق، يتم تكليفه بالطلب ويذهب إلى نقطة التسليم. فإذا رفض، يأتي العرض إلى الذي يليه. إذا لم يكن هناك المزيد من المرشحين، يبدأ البحث مرة أخرى. لا يستمر هذا أكثر من ثلاث دقائق، وبعد ذلك يتم إلغاء الطلب وحرقه.

يشبه البحث على الدبوس البحث عن أمر، فقط لا يتم إنشاء الأمر ويتم إجراء البحث نفسه مرة واحدة فقط. يتم أيضًا استخدام الإعدادات المبسطة لعدد المرشحين ونصف قطر البحث. تعتبر مثل هذه التبسيطات ضرورية نظرًا لوجود عدد أكبر من الدبابيس من حيث الحجم مقارنة بالأوامر، كما أن البحث عملية صعبة إلى حد ما. النقطة الأساسية لقصتنا: إذا لم يتم العثور على مرشحين مناسبين على الدبوس أثناء البحث الأولي، فإننا لا نسمح لك بتقديم طلب. على الأقل هذا ما كان عليه الحال من قبل.

وهذا ما شاهده المستخدم في التطبيق:

كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها

البحث عن سيارات بدون سيارات

في أحد الأيام، توصلنا إلى فرضية: ربما في بعض الحالات، لا يزال من الممكن إكمال الطلب، حتى لو لم تكن هناك سيارات على الدبوس. بعد كل شيء، يمر بعض الوقت بين الدبوس والطلب، ويكون البحث عن الطلب أكثر اكتمالاً ويتكرر أحيانًا عدة مرات: خلال هذا الوقت، قد تظهر برامج التشغيل المتاحة. كنا نعرف أيضًا العكس: إذا تم العثور على برامج تشغيل على الدبوس، فلن تكون حقيقة أنه سيتم العثور عليهم عند الطلب. في بعض الأحيان يختفون أو يرفض الجميع الأمر.

ولاختبار هذه الفرضية، أطلقنا تجربة: توقفنا عن التحقق من وجود السيارات أثناء البحث على Pin لمجموعة اختبارية من المستخدمين، أي أنه أتيحت لهم الفرصة لتقديم "طلب بدون سيارات". وكانت النتيجة غير متوقعة تماما: إذا لم تكن السيارة مثبتة على الدبوس، ففي 29٪ من الحالات تم العثور عليها لاحقًا - عند البحث عن الطلب! علاوة على ذلك، لم تختلف الطلبات بدون سيارات بشكل كبير عن الطلبات العادية من حيث معدلات الإلغاء والتقييمات ومؤشرات الجودة الأخرى. تمثل الحجوزات بدون سيارات 5% من إجمالي الحجوزات، ولكنها تمثل ما يزيد قليلاً عن 1% من إجمالي الرحلات الناجحة.

لفهم من أين يأتي منفذو هذه الأوامر، دعونا نلقي نظرة على حالاتهم أثناء البحث على الدبوس:

كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها

  • متاح: كان متاحا، ولكن لسبب ما لم يتم تضمينه في المرشحين، على سبيل المثال، كان بعيدا جدا؛
  • على الطلب: كان مشغولاً، لكنه تمكن من تحرير نفسه أو أصبح متاحاً له ترتيب السلسلة;
  • مشغول: تم تعطيل القدرة على قبول الطلبات، ولكن بعد ذلك عاد السائق إلى الخط؛
  • غير متاح: لم يكن السائق على الانترنت، لكنه ظهر.

دعونا نضيف الموثوقية

تعتبر الطلبات الإضافية أمرًا رائعًا، ولكن 29% من عمليات البحث الناجحة تعني أن 71% من الوقت الذي انتظر فيه المستخدم وقتًا طويلاً وانتهى به الأمر إلى عدم الذهاب إلى أي مكان. وعلى الرغم من أن هذا ليس أمرًا سيئًا من وجهة نظر كفاءة النظام، إلا أنه في الواقع يمنح المستخدم أملًا كاذبًا ويضيع الوقت، وبعد ذلك ينزعج و(ربما) يتوقف عن استخدام الخدمة. لحل هذه المشكلة، تعلمنا التنبؤ باحتمالية العثور على سيارة عند الطلب.

المخطط هو مثل هذا:

  • يقوم المستخدم بوضع دبوس.
  • يتم إجراء البحث على الدبوس.
  • إذا لم تكن هناك سيارات، نتوقع: ربما ستظهر.
  • وحسب الاحتمالية، نسمح لك أو لا نسمح لك بتقديم طلب، لكننا ننبهك إلى أن كثافة السيارات في هذه المنطقة في هذا الوقت منخفضة.

في التطبيق بدا مثل هذا:

كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها

يتيح لك استخدام النموذج إنشاء طلبات جديدة بشكل أكثر دقة وعدم طمأنة الأشخاص دون جدوى. أي لتنظيم نسبة الموثوقية وعدد الطلبات بدون آلات باستخدام نموذج الاستدعاء الدقيق. تؤثر موثوقية الخدمة على الرغبة في الاستمرار في استخدام المنتج، أي في النهاية، يعتمد الأمر كله على عدد الرحلات.

قليلا عن دقة الاسترجاعإحدى المهام الأساسية في التعلم الآلي هي مهمة التصنيف: تخصيص كائن لإحدى الفئتين. في هذه الحالة، غالبًا ما تصبح نتيجة خوارزمية التعلم الآلي تقييمًا رقميًا للعضوية في إحدى الفئات، على سبيل المثال، تقييم الاحتمالية. ومع ذلك، فإن الإجراءات التي يتم تنفيذها عادة ما تكون ثنائية: إذا كانت السيارة متاحة، فسنسمح لك بطلبها، وإذا لم تكن كذلك، فلن نفعل ذلك. لكي نكون محددين، دعنا نسمي الخوارزمية التي تنتج تقديرًا رقميًا نموذجًا، والمصنف قاعدة تسنده إلى إحدى الفئتين (1 أو -1). لإنشاء مصنف بناءً على تقييم النموذج، يتعين عليك تحديد حد التقييم. كيف بالضبط يعتمد إلى حد كبير على المهمة.

لنفترض أننا نقوم بإجراء اختبار (مصنف) لبعض الأمراض النادرة والخطيرة. بناءً على نتائج الاختبار، إما أن نرسل المريض لإجراء فحص أكثر تفصيلاً، أو نقول: “حسنًا، اذهب إلى المنزل”. بالنسبة لنا، فإن إرسال شخص مريض إلى المنزل هو أسوأ بكثير من فحص شخص سليم دون داع. وهذا يعني أننا نريد أن ينجح الاختبار مع أكبر عدد ممكن من المرضى حقًا. تسمى هذه القيمة الاستدعاء =كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها. يتمتع المصنف المثالي بنسبة استرجاع تبلغ 100%. الوضع المنحط هو إرسال الجميع للفحص، ثم يكون الاستدعاء أيضًا بنسبة 100٪.

ويحدث ذلك أيضًا في الاتجاه المعاكس. على سبيل المثال، نقوم بعمل نظام اختبار للطلاب، وفيه جهاز كشف الغش. إذا لم ينجح الشيك فجأة في بعض حالات الغش، فهذا أمر مزعج ولكنه ليس بالغ الأهمية. ومن ناحية أخرى، من السيئ للغاية أن نتهم الطلاب ظلما بشيء لم يفعلوه. وهذا يعني أنه من المهم بالنسبة لنا أن يكون من بين الإجابات الإيجابية للمصنف أكبر عدد ممكن من الإجابات الصحيحة، ربما على حساب عددهم. هذا يعني أنك بحاجة إلى تعظيم الدقة = كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها. إذا حدث التشغيل على جميع الكائنات، فستكون الدقة مساوية لتكرار الفئة المحددة في العينة.

إذا أنتجت الخوارزمية قيمة احتمالية عددية، فمن خلال تحديد عتبات مختلفة، يمكنك تحقيق قيم استرجاع دقة مختلفة.

في مشكلتنا الوضع هو كما يلي. الاستدعاء هو عدد الطلبات التي يمكننا تقديمها، والدقة هي موثوقية هذه الطلبات. هذا هو الشكل الذي يبدو عليه منحنى الاسترجاع الدقيق لنموذجنا:
كيف يبحث Yandex.Taxi عن السيارات في حالة عدم وجودها
هناك حالتان متطرفتان: لا تسمح لأحد أن يأمر، واسمح للجميع أن يأمروا. إذا لم تسمح لأي شخص، فسيكون الاستدعاء 0: نحن لا ننشئ أوامر، لكن لن يفشل أي منها. إذا سمحنا للجميع، فإن نسبة الاستدعاء ستكون 100% (سنتلقى جميع الطلبات الممكنة)، وستكون الدقة 29%، أي أن 71% من الطلبات ستكون سيئة.

استخدمنا معلمات مختلفة لنقطة البداية كعلامات:

  • مكان الوقت.
  • حالة النظام (عدد الأجهزة المشغولة بجميع التعريفات والدبابيس الموجودة في المنطقة المجاورة).
  • معلمات البحث (نصف القطر، عدد المرشحين، القيود).

المزيد عن العلامات

من الناحية النظرية، نريد التمييز بين حالتين:

  • "الغابة العميقة" - لا توجد سيارات هنا في هذا الوقت.
  • "سيئ الحظ" - هناك سيارات، ولكن عند البحث لم تكن هناك سيارات مناسبة.

أحد الأمثلة على "سيئ الحظ" هو إذا كان هناك طلب كبير في المركز مساء الجمعة. هناك الكثير من الطلبات، والكثير من الأشخاص الراغبين، ولا يوجد عدد كافٍ من السائقين للجميع. قد يكون الأمر على هذا النحو: لا توجد برامج تشغيل مناسبة في الدبوس. لكنهم يظهرون حرفيًا في غضون ثوانٍ، لأنه في هذا الوقت يوجد الكثير من السائقين في هذا المكان وحالتهم تتغير باستمرار.

لذلك، تبين أن مؤشرات النظام المختلفة بالقرب من النقطة A هي ميزات جيدة:

  • إجمالي عدد السيارات.
  • عدد السيارات تحت الطلب.
  • عدد السيارات غير المتاحة للطلب في حالة "مشغول".
  • عدد المستخدمين.

ففي نهاية المطاف، كلما زاد عدد السيارات، زادت احتمالية توفر واحدة منها.
في الواقع، من المهم بالنسبة لنا ألا يتم تحديد موقع السيارات فحسب، بل أيضًا القيام برحلات ناجحة. لذلك، كان من الممكن التنبؤ باحتمالية رحلة ناجحة. لكننا قررنا عدم القيام بذلك، لأن هذه القيمة تعتمد بشكل كبير على المستخدم والسائق.

كانت خوارزمية التدريب النموذجية كاتبووست. واستخدمت البيانات التي تم الحصول عليها من التجربة للتدريب. بعد التنفيذ، كان لا بد من جمع بيانات التدريب، مما يسمح في بعض الأحيان لعدد صغير من المستخدمين باتخاذ قرار ضد قرار النموذج.

نتائج

كانت نتائج التجربة كما هو متوقع: يتيح لك استخدام النموذج زيادة عدد الرحلات الناجحة بشكل كبير بسبب الطلبات بدون سيارات، ولكن دون المساس بالموثوقية.

في الوقت الحالي تم إطلاق الآلية في جميع المدن والبلدان وبمساعدتها تحدث حوالي 1٪ من الرحلات الناجحة. علاوة على ذلك، في بعض المدن ذات الكثافة المنخفضة للسيارات تصل حصة هذه الرحلات إلى 15%.

منشورات أخرى حول تكنولوجيا سيارات الأجرة

المصدر: www.habr.com

إضافة تعليق