Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Halo kabeh! Jenengku Sasha, aku CTO & Co-Founder ing LoyaltyLab. Rong taun kepungkur, aku lan kanca-kanca, kaya kabeh siswa miskin, sore tuku bir ing toko sing cedhak karo omah. Kita padha banget upset sing pengecer, ngerti sing kita bakal teka kanggo bir, ora kurban diskon ing Kripik utawa krupuk, sanajan iki logis banget! Kita ora ngerti sebabe kahanan iki kedadeyan lan mutusake kanggo miwiti perusahaan dhewe. Inggih, minangka bonus, menehi dhewe diskon saben ana ing Kripik padha.

Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Lan kabeh wis tekan titik ing ngendi aku nampilake materi ing sisih teknis produk NVIDIA GTC. Kita seneng nuduhake karya kita karo masyarakat, mula aku nerbitake laporan ing wangun artikel.

Pambuka

Kaya wong liya ing wiwitan perjalanan, kita miwiti kanthi ringkesan babagan cara nggawe sistem rekomendasi. Lan arsitektur sing paling populer dadi jinis ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Iku kasusun saka rong bagéan:

  1. Sampling calon kanggo Rekomendasi nggunakake model prasaja lan cepet, biasane siji kolaboratif.
  2. Peringkat calon kanthi model konten sing luwih rumit lan alon, kanthi njupuk kabeh fitur sing bisa ditindakake ing data kasebut.

Sabanjure aku bakal nggunakake istilah ing ngisor iki:

  • calon / calon kanggo Rekomendasi - pasangan produk pangguna sing bisa uga kalebu ing rekomendasi ing produksi.
  • metode ekstraksi kandidat/ekstraktor/calon - proses utawa cara kanggo ngekstrak "calon rekomendasi" saka data sing kasedhiya.

Langkah pisanan biasane nggunakake macem-macem variasi panyaring kolaborasi. Paling populer - ALS. Kaget yen umume artikel babagan sistem rekomendasi mung mbukak macem-macem dandan kanggo model kolaboratif ing tahap pertama, nanging ora ana sing ngomong babagan cara sampling liyane. Kanggo kita, pendekatan mung nggunakake model kolaboratif lan macem-macem optimasi karo wong-wong mau ora bisa ditindakake kanthi kualitas sing dikarepake, mula kita nliti riset khusus babagan iki. Lan ing pungkasan artikel aku bakal nuduhake sepira kita bisa nambah ALS, sing dadi garis dasar.

Sadurunge nerusake kanggo njlèntrèhaké pendekatan kita, iku penting kanggo Wigati sing ing Rekomendasi realtime, nalika iku penting kanggo kita njupuk menyang akun data sing kedaden 30 menit kepungkur, ana tenan ora akeh pendekatan sing bisa digunakake ing wektu sing dibutuhake. Nanging, ing kasus kita, kita kudu ngumpulake Rekomendasi ora luwih saka sapisan dina, lan ing paling kasus - sapisan minggu, kang menehi kita kesempatan kanggo nggunakake model Komplek lan nambah kualitas kaping pirang-pirang.

Ayo dadi dhasar apa metrik sing mung ditampilake ALS babagan tugas ngekstrak calon. Metrik utama sing kita monitor yaiku:

  • Precision - proporsi calon sing dipilih kanthi bener saka sampel.
  • Kelingan minangka proporsi calon sing kedadeyan saka sing bener-bener ana ing interval target.
  • F1-skor - F-ukuran diwilang ing loro TCTerms sadurungé.

Kita uga bakal ndeleng metrik saka model final sawise latihan ngedongkrak gradien karo fitur isi tambahan. Ana uga 3 metrik utama ing kene:

  • precision@5 - persentase rata-rata produk saka ndhuwur 5 ing syarat-syarat kemungkinan kanggo saben panuku.
  • respon-rate@5 - konversi pelanggan saka riko menyang toko kanggo tuku paling siji tawaran pribadi (5 produk ing siji tawaran).
  • rata-rata roc-auc saben pangguna - rata-rata roc-auc kanggo saben panuku.

Penting kanggo dicathet yen kabeh metrik kasebut diukur validasi silang seri wektu, yaiku, latihan dumadi ing k minggu pisanan, lan k + 1 minggu dijupuk minangka data test. Mangkono, munggah lan mudhun musiman duwe pengaruh minimal marang interpretasi kualitas model. Luwih ing kabeh grafik, sumbu abscissa bakal nuduhake nomer minggu ing validasi silang, lan sumbu ordinat bakal nuduhake nilai metrik sing ditemtokake. Kabeh grafik adhedhasar data transaksi saka siji klien supaya perbandingan antarane siji liyane bener.

Sadurunge kita miwiti njlèntrèhaké pendekatan kita, kita katon ing baseline, kang model ALS-dilatih.
Metrik pengambilan calon:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Metrik pungkasan:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Aku nganggep kabeh implementasine algoritma minangka sawetara jinis hipotesis bisnis. Mangkono, kira-kira, model kolaboratif apa wae bisa dianggep minangka hipotesis yen "wong cenderung tuku apa sing dituku wong sing padha." Kaya sing wis dakkandhakake, kita ora mbatesi semantik kasebut, lan ana sawetara hipotesis sing bisa digunakake ing data ing toko offline:

  1. Kang aku wis tuku sadurunge.
  2. Kaya sing aku tuku sadurunge.
  3. Periode saka tuku dawa kepungkur.
  4. Popular miturut kategori / merek.
  5. tumbas alternatif saka macem-macem barang saka minggu kanggo minggu (Markov chain).
  6. Produk sing padha karo para panuku, miturut karakteristik sing dibangun dening macem-macem model (Word2Vec, DSSM, lsp.).

Apa sampeyan tuku sadurunge?

Heuristik sing paling jelas sing bisa digunakake kanthi apik ing toko kelontong. Kene kita njupuk kabeh barang sing nduwèni kertu kasetyan dituku ing dina K pungkasan (biasane 1-3 minggu), utawa K dina taun kepungkur. Mung nggunakake metode iki, kita entuk metrik ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Ing kene cukup jelas yen saya suwe saya suwe, luwih akeh kelingan lan kurang presisi lan kosok balene. Rata-rata, "2 minggu pungkasan" menehi asil sing luwih apik kanggo klien.

Kaya sing aku tuku sadurunge

Ora nggumunake yen kanggo toko kelontong "apa sing aku tuku sadurunge" bisa digunakake kanthi apik, nanging ngekstrak calon mung saka apa sing wis dituku pangguna ora apik banget, amarga ora bakal kaget para panuku karo sawetara produk anyar. Mula, kita ngusulake supaya rada nambah heuristik iki kanthi nggunakake model kolaboratif sing padha. Saka vektor sing ditampa sajrone latihan ALS, kita bisa entuk produk sing padha karo sing wis dituku pangguna. Ide iki meh padha karo "video sing padha" ing layanan kanggo ndeleng konten video, nanging amarga kita ora ngerti apa sing dipangan / dituku pangguna ing wektu tartamtu, kita mung bisa nggoleki sing padha karo sing wis dituku, utamane awit kita We wis ngerti carane uga kerjane. Nggunakake metode iki ing transaksi pangguna sajrone 2 minggu kepungkur, kita entuk metrik ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

iku k — jumlah produk sing padha sing dijupuk kanggo saben produk sing dituku dening panuku sajrone 14 dina pungkasan.
Pendekatan iki pancen apik banget kanggo klien kita, sing penting ora nyaranake apa wae sing wis ana ing riwayat tuku pangguna.

Periode tuku pungkasan

Kaya sing wis dingerteni, amarga frekuensi tuku barang sing akeh, pendekatan pertama bisa digunakake kanggo kabutuhan tartamtu. Nanging babagan barang kaya bubuk cuci / sampo / lsp. Yaiku, kanthi produk sing ora dibutuhake saben minggu utawa rong minggu lan cara sadurunge ora bisa diekstrak. Iki ndadékaké gagasan ing ngisor iki - disaranake ngetung wektu tuku saben produk rata-rata kanggo pelanggan sing tuku produk luwih akeh k sapisan. Lan banjur extract apa sing panuku paling kamungkinan wis entek. Periode sing diwilang kanggo barang bisa dipriksa kanthi mripatmu kanggo kecukupan:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Banjur kita bakal ndeleng apa pungkasan periode produk tiba ing interval wektu nalika rekomendasi bakal ana ing produksi lan conto apa sing kedadeyan. Pendekatan kasebut bisa digambarake kaya mangkene:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Ing kene kita duwe 2 kasus utama sing bisa dianggep:

  1. Apa perlu kanggo sampel produk saka pelanggan sing wis tuku produk kurang saka K kaping.
  2. Apa perlu kanggo sampel produk yen pungkasan periode tiba sadurunge wiwitan interval target.

Grafik ing ngisor iki nuduhake asil apa sing ditindakake dening metode iki kanthi hiperparameter sing beda:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
ft - Njupuk mung pelanggan sing wis tuku produk paling K (kene K=5) kaping
tm - Njupuk mung calon sing tiba ing interval target

Ora nggumunake yen dheweke bisa (0, 0) paling gedhe kelingan lan sing paling cilik Precision, amarga ing kondisi iki paling calon dijupuk. Nanging, asil paling apik digayuh nalika kita ora sampel produk kanggo pelanggan sing tuku produk tartamtu kurang saka k kaping lan extract, kalebu barang, pungkasan periode kang tumiba sadurunge interval target.

Popular miturut kategori

Ide liyane sing cukup jelas yaiku kanggo sampel produk populer ing macem-macem kategori utawa merek. Kene kita ngetung kanggo saben panuku ndhuwur-k kategori / merek "favorit" lan ekstrak "populer" saka kategori / merek iki. Ing kasus kita, kita bakal nemtokake "favorit" lan "populer" kanthi jumlah tuku produk. Kauntungan tambahan saka pendekatan iki yaiku ditrapake ing kasus wiwitan sing adhem. Tegese, kanggo pelanggan sing wis nggawe sawetara tumbas, utawa wis suwe ora menyang toko, utawa mung ngetokake kertu loyalitas. Kanggo wong-wong mau, luwih gampang lan luwih apik kanggo nyedhiyakake barang sing populer karo pelanggan lan duwe sejarah. Metrik sing diasilake yaiku:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
Ing kene nomer sawise tembung "kategori" tegese tingkat nesting saka kategori.

Sakabèhé, uga ora nggumunake yen kategori sing luwih sempit entuk asil sing luwih apik, amarga ngekstrak produk "favorit" sing luwih akurat kanggo para pembeli.

Tuku barang sing beda-beda saka minggu menyang minggu

Pendekatan sing menarik sing durung dakdeleng ing artikel babagan sistem rekomendasi yaiku cara statistik sing cukup prasaja lan ing wektu sing padha kanggo rantai Markov. Ing kene kita butuh 2 minggu beda, banjur kanggo saben pelanggan kita mbangun pasangan produk [tuku ing minggu i]-[tuku ing minggu j], ing ngendi j > i, lan saka kene kita ngetung kanggo saben produk kemungkinan ngalih menyang produk liyane minggu sabanjuré. Tegese, kanggo saben pasangan barang produk-produk j We count nomer ing pasangan ketemu lan dibagi dening nomer pasangan, ngendi produk ana ing minggu pisanan. Kanggo extract calon, kita njupuk panrimo pungkasan panuku lan extract ndhuwur-k produk sabanjuré paling kamungkinan saka matriks transisi kita nampa. Proses mbangun matriks transisi katon kaya iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Saka conto nyata ing matriks kemungkinan transisi kita ndeleng fenomena menarik ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
Kene sampeyan bisa sok dong mirsani dependensi menarik sing dicethakaké ana ing prilaku konsumen: contone, penyayang woh-wohan jeuk utawa merek susu saka kang padha kamungkinan kanggo ngalih menyang liyane. Sampeyan uga ora nggumunake yen produk kanthi frekuensi tumbas baleni, kaya mentega, uga ana ing kene.

Metrik ing metode karo rantai Markov kaya ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
k - jumlah produk sing dijupuk kanggo saben produk sing dituku saka transaksi pungkasan panuku.
Minangka kita bisa ndeleng, asil paling apik dituduhake dening konfigurasi karo k = 4. Lonjakan ing minggu 4 bisa diterangake kanthi prilaku musiman nalika preian. 

Produk sing padha karo para panuku, miturut karakteristik sing dibangun dening model sing beda

Saiki kita wis teka ing bagean sing paling angel lan menarik - nggoleki tetanggan sing paling cedhak adhedhasar vektor pelanggan lan produk sing dibangun miturut macem-macem model. Ing karya kita nggunakake 3 model kasebut:

  • ALS
  • Word2Vec (Item2Vec kanggo tugas kasebut)
  • DSSM

Kita wis nangani ALS, sampeyan bisa maca babagan carane sinau kene. Ing kasus Word2Vec, kita nggunakake implementasine kondhang saka model saka gensim. Kanthi analogi karo teks kasebut, kita nemtokake tawaran kasebut minangka kuitansi tuku. Mangkono, nalika mbangun vektor produk, model sinau kanggo prédhiksi produk ing kuitansi "konteks" (produk sing isih ana ing kuitansi). Ing data e-dagang, luwih becik nggunakake sesi panuku tinimbang kuitansi; wong lanang saka Ozon. Lan DSSM luwih menarik kanggo diurai. Kaping pisanan, iki ditulis dening wong lanang saka Microsoft minangka model kanggo panelusuran, Sampeyan bisa maca kertas riset asli ing kene. Arsitektur model katon kaya iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

iku Q - pitakon, pitakon telusuran pangguna, D[i] - dokumen, kaca internet. Input kanggo model yaiku atribut panyuwunan lan kaca, masing-masing. Sawise saben lapisan input ana sawetara lapisan sing disambungake kanthi lengkap (perceptron multilayer). Sabanjure, model sinau kanggo nyilikake kosinus antarane vektor sing dipikolehi ing lapisan pungkasan model.
Tugas Rekomendasi nggunakake arsitektur sing padha, mung tinimbang panjalukan ana pangguna, lan tinimbang kaca ana produk. Lan ing kasus kita, arsitektur iki diowahi dadi:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Saiki, kanggo mriksa asil, tetep kanggo nutupi titik pungkasan - yen ing kasus ALS lan DSSM kita wis nemtokake vektor pangguna kanthi jelas, banjur ing kasus Word2Vec kita mung duwe vektor produk. Ing kene, kanggo mbangun vektor pangguna, kita wis nemtokake 3 pendekatan utama:

  1. Cukup nambah vektor, banjur kanggo jarak kosinus ternyata kita mung rata-rata produk ing riwayat tuku.
  2. Penjumlahan vektor kanthi bobot sawetara wektu.
  3. Timbangan barang kanthi koefisien TF-IDF.

Ing kasus bobot linier saka vektor panuku, kita nerusake saka hipotesis manawa produk sing dituku pangguna wingi duwe pengaruh sing luwih gedhe ing prilaku tinimbang produk sing dituku nem wulan kepungkur. Dadi, kita nimbang minggu sadurunge panuku kanthi kemungkinan 1, lan kedadeyan sabanjure kanthi kemungkinan ½, ⅓, lsp:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Kanggo koefisien TF-IDF, kita nindakake persis padha ing TF-IDF kanggo teks, mung kita nganggep panuku minangka dokumen, lan mriksa minangka tawaran, mungguh tembung kasebut minangka produk. Kanthi cara iki, vektor pangguna bakal luwih maju menyang barang langka, dene barang sing kerep lan akrab kanggo panuku ora bakal ngganti akeh. Pendekatan kasebut bisa digambarake kaya mangkene:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Saiki ayo ndeleng metrik. Iki minangka asil ALS:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
Metrik kanggo Item2Vec kanthi macem-macem variasi mbangun vektor panuku:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
Ing kasus iki, persis model sing padha digunakake ing baseline kita. Bentenipun mung kang k kita bakal nggunakake. Kanggo nggunakake mung model kolaborasi, sampeyan kudu njupuk udakara 50-70 produk sing paling cedhak kanggo saben pelanggan.

Lan metrik miturut DSSM:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Carane gabungke kabeh cara?

Kelangan, sampeyan ngomong, nanging apa sing kudu dilakoni karo alat ekstraksi calon sing gedhe? Kepiye carane milih konfigurasi optimal kanggo data sampeyan? Ing kene kita duwe sawetara masalah:

  1. Sampeyan perlu kanggo mbatesi spasi panelusuran kanggo hyperparameter ing saben cara. Iku, mesthi, diskrit nang endi wae, nanging jumlah TCTerms bisa gedhe banget.
  2. Nggunakake sampel winates cilik saka cara tartamtu karo hyperparameters tartamtu, carane sampeyan bisa milih konfigurasi paling apik kanggo metrik Panjenengan?

Kita durung nemokake jawaban sing bener kanggo pitakonan pisanan, mula kita nerusake saka ing ngisor iki: kanggo saben metode, limiter spasi panelusuran hyperparameter ditulis, gumantung saka sawetara statistik ing data sing kita duwe. Mangkono, ngerti periode rata-rata antarane tumbas saka wong, kita bisa guess karo apa wektu kanggo nggunakake "apa wis tuku" lan "periode tuku dawa kepungkur".

Lan sawise kita wis liwat sawetara nyukupi sawetara variasi saka cara beda, kita Wigati ing ngisor iki: saben implementasine mbeber nomer tartamtu saka calon lan wis Nilai tartamtu saka metrik tombol kanggo kita (kelingan). Kita pengin entuk jumlah calon tartamtu, gumantung saka daya komputasi sing diidini, kanthi metrik paling dhuwur. Kene masalah apik ambruk menyang masalah tas ransel.
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Ing kene jumlah calon minangka bobot ingot, lan cara kelingan yaiku regane. Nanging, ana 2 poin liyane sing kudu digatekake nalika ngetrapake algoritma:

  • Cara bisa uga tumpang tindih ing calon sing dijupuk.
  • Ing sawetara kasus, bakal bener kanggo njupuk siji cara kaping pindho karo paramèter beda, lan output calon saka pisanan ora bakal subset saka kaloro.

Contone, yen kita njupuk implementasine saka "apa aku wis tuku" cara karo interval beda kanggo retrieval, banjur pesawat saka calon bakal nested ing saben liyane. Ing wektu sing padha, paramèter sing beda ing "tuku périodik" ing metu ora nyedhiyakake persimpangan lengkap. Mulane, kita dibagi pendekatan sampling karo paramèter beda menyang pamblokiran supaya saka saben blok kita arep njupuk paling siji pendekatan extraction karo hyperparameters tartamtu. Kanggo nindakake iki, sampeyan kudu pinter ngleksanakake masalah knapsack, nanging asimtotik lan asil ora bakal owah.

Kombinasi cerdas iki ngidini kita entuk metrik ing ngisor iki dibandhingake karo model kolaborasi mung:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
Ing metrik pungkasan kita ndeleng gambar ing ngisor iki:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Nanging, ing kene sampeyan bisa ngerteni manawa ana siji titik sing ora ditemokake kanggo rekomendasi sing migunani kanggo bisnis. Saiki kita wis sinau carane nindakake proyek sing apik kanggo prédhiksi apa sing bakal dituku pangguna, contone, minggu ngarep. Nanging mung menehi diskon kanggo barang sing bakal dituku ora apik banget. Nanging apik kanggo nggedhekake pangarepan, umpamane, metrik ing ngisor iki:

  1. Margin / turnover adhedhasar rekomendasi pribadi.
  2. Rata-rata mriksa pelanggan.
  3. Frekuensi kunjungan.

Dadi, kita tikelake kemungkinan sing dipikolehi kanthi koefisien sing beda-beda lan rerank supaya produk sing mengaruhi metrik ing ndhuwur tekan ndhuwur. Ora ana solusi sing wis siap kanggo pendekatan sing paling apik digunakake. Kita malah eksprimen karo koefisien kuwi langsung ing produksi. Nanging ing ngisor iki ana teknik menarik sing paling asring menehi asil paling apik:

  1. Multiply dening rega / margin prodhuk.
  2. Multiply dening panrimo rata-rata kang produk katon. Dadi barang bakal teka, sing biasane njupuk liyane.
  3. Tikelake kanthi frekuensi rata-rata kunjungan dening para panuku produk iki, adhedhasar hipotesis manawa produk iki nyebabake wong bali maneh.

Sawise nganakake eksperimen karo koefisien, kita entuk metrik ing ngisor iki ing produksi:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis
iku konversi produk sakabèhé - bagean produk sing dituku saka kabeh produk ing rekomendasi sing digawe.

Sing maca sing ati-ati bakal weruh prabédan sing signifikan ing antarane metrik offline lan online. Prilaku iki diterangake kanthi kasunyatan manawa ora kabeh saringan dinamis kanggo produk sing bisa disaranake bisa dianggep nalika nglatih model kasebut. Kanggo kita, iku crita normal nalika setengah saka calon sing dijupuk bisa disaring; kekhususan iki khas ing industri kita.

Ing babagan revenue, crita ing ngisor iki dipikolehi, jelas yen sawise diluncurake rekomendasi, revenue saka grup tes saya tambah akeh, saiki rata-rata tambah revenue kanthi rekomendasi yaiku 3-4%:
Kepiye carane kita ningkatake kualitas rekomendasi ing toko offline kanthi dramatis

Ing kesimpulan, aku pengin ngomong yen sampeyan butuh rekomendasi non-realtime, banjur paningkatan kualitas sing gedhe banget bisa ditemokake ing eksperimen karo ngekstrak calon kanggo rekomendasi. A jumlah akeh wektu kanggo generasi ndadekake iku bisa kanggo gabungke akeh cara apik, kang total bakal menehi asil apik kanggo bisnis.

Aku bakal seneng ngobrol ing komentar karo sapa wae sing nemokake materi sing menarik. Sampeyan bisa takon kula pribadi ing telegram. Aku uga nuduhake pikirane babagan AI / wiwitan ing sandi saluran telegram - sugeng rawuh :)

Source: www.habr.com

Add a comment