كيف يتنبأ Yandex.Taxi بوقت تسليم السيارة باستخدام التعلم الآلي

تخيل أنك بحاجة إلى استدعاء سيارة أجرة. تفتح التطبيق ، وترى أن السيارة ستصل في حوالي سبع دقائق ، انقر فوق "طلب" - و ... السيارة على بعد 15 دقيقة منك ، على الإطلاق. توافق ، غير سارة؟

تحت التخفيض ، سنتحدث عن كيفية مساعدة طرق التعلم الآلي Yandex.Taxi للتنبؤ بشكل أفضل بـ ETA (الوقت المقدر للوصول - الوقت المتوقع للوصول).



أولاً ، تذكر أن المستخدم يرى في التطبيق قبل الطلب:



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

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

لماذا هذا مهم



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

يبدو أن كل شيء بسيط. ابتكر المزيد من العلامات ، وقم بتدريب نموذج ، مثل CatBoost ، وتوقع الوقت قبل وصول السيارة - ويمكنك أن تنتهي هناك. لكن التجربة تبين أنه من الأفضل عدم التسرع والتفكير بعناية ، ثم القيام بذلك.

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

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



نريد أن يرتكب النموذج في المتوسط ​​بعض الأخطاء. اعتمادًا على قيمة "المتوسط" ، هناك خياران لتقييم جودة التوقعات. الخيار الأول هو أن يُظهر للمستخدم التوقعات الرياضية للوقت قبل وصول التاكسي. ونتيجة لذلك ، سيتم تدريب نموذج يقلل من مربع خطأ الخطأ المتوقع (متوسط ​​خطأ مربع ، MSE):

MSE= frac1n sumni=1(yi hatyi)2 rightarrowmin



هنا yi - الإجابات الصحيحة ،  hatyi - تنبؤات نموذجية.

خيار آخر هو عدم الخلط مع توقعات ETA بشكل رئيسي في اتجاه واحد ، لأعلى أو لأسفل. في هذه الحالة ، سنعرض للمستخدم وسيط توزيع الوقت قبل وصول التاكسي. ونتيجة لذلك ، سيتم تدريب نموذج يعمل على تحسين متوسط ​​الوحدة النمطية لخطأ التنبؤ (متوسط ​​الخطأ المطلق ، MAE):

MAE= frac1n sumni=1|yi hatyi| rightarrowmin



لكننا أدركنا أننا نتقدم على أنفسنا قليلاً.

إعادة التفكير في بيان المشكلة


بعد الموعد ، نعرف نوع السيارة التي تذهب للمستخدم ، مما يعني أنه يمكننا تقدير وقت السفر على Yandex.Maps. يظهر هذا الوقت في الدبوس بعد الطلب. من ناحية ، لدينا الآن المزيد من المعلومات والتوقعات ستكون أكثر دقة ، ولكن من ناحية أخرى ، هذا أيضًا تقدير به خطأ.

كان هذا هو الصيد في مهمة دبوس ETA. بينما لم يتم تعيين السائق ، فمن الضروري التنبؤ بالوقت الذي سيظهر فيه توجيه Yandex.Mart ، وليس الوقت الفعلي قبل تسليم السيارة.

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

كيف تتخلص من الضوضاء؟ تنبأ بالمتغير المستهدف المستهدف - الوقت الذي يظهر بعد تعيين الجهاز بناءً على المسار إلى المستخدم.

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

مقاييس الجودة والبيانات والنموذج والتدريب


اكتشفنا أنه بالنسبة لـ ETA في الدبوس ، من الضروري التنبؤ ليس بالوقت الفعلي ، ولكن بالوقت الذي سيتم استلامه بعد تعيين الماكينة على طول المسار. من بين مقاييس الجودة ، MAE و MSE ، اخترنا MAE. ربما ، من وجهة نظر بديهية التنبؤ ، من المنطقي أكثر تقييم التوقع (MSE) ، بدلاً من المتوسط ​​(MAE). لكن MAE لديه ميزة لطيفة: النموذج أكثر مقاومة للقيم المتطرفة بين أمثلة التدريب.

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

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

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

جودة توقع التحقق من صحة ETA *


يعني الخطأ المطلق
خطأ أكثر من دقيقة واحدة
خطأ أكثر من دقيقتين
خطأ أكثر من 5 دقائق

ETA الأصلي


82،082


29.95


18.12


3،7


النموذج الحالي


79.276 (–3.4)


29.33 (–2.1)


16.98 (–6.3)


3 (–19.2)


نموذج جديد


78.414 (–4.5)


28.95 (–3.4)


16.62 (–8.2)


2.8 (–23.2)




* النسبة المئوية (بين قوسين تشير إلى التغيير من ETA الأصلي).

سمح لنا التعلم الآلي بالفوز بحوالي ثانيتين ، أو 3.4٪ من متوسط ​​الانحراف المتوقع. وفي النموذج الجديد - ما يقرب من ثانية أخرى ، ما مجموعه 4.5 ٪. ولكن من هذه الأرقام ، من الصعب فهم أن ETA قد تحسنت بشكل ملحوظ. لتشعر بفوائد التعلم الآلي ، يجب الانتباه إلى العمود الأخير. يخطئ مع توقع أكثر من 5 دقائق أصبح 19.2٪ ، وفي النموذج الجديد - حتى 23.2٪ أقل! بالمناسبة ، تحدث مثل هذه الأخطاء فقط في 3 و 2.8 ٪ من الحالات في النماذج التي تستخدم التعلم الآلي.

ملخص


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

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

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

ملاحظة: إذا كنت مهتمًا بتقنيات Yandex.Taxi الأخرى ، فإننا نوصي بنشر منشور حول التسعير الديناميكي ، والذي نشره زميلي مؤخرًا.

Source: https://habr.com/ru/post/ar431196/


All Articles