Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean

Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean

Taxi zerbitzu on batek segurua, fidagarria eta azkarra izan behar du. Erabiltzailea ez da xehetasunetan sartuko: berarentzat garrantzitsua da "Eskatu" botoia sakatu eta A puntutik B puntura eramango duen auto bat ahalik eta azkarren jasotzea. Inguruan kotxerik ez badago, zerbitzuak behar du. berehala jakinarazi honi buruz, bezeroak itxaropen faltsurik izan ez dezan. Baina "Autorik ez" seinalea maiz agertzen bada, logikoa da pertsona batek zerbitzu hau erabiltzeari utzi eta lehiakide batengana joatea.

Artikulu honetan, ikaskuntza automatikoa erabiliz, dentsitate baxuko guneetan autoak bilatzeko arazoa nola konpondu genuen (hau da, lehen begiratuan kotxerik ez dagoen tokietan). Eta zer atera zen.

historiaurrea

Taxi batera deitzeko, erabiltzaileak urrats erraz batzuk egiten ditu, baina zer gertatzen da zerbitzuaren barruan?

erabiltzaile Etapa Backend Yandex.Taxi
Abiapuntua hautatzen du pin Hautagaien bilaketa sinplifikatua abiarazten ari gara: pin bilaketa. Aurkitutako gidarien arabera, iristeko ordua aurreikusten da - ETA pintxoan. Puntu jakin batean handitzen den koefizientea kalkulatzen da.
Helmuga, tarifa, baldintzak hautatzen ditu Eskaintza Ibilbide bat eraikitzen dugu eta tarifa guztien prezioak kalkulatzen ditugu, gero eta handiagoa den koefizientea kontuan hartuta.
"Deitu taxi bati" botoia sakatzen du ordena Autoaren bilaketa osoa abiarazten dugu. Gidari egokiena aukeratzen dugu eta eskaera bat eskaintzen diogu.

ΠŸΡ€ΠΎ ETA pintxoan, prezioen kalkulua ΠΈ gidari egokiena aukeratzea idatzi dugu jada. Eta hau gidariak aurkitzeko istorio bat da. Eskaera bat sortzen denean, bilaketa bi aldiz egiten da: Pinean eta ordenan. Eskaera baten bilaketa bi fasetan egiten da: hautagaien kontratazioa eta sailkapena. Lehenik eta behin, eskuragarri dauden gidari hautagaiak aurkitzen dira errepideko grafikoan gertuen daudenak. Ondoren, hobariak eta iragazkiak aplikatzen dira. Gainerako hautagaiak sailkatu dira eta irabazleak eskaera-eskaintza bat jasotzen du. Onartzen badu, eskaera esleitzen zaio eta entrega puntura joaten da. Ezezkoa ematen badu, hurrengora dator eskaintza. Hautagai gehiagorik ez badago, bilaketa berriro hasiko da. Honek hiru minutu baino gehiago irauten du, eta ondoren eskaera bertan behera utzi eta erre egiten da.

Pin batean bilatzea eskaera batean bilatzearen antzekoa da, soilik ordena ez da sortzen eta bilaketa bera behin bakarrik egiten da. Hautagai kopuruaren eta bilaketa-erradioaren ezarpen sinplifikatuak ere erabiltzen dira. Sinplifikazio hauek beharrezkoak dira, ordena baino orden bat pin gehiago daudelako, eta bilaketa nahiko zaila da eragiketa. Gure istorioaren gakoa: aurretiazko bilaketan ez bada hautagai egokirik aurkitu Pinean, orduan ez dizugu eskaerarik egiten uzten. Hala izaten zen behintzat.

Hau da erabiltzaileak aplikazioan ikusi duena:

Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean

Bilatu autorik gabeko autoak

Egun batean hipotesi bat bururatu zitzaigun: beharbada kasu batzuetan eskaera bete daiteke oraindik, nahiz eta kotxerik ez zegoen pin gainean. Azken finean, denbora pixka bat pasatzen da pinaren eta eskaeraren artean, eta eskaeraren bilaketa osatuagoa da eta batzuetan hainbat aldiz errepikatzen da: denbora horretan, erabilgarri dauden gidariak ager daitezke. Guk ere bagenekien kontrakoa: gidariak pin gainean aurkitzen baziren, ez zen egia esan eskaera egiterakoan aurkituko zirenik. Batzuetan desagertzen dira edo denek uko egiten diote aginduari.

Hipotesi hori egiaztatzeko, esperimentu bat jarri genuen martxan: kotxeen presentzia egiaztatzeari utzi genion Pin batean bilaketa batean probako erabiltzaile talde bati, hau da, "kotxerik gabeko eskaera" egiteko aukera izan zuten. Emaitza nahiko ezustekoa izan zen: autoa pin gainean ez bazegoen, kasuen % 29an geroago aurkitu zen - eskaera bilatzean! Gainera, autorik gabeko eskaerak ez ziren ohiko eskaeretatik oso desberdinak ezeztapen-tasei, balorazioei eta beste kalitate-adierazleei dagokienez. Autorik gabeko erreserbak erreserba guztien % 5 izan ziren, baina arrakasta duten bidaia guztien % 1 pasatxo.

Agindu hauen betearazleak nondik datozen ulertzeko, ikus ditzagun haien egoerak Pin batean bilaketan:

Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean

  • Eskuragarri: erabilgarri zegoen, baina arrazoiren batengatik ez zen hautagaien artean sartu, adibidez, urrunegi zegoen;
  • Eskaeran: lanpetuta zegoen, baina askatzea edo eskuragarri egotea lortu zuen kate-ordena;
  • Lanpetuta: eskaerak onartzeko gaitasuna desgaituta zegoen, baina gero gidaria lerrora itzuli zen;
  • Ez dago erabilgarri: gidaria ez zegoen sarean, baina agertu zen.

Gehitu dezagun fidagarritasuna

Eskaera gehigarriak bikainak dira, baina bilaketa arrakastatsuen % 29k esan nahi du denboraren % 71k erabiltzaileak denbora luzez itxaron zuela eta azkenean ezerezean geratu zela. Sistemaren eraginkortasunaren ikuspuntutik honetaz ezer ikaragarririk ez dagoen arren, erabiltzaileari itxaropen faltsua ematen dio eta denbora galtzen du, ondoren zapuztu egiten da eta (baliteke) zerbitzua erabiltzeari uzten dio. Arazo hau konpontzeko, eskatutako auto bat aurkitzeko probabilitatea iragartzen ikasi genuen.

Eskema hau da:

  • Erabiltzaileak pin bat jartzen du.
  • Bilaketa bat egiten da pin gainean.
  • Kotxerik ez badago, iragartzen dugu: agian agertuko dira.
  • Eta probabilitatearen arabera, eskaera egiteko baimena ematen dizugu edo ez, baina ohartarazten dizugu une honetan eremu honetako autoen dentsitatea baxua dela.

Aplikazioan honela zegoen itxura:

Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean

Eredua erabiltzeak eskaera berriak zehaztasun handiagoz sortzeko aukera ematen du eta jendea alferrik lasaitu gabe. Hau da, fidagarritasun-erlazioa eta makinarik gabeko eskaera-kopurua erregulatzea doitasun-gogoratzearen eredua erabiliz. Zerbitzuaren fidagarritasunak eragina du produktua erabiltzen jarraitzeko gogoan, hau da, azkenean dena bidai kopuruan sartzen da.

Zehaztasun-gogoratzearen inguruko apur batIkaskuntza automatikoaren oinarrizko zereginetako bat sailkapen-ataza da: objektu bat bi klaseetako bati esleitzea. Kasu honetan, ikaskuntza automatikoko algoritmoaren emaitza klaseetako bateko kidetasunaren zenbakizko ebaluazioa bihurtzen da, adibidez, probabilitatearen ebaluazioa. Hala ere, egiten diren ekintzak bitarrak izan ohi dira: autoa eskuragarri badago, aginduko dizugu, eta ez bada, ez dugu egingo. Zehatz esateko, dei diezaiogun zenbakizko estimazioa sortzen duen algoritmo bati eredua, eta sailkatzaileari bi klaseetako bati (1 edo –1) esleitzen dion araua. Ereduaren ebaluazioan oinarritutako sailkapen bat egiteko, ebaluazio-atalase bat hautatu behar duzu. Nola zehazki zereginaren araberakoa da.

Demagun gaixotasun arraro eta arriskutsu batzuentzat proba (sailkatzailea) egiten ari garela. Proben emaitzen arabera, pazientea azterketa zehatzago bat egitera bidaltzen dugu edo: "Ongi, zoaz etxera". Guretzat, gaixo bat etxera bidaltzea askoz okerragoa da pertsona osasuntsu bat beharrik gabe aztertzea baino. Hau da, proba ahalik eta benetan gaixo gehienentzat funtzionatzea nahi dugu. Balio honi recall = deitzen zaioYandex.Taxi-k nola bilatzen dituen autoak ez daudenean. Sailkatzaile ideal batek %100eko gogorarazten du. Egoera endekatua denak azterketara bidaltzea da, orduan gogorarazpena ere %100ekoa izango da.

Alderantziz ere gertatzen da. Adibidez, ikasleentzako azterketa sistema bat egiten ari gara, eta iruzurra detektagailu bat dauka. Bat-batean, egiaztapenak iruzurra kasu batzuetan ez badu funtzionatzen, orduan hau desatsegina da, baina ez da kritikoa. Bestalde, oso txarra da ikasleei egin ez duten zerbait bidegabe leporatzea. Hau da, garrantzitsua da guretzat sailkatzailearen erantzun positiboen artean ahalik eta zuzen gehien egotea, beharbada haien kopuruaren kaltetan. Horrek esan nahi du zehaztasuna maximizatu behar duzula = Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean. Objektu guztietan abiarazpena gertatzen bada, zehaztasuna laginean definitutako klasearen maiztasunaren berdina izango da.

Algoritmoak probabilitate-balio zenbaki bat sortzen badu, atalase desberdinak hautatuz, doitasun-gogorapen-balio desberdinak lor ditzakezu.

Gure arazoan egoera hau da. Gogoratu eskain ditzakegun eskaera kopurua da, zehaztasuna eskaera horien fidagarritasuna da. Hau da gure ereduaren zehaztasun-gogoratzearen kurbak:
Yandex.Taxi-k nola bilatzen dituen autoak ez daudenean
Muturreko bi kasu daude: inori ez eskaintzea eta denei agindua ematea. Inori onartzen ez badiozu, gogoratzea 0 izango da: ez dugu eskaerarik sortzen, baina horietako inork ez du huts egingo. Guztiei baimentzen badiegu, orduan gogoratzea % 100ekoa izango da (eskaera posible guztiak jasoko ditugu), eta zehaztasuna % 29koa izango da, hau da, eskaeren % 71 txarra izango da.

Abiapuntuaren hainbat parametro erabili ditugu seinale gisa:

  • Denbora/lekua.
  • Sistemaren egoera (inguruko tarifa eta pin guztien okupatutako makina kopurua).
  • Bilaketa-parametroak (erradioa, hautagai kopurua, murrizketak).

Seinaleei buruz gehiago

Kontzeptuki, bi egoera bereizi nahi ditugu:

  • "Baso sakona" - momentu honetan ez dago autorik hemen.
  • "Zorte txarra" - autoak daude, baina bilatzerakoan ez zegoen egokia.

"Zertegabe"-ren adibide bat ostiral arratsaldean zentroan eskaera handia badago. Eskaera asko dago, jende asko prest, eta gidari nahikorik ez denentzat. Honela gerta daiteke: ez dago gidari egokirik pinean. Baina literalki segundotan agertzen dira, momentu honetan gidari asko daudelako leku honetan eta haien egoera etengabe aldatzen ari delako.

Hori dela eta, A puntuaren inguruko hainbat sistema-adierazle ezaugarri onak izan ziren:

  • Kotxe kopurua guztira.
  • Eskatutako auto kopurua.
  • "Lanpetuta" egoeran eskatzeko erabilgarri ez dagoen auto kopurua.
  • Erabiltzaile kopurua.

Azken finean, zenbat eta auto gehiago egon, orduan eta litekeena da horietako bat eskuragarri egotea.
Izan ere, guretzat garrantzitsua da autoak ez ezik, bidaia arrakastatsuak egitea ere. Beraz, bidaia arrakastatsu baten probabilitatea aurreikustea posible zen. Baina hau ez egitea erabaki dugu, balio hori erabiltzailearen eta gidariaren araberakoa baita.

Ereduaren prestakuntza-algoritmoa zen CatBoost. Esperimentutik lortutako datuak trebatzeko erabili dira. Inplementatu ondoren, prestakuntza-datuak bildu behar izan ziren, batzuetan erabiltzaile kopuru txiki bati ereduaren erabakiaren aurka ordenatzeko aukera emanez.

Emaitzak

Esperimentuaren emaitzak espero zirenak izan ziren: eredua erabiltzeak bidaia arrakastatsuen kopurua nabarmen handitzeko aukera ematen du autorik gabeko eskaerak direla eta, baina fidagarritasuna arriskuan jarri gabe.

Momentuz, mekanismoa hiri eta herrialde guztietan abian jarri da eta bere laguntzarekin bidaien %1 inguru gertatzen dira. Gainera, auto-dentsitate txikia duten hiri batzuetan, halako bidaien kuota %15era iristen da.

Taxi teknologiari buruzko beste mezu batzuk

Iturria: www.habr.com

Gehitu iruzkin berria