Terkadang, untuk menyelesaikan masalah, Anda hanya perlu melihatnya dari sudut yang berbeda. Sekalipun selama 10 tahun terakhir masalah seperti itu telah dipecahkan dengan cara yang sama dengan efek yang berbeda, bukan fakta bahwa metode ini adalah satu-satunya.
Ada topik seperti churn pelanggan. Masalahnya tidak dapat dihindari, karena pelanggan dari perusahaan mana pun dapat mengambil dan berhenti menggunakan produk atau layanannya karena berbagai alasan. Tentu saja, bagi perusahaan, outflow adalah hal yang alami, tetapi bukan tindakan yang paling diinginkan, sehingga semua orang berusaha untuk meminimalkan outflow ini. Dan bahkan lebih baik - untuk memprediksi kemungkinan keluarnya kategori pengguna tertentu, atau pengguna tertentu, dan menawarkan beberapa langkah penyimpanan.
Analisis dan coba pertahankan pelanggan, jika mungkin, setidaknya karena alasan berikut:
- menarik pelanggan baru lebih mahal daripada prosedur retensi . Untuk menarik pelanggan baru, sebagai aturan, Anda harus mengeluarkan sejumlah uang (iklan), sementara pelanggan yang sudah ada dapat diaktifkan dengan penawaran khusus dengan ketentuan khusus;
- Memahami mengapa pelanggan pergi adalah kunci untuk meningkatkan produk dan layanan .
Ada pendekatan standar untuk memperkirakan arus keluar. Tetapi di salah satu kejuaraan AI, kami memutuskan untuk mengambil dan mencoba distribusi Weibull untuk ini. Paling sering digunakan untuk analisis kelangsungan hidup, prakiraan cuaca, analisis bencana alam, teknik industri dan sejenisnya. Distribusi Weibull adalah fungsi distribusi khusus yang diparameterisasi oleh dua parameter
dan
.
WikipediaSecara umum, hal itu menghibur, tetapi untuk memprediksi arus keluar, dan memang di fintech, digunakan tidak begitu sering. Di bawah potongan, kami akan memberi tahu Anda bagaimana kami (Laboratorium Penambangan Data) melakukan ini dengan memenangkan emas di Kejuaraan AI dalam nominasi "AI di Bank".
Tentang outflow secara umum
Mari kita lihat sedikit apa itu outflow klien dan mengapa itu sangat penting. Untuk bisnis, basis pelanggan adalah penting. Pelanggan baru datang ke database ini, misalnya, setelah mengetahui tentang suatu produk atau layanan dari iklan, mereka hidup selama beberapa waktu (secara aktif menggunakan produk) dan setelah beberapa waktu mereka berhenti menggunakannya. Periode ini disebut "Siklus Hidup Pelanggan" (lamanya Siklus Hidup Pelanggan) - istilah yang menjelaskan langkah-langkah yang dilalui pelanggan ketika mereka mengetahui tentang suatu produk, membuat keputusan pembelian, membayar, menggunakan dan menjadi pelanggan setia, dan akhirnya berhenti menggunakan untuk satu alasan atau produk lain. Dengan demikian, arus keluar adalah tahap akhir dari siklus hidup klien ketika klien berhenti menggunakan layanan, dan untuk bisnis ini berarti bahwa klien telah berhenti menjadi menguntungkan dan pada umumnya segala manfaat.
Setiap klien bank adalah orang tertentu yang memilih kartu bank tertentu khusus untuk kebutuhannya. Sering bepergian - peta dengan mil berguna. Dia banyak membeli - halo, kartu dengan cashback. Dia membeli banyak di toko-toko tertentu - dan untuk ini sudah ada plastik afiliasi khusus. Tentu saja, kadang-kadang kartu juga dipilih sesuai dengan kriteria "Layanan Termurah". Secara umum, ada cukup banyak variabel di sini.
Dan orang lain memilih bank itu sendiri - apakah ada baiknya memilih kartu bank, cabang yang hanya di Moskow dan wilayah ketika Anda berasal dari Khabarovsk? Jika kartu bank semacam itu setidaknya 2 kali lebih menguntungkan, kehadiran cabang bank di dekatnya masih merupakan kriteria penting. Ya, 2019 sudah ada di sini dan digital adalah segalanya bagi kami, tetapi sejumlah masalah bagi beberapa bank hanya dapat diselesaikan di cabang. Plus, sekali lagi, beberapa bagian dari populasi mempercayai bank fisik lebih dari aplikasi pada smartphone, ini juga perlu diperhitungkan.
Akibatnya, seseorang mungkin memiliki banyak alasan untuk menolak produk bank (atau bank itu sendiri). Dia mengubah pekerjaannya, dan tarif kartu berubah dari gaji menjadi "Hanya manusia," yang kurang menguntungkan. Dia pindah ke kota lain di mana tidak ada cabang bank. Saya tidak suka berbicara dengan operator tidak terampil di departemen. Artinya, mungkin ada lebih banyak alasan untuk menutup akun daripada menggunakan produk.
Dan klien tidak hanya bisa secara eksplisit menyatakan niatnya - datang ke bank dan menulis pernyataan, tetapi cukup berhenti menggunakan produk tanpa melanggar kontrak. Di sini, untuk memahami masalah seperti itu, diputuskan untuk menggunakan pembelajaran mesin dan AI.
Selain itu, arus keluar pelanggan dapat terjadi di industri apa pun (telekomunikasi, penyedia Internet, perusahaan asuransi, secara umum, di mana pun ada basis pelanggan dan transaksi berkala).
Apa yang telah kita lakukan
Pertama-tama, perlu untuk menggambarkan batas yang jelas - sejak kapan kita mulai menganggap klien sudah pergi. Dari sudut pandang bank yang memberi kami data untuk bekerja, keadaan aktivitas klien adalah biner - apakah aktif atau tidak. Ada bendera ACTIVE_FLAG dalam tabel "Activity", nilainya bisa berupa "0" atau "1" (masing-masing, "Tidak Aktif" dan "Aktif"). Dan semuanya akan baik-baik saja, tetapi orang itu sedemikian rupa sehingga dia dapat secara aktif menggunakannya untuk sementara waktu, dan kemudian jatuh dari aktif selama sebulan - dia sakit, pergi ke negara lain untuk beristirahat, atau bahkan pergi untuk menguji kartu bank lain. Atau mungkin setelah lama tidak aktif, sekali lagi mulai menggunakan layanan bank
Oleh karena itu, kami memutuskan untuk menyebut periode tidak aktif sebagai periode waktu terus menerus tertentu di mana bendera untuk itu ditetapkan sebagai "0".

Klien berubah dari tidak aktif menjadi aktif setelah periode tidak aktif dengan berbagai panjang. Kami memiliki kesempatan untuk menghitung tingkat nilai empiris "keandalan periode tidak aktif" - yaitu, kemungkinan seseorang akan kembali menggunakan produk bank setelah tidak aktif sementara.
Misalnya, grafik ini menunjukkan dimulainya kembali aktivitas (ACTIVE_FLAG = 1) pelanggan setelah beberapa bulan tidak aktif (ACTIVE_FLAG = 0).

Di sini kami akan mengklarifikasi sedikit kumpulan data yang kami mulai kerjakan. Jadi, bank memberikan informasi agregat selama 19 bulan dalam tabel berikut:
- "Aktivitas" - transaksi pelanggan bulanan (dengan kartu, dalam perbankan Internet dan perbankan seluler), termasuk informasi penggajian dan omset.
- "Kartu" - data pada semua kartu yang dimiliki klien, dengan jadwal tarif terperinci.
- "Kontrak" - informasi tentang kontrak klien (terbuka dan tertutup): pinjaman, deposito, dll., Yang menunjukkan parameter masing-masing.
- "Klien" - satu set data demografis (jenis kelamin dan usia) dan ketersediaan data kontak.
Untuk bekerja, kami membutuhkan semua tabel kecuali "Peta".
Kesulitan di sini adalah sesuatu yang lain - dalam data ini bank tidak menunjukkan jenis kegiatan apa yang terjadi pada kartu. Artinya, kita bisa mengerti apakah ada transaksi atau tidak, tetapi kita tidak bisa lagi menentukan jenisnya. Oleh karena itu, tidak jelas apakah klien menarik uang tunai, apakah dia menerima gaji, atau apakah dia menghabiskan uang untuk pembelian. Dan kami tidak memiliki data saldo akun, yang akan berguna.
Sampel itu sendiri tidak bias - untuk bagian ini selama 19 bulan bank tidak berusaha untuk mempertahankan pelanggan dan meminimalkan pengeluaran.
Jadi, tentang periode tidak aktif.
Untuk merumuskan definisi arus keluar, Anda harus memilih periode tidak aktif. Untuk membuat perkiraan arus keluar pada suatu waktu
, Anda harus memiliki riwayat pelanggan minimal 3 bulan dalam interval
. Sejarah kami dibatasi hingga 19 bulan, jadi kami memutuskan untuk tidak aktif selama 6 bulan, jika ada. Dan untuk periode minimum untuk perkiraan kualitatif, mereka membutuhkan waktu 3 bulan. Angka pada 3 dan 6 bulan kami ambil secara empiris berdasarkan analisis perilaku data pelanggan.
Definisi outflow kami dirumuskan sebagai berikut: outflow bulan klien
ini adalah bulan pertama dengan ACTIVE_FLAG = 0, di mana setidaknya enam nol berturut-turut di bidang ACTIVE_FLAG telah berjalan sejak bulan ini, dengan kata lain, bulan sejak klien tidak aktif selama 6 bulan.
Jumlah pelanggan yang berangkat
Jumlah pelanggan yang tersisaKarena dianggap outflow
Dalam kompetisi seperti itu, dan memang dalam praktiknya, arus keluar sering diprediksi dengan cara ini. Klien menggunakan produk dan layanan pada interval waktu yang berbeda; data tentang interaksi dengannya disajikan dalam bentuk vektor fitur dengan panjang tetap n. Paling sering informasi ini meliputi:
- Data khusus pengguna (data demografis, segmen pemasaran).
- Sejarah penggunaan produk dan layanan perbankan (ini adalah tindakan pelanggan yang selalu terikat pada waktu atau periode tertentu dari interval yang kita butuhkan).
- Data eksternal, jika bisa mendapatkannya - misalnya, ulasan dari jejaring sosial.
Dan setelah itu mereka mendapatkan definisi outflow, masing-masing untuk setiap tugas. Kemudian mereka menggunakan algoritma pembelajaran mesin, yang memprediksi kemungkinan klien pergi
berdasarkan vektor faktor
. Untuk mempelajari algoritma, salah satu kerangka kerja terkenal untuk membangun ansambel pohon keputusan,
XGBoost ,
LightGBM ,
CatBoost atau modifikasinya digunakan.
Algoritme itu sendiri tidak buruk, tetapi dalam hal perkiraan arus keluar, ia memiliki beberapa kelemahan serius.
- Dia tidak memiliki apa yang disebut "memori . " Input model menerima sejumlah fitur tertentu yang sesuai dengan momen saat ini. Untuk memberikan informasi tentang riwayat perubahan parameter, perlu untuk menghitung fitur khusus yang menjadi ciri perubahan parameter dari waktu ke waktu, misalnya, jumlah atau jumlah transaksi bank selama 1.2.3 bulan terakhir. Pendekatan semacam itu hanya sebagian mencerminkan sifat perubahan sementara.
- Memperbaiki cakrawala perkiraan. Model ini dapat memprediksi arus keluar pelanggan hanya untuk periode waktu yang telah ditentukan, misalnya, perkiraan satu bulan sebelumnya. Jika Anda memerlukan perkiraan untuk periode waktu lain, misalnya, selama tiga bulan, maka Anda perlu membangun kembali set pelatihan dan melatih kembali model baru.
Pendekatan kami
Kami segera memutuskan bahwa kami tidak akan menggunakan pendekatan standar. Selain kami, 497 orang terdaftar di kejuaraan, yang masing-masing memiliki pengalaman yang baik. Jadi, mencoba melakukan sesuatu dengan cara standar dalam kondisi seperti itu bukanlah ide yang baik.
Dan kami mulai memecahkan masalah yang dihadapi model klasifikasi biner dengan memprediksi distribusi probabilistik waktu arus keluar pelanggan. Pendekatan serupa dapat dilihat di
sini , memungkinkan peramalan aliran keluar yang lebih fleksibel dan menguji hipotesis yang lebih kompleks daripada dalam pendekatan klasik. Sebagai keluarga distribusi yang mensimulasikan waktu luapan, kami memilih
distribusi Weibull untuk digunakan secara luas dalam analisis kelangsungan hidup. Perilaku pelanggan dapat dilihat sebagai semacam kelangsungan hidup.
Berikut adalah contoh distribusi kepadatan probabilitas Weibull tergantung pada parameter
dan
:

Ini adalah distribusi kepadatan probabilitas churn pelanggan dari tiga pelanggan yang berbeda dari waktu ke waktu. Waktu disajikan dalam bulan. Dengan kata lain, grafik ini menunjukkan kapan kemungkinan besar klien akan keluar dalam dua bulan ke depan Seperti yang Anda lihat, klien dengan distribusi memiliki potensi besar untuk pergi lebih awal daripada klien dengan distribusi Weibull (2, 0,5) dan Weibull (3,1).
Hasilnya adalah model yang untuk setiap klien untuk apa pun
bulan ini memprediksi parameter distribusi Weibull, yang paling mencerminkan onset probabilitas aliran keluar dari waktu ke waktu. Jika lebih detail:
- Karakteristik sasaran dalam sampel pelatihan - waktu yang tersisa sebelum arus keluar pada bulan tertentu untuk klien tertentu.
- Jika tidak ada indikator arus keluar untuk klien, kami mengasumsikan bahwa waktu keluar lebih lama dari jumlah bulan, mulai dari saat ini dan akhir dari sejarah kami.
- Model yang digunakan: jaringan saraf berulang dengan lapisan LSTM.
- Sebagai fungsi kerugian, kami menggunakan fungsi kemungkinan logaritmik negatif untuk distribusi Weibull.
Berikut ini keuntungan dari metode ini:
- Distribusi probabilistik, di samping kemungkinan jelas klasifikasi biner, memungkinkan Anda untuk secara fleksibel memprediksi berbagai peristiwa, misalnya, apakah klien berhenti menggunakan layanan bank dalam waktu 3 bulan. Juga, jika perlu, berbagai metrik dapat dirata-ratakan dalam distribusi ini.
- Jaringan saraf berulang LSTM memiliki memori dan efisien menggunakan seluruh sejarah. Dengan perluasan atau penyempurnaan sejarah, akurasi tumbuh.
- Pendekatan ini dapat diskalakan tanpa masalah ketika membagi interval waktu menjadi yang lebih kecil (misalnya, ketika membagi bulan menjadi beberapa minggu).
Tapi itu tidak cukup untuk membuat model yang bagus, Anda juga perlu mengevaluasi kualitasnya dengan baik.
Bagaimana cara mengevaluasi kualitas
Sebagai metrik, kami memilih Kurva Angkat. Ini digunakan dalam bisnis untuk kasus-kasus seperti itu karena interpretasi yang dapat dipahami; itu dijelaskan dengan baik di
sini dan di
sini . Jika Anda menggambarkan arti metrik ini dalam satu kalimat, Anda mendapatkan “Berapa kali algoritme membuat prediksi terbaik dalam kalimat pertama
% daripada secara acak. "
Kami melatih model
Kondisi kompetisi tidak menetapkan metrik kualitas spesifik yang dengannya berbagai model dan pendekatan dapat dibandingkan. Selain itu, definisi konsep arus keluar mungkin berbeda dan mungkin tergantung pada pernyataan masalah, yang, pada gilirannya, ditentukan oleh tujuan bisnis. Oleh karena itu, untuk memahami metode mana yang lebih baik, kami melatih dua model:
- Pendekatan klasifikasi biner yang sering digunakan menggunakan algoritme pembelajaran mesin dari pengambil keputusan pohon ( LightGBM );
- Model Weibull-LSTM
Sampel uji terdiri dari 500 pelanggan terpilih yang tidak dalam sampel pelatihan. Untuk model, hiper-parameter dipilih menggunakan validasi silang oleh klien. Untuk melatih setiap model, set atribut yang sama digunakan.
Karena kenyataan bahwa model tidak memiliki memori, tanda-tanda khusus diambil untuk itu, menunjukkan rasio perubahan dalam parameter satu bulan dengan nilai rata-rata untuk parameter selama tiga bulan terakhir. Apa yang menjadi ciri laju perubahan nilai selama periode terakhir tiga bulan. Tanpa ini, model yang didasarkan pada Random Forest akan berada dalam posisi yang sebelumnya kalah relatif terhadap Weibull-LSTM.
Mengapa LSTM dengan distribusi Weibull lebih baik daripada pendekatan yang didasarkan pada kelompok pohon keputusan
Di sini, semuanya jelas beberapa gambar.
Perbandingan Kurva Angkat untuk algoritma klasik dan Weibull-LSTM
Perbandingan Metrik Kurva Angkat Bulanan untuk Algoritma Klasik dan Weibull-LSTMSecara umum, LSTM melakukan algoritma klasik di hampir semua kasus.
Prediksi arus keluar
Sebuah model yang didasarkan pada jaringan saraf berulang dengan sel-sel LSTM dengan distribusi Weibull dapat memprediksi arus keluar di muka, misalnya, memprediksi keberangkatan klien selama n bulan berikutnya. Pertimbangkan kasus untuk n = 3. Dalam kasus ini, untuk setiap bulan, jaringan saraf harus menentukan dengan benar apakah klien akan pergi dari bulan berikutnya hingga bulan ke-n. Dengan kata lain, dia harus benar menentukan apakah klien akan tetap setelah n bulan. Ini dapat dianggap sebagai prediksi sebelumnya: memprediksi saat ketika klien baru saja mulai berpikir tentang cara untuk pergi.
Bandingkan Kurva Angkat untuk Weibull-LSTM 1, 2, dan 3 bulan sebelum arus keluar:

Kami sudah menulis di atas bahwa prakiraan yang dibuat untuk pelanggan yang tidak aktif selama beberapa waktu juga penting. Oleh karena itu, di sini kami akan menambah sampel kasus-kasus tersebut ketika klien yang berangkat sudah tidak aktif selama satu atau dua bulan, dan memeriksa bahwa Weibull-LSTM dengan benar mengklasifikasikan kasus-kasus seperti outflow. Karena kasus-kasus tersebut hadir dalam sampel, kami berharap jaringan dapat mengatasinya dengan baik:

Retensi pelanggan
Sebenarnya, ini adalah hal utama yang dapat dilakukan dengan informasi di tangan bahwa pelanggan ini dan itu sedang bersiap untuk berhenti menggunakan produk. Berbicara tentang membangun model yang dapat menawarkan sesuatu yang bermanfaat bagi pelanggan untuk menjaga mereka, ini tidak akan berhasil jika Anda tidak memiliki riwayat upaya seperti itu yang akan berakhir dengan baik.
Kami tidak punya cerita seperti itu, jadi kami memutuskannya seperti ini.
- Kami sedang membangun model yang mendefinisikan produk menarik untuk setiap klien.
- Di setiap bulan, kami menjalankan classifier dan mengidentifikasi calon pelanggan keluar.
- Beberapa pelanggan menawarkan produk, sesuai dengan model paragraf 1, mengingat tindakan mereka.
- Setelah beberapa bulan, kami mencari pelanggan potensial yang tersisa dan yang tersisa. Jadi, kami membentuk sampel pelatihan.
- Kami melatih model pada cerita yang diperoleh pada paragraf 4.
- Secara opsional, ulangi prosedur, ganti model dari paragraf 1 dengan model yang diperoleh pada paragraf 5.
Pengujian A / B biasa dapat berfungsi sebagai pemeriksaan kualitas retensi tersebut - kami membagi pelanggan yang berpotensi masuk ke dalam dua kelompok. Kami menawarkan produk berdasarkan pada model retensi kami ke satu, dan kami tidak menawarkan apa pun untuk yang kedua. Kami memutuskan untuk melatih model yang bisa mendapatkan manfaat pada poin 1 dari contoh kami.
Kami ingin membuat segmentasi dapat diinterpretasikan sebanyak mungkin. Untuk melakukan ini, kami memilih beberapa tanda yang dapat dengan mudah ditafsirkan: jumlah total transaksi, gaji, total omset akun, usia, jenis kelamin. Tanda-tanda dari tabel “Kartu” tidak diperhitungkan sebagai tidak informatif, dan tanda-tanda dari tabel 3 “Kontrak” - karena kerumitan pemrosesan untuk menghindari kebocoran data antara set validasi dan set pelatihan.
Clustering dilakukan menggunakan model campuran Gaussian.
Kriteria informasi Akaike memungkinkan untuk menentukan 2 yang optimal. Optimal pertama sesuai dengan 1 cluster. Optimal kedua, kurang jelas, berhubungan dengan 80 cluster. Kesimpulan berikut dapat diambil dari hasil ini: sangat sulit untuk membagi data menjadi kelompok tanpa informasi yang diberikan priori. Untuk pengelompokan yang lebih baik, Anda membutuhkan data yang menjelaskan setiap klien secara detail.Oleh karena itu, tugas pelatihan dengan seorang guru dipertimbangkan untuk menawarkan setiap klien masing-masing produk. Produk-produk berikut dipertimbangkan: "Deposito berjangka", "Kartu kredit", "Cerukan", "Pinjaman konsumen", "Pinjaman mobil", "Hipotek".Jenis produk lain hadir dalam data: "Current Account". Tetapi kami tidak mempertimbangkannya karena kandungan informasi yang rendah. Oleh pengguna yang merupakan pelanggan bank, mis. Mereka tidak berhenti menggunakan produknya, dibangun model yang meramalkan produk mana yang mungkin menarik bagi mereka. Regresi logistik dipilih sebagai model, dan nilai Angkat untuk 10 persentil pertama digunakan sebagai metrik penilaian kualitas.Kualitas model dapat diperkirakan dalam gambar.
Hasil model rekomendasi pelangganRingkasan
Pendekatan ini membawa kami pada posisi pertama dalam nominasi “AI di Bank” di Kejuaraan AI RAIF-Challenge 2017.
Rupanya, hal utama adalah mendekati masalah dari sisi yang tidak biasa dan menggunakan metode yang biasa digunakan untuk situasi lain.Meskipun arus keluar pengguna yang besar mungkin merupakan bencana alam untuk layanan.Metode ini juga dapat dicatat untuk area lain di mana penting untuk mempertimbangkan aliran keluar, bukan oleh bank secara keseluruhan. Misalnya, kami menggunakannya untuk menghitung arus keluar kami sendiri - di cabang Rostelecom di Siberia dan St. Petersburg."Laboratorium data mining" perusahaan "Cari portal" Sputnik "