Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке
Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке
Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке
Хранение данных в дереве. Это как вообще? Бустинг — ещё один способ машинного обучения

👨‍💻 Герой: Роман Хал­ке­чев, 28 лет, Москва. Окон­чил бака­лаври­ат в РУДН и сов­мест­ную маги­стер­скую про­грам­му ВШЭ и Шко­лы ана­ли­за дан­ных Яндекса.

🛠 Рабо­та: Руко­во­ди­тель ана­ли­ти­ки в Яндекс.Еде. Рабо­та­ет в офи­се, 5/2. Обыч­но начи­на­ет в 10, закан­чи­ва­ет в 20.

🧭 Рынок: Руко­во­ди­тель отде­ла ана­ли­ти­ки в Москве: 34 вакан­сии.

Переход в «Еду» и «Лавку»

При сли­я­нии с «Убе­ром» нам достал­ся бренд и частич­но коман­да сер­ви­са достав­ки еды — Uber Eats. Так­же Яндекс купил ком­па­нию FoodFox и объ­еди­нил эти про­ек­ты. Так появи­лась Яндекс.Еда, кото­рая с точ­ки зре­ния орга­ни­за­ции ста­ла частью «Так­си». А спу­стя год внут­ри Яндекс.Еды заро­ди­лась Яндекс.Лавка.

Как-то гене­раль­ный дирек­тор «Так­си» попро­сил меня помочь с «Едой» и «Лав­кой»: там было мно­го задач, свя­зан­ных с ана­ли­ти­кой, а людей не хва­та­ло. В сен­тяб­ре 2019 года меня с несколь­ки­ми ребя­та­ми из «Так­си» десан­ти­ро­ва­ли в фуд­тех, и я начал одно­вре­мен­но зани­мать­ся машин­ным обу­че­ни­ем в «Так­си» и ана­ли­ти­кой в «Еде» и «Лав­ке».

Зани­мать­ся дву­мя про­ек­та­ми слож­но: зада­чи раз­ные, я рабо­тал по 12 часов и меня всё рав­но не хва­та­ло. При этом в «Еде» и «Лав­ке» было боль­ше лич­ной ответ­ствен­но­сти за сер­вис, мы более плот­но участ­во­ва­ли в запус­ке фич, это было очень инте­рес­но. Так что я решил окон­ча­тель­но перей­ти в фуд­тех, с мая 2020 года я здесь руко­во­ди­тель аналитики.


С коман­дой Яндекс.Еды на тим­бил­дин­ге в Сочи. Я в красном 

Продуктовые задачи

У Яндекс.Еды и «Лав­ки» мно­го дан­ных, кото­рые помо­га­ют при­ни­мать про­дук­то­вые реше­ния, зара­ба­ты­вать боль­ше денег и делать луч­ший сер­вис. Их мож­но раз­бить на несколь­ко групп. Пер­вая — продуктовые.

Есть отдель­ное при­ло­же­ние для Яндекс.Еды и отдель­ное для сер­ви­са достав­ки еды Яндекс.Лавка. Есть сайт, есть при­ло­же­ния для курье­ров и ресто­ра­нов. Что­бы раз­ви­вать про­дукт и рас­тить мет­ри­ки, нуж­на аналитика.

Напри­мер, недав­но мы запу­сти­ли реко­мен­да­ции това­ров к тем, что уже есть в кор­зине поль­зо­ва­те­ля, и нуж­но было понять, а это выгод­но для биз­не­са? Мы счи­та­ем и видим, что да — кли­ен­ты поль­зу­ют­ся фичей, мы зна­чи­мо вырас­ти­ли сред­ний чек.

Часто мет­ри­ки нуж­но ещё деком­по­зи­ро­вать на более мел­кие, что­бы оце­нить эффект. Напри­мер, одна из клю­че­вых мет­рик — LTV, сово­куп­ная цен­ность кли­ен­та. Но она мало меня­ет­ся от неболь­ших изме­не­ний. Поэто­му мы рас­кла­ды­ва­ем эту мет­ри­ку на мно­же­ство дру­гих, более чув­стви­тель­ных, а так­же делим кли­ен­тов на когор­ты: кто зака­зал один раз, кто сде­лал несколь­ко зака­зов, кто при­вя­зал кар­ту в при­ло­же­нии и так далее. И счи­та­ем цен­ность не всех кли­ен­тов сра­зу, а кон­крет­ной груп­пы — так эффект от изме­не­ний полу­ча­ет­ся более наглядными.

Маркетинговые задачи

Мы помо­га­ем при­вле­кать поль­зо­ва­те­лей и оста­вать­ся в допу­сти­мом диа­па­зоне затрат. Или реа­ли­зо­вы­ва­ем акции, кото­рые при­ду­ма­ли в мар­ке­тин­ге, — гото­вим дан­ные, пишем алгоритмы.

Когда начал­ся каран­тин, коли­че­ство зака­зов в так­си упа­ло, а достав­ка еды вырос­ла. Мы реши­ли, что мож­но с помо­щью так­си достав­лять еду по все­му горо­ду. Посмот­ре­ли обез­ли­чен­ные дан­ные по поль­зо­ва­те­лям: кто из них часто ездил на так­си в заве­де­ния, кото­рые дале­ко от дома. И отпра­ви­ли им пуш-уведомление, что теперь они могут зака­зать отту­да достав­ку. Полу­чи­ли хоро­шую кон­вер­сию в заказы.

Задачи, связанные с операционкой

Напри­мер, есть сейлз-менеджеры, кото­рые уме­ют под­клю­чать ресто­ра­ны. Мы хотим полу­чить боль­ше зака­зов, а для это­го нуж­но понять — какие ресто­ра­ны нуж­но доба­вить? В новых горо­дах или в ста­рых? Если в ста­рых, то в каких рай­о­нах? Как понять, что в этом рай­оне уже доста­точ­но ресто­ра­нов и ещё один не при­не­сёт допол­ни­тель­ных зака­зов? Мы можем оце­нить коли­че­ство поль­зо­ва­те­лей в рай­оне, напри­мер, срав­нить с дан­ны­ми «Так­си» или Яндек­са. Это помо­жет понять, какая доля из них что-то зака­зы­ва­ет. Если низ­кая — веро­ят­но, не хва­та­ет ресторанов.

Похо­жие зада­чи есть и у дру­гих под­раз­де­ле­ний, напри­мер, под­держ­ки. Или тех, кто рабо­та­ет с уже запу­щен­ны­ми ресто­ра­на­ми: помо­га­ет им делать меню, запус­кать про­мо­ак­ции. Для всех этих отде­лов нуж­на аналитика.

Задачи, связанные с эффективностью маркетплейса

У нас на пло­щад­ке есть спрос — поль­зо­ва­те­ли — и пред­ло­же­ние: курье­ры и ресто­ра­ны. При этом нуж­но, что­бы и спрос, и пред­ло­же­ние рос­ли, но оста­ва­лись в балан­се. Если ресто­ра­нов будет мало, то и с зака­за­ми будет туго. Если мало курье­ров — мы будем посто­ян­но задер­жи­вать достав­ку и терять из-за это­го день­ги на про­мо­ко­дах. Обрат­ное, кста­ти, тоже про­блем­но: если курье­ров на линии ока­жет­ся мно­го, то каж­до­му доста­нет­ся мень­ше зака­зов, они мень­ше зара­бо­та­ют и могут уйти.

Задачи «Лавки»

«Лав­ка» отли­ча­ет­ся от «Еды» тем, что это, по сути, наш мага­зин: мы управ­ля­ем ассор­ти­мен­том. Зна­чит, нуж­но понять, что, когда и в каком коли­че­стве заку­пать. Заку­пим мало — сэко­но­мим, но това­ры быст­ро закон­чат­ся, кому-то может не хва­тить. Заку­пим не то — оста­нет­ся на пол­ках. Заку­пим слиш­ком мно­го — не поме­стит­ся на склад или не успе­ем про­дать и товар испортится.

К тому же есть огра­ни­че­ния постав­щи­ков: мы не можем купить пару-тройку шоко­ла­док, толь­ко сра­зу сот­ню. А ещё нуж­но под­стро­ить­ся под их воз­мож­но­сти доставки.

Всем этим мы и зани­ма­ем­ся. Соби­ра­ем и обра­ба­ты­ва­ем дан­ные, что­бы наш биз­нес раз­ви­вал­ся, а ресто­ра­ны, кли­ен­ты и курье­ры оста­ва­лись довольны.

Что это даёт пользователям

Когда поль­зо­ва­тель откры­ва­ет при­ло­же­ние Яндекс.Еды, он видит спи­сок ресто­ра­нов. Конеч­но, мож­но их поста­вить про­сто по рей­тин­гу или по вре­ме­ни достав­ки, но так может лег­ко ока­зать­ся, что инте­рес­ные места для кон­крет­но­го кли­ен­та опу­стят­ся ниже, а нам хочет­ся, что­бы он быст­ро нашёл, где сде­лать заказ. Так что с коман­дой машин­но­го обу­че­ния мы сде­ла­ли лен­ту, кото­рая учи­ты­ва­ет инте­ре­сы пользователей.


Двум поль­зо­ва­те­лям в одной квар­ти­ре «Еда» фор­ми­ру­ет лен­ту с неболь­ши­ми отли­чи­я­ми — алго­ритм пред­по­ла­га­ет, что заин­те­ре­су­ет кон­крет­но­го пользователя 

Ещё в лен­те вид­но про­гно­зи­ру­е­мое вре­мя достав­ки, это тоже наша рабо­та. Мы пыта­ем­ся пред­ска­зать, сколь­ко вре­ме­ни уйдёт на при­го­тов­ле­ние и достав­ку заказа.

Рей­тинг ресто­ра­нов тоже дела­ет моя коман­да. Здесь не всё так про­сто: мож­но посчи­тать про­сто сред­нее по всем оцен­кам, но это удоб­но, если у заве­де­ния их уже мно­го. Если ресто­ран только-только попал к нам, то каж­дая сле­ду­ю­щая оцен­ка может силь­но сбить рей­тинг — какая тогда от него поль­за? Тут при­хо­дит­ся искать дру­гие пути. Рас­ска­зать подроб­нее не могу, что­бы рей­тинг не накручивали.

Мультидоставка

Рань­ше в «Еде» один курьер мог одно­вре­мен­но достав­лять толь­ко один заказ. Это неудоб­но: если поль­зо­ва­тель сде­лал заказ, а за ним сра­зу ещё один в том же заве­де­нии в ту же квар­ти­ру, то для каж­до­го зака­за назна­чал­ся отдель­ный курьер. Мы реши­ли испра­вить это и запу­сти­ли муль­ти­до­став­ку, что­бы один курьер мог доста­вить два зака­за, если они, напри­мер, в одном доме и в одно время.

В такой зада­че мно­го нюан­сов. Нуж­но при­ду­мать алго­ритм, кото­рый под­ска­жет, какие зака­зы мож­но «скле­ить», а какие нет. Напри­мер, заказ может ока­зать­ся слиш­ком тяжё­лым и курьер его не уне­сёт. Или слиш­ком объ­ём­ным и не поме­стит­ся в сумку.

Затем надо сде­лать так, что­бы курье­ры не пере­пу­та­ли сум­ки, зна­чит, кла­дов­щи­ки долж­ны их под­пи­сать. Полу­ча­ет­ся, нуж­но под­клю­чить ещё одну коман­ду, что­бы под­дер­жать запуск.

А затем ещё нуж­но оце­нить, при­но­сит ли такое ново­вве­де­ние пре­иму­ще­ство для биз­не­са. С одной сто­ро­ны, вро­де бы здо­ро­во: доста­вим боль­ше зака­зов мень­ши­ми сила­ми. С дру­гой, что-то может и ухуд­шит­ся, напри­мер, нач­нём чаще опаз­ды­вать. Или курье­ры будут путать зака­зы, ухуд­шит­ся поль­зо­ва­тель­ский опыт, поте­ря­ем день­ги на скид­ках и промокодах.

Так что идея хоро­шая, но нуж­на ана­ли­ти­ка, что­бы понять, как её реа­ли­зо­вать, а потом оце­нить, сто­ит ли игра свеч.

Как один сервис использует другой — и при чём тут аналитика

Вокруг ресто­ра­нов, кото­рые под­клю­че­ны к «Еде», есть зона, до кото­рой мы можем при­вез­ти заказ. Она не очень боль­шая, что­бы блю­да сохра­ня­ли нуж­ную тем­пе­ра­ту­ру, пока пеший курьер или курьер на вело­си­пе­де достав­ля­ет заказ. Но одна­жды мы поду­ма­ли: а поче­му не достав­лять зака­зы на так­си? Тогда зона достав­ки может силь­но рас­ши­рить­ся, прак­ти­че­ски на весь город.

Тут как раз уда­ри­ла само­изо­ля­ция, мень­ше людей зака­зы­ва­ют так­си, води­те­ли про­ста­и­ва­ют, а курье­ров не хва­та­ет, было бы очень спод­руч­но пере­да­вать часть зака­зов так­си­стам. Мы вме­сте с коман­дой так­си реши­ли это реализовать.

Эти два сер­ви­са — назна­че­ние води­те­ля и достав­ка еды — никак не были свя­за­ны. Ребя­та из раз­ра­бот­ки нача­ли реа­ли­зо­вы­вать инте­гра­цию, а мы дела­ли ана­ли­ти­ку: как понять, како­го так­си­ста назна­чать, когда это сде­лать, что­бы он при­е­хал в ресто­ран, когда заказ будет готов. В ито­ге систе­ма зара­бо­та­ла и уже при­но­сит зна­чи­мое коли­че­ство заказов.

Коэффициенты в доставке и такси

В наших сер­ви­сах есть повы­ша­ю­щие коэф­фи­ци­ен­ты на сто­и­мость поезд­ки или достав­ки — это тоже зада­ча для ана­ли­ти­ков. Нам нуж­но дер­жать баланс на мар­кет­плей­се и коэф­фи­ци­ен­ты — один из спо­со­бов управ­лять спро­сом в пери­о­ды рез­ко­го роста.

Когда начи­на­ет­ся дождь, поль­зо­ва­те­ли чаще вызы­ва­ют так­си. А на само­изо­ля­ции нача­ли чаще поль­зо­вать­ся достав­кой. С одной сто­ро­ны, для нас это хоро­шо. С дру­гой — если спрос рас­тёт быст­ро, мы не можем урав­но­ве­сить его соот­вет­ству­ю­щим объ­ё­мом пред­ло­же­ния. Поль­зо­ва­тель зака­жет еду, а доста­вить её будет некому.

Коэф­фи­ци­ен­ты нуж­ны, что­бы под­ре­зать спрос. Так зака­зы сде­ла­ют толь­ко те, кому это осо­бен­но важ­но, а мы смо­жем их все доста­вить. Наша зада­ча в этом слу­чае — опре­де­лить усло­вия, в кото­рых нуж­но при­ме­нять коэф­фи­ци­ен­ты. Если они будут слиш­ком часто, мы поте­ря­ем поль­зо­ва­те­лей: они про­сто не будут зака­зы­вать там, где посто­ян­но выхо­дит доро­же. Но и если коэф­фи­ци­ен­тов не будет, то достав­ка не спра­вит­ся и мы разо­ча­ру­ем поль­зо­ва­те­ля. Так что, как и во мно­гих дру­гих зада­чах, цель ана­ли­ти­ка — най­ти баланс.

Рабочий день аналитика

Обыч­но ана­ли­тик рабо­та­ет над 2–3 боль­ши­ми про­ек­та­ми и сери­ей неболь­ших задач. Боль­шие про­ек­ты, как пра­ви­ло, длят­ся от меся­ца до полу­го­да. Это под­го­тов­ка к запус­ку новых функ­ций или раз­ра­бот­ка ново­го алго­рит­ма. Малень­кая зада­ча отни­ма­ет от полу­ча­са до несколь­ких дней. Напри­мер, научить­ся счи­тать рей­тинг ресто­ра­нов или посмот­реть эффек­тив­ность реклам­ной кампании.

Мы соби­ра­ем и исполь­зу­ем все дан­ные, до кото­рых можем дотя­нуть­ся. Какие-то соби­ра­ют­ся в наших внут­рен­них систе­мах, напри­мер, инфор­ма­ция о зака­зах. Какие-то мы полу­ча­ем от дру­гих сер­ви­сов Яндек­са, вро­де обез­ли­чен­ных дан­ных о кли­ен­тах в опре­де­лён­ном рай­оне. Что-то даже ищем в поис­ке. Хра­ним дан­ные в YT — это внут­рен­няя систе­ма Яндек­са. Обра­ба­ты­ва­ем их там же с помо­щью допол­ни­тель­ных библиотек.


Коман­да ана­ли­ти­ков за рабо­той. На стене — алго­рит­мы, схе­мы дан­ных и скет­чи команды 

Ана­ли­ти­ка плот­но свя­за­на с раз­ра­бот­кой. Мы сов­мест­но гото­вим дан­ные и при­ду­мы­ва­ем алго­рит­мы, раз­ра­бот­чи­ки реа­ли­зу­ют их в сер­ви­се. Ино­гда быва­ет, что мы чего-то не учли и алго­ритм не учи­ты­ва­ет какие-то край­ние слу­чаи, тогда раз­ра­бот­чик может попро­сить ана­ли­ти­ка дора­бо­тать его. И наобо­рот, ана­ли­тик тоже может поста­вить зада­чу раз­ра­бот­чи­ку. Напри­мер, логи­ро­вать собы­тия, когда поль­зо­ва­тель исполь­зо­вал ту или иную функ­цию приложения.

Кста­ти, при­хо­ди­те к нам рабо­тать. Ана­ли­ти­ков ищем почти все­гда, посмот­ри­те вакан­сии

Подружить сервисы и ничего не сломать

«Так­си» и достав­ка еды для поль­зо­ва­те­ля — раз­ные сер­ви­сы, но с точ­ки зре­ния тех­но­ло­гий меж­ду ними мно­го обще­го. И там, и там есть зада­ча дис­пет­че­ри­за­ции. Это когда есть зака­зы — на транс­порт или достав­ку — и есть испол­ни­те­ли. Мы их объ­еди­ня­ем: «Вот этот заказ ты исполняй».

Есть тех­но­ло­гия ско­рин­га, кото­рая выби­ра­ет, како­му курье­ру или води­те­лю отдать заказ. Или тех­но­ло­гия учё­та транс­пор­та: так­сист может быть с дет­ским креслом или жёл­ты­ми номе­ра­ми, а курьер — пеший, на вело­си­пе­де или авто. Им нуж­но отда­вать раз­ные зака­зы. Обще­го мно­го, но вез­де свои неболь­шие нюан­сы. Так что логич­но исполь­зо­вать для «Так­си», «Еды» и «Лав­ки» общую плат­фор­му, а не три отдель­ных. Про­сто эту еди­ную плат­фор­му нуж­но настро­ить и допилить.

В про­цес­се инте­гра­ции участ­ву­ют несколь­ко сто­рон: раз­ра­бот­чи­ки, про­дук­то­вые коман­ды и те, кто зани­ма­ет­ся опе­ра­ци­он­кой, обу­че­ни­ем и най­мом. Про­ект слож­ный — нуж­но учесть хотел­ки всех сер­ви­сов, спро­ек­ти­ро­вать, раз­ра­бо­тать и пере­ехать на новую плат­фор­му. Может воз­ник­нуть мно­го нюан­сов тех­но­ло­ги­че­ских, финан­со­вых и юри­ди­че­ских, гру­бо гово­ря, как потом испол­ни­те­лям зар­пла­ту платить.

Я руко­во­жу несколь­ки­ми коман­да­ми, пони­маю, чем зани­ма­ет­ся каж­дая, мно­го обща­юсь со смеж­ни­ка­ми, бла­го­да­ря это­му я вижу зада­чи с раз­ных сто­рон. Я пони­маю, что́ мы потен­ци­аль­но можем забыть при пере­ез­де, и ста­ра­юсь это­го не допустить.

Код пишу мало, день состоит из встреч

Мой день состо­ит пре­иму­ще­ствен­но из встреч, код уже почти не пишу. Ино­гда быва­ет, что-то делаю рука­ми, напри­мер, могу скрипт на Питоне напи­сать, что­бы извлечь дан­ные или постро­ить гра­фик. Но это ско­рее исключение.

Часть моей коман­ды зани­ма­ет­ся «Лав­кой», часть «Едой». Внут­ри эти коман­ды делят­ся на направ­ле­ния: про­дукт, биз­нес и так далее. Так что у меня мно­го встреч один на один с тим­ли­да­ми. Ещё — с моим руко­во­ди­те­лем, с основ­ны­ми заказ­чи­ка­ми, встре­чи по про­ек­там. Мы быст­ро рас­тём, и при­хо­дит­ся при­ни­мать мно­го реше­ний на лету.


Домаш­нее рабо­чее место. На дос­ке делаю замет­ки для любых задач: домаш­них, рабо­чих, учебных 

Мои зада­чи гло­баль­но делят­ся на два направ­ле­ния: руко­во­ди­тель­ские и проектные.

Руко­во­ди­тель­ские — это, напри­мер, целе­по­ла­га­ние. Дого­ва­ри­ва­ем­ся, каких целей хотим достичь, за счёт каких ресур­сов, с помо­щью каких шагов. Или наём: опре­де­лить, каких людей нани­мать, под­го­то­вить тесто­вые зада­ния, про­ве­сти собе­се­до­ва­ния. Нуж­но выстра­и­вать про­цес­сы: мно­го заказ­чи­ков, мно­го задач, ресур­сов, как все­гда, не хва­та­ет. Нуж­но при­о­ри­ти­зи­ро­вать, дого­ва­ри­вать­ся со всеми.

Есть про­ект­ные зада­чи. Я хожу по встре­чам и помо­гаю разо­брать­ся, что мож­но сде­лать, как мож­но решить опре­де­лён­ную зада­чу. Ино­гда это слож­ные про­ек­ты, где нуж­но вклю­чить­ся, разо­брать­ся и помочь, там мой опыт и взгляд может быть поле­зен. А есть про­ек­ты, где всё идёт хоро­шо, но мне само­му инте­рес­но в них погру­зить­ся и я это делаю. Так было, напри­мер, с мультидоставкой.

Планы на будущее

Мои даль­ней­шие пла­ны свя­за­ны с пер­спек­ти­ва­ми фудтех-сервисов. Они при­вле­ка­тель­ные: мы хотим создать силь­ный про­дукт, мно­го­крат­но вырас­тить его, вый­ти в новые ниши и побо­роть­ся за долю в них. Сле­жу за кон­ку­рен­та­ми на запад­ных и ази­ат­ских рын­ках, какие воз­мож­но­сти они внед­ря­ют, какие тех­но­ло­гии используют.

Ино­гда я чув­ствую, что мне не хва­та­ет зна­ний из смеж­ных обла­стей. Напри­мер, осе­нью про­шёл в ШАДе курс по архи­тек­ту­ре ком­пью­те­ров и опе­ра­ци­он­ным систе­мам. А сей­час вооб­ще про финан­сы читаю мно­го, что­бы луч­ше пони­мать, как рабо­та­ет бизнес.