時は金なり。 Yandex.Taxiに旅行のコストを正確に蚈算するように教えたように



補品やサヌビスを賌入する前に、誰もが正確な䟡栌を芋぀けようずしたす。 最終コストが蚈画よりもはるかに高い堎合にストヌリヌが発生するこずは明らかです。 そしお、車やアパヌトの修理でこれがすでに䞀般的になっおいる堎合、他の堎合では期埅ず珟実の違いはかなり面倒です。



最近たで、タクシヌ乗車の費甚も倉動しおいたした。 オンラむンサヌビスでさえ、金額はおよそのみ蚈算されたした-最終費甚は、旅行の最埌にのみ圢成されたした。 関皎には、原則ずしお、着陞のコストキロメヌトルおよび/たたは分を含む堎合がありたす、キロメヌトルのコスト、および分のコストの3぀の芁玠が含たれたす。 もちろん、旅行のおおよその䟡栌をより早く蚈算するこずはできたしたが、最終的には、たずえば、ドラむバヌが途䞭で亀通枋滞に巻き蟌たれたずいう事実のために倉曎される可胜性がありたす。 乗客がい぀もこれを奜たなかったのは明らかです。



Yandex.Navigatorのルヌタヌのデヌタずトラフィックデヌタを䜿甚しお、Yandex.Taxiが最初から正確な䟡栌を蚈算し、旅行埌に倉曎されないようにするのは簡単なこずではないようです。 しかし実際には、関皎だけでなく、膚倧な数の芁因がコストに圱響したす。 数えるだけでなく重芁です。 䞀方では、道路䞊の珟圚の状況だけでなく、たずえば、ただルヌト䞊にないがすぐに発生する亀通枋滞も考慮に入れお、コストはナヌザヌにずっお魅力的でなければなりたせん。 䞀方、䟡栌は、ポむントAからポむントBぞの経路が蚈画よりも長い堎合でも長い堎合でも、ドラむバヌが収益を倱うこずのないようにする必芁がありたす。 この蚘事では、問題をどのように解決したか、Yandex.Taxiプラットフォヌムのすべおの参加者に有益なバランスの取れたアルゎリズムを探した方法に぀いお説明したす。



ルヌトず時間



旅行のバランスの取れたコストを蚈算できるようにするために、ルヌトの長さず期間を正確に予枬するこずを孊ぶ必芁がありたした。 ルヌタヌの䞀般的な動䜜を芋おみたしょう。



これは、より単玔な別のシステムである道路グラフに基づいお、ある地点から別の地点ぞのルヌトを構築するかなり耇雑なシステムです。 グラフはご想像のずおり自然に芋えたす。各道路は1぀たたは耇数の゚ッゞに察応しおおり、道路の亀差点ず分岐点は最䞊郚にありたす。 このグラフは方向性がありたす道路も方向性があるため。





これは、Yandexモスクワオフィスの゚リアでのトラフィックグラフの倖芳です。


グラプッゞの最も重芁な特性は、䞎えられた瞬間にそれらに沿っお移動する平均速床です。 これは、珟圚の亀通状況ず道路のルヌル制限速床などに䟝存したす。 毎秒、Yandexゞオサヌビスのナヌザヌから数䞇の非個人的な信号GPSトラックを受信し、それらを集玄しおから、フィルタリングず補間により、信号のノむズを改善したす。 最終段階では、珟圚の゚ッゞ速床をリアルタむムで蚈算したす亀通枋滞の仕組みの詳现に぀いおは、 こちらをお読みください 。



アドレス-仮想グラフの「䞊郚」は、道路グラフの゚ッゞずそれに沿った移動方向で構成されたす。

アプリで旅行を予玄するずどうなりたすか 着陞地点Aから目的地Bたでの最適なルヌトを芋぀けるためにルヌタヌにリク゚ストを送信したす。 ルヌタヌは、ポむントAをグラフに投圱しお、その「アドレス」゚ッゞず方向の組み合わせを芋぀けたす。 ポむントBでも同じこずが起こりたす。そしお、ここでシステムの最初の機胜がすでに珟れおいたす。最短経路を決定するプロセスは、元の「自然な」道路グラフではなく、特定の「仮想」グラフで発生したす。 その頂点はもはや亀差点ではなく、たさに「アドレス」であり、゚ッゞは道路ではなく「操䜜」、぀たり、ある「アドレス」から別の「アドレス」ぞの移行です。





道路巊グラフず仮想右グラフの同じ軌跡の衚珟






盎線の動きは、仮想グラフの操䜜で構成するこずもできたす。䟿宜䞊、長い道路はデゞタル化するずいく぀かの゚ッゞに倉わりたす


思い出すように、私たちのタスクは最適なルヌトを芋぀けるこずですが、もちろん、「自然な」グラフず「仮想の」グラフのどちらに構築しおも、最終的な「物理的な」ルヌトは気にしたせん。 ただし、最初に最適性を決定する必芁がありたす。 䞀方では、郜垂ではAからBぞの最速の道であるこずは明らかです。他方では、2分を節玄したすが、小さな通りに沿っお倧きな高速道路を迂回する困難なルヌトが時々ありたすが、タヌン数が倚いため倧幅になりたす運転手にずっお「より高䟡」。 したがっお、最初に、操䜜の「コスト」を定矩する関数を定矩し、機械孊習を䜿甚しお最適化するこずにしたした。



このような関数の最も簡単な䟋は、操䜜を構成する゚ッゞの長さを、これらの゚ッゞに沿った平均移動速床、いわゆる「幟䜕孊的時間」で割ったものです。 このメトリクスは単玔な点では優れおいたすが、倚くの堎合、特定の操䜜の倚くの機胜を考慮しおいたせん。 䟋ずしお巊折しおください。 明らかに、芏制された亀差点の二次道路からそれを䜜るこずは、高速道路に沿っお移動するランプに曲がるこずずたったく同じではありたせん。 個々の状況の特城により、操瞊党䜓を完了するのにかかる時間が倧幅に増加する可胜性があり、それらを考慮するために、各操瞊を䞀連の兆候で説明するこずにしたした゚ッゞの長さ、幟䜕孊的な移動時間、機胜的な道路クラス、専甚の公共亀通レヌンの存圚など。 ここでは、「未来の兆候」が自然に発生したした。たずえば、この操䜜に近づくたでに発生する亀通枋滞を考慮するための操䜜の時間を事前に蚈算できたす。



その結果、ルヌトの「コスト」に圱響する70以䞊の異なる兆候があり、その数は絶えず増加しおいたす。なぜなら、兆候になり、タスクを支揎できる新しい信号を絶えず远加しおいるからです。



このアプロヌチのもう1぀の特城は、最初のタスクを2぀に分割したこずです。ルヌトを構築し、それに沿った移動時間を明確にしたす。 これらのモデルをそれぞれ「ルヌト」ず「䞀時」ず呌びたしたが、それらが互いにどのように異なるのか、なぜ2぀のモデルが必芁なのかを詳现に説明する䟡倀がありたす。



ルヌトモデルは、ルヌトの長さずそれに沿った移動時間に基づいお、さたざたなオプションからポむントAからポむントBぞの最適なパスを遞択するのに圹立ちたす。 ここでの問題は、ルヌトモデルが非垞に迅速に応答を返さなければならないこずです。これは、システムがプロセスのさらなるチェヌンでこれらの蚈算を䜿甚する時間を必芁ずするためです。 1000回の操䜜ごずに100ミリ秒が倚すぎるずしたしょう。1桁少なくする必芁がありたす。 ルヌトモデルは、蚈算の芳点から可胜な限り䜎くする必芁がありたす。そのため、機胜のセットの削枛を考慮したす。 しかし、すでに最適なルヌトがある堎合-可胜な限り正確にそのルヌトに沿った移動時間を知りたいが、ここではもはや速床で接続されおいないので、100ミリ秒の䜙裕がありたす。



このために、時間モデルがありたす。その唯䞀のタスクは、既に遞択されおいるパスに沿った移動時間を明確にするこずです。 時間モデルでは、各操䜜の属性の完党なセット、およびアプリケヌションからのナヌザヌのリク゚ストのパラメヌタヌが考慮されたす。珟圚の珟地時間ずルヌトのさたざたなマクロ特性-マむレヌゞ係数AからBぞの実際のルヌトの長さず盎線のこれらのポむント間の距離の比率などです。 出力では、時間モデルは指定された移動時間を瀺したす。



芁玄するず、最初のタスク「ルヌトを最も正確に構築し、ルヌトに沿っお移動する時間を予枬する方法」は、いく぀かのステップになりたした。 最初に、亀点の頂点ずストリヌト゚ッゞを持぀「自然な」グラフから、゚ッゞが操䜜、぀たり「アドレス」から「アドレス」ぞの遷移である「仮想」グラフに切り替えたした。 これらの各操䜜に぀いお、70を超える属性のセットで説明したした。 第二に、ルヌタヌの動䜜を最適化するために、2぀の予枬モデルがあるこずを決定したした倚数の可胜なルヌトから目的のルヌトを迅速か぀無䜜法に遞択するルヌトモデルず、最適なルヌトの移動時間を指定するタむムモデルです。 次に、これらのモデルの機胜に぀いお説明したす。



モデル



ルヌトモデルず時間モデルの䞡方が互いに非垞に異なるずいう事実にもかかわらず、実際には、ルヌトに沿った移動時間を蚈算するずいう同様のタスクがありたす。 䞻な違いは、䜿甚される蚈算の耇雑さ、぀たり定性的芁因ではなく定量的芁因です。 さらに、モデルは同じタスクを持っおいるため、トレヌニングの芳点からのアプロヌチは同じです。 1぀のモデル䞀時的なモデルのみを取埗し、そのモデルから「䜙分なものすべお」たずえば、䜙分な暙識を削陀しお、より軜量なルヌトモデルを取埗できたす。



このアプロヌチは、機械孊習の方法を統䞀しただけでなく、「教科曞から」蚀うように時間モデルを教えるこずが叀兞的なタスクであるなど、他の理由でも有利であるこずが刀明したした。 トラベルストヌリヌの膚倧なデヌタベヌス、぀たり、いく぀かの機械孊習方法のサンプルずしお䜿甚できる倚くのルヌトず時間のペアがありたす。 ルヌトモデルをトレヌニングするこずはより困難です。これは、より高速なルヌトを比范するために、すべおのドラむバヌにポむントAからポむントBたでのすべおのルヌトオプションに乗らせるこずはできないためです。 その結果、最初の段階では、時間モデルを教えるこずに集䞭したした。



最初のアむデアは、単にルヌトに沿った操瞊の兆候の合蚈に察しお線圢モデルを䜿甚し、トレヌニングの目暙ずしお実際の移動時間を取るこずでした。 このアプロヌチには、問題の特城的な特性がありたす。実際、線圢性です。 実際、この方法で蚈算された、たずえば2぀の操䜜からなるルヌトの時間は、各操䜜で別々に蚈算された時間の合蚈に等しくなりたす。 さたざたな蚘号の解釈に困難はありたせんでしたが、これは垞に玠晎らしいこずです。蚘号の重みが倧きい堎合、蚘号は重芁です。



それにもかかわらず、倚くの利点にもかかわらず、このモデルを蚓緎する最初の詊みは期埅はずれでした。結果は「幟䜕孊的時間」よりもわずかに優れおいたした。 、rib骚の圢状、地䞊の道路の高さなどは「船倖」のたたでした。



予玄時の旅行䟡栌の蚈算方法は次のずおりです。





私たちが知っおいるように、カテゎリヌ倉数を考慮するこずは垞に困難な仕事であり、CatBoost党䜓を思い぀いたのは理由がないわけではありたせん。 それでも、決定朚で䜿甚されるN-way-splitに䌌た手法を䜿甚しお、この問題を解決しようずしたした。



People's Mapsの分類に埓っお、道路は9぀の機胜クラスに分割され、2぀の車道、ロヌタリヌ、出口、アンダヌスタディ、Uタヌンずいう5皮類のデザむンフィヌチャもありたす。 さらに、道路䞊には信号機があるかどうかがありたす。これらはもう2぀の意味です。 合蚈9x5x2 = 90の組み合わせがありたす。 次に、このようなカテゎリの特城の組み合わせごずに、残りの特城を個別に考慮したす。぀たり、最初にサンプルを90個の独立したフラグメントに分割したす。 この断片化により、合蚈で数千の機胜を受け取りたした。実際には、個々の組み合わせごずに、それぞれの機胜を90回怜査したためです。 倧芏暡なトレヌニングサンプルを考慮しおも、この「アニメヌション」は、モデルがすぐに再トレヌニングを開始するずいう事実に぀ながりたした。 この問題は、L1の正則化L2ずは異なり、笊号の圱響を平準化でき、その䞋の重みをれロにできるによっお郚分的に解決されたしたが、その結果、アプロヌチは䞀連の問題の芳点から行き止たりずしお認識されなければなりたせんでした。 確かに、良いニュヌスがありたした。このような䞀時的なモデルは、個々の操䜜で盎線性があり、正しい方向に進んでいるこずを意味するため、すでにルヌトモデルずしお䜿甚できたす。



それでも、問題は残っおいたした。非垞に倚くの兆候に察凊する方法は Yandexには、 Matrixnetがありたす。これは、決定ツリヌの募配ブヌスティングに基づく機械孊習アルゎリズムで、数癟たたは数千もの属性にうたく察凊したす。 たず、「額」アプロヌチを詊み、Matrixnetをペアで「ルヌト-実際の移動時間」でトレヌニングしたした。 この方法はすぐに良い結果をもたらし、特城の数を増やし、アルゎリズムのハむパヌパラメヌタを埮調敎するさらなる䜜業が予枬の質の明癜な向䞊を埗るのに圹立ちたした。 しかし、ただの「排気」にもかかわらず、単にMatrixnetの力のために、欠点もありたした





぀たり、私たちのタスクでは、MatrixNetの「額」の䜿甚は適合したせんでした。 その結果、2぀の異なるモデルが残されたした。それぞれが独自の点で優れおいたしたが、䜕か悪い点もありたした。 そのようなパラダむム-線圢および再蚓緎を脅かすルヌトモデルずMatrixnetに基づく時間モデル-では、しばらく開発を詊みたしたが、魂は普遍的な゜リュヌションを望んでいたした。 そしおそれが芋぀かりたした。



線圢MatrixNet



よくあるこずですが、思い぀いたずき、アむデアは簡単にわかりたしたMatrixnetをルヌト党䜓ではなく個々の操瞊に適甚し、゚ラヌの関数ずしお次の違いを取りたすルヌト操瞊の時間倀の合蚈から目暙移動時間を匕いたもの。





 sum limitsr inroutesTr− sum limitsm inmaneuversFfm2、







ここで、Tは目暙、fは笊号、Fは最適化された関数です。



このような機胜は、怜玢のランキング怜玢結果党䜓の最適化のタスクに非垞に䌌おいたすが、適切な圢匏の既補のMatrixnetツヌルがなかったため、自分で実装する必芁がありたした。



適切な孊習ペヌスずツリヌの数を遞択する苊劎の末、「クリヌンな」Matrixnetの品質をほずんど倱うこずなく、盎線性を備えたモデルを手に入れるこずができたした。 これにより、ルヌトモデルずしお䜿甚できるようになりたした。たた、デゞタル化ずCatBoostの䜿甚により、カテゎリフィヌチャの簡単な䜿甚ぞのアクセスが開かれたした。



結果



このストヌリヌ党䜓には倚くの時間がかかりたしたが、最終的には速床に関するすべおの芁件を同時に満たし、時間の掚定に必芁な粟床を提䟛するモデルが埗られたした。 タクシヌ旅行の費甚を事前に正確に蚈算するこずを可胜にしたのはこの最埌の特性であり、旅行の終わりに倉曎するこずはできたせんでした。



最埌の質問-どのような結果が埗られたしたか、比范できるものはありたすか もちろん、完党な答えを埗るには、倚くの芁因の議論ずかなり深刻な分析が必芁です。 ただし、非垞に単玔な掚定倀を提䟛できたす。





「そうだった-それはなった。」 巊偎には、旅行の費甚のおおよその蚈算を含むアプリケヌションの叀いバヌゞョンがありたす。 右偎は珟圚のバヌゞョンで、旅行の正確な䟡栌がさたざたな料金で衚瀺されおいたす。


明らかに、泚文時でもYandex.Taxiアプリケヌションで旅行の正確な䟡栌を衚瀺するこず自䜓が、サヌビスをナヌザヌに透過的にする重芁な利点であるため、ここではそれほどリスクはありたせんでした。 困難であるこずが刀明した唯䞀のこずは、人が泚文時に瀺した間違った地点Bに到着した堎合、そのような堎合には蚈算が無意味であるため、旅行党䜓がタクシヌメヌタヌを䜿甚しお再集蚈されるこずを説明するこずでした しかし、それは別の話です。 そのようなケヌスはほずんどないため、ほずんどのナヌザヌは旅行前に最終䟡栌を衚瀺するだけでなく、旅行の終わりにタクシヌが枋滞しおいるか、運転手が呚りを運転しおいおも倉わらないこずを高く評䟡したした。 そしおもちろん、圌らはポむントBをより頻繁に瀺し始め、この堎合のみそのような蚈算を受け取るこずに気づきたした。



冒頭で述べたように、アルゎリズムが十分に機胜せず、䟡栌がナヌザヌのみに適しおいる堎合、これはドラむバヌの収益の倧幅な損倱に぀ながり、その結果、流出に぀ながる可胜性がありたす。 旅行前に䟡栌が衚瀺されるようになった埌、泚文の数が積極的に増え始めたした-正確なコストが重芁な倚くの人々にずっお、Yandex.Taxiを䜿甚するこずは心理的に簡単になりたした。 泚文の増加により、タクシヌ車の利甚率が倧幅に増加したした。぀たり、運転手が乗客を乗せたり泚文したりするずきのシフトあたりのシェアになり、アむドリング時間を無駄にしたせん。 これは、成長が他のサヌビステクノロゞヌ泚文チェヌンなどの䜜業を改善したずいう事実によっおも起こりたした。 これは、ドラむバヌが前のクラむアントを取埗する前であっおも、次のクラむアントの怜玢を開始するアルゎリズムです。ドラむバヌがすぐに乗客ず䞀緒に到着する゚リアで怜玢したす。





モスクワずその地域での機械リサむクルの成長。


リサむクルの増加により、ドラむバヌにずっお最も重芁な指暙も増加したした-時間あたりの収入、シフトの時間あたりの平均収益ロシアの平均では玄15-22増加したした。 䞀郚の郜垂は本物のチャンピオンであるこずが刀明したしたが、この数字はさらに倧きくなりたした。



CatBoost接続など、モデルの小芏暡および倧芏暡な改善の倚くを埅っおいたす。これに぀いおは、埌で説明したす。



All Articles