Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi

Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi

Yaxshi taksi xizmati xavfsiz, ishonchli va tez bo'lishi kerak. Foydalanuvchi tafsilotlarga kirmaydi: uning uchun "Buyurtma" tugmasini bosish va uni A nuqtadan B nuqtaga olib boradigan mashinani imkon qadar tezroq olishi muhim. Agar yaqin atrofda mashina bo'lmasa, xizmat ko'rsatishi kerak. mijoz noto'g'ri umidlar bo'lmasligi uchun darhol bu haqda xabar bering. Ammo agar "Mashinalar yo'q" belgisi juda tez-tez paydo bo'lsa, odam ushbu xizmatdan foydalanishni to'xtatib, raqobatchiga borishi mantiqan to'g'ri keladi.

Ushbu maqolada men mashinani o'rganishdan foydalangan holda, biz past zichlikli joylarda (boshqacha aytganda, birinchi qarashda mashinalar yo'q) mashinalarni qidirish muammosini qanday hal qilganimiz haqida gapirmoqchiman. Va undan nima keldi.

Sana oldin

Taksi chaqirish uchun foydalanuvchi bir necha oddiy qadamlarni bajaradi, lekin xizmat ichida nima sodir bo'ladi?

Foydalanuvchi Stage Yandeks Yandex.Taxi
Boshlanish nuqtasini tanlaydi PIN-kod Biz nomzodlar uchun soddalashtirilgan qidiruvni boshlaymiz - pin qidiruvi. Topilgan drayverlarga asoslanib, kelish vaqti taxmin qilinadi - pindagi ETA. Berilgan nuqtada o'sish koeffitsienti hisoblanadi.
Belgilangan manzilni, tarifni, talablarni tanlaydi Taklif Biz marshrutni quramiz va ortib borayotgan koeffitsientni hisobga olgan holda barcha tariflar uchun narxlarni hisoblaymiz.
"Taksiga qo'ng'iroq qilish" tugmasini bosing Buyurtma Biz mashinani to'liq qidirishni boshlaymiz. Biz eng mos haydovchini tanlaymiz va unga buyurtma beramiz.

haqida ETA pinda, narxni hisoblash ΠΈ eng mos drayverni tanlash biz allaqachon yozgan edik. Va bu haydovchilarni topish haqidagi hikoya. Buyurtma yaratilganda, qidiruv ikki marta amalga oshiriladi: Pin va buyurtma bo'yicha. Buyurtmani qidirish ikki bosqichda amalga oshiriladi: nomzodlarni ishga olish va reyting. Birinchidan, yo'l grafigi bo'ylab eng yaqin bo'lgan mavjud nomzod haydovchilar topiladi. Keyin bonuslar va filtrlash qo'llaniladi. Qolgan nomzodlar saralanadi va g'olib buyurtma taklifini oladi. Agar u rozi bo'lsa, u buyurtmaga tayinlanadi va etkazib berish punktiga boradi. Agar u rad etsa, taklif keyingisiga keladi. Agar boshqa nomzodlar qolmasa, qidiruv yana boshlanadi. Bu uch daqiqadan ortiq davom etmaydi, shundan so'ng buyurtma bekor qilinadi va yondiriladi.

Pinda qidirish buyurtma bo'yicha qidirishga o'xshaydi, faqat buyurtma yaratilmaydi va qidiruvning o'zi faqat bir marta amalga oshiriladi. Nomzodlar soni va qidiruv radiusi uchun soddalashtirilgan sozlamalar ham qo'llaniladi. Bunday soddalashtirishlar zarur, chunki buyurtmalarga qaraganda ko'proq pinlar tartibi mavjud va qidirish juda qiyin operatsiya. Bizning hikoyamiz uchun asosiy nuqta: agar dastlabki qidiruv paytida Pinda mos nomzodlar topilmasa, biz sizga buyurtma berishga ruxsat bermaymiz. Hech bo'lmaganda, ilgari shunday bo'lgan.

Bu foydalanuvchi ilovada ko'rgan narsa:

Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi

Avtomobilsiz mashinalarni qidiring

Bir kuni biz gipoteza bilan chiqdik: ehtimol, ba'zi hollarda, hatto pinda mashinalar bo'lmasa ham, buyurtma hali ham bajarilishi mumkin. Axir, pin va buyurtma o'rtasida biroz vaqt o'tadi va buyurtmani qidirish yanada to'liqroq va ba'zan bir necha marta takrorlanadi: bu vaqt ichida mavjud drayverlar paydo bo'lishi mumkin. Biz buning aksini ham bilardik: agar haydovchilar pin ustida topilsa, buyurtma berish paytida topilishi haqiqat emas edi. Ba'zan ular yo'qoladi yoki hamma buyurtmani rad etadi.

Ushbu gipotezani sinab ko'rish uchun biz eksperimentni boshladik: biz Pin-da foydalanuvchilar test guruhi uchun qidiruv paytida mashinalar mavjudligini tekshirishni to'xtatdik, ya'ni ular "avtomobilsiz buyurtma" qilish imkoniyatiga ega bo'ldilar. Natija juda kutilmagan edi: agar mashina pinda bo'lmasa, 29% hollarda u keyinroq topilgan - buyurtma bo'yicha qidiruv paytida! Bundan tashqari, avtomobilsiz buyurtmalar bekor qilish stavkalari, reytinglar va boshqa sifat ko'rsatkichlari bo'yicha oddiy buyurtmalardan sezilarli darajada farq qilmadi. Avtomobilsiz bandlovlar barcha bronlarning 5% ni tashkil etdi, ammo barcha muvaffaqiyatli sayohatlarning 1% dan sal ortig'i.

Ushbu buyruqlar ijrochilari qayerdan kelganini tushunish uchun Pin-dagi qidiruv paytida ularning statuslarini ko'rib chiqaylik:

Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi

  • Mavjud: mavjud edi, lekin negadir nomzodlar qatoriga kiritilmadi, masalan, u juda uzoqda edi;
  • Buyurtma bo'yicha: band edi, lekin o'zini ozod qilishga yoki foydalanishga tayyor bo'lishga muvaffaq bo'ldi zanjir tartibi;
  • Band: buyurtmalarni qabul qilish qobiliyati o'chirildi, ammo keyin haydovchi chiziqqa qaytdi;
  • Mavjud emas: haydovchi onlayn emas edi, lekin u paydo bo'ldi.

Ishonchlilikni qo'shamiz

Qo'shimcha buyurtmalar juda yaxshi, ammo muvaffaqiyatli qidiruvlarning 29 foizi foydalanuvchining 71 foizini uzoq vaqt kutgan va hech qaerga ketmaganligini anglatadi. Garchi bu tizim samaradorligi nuqtai nazaridan yomon narsa bo'lmasa-da, u aslida foydalanuvchiga yolg'on umid beradi va vaqtni behuda sarflaydi, shundan so'ng ular xafa bo'lishadi va (ehtimol) xizmatdan foydalanishni to'xtatishlari mumkin. Ushbu muammoni hal qilish uchun biz buyurtma bo'yicha mashina topilishi ehtimolini taxmin qilishni o'rgandik.

Sxema quyidagicha:

  • Foydalanuvchi pin qo'yadi.
  • Pin ustida qidiruv amalga oshiriladi.
  • Agar mashinalar bo'lmasa, biz taxmin qilamiz: ehtimol ular paydo bo'ladi.
  • Va ehtimolga qarab, biz sizga buyurtma berishga ruxsat beramiz yoki ruxsat bermaymiz, lekin biz sizni ogohlantiramizki, bu hududda avtomobillar zichligi hozirgi vaqtda past.

Ilovada u shunday ko'rinardi:

Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi

Modeldan foydalanish sizga yangi buyurtmalarni yanada aniqroq yaratish va odamlarni behuda ishontirmaslik imkonini beradi. Ya'ni, ishonchlilik nisbati va mashinalarsiz buyurtmalar sonini aniqlik-esga olish modeli yordamida tartibga solish. Xizmatning ishonchliligi mahsulotdan foydalanishni davom ettirish istagiga ta'sir qiladi, ya'ni oxir-oqibat bularning barchasi sayohatlar soniga to'g'ri keladi.

Aniqlik haqida bir ozMashinani o'rganishdagi asosiy vazifalardan biri tasniflash vazifasidir: ob'ektni ikkita sinfdan biriga belgilash. Bunday holda, mashinani o'rganish algoritmining natijasi ko'pincha sinflardan biriga a'zolikni raqamli baholashga aylanadi, masalan, ehtimollik bahosi. Biroq, bajariladigan harakatlar odatda ikkilikdir: agar mashina mavjud bo'lsa, biz sizga buyurtma berishga ruxsat beramiz, agar bo'lmasa, biz buni qilmaymiz. Aniqroq bo'lish uchun, keling, raqamli bahoni ishlab chiqaradigan algoritmni model va tasniflagichni ikkita sinfdan biriga (1 yoki -1) tayinlaydigan qoida deb ataymiz. Modelni baholash asosida tasniflagichni yaratish uchun siz baholash chegarasini tanlashingiz kerak. Qanday qilib aniq vazifaga bog'liq.

Aytaylik, biz ba'zi noyob va xavfli kasalliklar uchun test (klassifikator) qilyapmiz. Sinov natijalariga ko'ra, biz bemorni batafsilroq tekshiruvga yuboramiz yoki: "Yaxshi, uyga bor" deb aytamiz. Biz uchun bemorni uyiga yuborish sog'lom odamni behuda tekshirishdan ko'ra yomonroqdir. Ya'ni, biz test imkon qadar ko'proq haqiqatan ham kasal odamlar uchun ishlashini xohlaymiz. Bu qiymat esga olish = deyiladiYandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi. Ideal klassifikator 100% esga olish qobiliyatiga ega. Degenerativ vaziyat - har bir kishini tekshirishga yuborish, keyin chaqirish ham 100% bo'ladi.

Bu ham aksincha sodir bo'ladi. Misol uchun, biz talabalar uchun test tizimini yaratmoqdamiz va unda aldash detektori mavjud. Agar to'satdan tekshiruv ba'zi aldash holatlari uchun ishlamasa, bu yoqimsiz, ammo muhim emas. Boshqa tomondan, talabalarni o'zlari qilmagan narsada nohaq ayblash juda yomon. Ya'ni, klassifikatorning ijobiy javoblari orasida iloji boricha ko'proq to'g'ri javoblar bo'lishi, ehtimol ularning soniga zarar etkazishi biz uchun muhimdir. Bu siz aniqlikni maksimal darajada oshirishingiz kerakligini anglatadi = Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi. Agar tetiklash barcha ob'ektlarda sodir bo'lsa, unda aniqlik namunadagi belgilangan sinf chastotasiga teng bo'ladi.

Agar algoritm raqamli ehtimollik qiymatini yaratsa, u holda turli chegaralarni tanlash orqali siz turli xil aniqlik-eslash qiymatlariga erishishingiz mumkin.

Bizning muammomizda vaziyat quyidagicha. Eslab qolish - biz taklif qilishimiz mumkin bo'lgan buyurtmalar soni, aniqlik - bu buyurtmalarning ishonchliligi. Bizning modelimizning aniqlik-eslash egri chizig'i shunday ko'rinadi:
Yandex.Taksi avtomobillar yo'q bo'lganda qanday qilib qidiradi
Ikkita ekstremal holat mavjud: hech kimga buyurtma berishga ruxsat bermang va hamma buyurtma berishga ruxsat bering. Agar siz hech kimga ruxsat bermasangiz, eslab qolish 0 bo'ladi: biz buyurtma yaratmaymiz, lekin ularning hech biri muvaffaqiyatsiz bo'lmaydi. Agar biz hammaga ruxsat beradigan bo'lsak, unda eslab qolish 100% bo'ladi (biz barcha mumkin bo'lgan buyurtmalarni olamiz) va aniqlik 29% bo'ladi, ya'ni buyurtmalarning 71% yomon bo'ladi.

Belgilar sifatida biz boshlang'ich nuqtasining turli parametrlaridan foydalandik:

  • Vaqt/joy.
  • Tizim holati (atrofdagi barcha tariflar va pinlarning band bo'lgan mashinalari soni).
  • Qidiruv parametrlari (radius, nomzodlar soni, cheklovlar).

Belgilar haqida ko'proq

Kontseptual ravishda biz ikkita holatni ajratmoqchimiz:

  • "Chuqur o'rmon" - bu erda hozir mashinalar yo'q.
  • "Omadsiz" - mashinalar bor, ammo qidiruvda mos keladiganlari yo'q edi.

Juma kuni kechqurun markazda talab ko'p bo'lsa, "Omadsiz" ning bir misoli. Buyurtmalar koβ€˜p, xohlovchilar koβ€˜p, haydovchilar hamma uchun yetarli emas. Bu shunday bo'lishi mumkin: pinda mos drayverlar yo'q. Ammo ular bir necha soniya ichida paydo bo'ladi, chunki bu vaqtda bu joyda juda ko'p haydovchilar bor va ularning holati doimiy ravishda o'zgarib turadi.

Shunday qilib, A nuqtasi yaqinidagi turli xil tizim ko'rsatkichlari yaxshi xususiyatlarga ega bo'ldi:

  • Avtomobillarning umumiy soni.
  • Buyurtma bo'yicha avtomobillar soni.
  • β€œBand” holatida buyurtma berish mumkin boΚ»lmagan avtomobillar soni.
  • Foydalanuvchilar soni.

Axir mashinalar qancha ko'p bo'lsa, ulardan biri paydo bo'lishi ehtimoli shunchalik yuqori.
Darhaqiqat, biz uchun nafaqat avtomobillar joylashgani, balki muvaffaqiyatli sayohatlar ham amalga oshirilishi muhimdir. Shu sababli, muvaffaqiyatli sayohat ehtimolini oldindan aytish mumkin edi. Ammo biz buni qilmaslikka qaror qildik, chunki bu qiymat foydalanuvchi va haydovchiga juda bog'liq.

Modelni o'qitish algoritmi edi CatBoost. Tajribadan olingan ma'lumotlar mashg'ulot uchun ishlatilgan. Amalga oshirilgandan so'ng, o'quv ma'lumotlarini to'plash kerak edi, ba'zida kam sonli foydalanuvchilarga model qaroriga qarshi buyurtma berishga imkon berdi.

natijalar

Tajriba natijalari kutilganidek bo'ldi: modeldan foydalanish avtomashinalarsiz, lekin ishonchlilikka putur etkazmasdan buyurtmalar tufayli muvaffaqiyatli sayohatlar sonini sezilarli darajada oshirish imkonini beradi.

Ayni paytda mexanizm barcha shahar va mamlakatlarda ishga tushirilgan va uning yordami bilan muvaffaqiyatli sayohatlarning taxminan 1% amalga oshiriladi. Bundan tashqari, avtomobillar zichligi past bo'lgan ba'zi shaharlarda bunday sayohatlarning ulushi 15% ga etadi.

Taksi texnologiyasi haqidagi boshqa postlar

Manba: www.habr.com

a Izoh qo'shish