कैसे Yandex.Taxi मशीन सीखने का उपयोग करते हुए कार डिलीवरी समय की भविष्यवाणी करता है

कल्पना कीजिए कि आपको टैक्सी बुलाने की जरूरत है। आप एप्लिकेशन खोलते हैं, देखें कि कार लगभग सात मिनट में आ जाएगी, "ऑर्डर" पर क्लिक करें - और ... कार आपसे 15 मिनट की है, अगर बिल्कुल भी। सहमत, अप्रिय?

कटौती के तहत, हम इस बारे में बात करेंगे कि मशीन सीखने के तरीके Yandex.Taxi को ETA (अनुमानित आगमन का अनुमानित समय - बेहतर आगमन समय) की बेहतर भविष्यवाणी करने में कैसे मदद करते हैं।



सबसे पहले, याद रखें कि उपयोगकर्ता ऑर्डर करने से पहले आवेदन में देखता है:



मानचित्र पर, नीला एक टैक्सी में सवार होने के लिए इष्टतम बिंदुओं को इंगित करता है। रेड पिन - वह बिंदु जिस पर उपयोगकर्ता टैक्सी बुलाता है। पिन दिखाता है कि कार कब तक आएगी। एक परिपूर्ण दुनिया में। लेकिन वास्तविक दुनिया में, पास के अन्य लोग भी Yandex.Taxi एप्लिकेशन के माध्यम से खुद को कार कहते हैं। और हमें नहीं पता कि कौन सी कार किसके पास जाएगी, क्योंकि वे ऑर्डर देने के बाद ही वितरित की जाती हैं। अगर कार पहले ही सौंपी जा चुकी है, तो पूर्वानुमान के लिए हम Yandex.Maps का उपयोग करेंगे और इष्टतम पथ के साथ आगे बढ़ने पर मार्ग और समय। इस बार (संभवतः एक छोटे से मार्जिन के साथ) हम आदेश देने के तुरंत बाद उपयोगकर्ता को दिखाएंगे। सवाल यह है कि आदेश देने से पहले ईटीए की भविष्यवाणी कैसे की जा सकती है?

और यहाँ मशीन लर्निंग दिखाई देती है। हम वस्तुओं और सही उत्तरों के साथ चयन करते हैं और ऑब्जेक्ट की विशेषताओं के अनुसार उत्तर का अनुमान लगाने के लिए एल्गोरिथम सिखाते हैं। हमारे मामले में, ऑब्जेक्ट उपयोगकर्ता सत्र हैं, उत्तर वह समय है जिसके बाद कार वास्तव में आ गई है। आदेश से पहले वस्तु के संकेत संख्यात्मक मानदंड हो सकते हैं: पिन के बगल में ड्राइवरों और उपयोगकर्ताओं की संख्या, निकटतम सेवा वाहनों की दूरी और अन्य संभावित उपयोगी मान।

यह महत्वपूर्ण क्यों है?



एक आदर्श दुनिया में, लोग सब कुछ पहले से करते हैं और हमेशा अपने समय की सही योजना बनाते हैं। लेकिन हम वास्तविक दुनिया में रहते हैं। यदि किसी व्यक्ति को काम के लिए देर हो या, बदतर, हवाई अड्डे के लिए, तो उसके लिए यह समझना महत्वपूर्ण है कि क्या वह छोड़ने और अपने गंतव्य पर पहुंचने के लिए समय में होगा।
जब निर्णय करना है कि क्या करना है, तो भविष्य के यात्री को अन्य चीजों के साथ, प्रतीक्षा समय तक निर्देशित किया जाता है। यह एक टैक्सी को कॉल करने के लिए विभिन्न अनुप्रयोगों में बहुत भिन्न हो सकता है, और एक आवेदन के विभिन्न टैरिफ में। ताकि उपयोगकर्ता को पसंद पर पछतावा न हो, सटीक ईटीए दिखाना बहुत महत्वपूर्ण है।

सब कुछ सरल लगने लगा है। अधिक संकेतों के साथ आओ, कैटबॉस्ट जैसे एक मॉडल को प्रशिक्षित करें, कार के आने से पहले की भविष्यवाणी करें - और आप वहां समाप्त हो सकते हैं। लेकिन अनुभव से पता चलता है कि बेहतर नहीं है कि दौड़ें और ध्यान से सोचें, और फिर करें।

सबसे पहले, हमें इसमें कोई संदेह नहीं था कि उस समय की भविष्यवाणी करना आवश्यक था जिसके माध्यम से चालक वास्तव में उपयोगकर्ता तक पहुंच जाएगा। हां, हमें यह पता नहीं है कि ऑर्डर से पहले कौन सी कार सौंपी जाएगी। लेकिन हम एक विशिष्ट चालक के बारे में नहीं बल्कि ऑर्डर के आसपास के ड्राइवरों के बारे में डेटा का उपयोग करके ईटीए की भविष्यवाणी कर सकते हैं। बेशक, पूर्वानुमान पर्याप्त ईमानदार होना चाहिए ताकि उपयोगकर्ता समय की योजना बना सके।

लेकिन "ईमानदार" का क्या अर्थ है? आखिरकार, कोई भी पूर्वानुमान एल्गोरिदम खराब है या केवल सांख्यिकीय रूप से अच्छा है। दोनों सफल और स्पष्ट रूप से खराब परिणाम हैं, लेकिन आपको सही उत्तरों से महत्वपूर्ण विचलन करने के लिए "औसत" करने की आवश्यकता है। यह समझा जाना चाहिए कि "औसतन" अलग है। उदाहरण के लिए, आँकड़ों से औसतन कम से कम तीन अवधारणाएँ हैं: अपेक्षा, मंझला और फैशन। डेरेल हफ की शानदार पुस्तक "हाउ टू लाई यूजिंग स्टेटिस्टिक्स" की तस्वीर पूरी तरह से अंतर दिखाती है:



हम चाहते हैं कि मॉडल औसतन कुछ गलतियां करे। "औसत" के मूल्य के आधार पर पूर्वानुमान की गुणवत्ता का आकलन करने के लिए दो विकल्प हैं। पहला विकल्प उपयोगकर्ता को टैक्सी आने से पहले समय की गणितीय अपेक्षा दिखाना है। नतीजतन, एक मॉडल प्रशिक्षित किया जाएगा जो पूर्वानुमान त्रुटि के औसत वर्ग को कम करता है (मीन चुकता त्रुटि, एमएसई):

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



यहां yi - सही उत्तर, \ _ {y} _i - मॉडल का पूर्वानुमान।

एक अन्य विकल्प ईटीए पूर्वानुमान के साथ मुख्य रूप से एक दिशा में, ऊपर या नीचे गलत नहीं होना है। इस मामले में, हम उपयोगकर्ता को टैक्सी आने से पहले समय के वितरण का माध्यिका दिखाएंगे। नतीजतन, एक मॉडल प्रशिक्षित किया जाएगा जो पूर्वानुमान त्रुटि के औसत मॉड्यूल का अनुकूलन करता है (मतलब निरपेक्ष त्रुटि, एमएई):

MAE= frac1n sumni=1|yi hatyi|$



लेकिन हमें एहसास हुआ कि हम खुद से थोड़ा आगे निकल रहे थे।

समस्या के बयान पर पुनर्विचार


नियुक्ति के बाद, हम जानते हैं कि उपयोगकर्ता किस तरह की कार जाता है, जिसका अर्थ है कि हम Yandex.Maps पर इसकी यात्रा के समय का अनुमान लगा सकते हैं। यह समय आदेश के बाद पिन में दिखाया गया है। एक ओर, अब हमारे पास अधिक जानकारी है और पूर्वानुमान अधिक सटीक होगा, लेकिन, दूसरी ओर, यह एक त्रुटि के साथ एक अनुमान भी है।

ईटीए पिन कार्य में यह पकड़ थी। जबकि ड्राइवर को सौंपा नहीं गया है, यह ठीक उसी समय की भविष्यवाणी करना आवश्यक है जो Yandex.Mart रूटिंग तब दिखाएगा, और कार देने से पहले वास्तविक समय नहीं।

ऐसा लगता है, क्या बकवास है: सटीक मूल्य के बजाय, एक और पूर्वानुमान को लक्ष्य के रूप में लें? लेकिन यह समझ में आता है, और यहाँ क्यों है। आप के रास्ते में, नामित कार अदरक हो सकती है। ड्राइवर सड़क पर एक खतरनाक स्थिति में आ गया, एक दुर्घटना के कारण ट्रैफिक जाम में या पानी खरीदने के लिए बाहर चला गया। इस तरह की देरी की भविष्यवाणी करना मुश्किल है। वे लक्ष्य चर में अतिरिक्त शोर पैदा करते हैं, जिसके कारण पिन में पहले से ही ईटीए की भविष्यवाणी करने का मुश्किल काम और भी मुश्किल हो जाता है।

कैसे शोर से छुटकारा पाने के लिए? स्मूथ टारगेट वेरिएबल का पूर्वानुमान करें - मशीन के बाद दिखाए जाने वाले समय को उपयोगकर्ता के रूट के आधार पर निर्धारित किया जाता है।

यह व्यवसाय के दृष्टिकोण से तर्क है: आप वैसे भी ईटीए से इष्टतम पथ के साथ सड़क पर समय नहीं फेंक सकते हैं, लेकिन ड्राइवरों के साथ काम करके अतिरिक्त देरी को कम किया जा सकता है।

गुणवत्ता मैट्रिक्स, डेटा, मॉडल और प्रशिक्षण


हमें पता चला कि पिन में ईटीए के लिए, वास्तविक समय की भविष्यवाणी नहीं करना आवश्यक है, लेकिन मशीन द्वारा मार्ग के साथ असाइन किए जाने के बाद जो समय प्राप्त होगा। दो गुणवत्ता मैट्रिक्स, एमएई और एमएसई में से हमने एमएई को चुना। शायद, पूर्वानुमान की गहनता के दृष्टिकोण से, माध्य (MAE) के बजाय औसत अपेक्षा (MSE) का मूल्यांकन करना अधिक तर्कसंगत है। लेकिन एमएई की एक अच्छी विशेषता है: प्रशिक्षण के उदाहरणों के बीच मॉडल आउटलेर्स के लिए अधिक प्रतिरोधी है।

संकेत समूहों में विभाजित हैं:
- वर्तमान समय द्वारा निर्मित;
- भू (निर्देशांक, शहर के केंद्र की दूरी और नक्शे पर महत्वपूर्ण वस्तुएं);
- पिन (कितनी और कौन सी कारें पास हैं, उनके घनत्व की अलग-अलग गणना की जाती है);
- क्षेत्र पर आंकड़े (हमेशा की तरह हम गलतियाँ करते हैं, हम कितनी भविष्यवाणी करते हैं);
- निकटतम ड्राइवरों पर डेटा (वे कितने समय तक पहुंचते हैं, पहले दूसरे से कितना करीब है, आदि)।

बेशक , कैटबोस्ट को इन संकेतों पर प्रशिक्षित किया गया था । निर्णायक तर्क यह था कि संतुलित पेड़ों के ऊपर कैटबॉस्ट में लागू होने वाला ग्रेडिएंट बूस्टिंग लंबे समय से खुद को एक बहुत शक्तिशाली मशीन सीखने की विधि के रूप में स्थापित करता है, और कैटबॉस्ट में श्रेणीबद्ध विशेषताओं को कोड करने की विधि नियमित रूप से हमारे कार्यों के लिए भुगतान करती है। लाइब्रेरी की एक और अच्छी विशेषता है, GPU पर त्वरित सीखना।

अब कुछ शब्द जिनके बारे में मॉडल की तुलना की गई थी। प्रारंभिक ईटीए (मशीन लर्निंग द्वारा निर्दिष्ट किए जाने से पहले) की गणना उस समय के आधार पर की गई थी जिसके लिए उपयोगकर्ता के निकटतम मशीन आ सकती है। वर्तमान मॉडल (अब एप्लिकेशन में उपयोग किया जाता है) मशीन लर्निंग का उपयोग करके किया जाता है और यह लेख किस बारे में है। इसके अलावा, उत्पादन में जल्द ही एक नया मॉडल तैयार होगा। वह समस्या को हल करने के लिए अधिक महत्वपूर्ण विशेषताओं के परिमाण के एक आदेश का उपयोग करता है। नीचे दी गई तालिका ऐतिहासिक डेटा पर इन मॉडलों की गुणवत्ता माप दिखाती है। वैसे, अभी भी हमारे पास बहुत सारी योजनाएं हैं - मदद करने के लिए

ईटीए सत्यापन भविष्यवाणी गुणवत्ता *


मीन एब्सोल्यूट एरर
1 मिनट से अधिक की त्रुटि
2 मिनट से अधिक त्रुटि
5 मिनट से अधिक की त्रुटि

मूल ईटीए


82.082


29.95


18.12


3.7


वर्तमान मॉडल


79.276 (-1.3.4)


29.33 (-1.2.1)


16.98 (-6.3)


3 (-19.2)


नया मॉडल


78.414 (-1 -4.5)


28.95 (-1.3.4)


16.62 (-8.2)


2.8 (-23.2)




* प्रतिशत (कोष्ठक में मूल ईटीए से परिवर्तन का संकेत)।

मशीन लर्निंग ने हमें दो सेकंड या औसत पूर्वानुमान विचलन का 3.4% जीतने की अनुमति दी। और नए मॉडल में - लगभग दूसरा दूसरा, कुल 4.5%। लेकिन इन नंबरों से यह समझना मुश्किल है कि ईटीए में काफी सुधार हुआ है। मशीन लर्निंग के लाभों को महसूस करने के लिए, आपको अंतिम कॉलम पर ध्यान देना चाहिए। 5 मिनट से अधिक के पूर्वानुमान के साथ मिसेज 19.2% हो गई, और नए मॉडल में - यहां तक ​​कि 23.2% कम! वैसे, मशीन सीखने का उपयोग करने वाले मॉडल में ऐसी त्रुटियां केवल 3 और 2.8% मामलों में होती हैं।

परिणाम


हमने उपयोगकर्ताओं को विश्वसनीय पूर्वानुमान प्रदान करने के लिए मुख्य रूप से पिन में ईटीए को निर्दिष्ट किया है। लेकिन, ज़ाहिर है, व्यापार में मशीन सीखने के किसी भी आवेदन के साथ, आर्थिक प्रभाव का मूल्यांकन करना आवश्यक है। और समझें कि क्या यह मॉडल बनाने और लागू करने की लागत के बराबर है। A / B परीक्षण ऑनलाइन होने के बाद, यह पता चला कि हम, मशीन लर्निंग का उपयोग करते हुए, एक ऑर्डर से एक ट्रिप के लिए रूपांतरण में सांख्यिकीय रूप से महत्वपूर्ण वृद्धि प्राप्त की (आखिरकार, एक ऑर्डर रद्द किया जा सकता है) और एक उपयोगकर्ता सत्र से ऑर्डर में रूपांतरण में वृद्धि हुई।

दोनों मामलों में, हम 0.1 प्रतिशत अंकों के क्रम के प्रभाव के बारे में बात कर रहे हैं। यह, वैसे, सांख्यिकीय महत्व का खंडन नहीं करता है: हमारे डेटा संस्करणों पर भी इस तरह के अंतर को 2-4 सप्ताह में विश्वसनीय रूप से पता लगाया जाता है। और व्यवसाय की प्रासंगिकता के साथ, वास्तव में, सब कुछ भी बुरा नहीं है: यह पता चला है कि ईटीए को स्पष्ट करने की लागत को केवल कुछ महीनों में रूपांतरण में वृद्धि से प्रतिकर्षित किया जाता है।

नतीजतन, हमें एक उपयोगी और निराशाजनक मामला मिला। पिन में ईटीए का परिशोधन लक्ष्य चर के सावधानीपूर्वक चयन के बारे में एक शिक्षाप्रद कहानी बन गया है। उत्पाद पक्ष पर, यह एक बहुत ही प्रेरक उदाहरण है: हमने एप्लिकेशन में सुधार किया और देखा कि उपयोगकर्ताओं ने इसकी सराहना की। हमें उम्मीद है कि परिष्कृत ईटीए हमारे यात्रियों को बैठकों, ट्रेनों और विमानों को पूरा करने में अधिक मदद करेगा।

पुनश्च यदि आप अन्य Yandex.Taxi प्रौद्योगिकियों में रुचि रखते हैं, तो हम गतिशील मूल्य निर्धारण पर एक पोस्ट की सलाह देते हैं, जिसे मेरे सहयोगी ने हाल ही में प्रकाशित किया है।

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


All Articles