Yandex.Taxi and Programmers’ Ability To Predict Users’ Behavior
Why have the business models of such organizations as Uber, Gett and Yandex.Taxi become so successful? How are computational algorithms applied in these services, and how can they help change the future of public transport? Yandex.Taxi’s CEO Tigran Khudaverdyan expanded on these subjects in an open lecture at ITMO University.
On the business model
What seems to be invented in America has in fact existed in Russia for a long time already: we’ve always had “bombilas” (gypsy cabs). Strangely, they have become a real know-how for some western countries, where people just couldn’t understand the idea of using their personal cars as taxis.
One can divide the working hours of any taxi driver into three parts. The first is time they spend on waiting for a customer’s order. The second is the time necessary to get to the client. And the third is when the customer is in the car and the driver takes them to their destination. You, as a client, think that you only pay for the latter. In reality, you pay for all of them. So, the overcharged prices at train stations are to some extent justified, as the driver has to wait at the train station - so the customer pays for this time. In European classical taxi services, drivers are “idle” for about 60% of their working hours, which is why the fare is so high.
What has changed for drivers who joined Yandex.Taxi and other similar services? During rush hours, they spend 85% of the time with passengers. This happens thanks to the network effect (in layman’s terms, network effect is when every new user who joins improves the service for everyone). The Android system is a classical example. The more users there are, the more applications are developed for it, the more capabilities it has, hence the more people choose it.
At Yandex.Taxi, it works as follows: there’s the city, there are citizens, the number of which increases due to the emergence of new districts. The more people there are, the less is the distance between pick points, as there are more destinations and more orders. Taxi drivers like it, as they get more customers. This attracts new drivers, which contributes to pick-up time becoming shorter and the fare cheaper. If a driver has more orders each hour, the fare becomes cheaper. Why do drivers like it? This way, there’s more clients, more work, consequently, more drivers are needed - and more people can earn this way.
It is important to develop algorithms that can have a considerable effect on waiting time and time spent on actual work. How did these technologies develop? First, there were operators who distributed orders via phones. Then, GPS was invented, then they started to use destination routing, and account for traffic jams when estimating distances. At a certain point, it seemed that one can’t do anything more to improve the operation of a taxi service. Yet, there are many more factors that define a service’s popularity and efficiency.
For instance, one of the key factors for a client deciding on whether to order a trip is the price. Let’s say you are ready to spend 150 rubles to get home by taxi, but if it’s 200, you’ll use public transportation. Yet, the service’s developers have to make it so that the customer can always order a taxi for an affordable price and continue using the service.
Yandex.Taxi: app interface.
What does this mean? When it’s raining, the demand for taxi services increases by five times. Yet, you can’t just increase the number of drivers at once. The only thing you can do is increase the fare. For instance, when you open the Yandex.Taxi app, we check how many people in your district have also opened the app. If the situation becomes critical, we increase the fare. And such computations are to be made really fast, in less than a second.
There are other scenarios that can affect the costs. For instance, when you order a taxi to go to a district where the demand will soon be big, and cars are few. Taking this order is beneficial to us, a lot more than taking an order from someone who goes to a district where we already have enough drivers. Hence, we will decrease the fare for you, and increase it for that other customer. We use special algorithms for this, as well. All such algorithms have to do with predicting the behavior of passengers. We have lots of data on user behavior, and it would be a waste not to use it; this is why we are actively working on machine learning techniques.
We also have to optimize the waiting time of drivers. For instance, you order a taxi, and there are two cars nearby. For one, it will take five minutes to reach you, the other - seven. Yet, the former can get the next order in just four minutes, and the latter - in twenty, so it would be rational to send the second one. Another problem that exists in big cities is that drivers often wake up in districts different from those of their passengers’. And it is a hard issue to solve, though we hope to attain something by adjusting prices.
Tigran Khudaverdyan’s lecture at ITMO University
Also, we sometimes have to motivate drivers even if they think that some order is unprofitable. There are often rush hours at airports, when lots of planes arrive, and rides are in-demand. What do we do when such things happen? We decrease the fare for going to the airport from the city. For many drivers who get less for such trips that may seem strange, despite the fact that they then take profitable orders at the airport. So, we sometimes have to tell a driver something like “we will add some N rubles to the fare, but the client will pay less”. We have to calculate such coefficients and their feasibility, as well, which means we also have to solve economical tasks. Only the more experienced drivers understand that what matters is not the fare for each trip, but how much they make in a day.
Future of such services.
Nowadays, carsharing is becoming popular throughout the world. In essence, it's when passengers share a trip. Still, one thing is when you and your friend plan to go home and it’s in the same direction. It’s totally different when you order a taxi, and the service offers sharing the trip with some stranger and get a better deal. To introduce such a service, there are several issues to be solved.
Yandex.Taxi team. Credit: Yandex’s blog
First of all, it is not always possible to pick up people in places they’ve ordered the taxi from. This happens due to the peculiarities of how streets are positioned in such cities as St. Petersburg, where they don’t always intersect perpendicularly. Thus, programmers have to create algorithms that can compute all the possible routes near the client and check them against the routes of taxis in the district. And such computations have to be very fast. Once again, with regard to the streets’ peculiarities, we can propose that customers go some 100-200 meters by foot so that it would be easier to compute the route, the fare being lower. In cities like New York, everything’s a lot easier, as the streets are perpendicular. When driving people from airports, that is easier, as well: 70% of clients would share their ride with another passenger, as most go in more or less the same direction. Yet, programmers have to still account for different probabilities to calculate the fare, as both the fare and the discount are to be stated at once.
Now, just think about applying such a concept to public transport, i.e. make it so that buses won’t pick up passengers at designated points only, but circle the city and pick them up at different places. The drivers will just come to work, and drive according to the navigation device. This is our dream. In New York, they already have a startup that is promoting this idea, but, as I’ve already said, they have it all easier: a minibus just circles around due to how streets are positioned.
It is possible to develop a service that will allow drivers who are just making their way home to pick up passengers for a fare. For instance, you drive to the Leningrad Region every day, why not take a passenger and earn some?
Tigran Khudaverdyan’s lecture at ITMO University
At Yandex.Taxi, we have lots of problems we need to solve, and lots of plans. It is great that we now solve such almost academic tasks in the field of programming and machine learning, but such solutions are really changing the service that is used by our friends and relatives. Like, we can come home and show our dear ones what has changed, and know that it was us who did it. It’s a great feeling. And we always welcome talented developers to our company.