Di bawah potongan adalah kisah tentang bagaimana area pembelajaran mesin muncul di Dodo. Spoiler: Saya meluncurkannya. Detail teknis tidak akan ada di sini, pastikan mencurahkan artikel terpisah untuk mereka. Hari ini lebih tentang motivasi dan dukungan rekan kerja.

Persiapan
Saya menemukan topik pembelajaran mesin tiga kali, sampai sesuatu yang berharga keluar darinya.
Sekolah rusia
Pertama kali saya menemukan pembelajaran mesin di HSE - saya mendapatkan menara kedua ke arah Big Data Systems ketika saya mendapat pekerjaan di Dodo. Setelah melalui topik hype besar ini dengan bersinggungan, saya tidak mengerti mengapa saya menghabiskan tiga tahun hidup saya sama sekali. Dan terlebih lagi saya tidak memikirkan bagaimana ini bisa bermanfaat di perusahaan. Saya belum siap menghadapi tantangan nasib ini.
Pelayaran Ceko
Kedua kalinya saya menemukan topik ini di Praha, di Microsoft menutup pembelajaran mesin hackathon. Bersama dengan orang-orang dari perusahaan lain, kami mengerjakan tugas perkiraan permintaan di Dodo selama liburan dan hari-hari puncak. Saya kembali dengan model yang sudah jadi yang memprediksi permintaan. Setelah hackathon ini, muncul pemikiran bahwa saya akan dapat menerapkan pengetahuan yang diperoleh di perusahaan. Itu dia.
Nah, apakah Anda punya model di Jupyter, lalu bagaimana? Bagaimana cara menggunakannya? Semua upaya untuk menjelaskan hal ini kepada bisnis dihadapkan pada kenyataan pahit: sehingga jelas bahwa akan ada banyak pesanan pada hari libur dan hari-hari puncak. Pizza dewasa dapat memperkirakan penjualan berdasarkan data dari tahun lalu, dan pizza baru memiliki masalah tanpa itu. Kami telah menunda upaya untuk mengembangkan pembelajaran mesin. Tetapi gagasan bahwa kita dapat melakukan lebih banyak dengan data terlalu kuat terjebak di kepala saya dan tidak ingin keluar dari sana. Sekarang saya sudah siap untuk tantangan, tetapi perusahaan tidak.
Mimpi Amerika
Pertemuan ketiga menjadi takdir. Tim kami mendapat tugas yang sulit tetapi menarik: untuk mengembangkan modul pizza khusus untuk AS. Ini adalah saat Anda dapat memesan pizza dengan bahan apa pun, buat resep Anda sendiri. Semua yang perlu dikerjakan dalam proyek: dari perubahan dalam arsitektur database ke kode klien di situs. Kami meraih tugas dan mengembangkan produk yang saya anggap sebagai kemenangan nyata. Penilaian utama menjadi kendur dari Alena, CEO kami di Amerika Serikat.

Kami melakukan modul, tetapi saya melihat masalah dalam penskalaan. Bagaimana jika fungsi tidak muncul di satu atau dua restoran pizza di negara bagian, tetapi di jaringan yang besar? Bagaimana cara mengelola produk semacam itu, merencanakan stok? Saya memutuskan bahwa kasus ini dapat membuktikan perlunya pengembangan pembelajaran mesin di Dodo. Saya merasa bahwa kali ini saya dan perusahaan siap untuk meluncurkan arah baru.
Satu lawan satu dengan mobil
Di latar belakang, saya mulai menganalisis penjualan pizza khusus Amerika. Dengan menggunakan algoritma pengelompokan, dimungkinkan untuk menunjukkan bahwa semua resep yang dibuat oleh pengguna didasarkan pada enam set bahan dasar ditambah beberapa yang acak. Bahkan laporan sederhana berdasarkan algoritma ini akan memungkinkan perkiraan penjualan semi-manual dan inventaris paket. Karena kurangnya birokrasi dan kemampuan untuk membangun kembali saat bepergian, kami diberi lampu hijau untuk mulai terlibat dalam arah ini.
Direktur teknis dan saya mengerti dan membahas lebih dari sekali bahwa saya harus meninggalkan tim saat ini dan mulai mengembangkan arah baru, untuk menunjukkan bahwa kami membutuhkannya. Saya perlu terjun ke bidang baru dengan cepat. Saya mengerti bahwa jika tidak berhasil, ada dua cara. Yang pertama adalah kembali ke pengembangan di tim Dodo lain. Yang kedua adalah memperbarui resume Anda di HH dan mencari pekerjaan baru. Saya tidak menginginkan yang satu atau yang lain. Saya berada di negara ini selama sekitar tiga bulan, sampai saya terpikat pada modul penjualan tambahan.
Proyek pertama
Spoiler lain: ternyata untuk menjalankan ML Anda tidak perlu mengalami sesuatu yang rumit. Jelas, bukan? Tetapi sangat sulit dipahami pada awal perjalanan.
Modul, yang menyarankan penambahan produk tambahan ke pesanan, tidak secara langsung dikendalikan oleh siapa pun. Itu berarti saya bisa melakukan apa pun yang saya inginkan dengannya. Cherry on the cake - kesempatan untuk meningkatkan penjualan dengan bantuan penawaran yang lebih personal. Sebelumnya, modul hanya bekerja: jika pizza ditambahkan ke pesanan, kategori minuman ditampilkan dalam penjualan tambahan, jika pizza dan minuman, maka makanan penutup dan sebagainya.
Ketidakpedulian sejumlah besar orang sekali lagi menunjukkan bahwa saya bekerja di sebuah perusahaan di mana dukungan dapat diberikan oleh semua orang. Saya menghabiskan berjam-jam mengerjakan data dan penawaran tambahan dengan rekan pemasaran. Kami berhasil mengelompokkan semua pengguna sesuai dengan preferensi dan loyalitas selera mereka, untuk setiap grup membuat penawaran statis berdasarkan produk-produk top di cluster.
Angka dan bukti
Saya mengacaukan penebangan produk tambahan dan meluncurkan penawaran baru pada sampel 2 juta pengguna.
Sampel pengguna hanya sebagian kecil dari penjualan. Itu perlu untuk bergerak menuju pelanggan yang tidak sah dan baru. Saya telah menyekop cukup banyak artikel dan literatur tentang Penyaringan Kolaboratif dan berbagai algoritma penawaran untuk pengguna. Ide rekomendasi berdasarkan produk dalam keranjang dimenangkan. Rekomendasi Berbasis Item dan ukuran konvergensi kosinus membentuk dasar dari model baru, meskipun sederhana, tetapi sudah berfungsi.
Pada bulan Desember, kami meluncurkan modul Rekomendasi Berbasis Item. Statistik menunjukkan bahwa pembeli memang mungkin tertarik pada produk yang sama sekali berbeda, bukan hanya minuman. Mungkin setelah ini bahwa Dodo percaya bahwa data dan pengembangan pembelajaran mesin akan memungkinkan mereka untuk bersaing di pasar kelebihan beban di masa depan.
Beberapa statistik.

10 produk terlaris di situs

10 produk aplikasi seluler terlaris

Pertumbuhan penjualan mingguan
Trailer teknis
Di bawah ini adalah beberapa perincian teknis tentang mengapa model ini didasarkan pada ukuran kesamaan cosinus. Ini adalah pratinjau artikel, yang akan dirilis dalam beberapa bulan. Jika Anda tidak menyukai matematika, silakan lompat ke bagian terakhir.
Tabel awal di bawah ini menunjukkan jumlah pesanan dengan barang yang dibeli dari masing-masing pengguna. Kami dapat menentukan kesamaan pembelian satu pengguna dengan yang lain - untuk ini kami perlu menghitung jarak antara vektor pengguna.

Tabel Penjualan Pelanggan
Jarak akan tergantung pada metrik yang dipilih. Perhitungan ruang Euclidean termasuk berat dan besarnya vektor:

di mana a dan b adalah dua vektor klien yang berbeda dari tabel. Mari kita lihat bagaimana jarak ini akan terlihat pada contoh abstrak.
Misalkan kita melihat sejarah tiga pelanggan - a, b, dan c. Mari membangun matriks pembelian mereka.

Setelah menghitung jarak Euclidean antara pelanggan, kami mendapatkan nilai-nilai berikut:
d (a, b) = 16.22;
d (b, c) = 13,38;
d (a, c) = 13.64.
Nilai-nilai ini menunjukkan bahwa klien b dan c paling dekat satu sama lain. Tetapi jika Anda melihat sumber data, gambarnya adalah sebaliknya. Pelanggan a dan b lebih memilih untuk memesan lebih banyak Pepperoni dan kadang-kadang produk lainnya, sementara klien c lebih memilih pizza Supreme. Kita dapat menyimpulkan bahwa besarnya vektor memiliki efek negatif untuk menghitung jarak antar pelanggan. Ukuran cosinus kesamaan hanya memperhitungkan sudut antara vektor, membuang signifikansi besarnya vektor:

Menghitung jarak menggunakan rumus ini, kita mendapatkan:
d (a, b) = 0,9183;
d (b, c) = 0,5848;
d (a, c) = 0,7947;
Kami melihat bahwa klien a dan b lebih dekat satu sama lain. Mereka lebih suka satu set barang tanpa memperhitungkan perbedaan jumlah pesanan yang ditempatkan. Logika ini sesuai dengan pendapat ahli kami dan menyarankan bahwa preferensi pelanggan a dan b paling dekat satu sama lain.
Ini adalah trailer, detail dalam dua bulan.
Cari untuk Anda
Sekarang kita berada pada tahap pembentukan tim di mana akan ada spesialis dalam mengatur penyimpanan data, mengembangkan model pembelajaran mesin, dan menempatkan mereka ke dalam produksi. Tetapi yang paling penting, kita sekarang lebih mengerti mengapa kita membutuhkan semua ini. Kami bebas melakukan hal-hal yang sangat keren, mulai dari mengatur sistem logistik yang cerdas dan perencanaan inventaris hingga ide-ide fantastis untuk mengotomatisasi pizza menggunakan teknologi Computer Vision.
Percayalah pada diri sendiri dan kekuatan Anda, bahkan jika hasilnya tidak terlihat di cakrawala. Saya ingin mengakhiri artikel ini dengan pemikiran orang lain - kutipan dari Max Weber dari laporannya kepada mahasiswa Universitas Munich: "Anda tidak dapat melakukan apa pun dengan kesedihan dan harapan, dan Anda harus bertindak berbeda - Anda perlu beralih ke pekerjaan Anda dan memenuhi" permintaan hari ini "- sebagai manusia, sangat profesional. Dan persyaratan ini akan sederhana dan jelas jika setiap orang menemukan iblisnya sendiri dan mematuhi iblis ini, menenun benang hidupnya. " Temukan milikmu.