Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Kamusta kayong lahat! Ang pangalan ko ay Sasha, ako ay CTO at Co-Founder sa LoyaltyLab. Dalawang taon na ang nakalilipas, ang aking mga kaibigan at ako, tulad ng lahat ng mahihirap na estudyante, ay pumunta sa gabi para sa beer sa pinakamalapit na tindahan malapit sa bahay. Labis kaming nagalit na ang retailer, na alam na pupunta kami para sa beer, ay hindi nag-aalok ng diskwento sa mga chips o crackers, bagaman ito ay napaka-lohikal! Hindi namin naintindihan kung bakit nangyayari ang sitwasyong ito at nagpasya kaming lumikha ng aming sariling kumpanya. Well, bilang isang bonus, isulat ang mga diskwento para sa iyong sarili tuwing Biyernes para sa parehong mga chips.

Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

At ang lahat ay umabot sa punto na nagsasalita ako sa materyal sa teknikal na bahagi ng produkto sa NVIDIA GTC. Ikinalulugod naming ibahagi ang aming gawain sa komunidad, kaya pino-post ko ang aking ulat sa anyo ng isang artikulo.

Pagpapakilala

Tulad ng lahat sa simula ng paglalakbay, nagsimula kami sa isang pangkalahatang-ideya kung paano ginagawa ang mga system ng nagrerekomenda. At ang arkitektura ng sumusunod na uri ay naging pinakasikat:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Ito ay binubuo ng dalawang bahagi:

  1. Pag-sample ng mga kandidato para sa mga rekomendasyon sa pamamagitan ng isang simple at mabilis na modelo, kadalasang nagtutulungan.
  2. Pagraranggo ng mga kandidato sa pamamagitan ng isang mas kumplikado at mas mabagal na modelo ng nilalaman, na isinasaalang-alang ang lahat ng posibleng mga tampok sa data.

Dito at sa ibaba ay gagamitin ko ang mga sumusunod na termino:

  • kandidato / kandidato para sa mga rekomendasyon - isang pares ng user-product, na posibleng makakuha ng mga rekomendasyon sa produksyon.
  • paraan ng pagkuha ng kandidato/tagabunot/kandidato β€” isang proseso o paraan para sa pagkuha ng "mga kandidato para sa mga rekomendasyon" mula sa magagamit na data.

Sa unang hakbang, karaniwang ginagamit ang iba't ibang variation ng collaborative na pagsala. Ang pinakasikat - ALS. Nakapagtataka, ang karamihan sa mga artikulo tungkol sa mga system ng nagrerekomenda ay nagpapakita lamang ng iba't ibang mga pagpapahusay sa mga collaborative na modelo sa unang yugto, ngunit walang nagsasalita tungkol sa iba pang mga paraan ng sampling. Para sa amin, ang diskarte ng paggamit lamang ng mga collaborative na modelo at iba't ibang mga pag-optimize sa kanila ay hindi gumana sa kalidad na aming inaasahan, kaya't naghukay kami sa pananaliksik partikular sa bahaging ito. At sa dulo ng artikulo ay ipapakita ko kung gaano namin napabuti ang ALS, na naging baseline namin.

Bago ako magpatuloy sa paglalarawan ng aming diskarte, mahalagang tandaan na sa mga rekomendasyon sa realtime, kapag mahalagang isaalang-alang namin ang data na nangyari 30 minuto ang nakalipas, talagang walang maraming mga diskarte na maaaring gumana sa tamang oras. Ngunit, sa aming kaso, kailangan naming mangolekta ng mga rekomendasyon nang hindi hihigit sa isang beses sa isang araw, at sa karamihan ng mga kaso - isang beses sa isang linggo, na nagbibigay sa amin ng pagkakataong gumamit ng mga kumplikadong modelo at i-multiply ang kalidad.

Isaalang-alang natin para sa baseline kung anong mga sukatan ang ipinapakita lamang ng ALS sa gawain ng pagkuha ng mga kandidato. Ang mga pangunahing sukatan na aming sinusubaybayan ay:

  • Precision - ang proporsyon ng tamang napiling mga kandidato mula sa mga na-sample.
  • Recall - ang proporsyon ng mga kandidato na nangyari sa mga aktwal na nasa pagitan ng target.
  • F1-score - F-score na kinakalkula sa nakaraang dalawang puntos.

Titingnan din natin ang mga sukatan ng panghuling modelo pagkatapos ng pagsasanay sa gradient boosting na may mga karagdagang feature ng content. Mayroon ding 3 pangunahing sukatan:

  • precision@5 β€” average na porsyento ng mga hit mula sa nangungunang 5 ayon sa posibilidad para sa bawat customer.
  • response-rate@5 β€” conversion ng mga mamimili mula sa isang pagbisita sa tindahan sa pagbili ng hindi bababa sa isang personal na alok (isang alok ay naglalaman ng 5 produkto).
  • avg roc-auc bawat user - medium roc-auc para sa bawat mamimili.

Mahalagang tandaan na ang lahat ng sukatang ito ay sinusukat sa cross-validation ng serye ng oras, ibig sabihin, ang pagsasanay ay nagaganap sa unang k linggo, at ang k + 1 na linggo ay kinukuha bilang data ng pagsubok. Kaya, ang mga pana-panahong pagtaas/pagbaba ay may kaunting epekto sa interpretasyon ng kalidad ng mga modelo. Dagdag pa, sa lahat ng mga chart, ang abscissa axis ay magsasaad ng numero ng linggo sa cross-validation, at ang ordinate axis ay magsasaad ng halaga ng tinukoy na sukatan. Ang lahat ng mga graph ay batay sa transactional data ng isang kliyente, upang ang paghahambing sa pagitan ng mga ito ay tama.

Bago natin simulan ang paglalarawan sa ating diskarte, tingnan muna natin ang baseline, na sinanay na modelo ng ALS.
Mga Sukatan sa Pagkuha ng Kandidato:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Panghuling sukatan:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Tinatrato ko ang lahat ng pagpapatupad ng mga algorithm bilang ilang uri ng hypothesis ng negosyo. Kaya, halos halos, anumang collaborative na modelo ay maaaring ituring bilang isang hypothesis na "may posibilidad na bilhin ng mga tao ang binibili ng mga taong tulad nila." Gaya ng sinabi ko, hindi namin nililimitahan ang aming sarili sa mga ganitong semantika, at narito ang ilang hypotheses na gumagana pa rin nang cool sa data sa offline na retail:

  1. Ano ang nabili mo dati.
  2. Katulad ng binili ko dati.
  3. Ang panahon ng isang mahabang nakalipas na pagbili.
  4. Sikat ayon sa kategorya/tatak.
  5. Mga kahaliling pagbili ng iba't ibang mga produkto bawat linggo (Markov chain).
  6. Mga katulad na produkto sa mga mamimili, ayon sa mga katangiang binuo ng iba't ibang modelo (Word2Vec, DSSM, atbp.).

Ano ang binili mo noon

Ang pinaka-halatang heuristic na gumagana nang mahusay sa grocery retail. Dito kinukuha namin ang lahat ng mga kalakal na binili ng may-ari ng loyalty card sa huling K araw (karaniwan ay 1-3 linggo), o K araw sa nakalipas na taon. Sa paglalapat lamang ng paraang ito, nakukuha namin ang mga sumusunod na sukatan:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Ito ay medyo halata dito na ang higit pa namin kumuha ng panahon, mas recall at mas katumpakan mayroon kami at vice versa. Ang mas mahusay na mga resulta sa karaniwan para sa mga kliyente ay nagbibigay ng "huling 2 linggo".

Katulad ng binili ko dati

Hindi nakakagulat na para sa grocery retail, ang "kung ano ang binili dati" ay gumagana nang maayos, ngunit ang pagkuha ng mga kandidato mula lamang sa kung ano ang nabili ng gumagamit ay hindi masyadong cool, dahil ito ay malamang na hindi posible na sorpresahin ang bumibili sa ilang mga bagong produkto. Samakatuwid, iminumungkahi naming bahagyang pagbutihin ang heuristic na ito gamit ang parehong mga collaborative na modelo. Mula sa mga vector na natanggap namin sa panahon ng pagsasanay sa ALS, maaari kang makakuha ng mga katulad na produkto sa nabili na ng user. Ang ideyang ito ay halos kapareho sa "mga katulad na video" sa mga serbisyo sa panonood ng nilalamang video, ngunit dahil hindi namin alam kung ano ang kinakain/binibili ng user sa isang partikular na sandali, maaari lang kaming maghanap ng isang bagay na katulad lamang ng nabili na niya, lalo na't alam na natin kung gaano ito gumagana. Ang paglalapat ng paraang ito sa mga transaksyon ng user sa nakalipas na 2 linggo, nakukuha namin ang mga sumusunod na sukatan:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Dito k - ang bilang ng mga katulad na produkto na kinukuha para sa bawat produktong binili ng mamimili sa nakalipas na 14 na araw.
Ang diskarteng ito ay gumana nang maayos para sa amin sa isang kliyente na kritikal na huwag magrekomenda kung ano na ang nasa kasaysayan ng pagbili ng user.

Matagal na nakalipas na panahon ng pagbili

Tulad ng nalaman na namin, dahil sa mataas na dalas ng pagbili ng mga kalakal, ang unang diskarte ay gumagana nang maayos para sa aming mga detalye. Ngunit ano ang tungkol sa mga kalakal tulad ng washing powder/shampoo/etc. Iyon ay, sa mga produkto na malamang na hindi kinakailangan bawat linggo o dalawa at kung saan ang mga nakaraang pamamaraan ay hindi maaaring makuha. Ito ay nagpapahiwatig ng sumusunod na ideya - iminungkahi na kalkulahin ang panahon ng pagbili ng bawat produkto sa karaniwan para sa mga mamimili na bumili ng produkto nang higit pa k minsan. At pagkatapos ay i-extract kung ano ang malamang na naubusan na ng mamimili. Ang kinakalkula na mga panahon para sa mga kalakal ay maaaring suriin sa mga mata para sa kasapatan:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

At pagkatapos ay makikita natin kung ang katapusan ng panahon ng produkto ay nahuhulog sa loob ng agwat ng oras kung kailan ang mga rekomendasyon ay nasa produksyon at sample kung ano ang nahuhulog. Ang diskarte ay maaaring ilarawan tulad nito:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Narito mayroon kaming 2 pangunahing mga kaso na maaaring isaalang-alang:

  1. Kung magsa-sample ng mga produkto para sa mga customer na bumili ng produkto nang wala pang K beses.
  2. Kung magsa-sample ng produkto kung ang katapusan ng panahon nito ay bumagsak bago ang simula ng target na pagitan.

Ang sumusunod na graph ay nagpapakita kung anong mga resulta ang naabot ng isang pamamaraan sa iba't ibang mga hyperparameter:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
ft - Dalhin lamang ang mga mamimili na bumili ng produkto nang hindi bababa sa K (dito K = 5) beses
tm β€” Kunin lamang ang mga kandidatong nahuhulog sa target interval

Hindi nakakagulat, kaya (0, 0) ang pinakamalaking pagkuhang muli at ang pinakamaliit katumpakan, dahil sa ilalim ng kondisyong ito ang karamihan sa mga kandidato ay nakuha. Gayunpaman, ang pinakamahusay na mga resulta ay nakukuha kapag hindi kami nagsample ng mga produkto para sa mga customer na bumili ng isang partikular na produkto na mas mababa sa k beses at extract, bukod sa iba pang mga bagay, mga kalakal na ang pagtatapos ng panahon ay nahuhulog bago ang target na pagitan.

Sikat ayon sa Kategorya

Ang isa pang medyo halatang ideya ay ang sample ng mga sikat na produkto sa iba't ibang kategorya o brand. Dito namin kinakalkula para sa bawat customer top-k "paboritong" kategorya/brand at extract ang "sikat" mula sa kategorya/brand na iyon. Sa aming kaso, tinutukoy namin ang "paborito" at "sikat" sa pamamagitan ng bilang ng mga pagbili ng produkto. Ang isang karagdagang bentahe ng diskarteng ito ay ang pagiging angkop nito sa isang cold start case. Iyon ay, para sa mga customer na nakagawa ng alinman sa napakakaunting mga pagbili, o hindi nakapunta sa tindahan sa loob ng mahabang panahon, o sa pangkalahatan ay nagbigay lamang ng loyalty card. Para sa kanila, ito ay mas madali at pinakamahusay na magtapon ng mga kalakal mula sa sikat sa mga mamimili na may isang umiiral na kasaysayan. Ang mga sukatan ay ang mga sumusunod:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Dito, ang numero pagkatapos ng salitang "kategorya" ay nangangahulugang ang antas ng nesting ng kategorya.

Sa pangkalahatan, hindi rin nakakagulat na ang mas makitid na mga kategorya ay nakakamit ng mas mahusay na mga resulta, dahil kinukuha nila ang mas tumpak na "paboritong" mga produkto para sa mga mamimili.

Mga alternatibong pagbili ng iba't ibang mga produkto bawat linggo

Ang isang kawili-wiling diskarte na hindi ko nakita sa mga artikulo tungkol sa mga sistema ng rekomendasyon ay isang medyo simple at sa parehong oras na gumagana ng istatistikal na paraan ng mga kadena ng Markov. Dito kami ay tumatagal ng 2 magkaibang linggo, pagkatapos ay para sa bawat customer ay bumuo kami ng mga pares ng mga produkto [binili sa linggo i]-[binili sa linggo j], kung saan j > i, at mula dito kinakalkula namin para sa bawat produkto ang posibilidad na lumipat sa ibang produkto sa susunod na linggo. Iyon ay, para sa bawat pares ng mga kalakal producti-productj bilangin ang kanilang bilang sa mga natagpuang pares at hatiin sa bilang ng mga pares, kung saan mga produkto ay nasa unang linggo. Upang kunin ang mga kandidato, kinukuha namin ang huling tseke ng mamimili at kunin top-k ang pinaka-malamang na susunod na mga produkto mula sa transition matrix na nakuha namin. Ang proseso ng pagbuo ng isang transition matrix ay ganito:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Mula sa mga tunay na halimbawa sa matrix ng mga posibilidad ng paglipat, nakikita natin ang sumusunod na mga kagiliw-giliw na phenomena:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Dito maaari mong mapansin ang mga kagiliw-giliw na dependency na ipinahayag sa pag-uugali ng consumer: halimbawa, mga mahilig sa citrus o isang tatak ng gatas, kung saan malamang na lumipat sila sa isa pa. Hindi rin nakakagulat na ang mga item na may mataas na paulit-ulit na pagbili, tulad ng mantikilya, ay napupunta din dito.

Ang mga sukatan sa pamamaraan na may mga Markov chain ay ang mga sumusunod:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
k - ang bilang ng mga produkto na nakuha para sa bawat item na binili mula sa huling transaksyon ng mamimili.
Tulad ng nakikita natin, ang pagsasaayos na may k=4 ay nagpapakita ng pinakamahusay na resulta. Ang spike sa ika-4 na linggo ay maaaring ipaliwanag sa pamamagitan ng pana-panahong pag-uugali sa mga pista opisyal. 

Mga katulad na produkto sa mga mamimili, ayon sa mga katangian na binuo ng iba't ibang mga modelo

Kaya dumating kami sa pinakamahirap at kawili-wiling bahagi - ang paghahanap para sa pinakamalapit na mga kapitbahay sa mga vectors ng mga mamimili at mga produkto na binuo ayon sa iba't ibang mga modelo. Sa aming trabaho, gumagamit kami ng 3 tulad ng mga modelo:

  • ALS
  • Word2Vec (Item2Vec para sa mga ganoong gawain)
  • DSSM

Nakipag-usap na tayo sa ALS, mababasa mo kung paano ito natututo dito. Sa kaso ng Word2Vec, ginagamit namin ang kilalang pagpapatupad ng modelo mula sa gensim. Sa pamamagitan ng pagkakatulad sa mga teksto, tinutukoy namin ang alok bilang isang resibo ng pagbili. Kaya, kapag gumagawa ng vector ng produkto, natututo ang modelo na hulaan ang "konteksto" nito para sa produkto sa resibo (ang natitirang mga kalakal sa resibo). Sa data ng ecommerce, mas mabuting gamitin ang session ng mamimili sa halip na isang resibo, ang mga lalaki mula sa Ozon. At ang DSSM ay mas kawili-wiling i-disassemble. Ito ay orihinal na isinulat ng mga lalaki mula sa Microsoft bilang isang modelo ng paghahanap, maaari mong basahin ang orihinal na papel ng pananaliksik dito. Ang arkitektura ng modelo ay ganito ang hitsura:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Dito Q - query, query sa paghahanap ng user, D[i] - dokumento, web page. Ang input ng modelo ay tumatanggap ng mga palatandaan ng kahilingan at mga pahina, ayon sa pagkakabanggit. Ang bawat input layer ay sinusundan ng ilang ganap na konektadong mga layer (multilayer perceptron). Susunod, natututo ang modelo na i-minimize ang cosine sa pagitan ng mga vector na nakuha sa huling mga layer ng modelo.
Ang mga gawain sa rekomendasyon ay gumagamit ng eksaktong parehong arkitektura, ngunit sa halip na isang kahilingan, mayroong isang gumagamit, at sa halip na mga pahina, mayroong mga produkto. At sa aming kaso, ang arkitektura na ito ay binago sa mga sumusunod:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Ngayon, upang suriin ang mga resulta, nananatili itong upang masakop ang huling punto - kung sa kaso ng ALS at DSSM ay malinaw na tinukoy namin ang mga vector ng gumagamit, kung gayon sa kaso ng Word2Vec mayroon lamang kaming mga vector ng produkto. Dito, upang bumuo ng isang vector ng gumagamit, natukoy namin ang 3 pangunahing mga diskarte:

  1. Idagdag lang ang mga vector, pagkatapos ay para sa cosine distance ay lumalabas na na-average lang namin ang mga produkto sa kasaysayan ng pamimili.
  2. Pagsusuma ng mga vector na may ilang oras na pagtimbang.
  3. Pagtimbang ng mga kalakal na may TF-IDF coefficient.

Sa kaso ng linear weighting ng buyer vector, nagpapatuloy kami mula sa hypothesis na ang produktong binili ng user kahapon ay may mas malaking impluwensya sa kanyang gawi kaysa sa produktong binili niya anim na buwan na ang nakakaraan. Kaya't isinasaalang-alang namin ang nakaraang linggo ng mamimili na may isang koepisyent ng 1, at kung ano ang susunod na nangyari sa mga coefficient ng Β½, β…“, atbp.:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Para sa mga coefficient ng TF-IDF, ginagawa namin ang eksaktong parehong bagay tulad ng sa TF-IDF para sa mga teksto, isinasaalang-alang lang namin ang mamimili bilang isang dokumento, at ang resibo bilang isang alok, ayon sa pagkakabanggit, ang salita ay isang produkto. Kaya't ang vector ng gumagamit ay higit na lilipat patungo sa mga bihirang produkto, at ang mga kalakal na madalas at pamilyar sa bumibili ay hindi magbabago nang malaki. Ang diskarte ay maaaring ilarawan tulad nito:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Ngayon tingnan natin ang mga sukatan. Ganito ang hitsura ng mga resulta ng ALS:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Mga sukatan ng Item2Vec na may iba't ibang variation ng pagbuo ng buyer vector:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Sa kasong ito, eksaktong parehong modelo ang ginagamit tulad ng sa aming baseline. Ang pagkakaiba lang ay kung aling k ang gagamitin natin. Upang gumamit lamang ng mga collaborative na modelo, kailangan mong kumuha ng humigit-kumulang 50-70 pinakamalapit na produkto para sa bawat customer.

At mga sukatan ng DSSM:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Paano pagsamahin ang lahat ng mga pamamaraan?

Astig, sabi mo, ngunit ano ang gagawin sa napakalaking hanay ng mga tool sa pagkuha ng kandidato? Paano pipiliin ang pinakamainam na pagsasaayos para sa iyong data? Narito mayroon kaming ilang mga problema:

  1. Kinakailangan na kahit papaano ay limitahan ang espasyo sa paghahanap para sa mga hyperparameter sa bawat pamamaraan. Ito ay, siyempre, discrete sa lahat ng dako, ngunit ang bilang ng mga posibleng puntos ay napakalaki.
  2. Paano pipiliin ang pinakamahusay na configuration para sa iyong sukatan gamit ang isang maliit na limitadong sample ng mga partikular na pamamaraan na may mga partikular na hyperparameter?

Hindi pa kami nakakahanap ng malinaw na tamang sagot sa unang tanong, kaya nagpapatuloy kami mula sa sumusunod: para sa bawat pamamaraan, nakasulat ang isang hyperparameter search space limiter, depende sa ilang istatistika sa data na mayroon kami. Kaya, alam ang average na panahon sa pagitan ng mga pagbili mula sa mga tao, maaari nating hulaan kung anong panahon ang gagamitin ang "kung ano ang nabili na" at "ang panahon ng isang mahabang nakalipas na pagbili" na paraan.

At pagkatapos naming dumaan sa ilang sapat na bilang ng mga variation ng iba't ibang pamamaraan, napapansin namin ang mga sumusunod: ang bawat pagpapatupad ay kumukuha ng isang tiyak na bilang ng mga kandidato at may tiyak na halaga ng sukatan (recall) na susi para sa amin. Gusto naming makakuha ng isang tiyak na bilang ng mga kandidato sa kabuuan, depende sa aming pinapahintulutang kapangyarihan sa pag-compute, na may pinakamataas na posibleng sukatan. Narito ang problema ay mahusay na bumagsak sa problema sa knapsack.
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Dito ang bilang ng mga kandidato ay ang bigat ng ingot, at ang paraan ng pagpapabalik ay ang halaga nito. Gayunpaman, mayroong 2 higit pang mga punto na dapat isaalang-alang kapag ipinapatupad ang algorithm:

  • Ang mga pamamaraan ay maaaring magkapatong sa mga kandidatong kanilang hinugot.
  • Sa ilang mga kaso, tama na gumamit ng isang pamamaraan nang dalawang beses na may magkakaibang mga parameter, at ang mga kandidato sa output ng una ay hindi magiging isang subset ng pangalawa.

Halimbawa, kung gagawin natin ang pagpapatupad ng "kung ano ang nabili na" na pamamaraan na may iba't ibang mga agwat para sa pagkuha, pagkatapos ay ang kanilang mga hanay ng mga kandidato ay mapupugad sa isa't isa. Kasabay nito, ang iba't ibang mga parameter sa "mga pana-panahong pagbili" sa labasan ay hindi nagbibigay ng kumpletong intersection. Samakatuwid, hinahati namin ang mga pamamaraan ng sampling na may iba't ibang mga parameter sa mga bloke upang mula sa bawat bloke gusto naming kumuha ng hindi hihigit sa isang diskarte sa pagkuha na may mga partikular na hyperparameter. Upang gawin ito, kailangan mong linlangin ng kaunti sa pagpapatupad ng problema sa knapsack, ngunit ang mga asymptotics at ang resulta ay hindi magbabago mula dito.

Ang ganitong matalinong kumbinasyon ay nagbibigay-daan sa amin na makuha ang mga sumusunod na sukatan kumpara sa mga simpleng collaborative na modelo:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Sa mga huling sukatan, makikita natin ang sumusunod na larawan:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Gayunpaman, dito makikita mo na mayroong isang natuklasang punto para sa mga rekomendasyong kapaki-pakinabang para sa negosyo. Ngayon lang namin natutunan kung paano cool na mahulaan kung ano ang bibilhin ng user, halimbawa, sa susunod na linggo. Ngunit ang pagbibigay lamang ng isang diskwento sa katotohanan na siya ay bibili pa rin ay hindi masyadong cool. Ngunit magandang i-maximize ang inaasahan, halimbawa, sa mga sumusunod na sukatan:

  1. Margin/turnover batay sa mga personal na rekomendasyon.
  2. Average na tseke ng mga mamimili.
  3. dalas ng pagbisita.

Kaya pinarami namin ang mga nakuhang probabilities sa iba't ibang coefficient at nire-rank muli ang mga ito upang ang nasa itaas ay kasama ang mga produkto na nakakaapekto sa mga sukatan sa itaas. Walang handa na solusyon dito, kung aling diskarte ang mas mahusay na gamitin. Kahit na kami ay nag-eeksperimento sa mga naturang coefficient nang direkta sa produksyon. Ngunit narito ang ilang mga kagiliw-giliw na trick na kadalasang nagbibigay sa amin ng pinakamahusay na mga resulta:

  1. I-multiply sa presyo/margin ng item.
  2. I-multiply sa average na pagsusuri kung saan nangyayari ang produkto. Kaya lalabas ang mga kalakal na karaniwan nilang kinukuha ng iba.
  3. I-multiply sa average na dalas ng mga pagbisita ng mga mamimili ng produktong ito, batay sa hypothesis na ang produktong ito ay naghihikayat ng mas madalas na pagbabalik para dito.

Pagkatapos mag-eksperimento sa mga coefficient, nakuha namin ang mga sumusunod na sukatan sa produksyon:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail
Dito pangkalahatang conversion ng produkto - ang bahagi ng mga biniling produkto mula sa lahat ng produkto sa mga rekomendasyong nabuo namin.

Ang isang matulungin na mambabasa ay mapapansin ang isang makabuluhang pagkakaiba sa pagitan ng offline at online na mga sukatan. Ang pag-uugali na ito ay ipinaliwanag sa pamamagitan ng katotohanan na hindi lahat ng mga dynamic na filter para sa mga produkto na maaaring irekomenda ay maaaring isaalang-alang kapag sinasanay ang modelo. Ito ay isang normal na kuwento para sa amin kapag ang kalahati ng mga na-extract na kandidato ay maaaring i-filter out, ang naturang pagtitiyak ay tipikal sa aming industriya.

Sa mga tuntunin ng kita, ang sumusunod na kuwento ay nakuha, malinaw na pagkatapos ng paglunsad ng mga rekomendasyon, ang kita ng pangkat ng pagsubok ay malakas na lumalaki, ngayon ang average na pagtaas ng kita sa aming mga rekomendasyon ay 3-4%:
Paano namin pinahusay nang husto ang kalidad ng mga rekomendasyon sa offline na retail

Sa konklusyon, gusto kong sabihin na kung kailangan mo ng mga di-realtime na rekomendasyon, ang isang napakalaking pagtaas sa kalidad ay makikita sa mga eksperimento sa pagkuha ng mga kandidato para sa mga rekomendasyon. Ang isang malaking halaga ng oras upang mabuo ang mga ito ay ginagawang posible upang pagsamahin ang maraming magagandang pamamaraan, na sa kabuuan ay magbibigay ng mga cool na resulta para sa negosyo.

Natutuwa akong makipag-chat sa mga komento sa lahat na nakakahanap ng materyal na kawili-wili. Maaari mo akong tanungin nang personal telegram. Ibinabahagi ko rin ang aking mga saloobin sa AI/startups sa aking channel ng telegrama β€” maligayang pagdating πŸ™‚

Pinagmulan: www.habr.com

Magdagdag ng komento