Yandex.Taxi కార్లు లేనప్పుడు వాటి కోసం ఎలా శోధిస్తుంది
మంచి టాక్సీ సేవ సురక్షితంగా, విశ్వసనీయంగా మరియు వేగంగా ఉండాలి. వినియోగదారు వివరాల్లోకి వెళ్లరు: అతను "ఆర్డర్" బటన్ను క్లిక్ చేసి, వీలైనంత త్వరగా కారుని అందుకోవడం అతనికి ముఖ్యం, అది అతన్ని పాయింట్ A నుండి పాయింట్ Bకి తీసుకువెళుతుంది. సమీపంలో కార్లు లేకుంటే, సేవ తప్పనిసరిగా ఉండాలి. తక్షణమే దీని గురించి తెలియజేయండి, తద్వారా క్లయింట్ తప్పుడు అంచనాలను కలిగి ఉండదు. కానీ "కార్లు లేవు" గుర్తు చాలా తరచుగా కనిపిస్తే, ఒక వ్యక్తి ఈ సేవను ఉపయోగించడం ఆపివేసి పోటీదారు వద్దకు వెళ్లడం తార్కికం.
ఈ వ్యాసంలో నేను మెషిన్ లెర్నింగ్ ఉపయోగించి, తక్కువ-సాంద్రత ఉన్న ప్రాంతాల్లో కార్ల కోసం శోధించే సమస్యను ఎలా పరిష్కరించాము అనే దాని గురించి మాట్లాడాలనుకుంటున్నాను (మరో మాటలో చెప్పాలంటే, మొదటి చూపులో, కార్లు లేవు). మరియు దాని నుండి ఏమి వచ్చింది.
పూర్వచరిత్ర
టాక్సీకి కాల్ చేయడానికి, వినియోగదారు కొన్ని సాధారణ దశలను చేస్తారు, అయితే సేవ లోపల ఏమి జరుగుతుంది?
యూజర్
స్టేజ్
బ్యాకెండ్ Yandex.Taxi
ప్రారంభ బిందువును ఎంచుకుంటుంది
పిన్
మేము అభ్యర్థుల కోసం సరళీకృత శోధనను ప్రారంభిస్తున్నాము - పిన్ శోధన. కనుగొన్న డ్రైవర్ల ఆధారంగా, రాక సమయం అంచనా వేయబడుతుంది - పిన్లో ETA. ఇచ్చిన పాయింట్ వద్ద పెరుగుతున్న గుణకం లెక్కించబడుతుంది.
గమ్యం, ఛార్జీలు, అవసరాలను ఎంచుకుంటుంది
ఆఫర్
మేము ఒక మార్గాన్ని నిర్మిస్తాము మరియు అన్ని టారిఫ్ల కోసం ధరలను లెక్కిస్తాము, పెరుగుతున్న గుణకాన్ని పరిగణనలోకి తీసుకుంటాము.
"కాల్ ఎ టాక్సీ" బటన్ను నొక్కండి
ఆర్డర్
మేము కారు కోసం పూర్తి శోధనను ప్రారంభించాము. మేము చాలా సరిఅయిన డ్రైవర్ని ఎంచుకుంటాము మరియు అతనికి ఆర్డర్ను అందిస్తాము.
న పిన్లో ETA, ధర గణన и అత్యంత అనుకూలమైన డ్రైవర్ను ఎంచుకోవడం మేము ఇప్పటికే వ్రాసాము. మరియు ఇది డ్రైవర్లను కనుగొనే కథ. ఆర్డర్ సృష్టించబడినప్పుడు, శోధన రెండుసార్లు జరుగుతుంది: పిన్ మరియు ఆర్డర్పై. ఆర్డర్ కోసం శోధన రెండు దశల్లో జరుగుతుంది: అభ్యర్థుల నియామకం మరియు ర్యాంకింగ్. ముందుగా, అందుబాటులో ఉన్న అభ్యర్థి డ్రైవర్లు రోడ్డు గ్రాఫ్లో అత్యంత సన్నిహితంగా ఉంటారు. అప్పుడు బోనస్లు మరియు ఫిల్టరింగ్ వర్తించబడతాయి. మిగిలిన అభ్యర్థులు ర్యాంక్ పొందారు మరియు విజేత ఆర్డర్ ఆఫర్ను అందుకుంటారు. అతను అంగీకరిస్తే, అతను ఆర్డర్కు కేటాయించబడ్డాడు మరియు డెలివరీ పాయింట్కి వెళ్తాడు. అతను నిరాకరిస్తే, ఆ ఆఫర్ తదుపరి వారికి వస్తుంది. ఎక్కువ మంది అభ్యర్థులు లేకుంటే, శోధన మళ్లీ ప్రారంభమవుతుంది. ఇది మూడు నిమిషాల కంటే ఎక్కువ ఉండదు, ఆ తర్వాత ఆర్డర్ రద్దు చేయబడుతుంది మరియు కాల్చబడుతుంది.
పిన్పై శోధించడం అనేది ఆర్డర్పై శోధించడం లాంటిది, ఆర్డర్ మాత్రమే సృష్టించబడదు మరియు శోధన ఒక్కసారి మాత్రమే చేయబడుతుంది. అభ్యర్థుల సంఖ్య మరియు శోధన వ్యాసార్థం కోసం సరళీకృత సెట్టింగ్లు కూడా ఉపయోగించబడతాయి. ఆర్డర్ల కంటే ఎక్కువ పిన్ల ఆర్డర్ ఉన్నందున ఇటువంటి సరళీకరణలు అవసరం, మరియు శోధించడం చాలా కష్టమైన ఆపరేషన్. మా కథనానికి కీలకమైన అంశం: ప్రాథమిక శోధన సమయంలో పిన్లో తగిన అభ్యర్థులు ఎవరూ కనుగొనబడనట్లయితే, మీరు ఆర్డర్ చేయడానికి మేము మిమ్మల్ని అనుమతించము. కనీసం అది ఎలా ఉండేది.
అప్లికేషన్లో వినియోగదారు చూసింది ఇది:
కార్లు లేని కార్ల కోసం శోధించండి
ఒక రోజు మేము ఒక పరికల్పనతో ముందుకు వచ్చాము: బహుశా కొన్ని సందర్భాల్లో పిన్లో కార్లు లేనప్పటికీ, ఆర్డర్ ఇప్పటికీ పూర్తి కావచ్చు. అన్నింటికంటే, పిన్ మరియు ఆర్డర్ మధ్య కొంత సమయం గడిచిపోతుంది మరియు ఆర్డర్ కోసం శోధన మరింత పూర్తయింది మరియు కొన్నిసార్లు అనేక సార్లు పునరావృతమవుతుంది: ఈ సమయంలో, అందుబాటులో ఉన్న డ్రైవర్లు కనిపించవచ్చు. మాకు వ్యతిరేకం కూడా తెలుసు: పిన్లో డ్రైవర్లు కనుగొనబడితే, ఆర్డర్ చేసేటప్పుడు వారు కనుగొనబడతారన్నది వాస్తవం కాదు. కొన్నిసార్లు అవి అదృశ్యమవుతాయి లేదా ప్రతి ఒక్కరూ ఆర్డర్ను తిరస్కరిస్తారు.
ఈ పరికల్పనను పరీక్షించడానికి, మేము ఒక ప్రయోగాన్ని ప్రారంభించాము: వినియోగదారుల పరీక్ష సమూహం కోసం పిన్లో శోధన సమయంలో మేము కార్ల ఉనికిని తనిఖీ చేయడాన్ని ఆపివేసాము, అనగా, "కార్లు లేకుండా ఆర్డర్" చేయడానికి వారికి అవకాశం ఉంది. ఫలితం చాలా ఊహించనిది: కారు పిన్లో లేకుంటే, 29% కేసులలో అది తరువాత కనుగొనబడింది - ఆర్డర్పై శోధిస్తున్నప్పుడు! అంతేకాకుండా, రద్దు రేట్లు, రేటింగ్లు మరియు ఇతర నాణ్యత సూచికల పరంగా కార్లు లేని ఆర్డర్లు సాధారణ ఆర్డర్ల నుండి గణనీయంగా భిన్నంగా లేవు. కార్లు లేని బుకింగ్లు మొత్తం బుకింగ్లలో 5% ఉన్నాయి, అయితే అన్ని విజయవంతమైన పర్యటనలలో కేవలం 1% కంటే ఎక్కువ.
ఈ ఆర్డర్ల ఎగ్జిక్యూటర్లు ఎక్కడ నుండి వచ్చారో అర్థం చేసుకోవడానికి, పిన్లో సెర్చ్ చేస్తున్నప్పుడు వారి స్టేటస్లను చూద్దాం:
అందుబాటులో ఉంది: అందుబాటులో ఉంది, కానీ కొన్ని కారణాల వల్ల అభ్యర్థులలో చేర్చబడలేదు, ఉదాహరణకు, అతను చాలా దూరంగా ఉన్నాడు;
ఆర్డర్ మీద: బిజీగా ఉన్నాడు, కానీ తనను తాను విడిపించుకోగలిగాడు లేదా అందుబాటులో ఉండగలిగాడు చైన్ ఆర్డర్;
బిజీగా: ఆర్డర్లను అంగీకరించే సామర్థ్యం నిలిపివేయబడింది, కానీ డ్రైవర్ లైన్కు తిరిగి వచ్చాడు;
అందుబాటులో లేదు: డ్రైవర్ ఆన్లైన్లో లేడు, కానీ అతను కనిపించాడు.
విశ్వసనీయతను జోడిద్దాం
అదనపు ఆర్డర్లు చాలా బాగున్నాయి, అయితే 29% విజయవంతమైన శోధనలు అంటే 71% సమయం వినియోగదారు చాలా కాలం వేచి ఉండి ఎక్కడికీ వెళ్లడం లేదు. సిస్టమ్ సమర్థత దృక్కోణం నుండి దీని గురించి భయంకరమైనది ఏమీ లేనప్పటికీ, ఇది వాస్తవానికి వినియోగదారుకు తప్పుడు ఆశను ఇస్తుంది మరియు సమయాన్ని వృధా చేస్తుంది, ఆ తర్వాత వారు నిరాశ చెందుతారు మరియు (బహుశా) సేవను ఉపయోగించడం ఆపివేయవచ్చు. ఈ సమస్యను పరిష్కరించడానికి, ఆర్డర్లో ఉన్న కారు కనుగొనబడే సంభావ్యతను అంచనా వేయడం నేర్చుకున్నాము.
పథకం ఇలా ఉంటుంది:
వినియోగదారు పిన్ను ఉంచారు.
పిన్పై శోధన జరుగుతుంది.
కార్లు లేనట్లయితే, మేము అంచనా వేస్తాము: బహుశా అవి కనిపిస్తాయి.
మరియు సంభావ్యతను బట్టి, మేము మిమ్మల్ని ఆర్డర్ చేయడానికి అనుమతిస్తాము లేదా అనుమతించము, కానీ ఈ సమయంలో ఈ ప్రాంతంలో కార్ల సాంద్రత తక్కువగా ఉందని మేము మిమ్మల్ని హెచ్చరిస్తున్నాము.
అప్లికేషన్లో ఇది ఇలా ఉంది:
మోడల్ను ఉపయోగించడం వలన మీరు కొత్త ఆర్డర్లను మరింత ఖచ్చితంగా సృష్టించవచ్చు మరియు ఫలించని వ్యక్తులకు భరోసా ఇవ్వకూడదు. అంటే, ఖచ్చితమైన రీకాల్ మోడల్ని ఉపయోగించి యంత్రాలు లేకుండా విశ్వసనీయత మరియు ఆర్డర్ల సంఖ్య యొక్క నిష్పత్తిని నియంత్రించడం. సేవ యొక్క విశ్వసనీయత ఉత్పత్తిని ఉపయోగించడం కొనసాగించాలనే కోరికను ప్రభావితం చేస్తుంది, అనగా చివరికి ఇది అన్ని పర్యటనల సంఖ్యకు వస్తుంది.
ఖచ్చితత్వం-రీకాల్ గురించి కొంచెంమెషీన్ లెర్నింగ్లోని ప్రాథమిక పనులలో ఒకటి వర్గీకరణ పని: రెండు తరగతులలో ఒకదానికి వస్తువును కేటాయించడం. ఈ సందర్భంలో, మెషిన్ లెర్నింగ్ అల్గోరిథం యొక్క ఫలితం తరచుగా తరగతుల్లో ఒకదానిలో సభ్యత్వం యొక్క సంఖ్యాపరమైన అంచనాగా మారుతుంది, ఉదాహరణకు, సంభావ్యత అంచనా. అయితే, నిర్వహించబడే చర్యలు సాధారణంగా బైనరీగా ఉంటాయి: కారు అందుబాటులో ఉంటే, మేము దానిని ఆర్డర్ చేయడానికి మిమ్మల్ని అనుమతిస్తాము మరియు కాకపోతే, మేము చేయము. నిర్దిష్టంగా చెప్పాలంటే, సంఖ్యాపరమైన అంచనాను రూపొందించే అల్గారిథమ్ను మోడల్గా పిలుద్దాం మరియు వర్గీకరణదారుని రెండు తరగతుల్లో ఒకదానికి కేటాయించే నియమం (1 లేదా -1). మోడల్ అసెస్మెంట్ ఆధారంగా వర్గీకరణను రూపొందించడానికి, మీరు అసెస్మెంట్ థ్రెషోల్డ్ని ఎంచుకోవాలి. ఎలా సరిగ్గా పని మీద చాలా ఆధారపడి ఉంటుంది.
మనం కొన్ని అరుదైన మరియు ప్రమాదకరమైన వ్యాధికి పరీక్ష (క్లాసిఫైయర్) చేస్తున్నామని అనుకుందాం. పరీక్ష ఫలితాల ఆధారంగా, మేము రోగిని మరింత వివరణాత్మక పరీక్ష కోసం పంపుతాము లేదా “బాగుంది, ఇంటికి వెళ్లండి” అని చెప్పండి. మనకు, అనారోగ్యంతో ఉన్న వ్యక్తిని ఇంటికి పంపడం ఆరోగ్యవంతమైన వ్యక్తిని అనవసరంగా పరీక్షించడం కంటే చాలా ఘోరంగా ఉంటుంది. అంటే, సాధ్యమైనంత ఎక్కువ మంది నిజంగా అనారోగ్యంతో ఉన్న వ్యక్తుల కోసం పరీక్ష పనిచేయాలని మేము కోరుకుంటున్నాము. ఈ విలువను రీకాల్ = అంటారు. ఆదర్శ వర్గీకరణదారు 100% రీకాల్ని కలిగి ఉంది. ప్రతి ఒక్కరినీ పరీక్షకు పంపడం దిగజారుతున్న పరిస్థితి, అప్పుడు రీకాల్ కూడా 100% అవుతుంది.
ఇది మరో విధంగా కూడా జరుగుతుంది. ఉదాహరణకు, మేము విద్యార్థుల కోసం పరీక్షా విధానాన్ని తయారు చేస్తున్నాము మరియు దీనికి చీటింగ్ డిటెక్టర్ ఉంది. అకస్మాత్తుగా కొన్ని మోసం కేసులకు చెక్ పని చేయకపోతే, ఇది అసహ్యకరమైనది, కానీ క్లిష్టమైనది కాదు. మరోవైపు, విద్యార్థులు చేయని పనిని అన్యాయంగా నిందించడం చాలా దారుణం. అంటే, వర్గీకరణదారు యొక్క సానుకూల సమాధానాలలో సాధ్యమైనంత ఎక్కువ సరైనవి ఉన్నాయి, బహుశా వారి సంఖ్యకు హాని కలిగించడం మాకు ముఖ్యం. దీని అర్థం మీరు ఖచ్చితత్వాన్ని గరిష్టీకరించాలి = . అన్ని వస్తువులపై ట్రిగ్గరింగ్ జరిగితే, నమూనాలోని నిర్వచించిన తరగతి యొక్క ఫ్రీక్వెన్సీకి ఖచ్చితత్వం సమానంగా ఉంటుంది.
అల్గోరిథం సంఖ్యా సంభావ్యత విలువను ఉత్పత్తి చేస్తే, వివిధ థ్రెషోల్డ్లను ఎంచుకోవడం ద్వారా, మీరు విభిన్న ఖచ్చితత్వ-రీకాల్ విలువలను సాధించవచ్చు.
మా సమస్యలో పరిస్థితి క్రింది విధంగా ఉంది. రీకాల్ అనేది మేము అందించే ఆర్డర్ల సంఖ్య, ఖచ్చితత్వం అనేది ఈ ఆర్డర్ల విశ్వసనీయత. మా మోడల్ యొక్క ఖచ్చితత్వ-రీకాల్ కర్వ్ ఇలా కనిపిస్తుంది:
రెండు విపరీతమైన కేసులు ఉన్నాయి: ఎవరినీ ఆర్డర్ చేయడానికి అనుమతించవద్దు మరియు ప్రతి ఒక్కరినీ ఆర్డర్ చేయడానికి అనుమతించవద్దు. మీరు ఎవరినీ అనుమతించకపోతే, రీకాల్ 0 అవుతుంది: మేము ఆర్డర్లను సృష్టించము, కానీ వాటిలో ఏదీ విఫలం కాదు. మేము ప్రతి ఒక్కరినీ అనుమతించినట్లయితే, రీకాల్ 100% ఉంటుంది (మేము అన్ని సాధ్యమైన ఆర్డర్లను అందుకుంటాము), మరియు ఖచ్చితత్వం 29% ఉంటుంది, అంటే 71% ఆర్డర్లు చెడ్డవి.
మేము ప్రారంభ స్థానం యొక్క వివిధ పారామితులను సంకేతాలుగా ఉపయోగించాము:
సమయం/స్థలం.
సిస్టమ్ స్థితి (సమీపంలో ఉన్న అన్ని టారిఫ్లు మరియు పిన్ల ఆక్రమిత యంత్రాల సంఖ్య).
సంభావితంగా, మేము రెండు పరిస్థితుల మధ్య తేడాను గుర్తించాలనుకుంటున్నాము:
“డీప్ ఫారెస్ట్” - ఈ సమయంలో ఇక్కడ కార్లు లేవు.
“దురదృష్టం” - కార్లు ఉన్నాయి, కానీ శోధిస్తున్నప్పుడు తగినవి ఏవీ లేవు.
శుక్రవారం సాయంత్రం కేంద్రంలో చాలా డిమాండ్ ఉంటే "అన్లక్కీ" యొక్క ఒక ఉదాహరణ. చాలా ఆర్డర్లు ఉన్నాయి, చాలా మంది వ్యక్తులు సిద్ధంగా ఉన్నారు మరియు ప్రతి ఒక్కరికీ తగినంత డ్రైవర్లు లేరు. ఇది ఇలా మారవచ్చు: పిన్లో తగిన డ్రైవర్లు లేరు. కానీ అక్షరాలా సెకన్లలో వారు కనిపిస్తారు, ఎందుకంటే ఈ సమయంలో ఈ స్థలంలో చాలా మంది డ్రైవర్లు ఉన్నారు మరియు వారి స్థితి నిరంతరం మారుతూ ఉంటుంది.
అందువల్ల, పాయింట్ A సమీపంలోని వివిధ సిస్టమ్ సూచికలు మంచి లక్షణాలుగా మారాయి:
మొత్తం కార్ల సంఖ్య.
ఆర్డర్లో ఉన్న కార్ల సంఖ్య.
"బిజీ" స్టేటస్లో ఆర్డర్ చేయడానికి అందుబాటులో లేని కార్ల సంఖ్య.
వినియోగదారుల సంఖ్య.
అన్నింటికంటే, ఎక్కువ కార్లు ఉన్నాయి, వాటిలో ఒకటి అందుబాటులోకి వచ్చే అవకాశం ఉంది.
వాస్తవానికి, కార్లు మాత్రమే కాకుండా, విజయవంతమైన ప్రయాణాలు కూడా చేయడం మాకు ముఖ్యం. అందువల్ల, విజయవంతమైన యాత్ర యొక్క సంభావ్యతను అంచనా వేయడం సాధ్యమైంది. కానీ మేము దీన్ని చేయకూడదని నిర్ణయించుకున్నాము, ఎందుకంటే ఈ విలువ వినియోగదారు మరియు డ్రైవర్పై ఎక్కువగా ఆధారపడి ఉంటుంది.
మోడల్ శిక్షణ అల్గోరిథం క్యాట్బూస్ట్. ప్రయోగం నుండి పొందిన డేటా శిక్షణ కోసం ఉపయోగించబడింది. అమలు తర్వాత, శిక్షణ డేటాను సేకరించవలసి ఉంటుంది, కొన్నిసార్లు మోడల్ నిర్ణయానికి వ్యతిరేకంగా ఆర్డర్ చేయడానికి తక్కువ సంఖ్యలో వినియోగదారులను అనుమతిస్తుంది.
ఫలితాలు
ప్రయోగం యొక్క ఫలితాలు ఊహించిన విధంగా ఉన్నాయి: మోడల్ను ఉపయోగించడం వలన కార్లు లేకుండా ఆర్డర్ల కారణంగా విజయవంతమైన పర్యటనల సంఖ్యను గణనీయంగా పెంచడానికి మిమ్మల్ని అనుమతిస్తుంది, కానీ విశ్వసనీయతకు రాజీ పడకుండా.
ప్రస్తుతానికి, మెకానిజం అన్ని నగరాలు మరియు దేశాలలో ప్రారంభించబడింది మరియు దాని సహాయంతో, సుమారు 1% విజయవంతమైన పర్యటనలు జరుగుతాయి. అంతేకాకుండా, తక్కువ సాంద్రత కలిగిన కార్లు ఉన్న కొన్ని నగరాల్లో, అటువంటి పర్యటనల వాటా 15% కి చేరుకుంటుంది.