![](https://habrastorage.org/getpro/habr/upload_files/bc1/0fa/fde/bc10fafde851a40074473112be5f4635.png)
До появления Такси, машину часто вызывали «от борта»: находили или останавливали такси и договаривались о цене и маршруте. Кто и как повезёт пассажира — тот ещё вопрос. Теперь с появлением агрегаторов требования к перевозкам сильно выросли.
Привет! Я Дмитрий Шульчевский, старший аналитик‑разработчик. Я отвечаю за безопасность в Яндекс Go. В этом посте я расскажу, как мы внедряли технологии, которые повышают безопасность пассажиров и водителей. За годы существования сервиса мы научили алгоритмы проверять документы, считывать опасное вождение, а также подбирать водителей в соответствии со сложностью заказа.
До поездки: кто вас везёт
Театр начинается с вешалки, а поездка на такси — с водителя. Сам факт установки приложения на смартфон и регистрация ещё не означают, что таксист сразу получит доступ к заказам. Сначала нужно пройти проверку документов.
В сервисе каждый день регистрируется больше 10 000 новых водителей по всей России. Изначально проверкой документов занимались асессоры: люди вручную сверяли введённые данные с паспортами и водительскими удостоверениями, загруженными водителями, запрашивали данные у ГИБДД.
Но ресурсы человека ограничены: банально от усталости можно пропустить важную деталь и, заказы начнёт выполнять человек, скажем, с просроченными правами. А ещё, чтобы проверить такой объём документов, количество асессоров должно быть соответствующим. Их нужно нанимать, обучать, контролировать — то есть затраты на управление в какой‑то момент становятся слишком большими.
К счастью, за несколько лет мы собрали столько обучающих примеров, что было бы странно не отдать такую рутину технологиям, и создали Железного Асессора. В основе наших алгоритмов проверки лежит нейросеть, обученная компьютерным зрением Яндекса. Она принимает на вход фотографию документа и возвращает её некий вектор. Когда водитель отправляет снимок водительского удостоверения, например, при повторной регистрации, то у новой фотографии и у той, которую он отправлял до этого, векторы будут близкими, но при этом не одинаковыми.
Объясню, что это значит: допустим, когда у фродера нет оригинала документа, а только единственное его фото, и он его присылает несколько раз, модель видит, что по факту это один и тот же снимок. Ведь невозможно сделать две абсолютно похожих фотографии: где‑то слегка изменится тень или сдвинется камера. И если пользователь постоянно присылает нам одну и ту же фотографию документа, то тут явно что‑то не так.
А ещё этот вектор позволяет наращивать модели новые свойства. Например, мы обучаем модель, которая ищет экранки. То есть фотки, когда сфотографирован не документ, а его, скажем, скан с экрана.
Мы не допустим водителя до заказов, например, если выясним:
что за ним было подтверждено намеренное опасное вождение,
он был признан виновником ДТП с пострадавшими или погибшими;
он лишён прав на управление ТС;
с его стороны были факты физического насилия или угрозы, а также сексуализированное насилие или домогательства.
Во время поездки: опасное вождение и сложные маршруты
Этап поездки — самый важный и ответственный. Здесь нужно следить за множеством факторов: соблюдение водителем ПДД, прохождение сложных участков дорог, нештатные ситуации. Конечно, здесь очень многое зависит от человеческого фактора, и мы стараемся минимизировать риски в том числе с помощью алгоритмов и машинного обучения.
Сложный маршрут — опытному водителю
На маршруты, в которых, например, есть автомагистрали, МКАД или сложные развязки мы стараемся предлагать более опытных водителей. Это происходит в момент формирования заказа: то есть важно не только то, насколько водитель близко к пассажиру, но и то, насколько он опытный. Это называется «безопасный диспатч».
Технически это устроено так: у нас есть набор заказов, которые появились за последние несколько секунд, и набор водителей, которые сейчас свободны или скоро будут свободны. Алгоритм назначения водителя на заказ соотносит оценку опасности каждого маршрута с оценкой надёжности водителя.
Для оценки маршрута мы добавили слагаемые, пропорциональные вероятности ДТП на том или ином участке дороги, через которые проходит маршрут.
![Слева — опасный маршрут, а справа — более простой Слева — опасный маршрут, а справа — более простой](https://habrastorage.org/getpro/habr/upload_files/930/af3/37e/930af337e96058b00370f200de0be051.png)
Мы обучили ML‑модель на различных признаках поездок и маршрута с целевой переменной — наличие ДТП в течение часа после начала заказа. Ограничение в час важно, так как без него длина заказа, само собой, сильно влияет на аварийность: чем длиннее заказ, тем с большей вероятностью может произойти ДТП. Без этого ограничения получалось бы, что менее опытные водители получают больше коротких заказов, а суммарно пробег и аварийность сохраняются.
В качестве признаков поездок мы взяли стаж вождения, количество выполненных заказов в сервисе, а также эпизоды превышения скорости или опасных манёвров, участие в ДТП, жалобы пассажиров и другие факторы.
В итоге на поездку по потенциально более опасному маршруту из числа тех, кто был на линии в момент заказа, назначаются водители с бо́льшим опытом безопасных поездок в сервисе. В 2022 году мы провели А/Б‑тест, и по нему увидели статистически значимое уменьшение аварийности на пробег на несколько процентов за счёт этого механизма.
Тише едешь — дальше будешь
Большой опыт вождения — это хорошо. Но ещё важна и культура — если не соблюдать ПДД и мешать остальным участникам движения, далеко не уедешь. Отследить опасное вождение нам тоже помогают технологии.
Мы отслеживаем скорость, основываясь на данных GPS: берём последовательные точки, которые присылает устройство водителя и время регистрации этой точки. По времени и расстоянию между точками мы вычисляем скорость. Если водитель систематически превышает скоростные лимиты, то мы делаем ему предупреждение.
![](https://habrastorage.org/getpro/habr/upload_files/acb/645/5d2/acb6455d25161d3c27f5d749c58c8e46.png)
При этом мы знаем, что иногда GPS может присылать неточные данные — например, они могут давать сильные скачки, когда, например, водитель заезжает в тоннель. Алгоритм настроен таким образом, что он фильтрует спорадические проблемы с GPS и не применяет никакие воздействия к водителям, которые на самом деле не превышали скорость.
Приведу здесь интересный пример. Есть такие дороги в России, которые выглядят как трасса. Они находятся за городом, рядом населённых пунктов нет. И водители думают, что там можно ехать с ограничением 90 км/ч. И здесь их ловит наш алгоритм.
Мы, когда разбираем такие кейсы, сначала пугаемся, потому что нам кажется, что у нас неправильные данные в навигаторе про ограничение скорости. Но потом находятся статьи и публикации в СМИ о том, что на этом участке ГИБДД приняло решение держать ограничение 60 км/ч, потому что там большая аварийность.
Мы считаем, что в этом случае алгоритм срабатывает правильно, потому что ограничение есть — его надо соблюдать.
![Вот пример такой дороги в Смоленске. Некоторые водители думают, что это трасса, и едут 90 км/ч, а на самом деле там ограничение 40 км/ч Вот пример такой дороги в Смоленске. Некоторые водители думают, что это трасса, и едут 90 км/ч, а на самом деле там ограничение 40 км/ч](https://habrastorage.org/getpro/habr/upload_files/1ed/a39/4b4/1eda394b4ee3c4e85fa2607169c97be0.png)
Ещё информация с датчиков смартфона водителя позволяет зафиксировать внезапное резкое торможение. Это характерно не только для опасных манёвров, но и в момент ДТП. Если наши алгоритмы фиксируют такой сигнал, то участникам поездки звонит специалист поддержки и узнает, всё ли в порядке.
По нашим данным мы видим, что манера вождения водителя — самый сильный признак с точки зрения прогнозирования риска попасть в ДТП. Именно поэтому улучшение манеры вождения крайне эффективно для повышения безопасности. Мы натренировали ML‑модель, которая получает на вход данные с акселерометра и предсказывает оценку, которую поставит пользователь. И в целом этот прогноз хорошо коррелирует с возникновением ДТП. Если оценка в опасном интервале — предупреждаем водителя, чтобы он обратил внимание на манеру вождения. Если водитель игнорирует предупреждения, то он получает деприоритет.
Эффективность ML‑модели измеряем обратной связью от пользователей — эксперименты и А/Б‑тесты показали, что после предупреждения водители и правда начинают водить аккуратнее, а пользователи — реже на них жаловаться.
Но здесь ещё важно, чтобы водитель не ждал, когда ему прилетит предупреждение за опасную езду. Безопасное вождение мы тоже видим и поощряем. Кроме хороших оценок пассажиров и чаевых, у нас есть еженедельные отчёты, в которых мы хвалим аккуратных водителей. Пользователь любит спокойно ехать без всяких приключений, люди ценят это.
![](https://habrastorage.org/getpro/habr/upload_files/6d9/3bb/1a9/6d93bb1a9b678ff6f106e84b01cf8630.png)
Следуем маршруту
В заказе может что-то пойти не по плану. Например, машина значительно отклоняется от маршрута или завершает поездку далеко от конечной точки. В таком случае команда безопасности связывается с водителем и его пассажиром, чтобы выяснить причину. Хорошо, когда это что-то безобидное: пассажир попросил заехать в магазин по пути или просто решил выйти раньше. Но если выясняется, что участникам поездки грозит опасность, то команда действует по предусмотренному протоколу.
Статистика такова: в 5% случаев, когда саппорт связывается с участниками поездки, там действительно выявляются риски. Казалось бы, точность метода 5% — достаточно низкая. Такие события сложно найти, потому что они редкие, поэтому в данном контексте метод даже с точностью 5% мы считаем приемлемым.
А ещё мы добавили в приложение кнопку «Отправить маршрут», чтобы поездки стали более прозрачными. После нажатия на кнопку ссылка на маршрут отправится выбранным людям — например, семье или друзьям пассажира. Им будет известен не только номер и цвет машины, но и детальный маршрут со всеми остановками.
![](https://habrastorage.org/getpro/habr/upload_files/100/0c0/a51/1000c0a515939956c6a28143b2d1e6f4.png)
После поездки: кэшран и рейтинг
Борьба с неплательщиками
Как оказалось, проехать зайцем люди умудряются не только на электричках и общественном транспорте, но и в такси. Например, пассажир указывает оплату наличными и на конечной точке говорит, что зайдёт домой за кошельком — и пропадает. Это явление называется «кэшран».
Чтобы предотвращать конфликты из-за неоплаты поездок, мы поддерживаем несколько методов, которые выявляют людей, склонных себя так вести. Водитель знает, что, даже если ему не заплатят, то он может восстановить эти деньги через нашу службу поддержки.
Когда у пользователя возникает задолженность за поездки с безналичной оплатой, он получает оповещение, что заказать следующую поездку можно после погашения долга. При этом мы блокируем возможность заказа за наличные.
С оплатой наличными похожий сценарий. Если у пассажира было несколько эпизодов, когда он выбирал оплату наличными, но в итоге оставлял водителя ни с чем, мы ограничиваем ему выбор этого способа оплаты. Для заказа он сможет использовать только безналичную оплату: сумма за заказ будет списываться сразу после заказа машины, а не после поездки. Если денег на карте недостаточно, поездка отменяется.
Выставление оценок
Ещё один важный этап — сбор обратной связи с пассажира и водителя. Главный инструмент для этого — оценка поездки. Мы внедрили возможность оценивать заказы в конце 2013 года, но сперва этой функцией пользовались редко. С помощью разных инструментов мы мотивировали пользователей чаще оставлять обратную связь. И уже к 2015 году больше половины поездок оценивалась пассажирами и водителями.
Фидбэк тоже изменил отношение к поездке в лучшую сторону. Как водители, так и пассажиры понимают, что если они будут себя вести как-то неподобающе, то эта информация не останется без внимания. Поэтому основное ядро пользователей Такси состоит из тех, кто принял эти правила.
Но как быть с неточной обратной связью? Пассажиру ведь может не понравиться модель автомобиля, неровности на дороге и прочие факторы, наказывать за которые водителя странно. Так в Такси и появилась необходимость «чистить» данные — то есть фильтровать субъективные оценки и уделять больше внимания объективным.
Мы фильтруем «шумные» данные двумя способами:
Усредняем оценки. Для этого смотрим на оценки последних 150 поездок и ищем в них закономерности. Если негативных сигналов за этот период скопилось слишком много, делаем предупреждение.
Общаемся с участниками поездки. Это более точный способ проверить достоверность отзыва: поддержка общается с обеими сторонами и выясняет, обоснованно ли поставили низкую оценку.
Водитель теряет возможность получать заказы, как только его рейтинг опускается до 4,5 баллов. Пассажиров это тоже касается: если на пользователя постоянно жалуются водители, например, за угрозы и оскорбления, ему могут ограничить доступ к приложению.
Это не все меры безопасности, которые мы предпринимаем. Мы отдельно работаем с нашими специалистами поддержки, чтобы они могли помогать при внештатных ситуациях, организуем тренинги для водителей по комфортному общению, сотрудничаем с профессионалами в области безопасности, проверяем состояние машин и делаем много других вещей.
Domorost
О, это инноваторы, благодаря которым цены на такси стабильно показывают рост последние годы, а нынче находятся в своем абсолютном пике.
Вероятно, что стоит начать не с технологических "прорывов", а с осознания себя в конкурентной среде. Уже становится очевидно, что монополия-Яндекс приносит гораздо больше вреда, чем пользы.