Bagaimana Yandex.Taxi memprediksi waktu pengiriman mobil menggunakan pembelajaran mesin

Bayangkan Anda perlu memanggil taksi. Anda membuka aplikasi, melihat bahwa mobil akan tiba dalam sekitar tujuh menit, klik "Pesan" - dan ... mobil berjarak 15 menit dari Anda, jika sama sekali. Setuju, tidak menyenangkan?

Di bawah potongan, kita akan berbicara tentang bagaimana metode pembelajaran mesin membantu Yandex.Taxi untuk lebih memprediksi ETA (Perkiraan Waktu Kedatangan - perkiraan waktu kedatangan).



Pertama, ingat bahwa pengguna melihat dalam aplikasi sebelum memesan:



Pada peta, biru menunjukkan titik optimal untuk naik taksi. Pin merah - titik di mana pengguna memanggil taksi. Pin menampilkan berapa lama mobil akan tiba. Di dunia yang sempurna. Tetapi di dunia nyata, orang lain di dekatnya juga menyebut diri mereka mobil melalui aplikasi Yandex.Taxi. Dan kita tidak tahu mobil mana yang akan pergi ke siapa, karena mereka didistribusikan hanya setelah memesan. Jika mobil sudah ditugaskan, untuk peramalan, kita akan menggunakan Yandex.Maps routing dan waktu ketika bergerak di sepanjang jalur optimal. Kali ini (mungkin dengan margin kecil) kami akan menunjukkan kepada pengguna segera setelah memesan. Pertanyaannya tetap: bagaimana seseorang dapat memprediksi ETA sebelum memesan?

Dan di sini pembelajaran mesin muncul. Kami membuat pilihan dengan objek dan jawaban yang benar dan mengajarkan algoritma untuk menebak jawaban sesuai dengan karakteristik objek. Dalam kasus kami, objeknya adalah sesi pengguna, jawabannya adalah waktu setelah mobil benar-benar tiba. Tanda-tanda objek mungkin parameter numerik yang diketahui sebelum pesanan: jumlah driver dan pengguna aplikasi di sebelah pin, jarak ke kendaraan layanan terdekat dan nilai-nilai potensial lainnya yang berguna.

Mengapa ini penting?



Di dunia yang ideal, orang melakukan segalanya terlebih dahulu dan selalu merencanakan waktu mereka dengan akurat. Tapi kita hidup di dunia nyata. Jika seseorang terlambat bekerja atau, lebih buruk lagi, ke bandara, penting baginya untuk memahami apakah ia akan tiba pada waktunya untuk pergi dan mencapai tujuannya.
Ketika memutuskan apa yang harus dipesan, penumpang di masa depan dipandu, antara lain, pada waktu tunggu. Ini bisa sangat berbeda dalam aplikasi yang berbeda untuk memanggil taksi, dan dalam tarif berbeda dari satu aplikasi. Agar pengguna tidak menyesali pilihannya, sangat penting untuk menunjukkan ETA yang tepat.

Segalanya tampak sederhana. Munculkan lebih banyak rambu, latih model, seperti CatBoost, prediksi waktu sebelum kedatangan mobil - dan Anda bisa sampai di sana. Tetapi pengalaman menunjukkan bahwa lebih baik tidak terburu-buru dan berpikir dengan hati-hati, dan kemudian melakukannya.

Pada awalnya, kami tidak ragu bahwa itu perlu untuk memprediksi waktu di mana pengemudi akan benar-benar tiba di pengguna. Ya, kami tidak tahu pasti mobil mana yang akan ditugaskan sebelum pesanan. Tetapi kita dapat memprediksi ETA menggunakan data bukan tentang driver tertentu, tetapi tentang driver di sekitar urutan. Tentu saja, ramalan itu harus cukup jujur ​​sehingga pengguna dapat merencanakan waktu.

Tapi apa artinya "jujur"? Lagipula, algoritma peramalan apa pun buruk atau hanya baik secara statistik. Ada hasil yang sukses dan terus terang yang buruk, tetapi Anda perlu "rata-rata" untuk tidak menyimpang secara signifikan dari jawaban yang benar. Harus dipahami bahwa "rata-rata" berbeda. Sebagai contoh, rata-rata setidaknya tiga konsep dari statistik: ekspektasi, median dan fashion. Gambar dari buku luar biasa Darrell Huff, "Bagaimana Berbohong Menggunakan Statistik" dengan sempurna menunjukkan perbedaan:



Kami ingin model rata-rata membuat beberapa kesalahan. Bergantung pada nilai "rata-rata", ada dua opsi untuk menilai kualitas perkiraan. Opsi pertama adalah untuk menunjukkan kepada pengguna ekspektasi matematis waktu sebelum taksi tiba. Akibatnya, sebuah model akan dilatih yang meminimalkan rata-rata kuadrat dari kesalahan perkiraan (Mean Squared Error, MSE):

MSE= frac1n sumni=1(yiβˆ’ hatyi)2 rightarrowmin



Di sini yi - jawaban yang benar,  hatyi - perkiraan model.

Pilihan lain adalah jangan salah dengan ramalan ETA terutama dalam satu arah, naik atau turun. Dalam hal ini, kami akan menunjukkan kepada pengguna median dari distribusi waktu sebelum taksi datang. Akibatnya, sebuah model akan dilatih yang mengoptimalkan modul rata-rata kesalahan perkiraan (Mean Absolute Error, MAE):

MAE= frac1n sumni=1|yiβˆ’ hatyi| rightarrowmin



Tetapi kami menyadari bahwa kami sedikit lebih maju.

Memikirkan kembali pernyataan masalah


Setelah janji temu, kami tahu jenis mobil apa yang digunakan untuk pengguna, yang berarti kami dapat memperkirakan waktu perjalanannya di Yandex.Maps. Waktu ini ditunjukkan pada pin setelah pesanan. Di satu sisi, sekarang kami memiliki lebih banyak informasi dan perkiraan akan lebih akurat, tetapi di sisi lain, ini juga merupakan perkiraan dengan kesalahan.

Itu adalah tangkapan dalam tugas pin ETA. Sementara pengemudi tidak ditugaskan, perlu untuk memprediksi waktu yang tepat bahwa perutean Yandex.Mart kemudian akan ditampilkan, dan bukan waktu aktual sebelum mobil dikirim.

Tampaknya, omong kosong apa: alih-alih nilai yang tepat, ambil ramalan lain sebagai target? Tapi itu masuk akal, dan inilah sebabnya. Dalam perjalanan ke Anda, mobil yang ditunjuk mungkin berlama-lama. Sopir masuk ke situasi berbahaya di jalan, dalam kemacetan lalu lintas karena kecelakaan atau keluar untuk membeli air. Penundaan seperti itu sulit diprediksi. Mereka membuat noise tambahan pada variabel target, yang karenanya tugas yang sulit untuk memprediksi ETA di pin menjadi lebih sulit.

Bagaimana cara menghilangkan kebisingan? Memprediksi variabel target yang dihaluskan - waktu yang ditunjukkan setelah mesin ditetapkan berdasarkan rute ke pengguna.

Ini adalah logika dari sudut pandang bisnis: Anda tidak dapat membuang waktu di jalan di sepanjang jalur optimal dari ETA, tetapi penundaan tambahan dapat dikurangi dengan bekerja dengan pengemudi.

Metrik kualitas, data, model, dan pelatihan


Kami menemukan bahwa untuk ETA di pin, perlu diprediksi bukan waktu yang sebenarnya, tetapi waktu yang akan diterima setelah mesin ditugaskan di sepanjang rute. Dari dua metrik kualitas, MAE dan MSE, kami memilih MAE. Mungkin, dari sudut pandang intuisi ramalan, lebih logis untuk mengevaluasi ekspektasi (MSE), daripada median (MAE). Tapi MAE memiliki fitur yang bagus: model ini lebih tahan terhadap outlier di antara contoh pelatihan.

Tanda dibagi menjadi beberapa kelompok:
- Dibangun oleh waktu saat ini;
- geo (koordinat, jarak ke pusat kota dan objek signifikan di peta);
- pin (berapa banyak dan mobil mana yang dekat, kepadatannya dihitung secara berbeda);
- statistik di zona (seperti biasa kami membuat kesalahan, seberapa banyak kami memperkirakan);
- data pada driver terdekat (berapa lama mereka mencapai, seberapa banyak yang pertama lebih dekat daripada yang kedua, dll).

Tentu saja, CatBoost dilatih tentang tanda-tanda ini. Argumen yang menentukan adalah bahwa peningkatan gradien yang diterapkan di CatBoost pada pohon seimbang telah lama menempatkan dirinya sebagai metode pembelajaran mesin yang sangat kuat, dan metode pengkodean fitur kategorikal dalam CatBoost secara teratur terbayar untuk tugas-tugas kami. Fitur bagus lain dari perpustakaan adalah pembelajaran cepat pada GPU.

Sekarang beberapa kata tentang model mana yang dibandingkan. ETA awal (sebelum ditentukan oleh pembelajaran mesin) dihitung berdasarkan waktu mesin paling dekat dengan pengguna dapat tiba. Model saat ini (digunakan dalam aplikasi sekarang) adalah apa yang ternyata dilakukan dengan menggunakan pembelajaran mesin dan tentang apa artikel ini. Selain itu, model baru akan segera diluncurkan dalam produksi. Dia menggunakan urutan fitur yang lebih signifikan untuk menyelesaikan masalah. Tabel di bawah ini menunjukkan pengukuran kualitas model ini pada data historis. Omong-omong, kami masih punya banyak rencana - datang untuk membantu .

Kualitas Prediksi Validasi ETA *


Mean Absolute Error
Kesalahan lebih dari 1 menit
Kesalahan lebih dari 2 menit
Kesalahan lebih dari 5 menit

ETA asli


82.082


29,95


18.12


3,7


Model saat ini


79.276 (–3.4)


29.33 (–2.1)


16.98 (–6.3)


3 (–19.2)


Model baru


78.414 (–4.5)


28,95 (–3,4)


16.62 (–8.2)


2.8 (–23.2)




* Persentase (dalam tanda kurung menunjukkan perubahan dari ETA asli).

Pembelajaran mesin memungkinkan kami untuk menang sekitar dua detik, atau 3,4% dari rata-rata perkiraan penyimpangan. Dan dalam model baru - hampir satu detik lagi, total 4,5%. Tetapi dari angka-angka ini, sulit untuk memahami bahwa ETA telah meningkat secara signifikan. Untuk merasakan manfaat pembelajaran mesin, Anda harus memperhatikan kolom terakhir. Kehilangan dengan perkiraan lebih dari 5 menit menjadi 19,2%, dan dalam model baru - bahkan 23,2% lebih sedikit! By the way, kesalahan tersebut hanya terjadi pada 3 dan 2,8% kasus dalam model menggunakan pembelajaran mesin.

Ringkasan


Kami menetapkan ETA di pin terutama untuk menyediakan perkiraan yang andal bagi pengguna. Tetapi, tentu saja, dengan aplikasi pembelajaran mesin apa pun dalam bisnis, sangat penting untuk mengevaluasi dampak ekonomi. Dan mengerti apakah itu sebanding dengan biaya membangun dan mengimplementasikan model. Setelah uji A / B online, ternyata kami, menggunakan pembelajaran mesin, menerima peningkatan konversi yang signifikan secara statistik dari pesanan ke perjalanan (setelah semua, pesanan dapat dibatalkan) dan peningkatan konversi dari sesi pengguna ke pesanan.

Dalam kedua kasus, kita berbicara tentang efek dari urutan 0,1 poin persentase. Ngomong-ngomong, ini tidak bertentangan dengan signifikansi statistik: pada volume data kami, bahkan perbedaan seperti itu dapat dideteksi dengan andal dalam 2-4 minggu. Dan dengan relevansi bisnis, pada kenyataannya, semuanya juga tidak buruk: ternyata biaya klarifikasi ETA ditolak oleh peningkatan konversi hanya dalam beberapa bulan.

Hasilnya, kami mendapat kasus yang bermanfaat dan ilustratif. Penyempurnaan ETA di pin telah menjadi cerita instruktif tentang pemilihan variabel target yang cermat. Di sisi produk, ini adalah contoh yang sangat memotivasi: kami meningkatkan aplikasi dan melihat bahwa pengguna menghargainya. Kami berharap bahwa ETA yang disempurnakan akan membantu penumpang kami lebih sering untuk bertemu rapat, kereta api dan pesawat.

NB Jika Anda tertarik pada teknologi Yandex.Taxi lainnya, kami menyarankan pos tentang harga dinamis , yang baru-baru ini diterbitkan rekan saya.

Source: https://habr.com/ru/post/id431196/


All Articles