Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Sveiki visi! Mano vardas Sasha, aš esu „LoyaltyLab“ CTO ir vienas iš įkūrėjų. Prieš dvejus metus su draugais, kaip ir visi vargšai studentai, vakare eidavome alaus į artimiausią parduotuvę prie namų. Labai apmaudu, kad prekiautojas, žinodamas, kad ateisime alaus, nepasiūlė nuolaidos traškučiams ar krekeriams, nors tai taip logiška! Nesupratome, kodėl susiklosto tokia situacija ir nusprendėme kurti savo įmonę. Na, kaip premiją, kiekvieną penktadienį išrašyk sau nuolaidas tiems patiems traškučiams.

Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Ir viskas pasiekė tašką, kad aš kalbu su medžiaga apie techninę produkto pusę NVIDIA GTC. Džiaugiamės galėdami dalintis savo darbais su bendruomene, todėl savo ataskaitą skelbiu straipsnio forma.

įvedimas

Kaip ir visi kelionės pradžioje, pradėjome nuo rekomendacijų sistemų kūrimo apžvalgos. O populiariausia pasirodė tokio tipo architektūra:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Jį sudaro dvi dalys:

  1. Kandidatų į rekomendacijas atranka pagal paprastą ir greitą modelį, dažniausiai bendradarbiaujant.
  2. Kandidatų reitingavimas pagal sudėtingesnį ir lėtesnį turinio modelį, atsižvelgiant į visas galimas duomenų ypatybes.

Čia ir toliau naudosiu šiuos terminus:

  • kandidatas / kandidatas į rekomendacijas - vartotojo ir produkto pora, kuri gali būti įtraukta į rekomendacijas gamyboje.
  • kandidatų ekstrahavimo / ištraukimo / kandidatų ekstrahavimo metodas — „kandidatų į rekomendacijas“ gavimo iš turimų duomenų procesas arba metodas.

Pirmajame etape paprastai naudojami įvairūs bendradarbiavimo filtravimo variantai. Populiariausias - ALS. Keista, kad daugumoje straipsnių apie rekomendacijų sistemas tik pirmajame etape atskleidžiami įvairūs bendradarbiavimo modelių patobulinimai, tačiau niekas nekalba apie kitus atrankos būdus. Mums metodas naudoti tik bendradarbiaujančius modelius ir įvairius optimizavimus su jais neveikė taip, kaip tikėjomės, todėl gilinomės į tyrimus būtent šioje dalyje. Straipsnio pabaigoje parodysiu, kiek mums pavyko pagerinti ALS, kuri buvo mūsų pradinė padėtis.

Prieš pradedant apibūdinti mūsų požiūrį, svarbu pažymėti, kad naudojant realiojo laiko rekomendacijas, kai mums svarbu atsižvelgti į duomenis, įvykusius prieš 30 minučių, tikrai nėra daug metodų, kurie galėtų veikti tinkamu laiku. Tačiau mūsų atveju rekomendacijas turime rinkti ne dažniau kaip kartą per dieną, o daugeliu atvejų - kartą per savaitę, o tai suteikia galimybę naudoti sudėtingus modelius ir padauginti kokybę.

Paimkime pradinį rodiklį, kokią kandidatų išgavimo užduotį rodo tik ALS. Pagrindinės mūsų stebimos metrikos yra šios:

  • Tikslumas – teisingai atrinktų kandidatų dalis iš atrinktų.
  • Prisiminkite – dalis kandidatų, kurie iš tikrųjų buvo tiksliniame intervale.
  • F1 balas – F balas, apskaičiuotas pagal ankstesnius du taškus.

Taip pat apžvelgsime galutinio modelio metrikas po gradiento didinimo su papildomomis turinio funkcijomis. Taip pat yra 3 pagrindiniai rodikliai:

  • precision@5 – vidutinis kiekvieno kliento paspaudimų procentas iš 5 geriausių pagal tikimybę.
  • response-rate@5 — pirkėjų konversija iš apsilankymo parduotuvėje į bent vieno asmeninio pasiūlymo pirkimą (viename pasiūlyme yra 5 prekės).
  • vid. roc-auc vienam naudotojui – vidutinė roc-auc kiekvienam pirkėjui.

Svarbu pažymėti, kad visi šie rodikliai yra matuojami kryžminis laiko eilučių patvirtinimas, tai yra, mokymai vyksta per pirmąsias k savaites, o k + 1 savaitės laikomos testo duomenimis. Taigi sezoniniai pakilimai/nuosmukiai modelių kokybės interpretavimui turėjo minimalų poveikį. Be to, visose diagramose abscisių ašis nurodys savaitės numerį kryžminio patvirtinimo metu, o ordinačių ašis nurodys nurodytos metrikos reikšmę. Visi grafikai yra pagrįsti vieno kliento sandorių duomenimis, todėl jų palyginimas yra teisingas.

Prieš pradėdami apibūdinti savo požiūrį, pirmiausia pažvelkime į pradinį modelį, kuris yra ALS apmokytas modelis.
Kandidatų ištraukimo metrika:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Galutinė metrika:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Visus algoritmų įgyvendinimus traktuoju kaip kažkokias verslo hipotezes. Taigi, labai apytiksliai, bet kokie bendradarbiavimo modeliai gali būti laikomi hipoteze, kad „žmonės linkę pirkti tai, ką perka jiems patinkantys žmonės“. Kaip jau sakiau, neapsiribojome tokia semantika, o štai kelios hipotezės, kurios vis dar puikiai veikia su duomenimis mažmeninėje prekyboje neprisijungus:

  1. Ką pirkote anksčiau.
  2. Panašus į tai, ką pirkau anksčiau.
  3. Seniai buvusio pirkimo laikotarpis.
  4. Populiarus pagal kategoriją / prekės ženklą.
  5. Alternatyvus skirtingų prekių pirkimas iš savaitės į savaitę (Markov tinklai).
  6. Panašūs gaminiai pirkėjams, atsižvelgiant į skirtingų modelių (Word2Vec, DSSM ir kt.) charakteristikas.

Ką pirkai anksčiau

Akivaizdžiausia euristika, kuri labai gerai veikia mažmeninėje bakalėjos prekyboje. Čia paimame visas prekes, kurias lojalumo kortelės turėtojas pirko per paskutines K dienas (dažniausiai 1-3 savaites), arba K dienas prieš metus. Taikydami tik šį metodą gauname tokią metriką:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Čia visiškai akivaizdu, kad kuo daugiau laikomės laikotarpio, tuo daugiau prisimename ir turime mažiau tikslumo ir atvirkščiai. Vidutiniškai geresni klientų rezultatai suteikia „paskutines 2 savaites“.

Panašus į tai, ką pirkau anksčiau

Nenuostabu, kad mažmeninei bakalėjos prekybai gerai veikia „kas pirko anksčiau“, tačiau ištraukti kandidatus tik iš to, ką vartotojas jau nusipirko, nėra labai šaunu, nes vargu ar pavyks nustebinti pirkėją kokiu nors nauju produktu. Todėl siūlome šiek tiek patobulinti šią euristiką naudojant tuos pačius bendradarbiavimo modelius. Iš vektorių, kuriuos gavome per ALS mokymus, galite gauti panašių produktų į tuos, kuriuos vartotojas jau nusipirko. Ši idėja labai panaši į „panašius vaizdo įrašus“ vaizdo turinio peržiūros paslaugose, tačiau kadangi mes nežinome, ką vartotojas valgo/perka konkrečiu momentu, galime ieškoti tik kažko panašaus tik į tai, ką jis jau nusipirko, ypač todėl, kad mes jau žinome, kaip gerai tai veikia. Taikydami šį metodą naudotojų operacijoms per pastarąsias 2 savaites, gauname tokią metriką:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Čia k - panašių prekių, kurios buvo paimtos kiekvienai pirkėjo pirktai prekei per pastarąsias 14 dienų, skaičius.
Šis metodas ypač gerai pasiteisino klientui, kuris labai norėjo nerekomenduoti to, kas jau buvo vartotojo pirkimo istorijoje.

Seniai praėjęs pirkimo laikotarpis

Kaip jau išsiaiškinome, dėl didelio prekių pirkimo dažnumo mūsų specifikai puikiai tinka pirmasis būdas. Bet kaip dėl tokių prekių kaip skalbimo milteliai/šampūnas/tt. Tai yra su produktais, kurių vargu ar prireiks kas savaitę ar dvi ir kurių nepavyks išgauti ankstesniais metodais. Tai reiškia tokią idėją – siūloma skaičiuoti kiekvienos prekės įsigijimo laikotarpį vidutiniškai pirkėjams, kurie prekę įsigijo daugiau k kartą. Ir tada ištraukite tai, ko greičiausiai pirkėjui jau pritrūko. Apskaičiuotų prekių terminų tinkamumą galite patikrinti akimis:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Ir tada žiūrėsime, ar produkto laikotarpio pabaiga patenka į tą laiko intervalą, kai bus gaminamos rekomendacijos, ir paimsime, kas patenka. Metodą galima iliustruoti taip:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Čia yra 2 pagrindiniai atvejai, kuriuos galima apsvarstyti:

  1. Ar pamėginti produktus klientams, kurie pirko produktą mažiau nei K kartų.
  2. Ar imti produkto mėginį, jei jo laikotarpio pabaiga yra anksčiau nei tikslinio intervalo pradžia.

Toliau pateiktoje diagramoje parodyta, kokius rezultatus toks metodas pasiekia naudojant skirtingus hiperparametrus:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
ft - Imti tik tuos pirkėjus, kurie prekę pirko bent K (čia K = 5) kartus
tm — Priimkite tik tuos kandidatus, kurie patenka į tikslinį intervalą

Nenuostabu, kad gali (0, 0) didžiausias prisiminti ir mažiausias tikslumas, nes pagal šią sąlygą išgaunama daugiausia kandidatų. Tačiau geriausi rezultatai pasiekiami, kai neatrenkame produktų, skirtų klientams, kurie nusipirko tam tikrą prekę mažiau nei k kartus ir, be kita ko, išskirkite prekes, kurių laikotarpio pabaiga yra prieš tikslinį intervalą.

Populiarus pagal kategoriją

Kita gana akivaizdi mintis – pamėginti populiarius produktus iš skirtingų kategorijų ar prekių ženklų. Čia skaičiuojame kiekvienam klientui top-k „mėgstamiausias“ kategorijas / prekės ženklus ir ištraukite „populiarų“ iš tos kategorijos / prekės ženklo. Mūsų atveju „mėgstamiausią“ ir „populiarų“ apibrėžiame pagal produktų pirkimų skaičių. Papildomas šio metodo privalumas yra jo pritaikymas šalto užvedimo atveju. Tai yra, klientams, kurie arba labai mažai pirko, arba ilgą laiką nebuvo parduotuvėje, arba apskritai išdavė tik lojalumo kortelę. Jiems lengviau ir geriausia įmesti prekes iš populiarių pirkėjų, turinčių esamą istoriją. Metrika yra tokia:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
Čia skaičius po žodžio „kategorija“ reiškia kategorijos įdėjimo lygį.

Apskritai nenuostabu, kad siauresnės kategorijos pasiekia geresnių rezultatų, nes išgauna tikslesnius pirkėjų „mėgstamiausius“ produktus.

Alternatyvus įvairių prekių pirkimas iš savaitės į savaitę

Įdomus požiūris, kurio nemačiau straipsniuose apie rekomendacijų sistemas, yra gana paprastas ir tuo pačiu veikiantis statistinis Markovo grandinių metodas. Čia užtrunkame 2 skirtingas savaites, tada kiekvienam klientui sukuriame produktų poras [pirkta i savaitę]-[pirkta j savaitę], kur j > i, o iš čia kiekvienam produktui skaičiuojame tikimybę kitą savaitę pereiti prie kito produkto. Tai yra, kiekvienai prekių porai producti-productj suskaičiuokite jų skaičių rastose porose ir padalinkite iš porų skaičiaus, kur Produktai buvo pirmą savaitę. Norėdami išgauti kandidatus, imame paskutinį pirkėjo čekį ir gauname top-k labiausiai tikėtini kiti produktai iš pereinamosios matricos, kurią gavome. Perėjimo matricos kūrimo procesas atrodo taip:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Iš realių pavyzdžių perėjimo tikimybių matricoje matome šiuos įdomius reiškinius:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
Čia galite pastebėti įdomių priklausomybių, kurios atsiskleidžia vartotojų elgesyje: pavyzdžiui, citrusinių vaisių mėgėjai ar pieno prekės ženklas, iš kurio jie greičiausiai pereina prie kito. Taip pat nenuostabu, kad čia taip pat atsiduria daug pakartotinai perkamų prekių, pavyzdžiui, sviesto.

Metodo su Markovo grandinėmis metrika yra tokia:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
k - produktų, kurie paimami kiekvienai prekei, įsigytai iš paskutinės pirkėjo operacijos, skaičius.
Kaip matome, konfigūracija su k=4 rodo geriausią rezultatą. 4-osios savaitės šuolį galima paaiškinti sezonišku elgesiu per šventes. 

Panašūs gaminiai pirkėjams, atsižvelgiant į skirtingų modelių charakteristikas

Taigi ateiname prie sunkiausios ir įdomiausios dalies – artimiausių kaimynų paieškos pirkėjų ir pagal įvairius modelius statomų gaminių vektoriuose. Savo darbe naudojame 3 tokius modelius:

  • ALS
  • „Word2Vec“ („Item2Vec“ tokioms užduotims)
  • DSSM

Mes jau susidūrėme su ALS, galite perskaityti, kaip jis mokosi čia. Word2Vec atveju naudojame gerai žinomą modelio įgyvendinimą iš gensim. Pagal analogiją su tekstais pasiūlymą apibrėžiame kaip pirkimo kvitą. Taigi, konstruodamas prekės vektorių, modelis išmoksta numatyti jo „kontekstą“ prekei kvite (likusios prekės kvite). El. prekybos duomenyse geriau naudoti pirkėjo seansą, o ne kvitą, vaikinai iš Ozonas. O DSSM išardyti įdomiau. Iš pradžių jį parašė „Microsoft“ vaikinai kaip paieškos modelį, originalų tyrimo straipsnį galite perskaityti čia. Modelio architektūra atrodo taip:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Čia Q - užklausa, vartotojo paieškos užklausa, D[i] - dokumentas, tinklalapis. Modelio įvestis gauna atitinkamai užklausos ir puslapių ženklus. Po kiekvieno įvesties sluoksnio seka keletas visiškai sujungtų sluoksnių (daugiasluoksnis perceptronas). Toliau modelis išmoksta sumažinti kosinusą tarp vektorių, gautų paskutiniuose modelio sluoksniuose.
Rekomendacijos užduotyse naudojama lygiai ta pati architektūra, tačiau vietoj užklausos yra vartotojas, o vietoj puslapių – produktai. O mūsų atveju ši architektūra paverčiama taip:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Dabar norint patikrinti rezultatus, belieka aprėpti paskutinį tašką – jei ALS ir DSSM atveju turime aiškiai apibrėžtus vartotojo vektorius, tai Word2Vec atveju turime tik produkto vektorius. Čia, norėdami sukurti vartotojo vektorių, nustatėme 3 pagrindinius metodus:

  1. Tiesiog pridėkite vektorius, tada kosinuso atstumo atveju paaiškėja, kad mes tiesiog apskaičiavome produktų vidurkį apsipirkimo istorijoje.
  2. Vektorių sumavimas su tam tikru laiko svoriu.
  3. Prekių svėrimas su TF-IDF koeficientu.

Tiesinio pirkėjo vektoriaus svorio atveju mes remiamės hipoteze, kad produktas, kurį vartotojas įsigijo vakar, turi didesnę įtaką jo elgesiui nei produktas, kurį jis nusipirko prieš šešis mėnesius. Taigi, praėjusią pirkėjo savaitę vertiname su koeficientu 1, o tai, kas nutiko toliau, su koeficientais ½, ⅓ ir kt.:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Su TF-IDF koeficientais darome lygiai taip pat, kaip ir TF-IDF tekstams, tik pirkėją laikome dokumentu, o čekį – pasiūlymu, atitinkamai žodis yra prekė. Taigi vartotojo vektorius labiau pasislinks retų prekių link, o dažnos ir pirkėjui pažįstamos prekės jo nelabai pakeis. Metodą galima iliustruoti taip:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Dabar pažvelkime į metrikas. Štai kaip atrodo ALS rezultatai:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
„Item2Vec“ metrika su skirtingais pirkėjo vektoriaus sudarymo variantais:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
Šiuo atveju naudojamas lygiai tas pats modelis, kaip ir mūsų bazinėje linijoje. Vienintelis skirtumas yra tas, kurį k naudosime. Norint naudoti tik bendradarbiavimo modelius, kiekvienam klientui tenka paimti apie 50-70 artimiausių produktų.

Ir DSSM metrika:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Kaip derinti visus metodus?

Šaunu, sakysite, bet ką daryti su tokiu dideliu kandidatų ištraukimo įrankių rinkiniu? Kaip pasirinkti optimalią konfigūraciją jūsų duomenims? Čia turime keletą problemų:

  1. Kiekviename metode reikia kažkaip apriboti hiperparametrų paieškos erdvę. Žinoma, jis visur yra diskretiškas, tačiau galimų taškų skaičius yra labai didelis.
  2. Kaip pasirinkti geriausią metrikos konfigūraciją naudojant nedidelį ribotą konkrečių metodų pavyzdį su konkrečiais hiperparametrais?

Kol kas neradome vienareikšmiškai teisingo atsakymo į pirmąjį klausimą, todėl tęsiame toliau nurodytus veiksmus: kiekvienam metodui rašomas hiperparametro paieškos erdvės ribotuvas, priklausomai nuo tam tikros mūsų turimų duomenų statistikos. Taigi, žinant vidutinį laikotarpį tarp pirkimų iš žmonių, galime spėti, su kuriuo laikotarpiu naudoti „kas jau nupirkta“ ir „seniai praėjusio pirkimo laikotarpis“ metodus.

Peržiūrėję tam tikrą skaičių skirtingų metodų variantų, atkreipiame dėmesį į tai: kiekvienas įgyvendinimas išskiria tam tikrą skaičių kandidatų ir turi tam tikrą mums svarbios metrikos (atsišaukimo) reikšmę. Norime iš viso gauti tam tikrą kandidatų skaičių, priklausomai nuo mūsų leistinos skaičiavimo galios, su kuo didesne metrika. Čia problema gražiai subyra į kuprinės problemą.
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Čia kandidatų skaičius yra luito svoris, o metodo atšaukimas yra jo vertė. Tačiau yra dar 2 punktai, į kuriuos reikėtų atsižvelgti įgyvendinant algoritmą:

  • Metodai gali sutapti kandidatuose, kuriuos jie ištraukia.
  • Kai kuriais atvejais bus teisinga vieną metodą naudoti du kartus su skirtingais parametrais, o kandidatai pirmojo išvestyje nebus antrojo poaibis.

Pavyzdžiui, jei paimsime metodą „kas jau nupirkta“ su skirtingais išgavimo intervalais, tada jų kandidatų rinkiniai bus įterpti vienas į kitą. Tuo pačiu metu skirtingi „periodinių pirkimų“ parametrai išvažiavime nesuteikia visiškos sankryžos. Todėl atrankos metodus su skirtingais parametrais suskirstome į blokus, kad iš kiekvieno bloko norime pasirinkti daugiausia vieną ištraukimo metodą su konkrečiais hiperparametrais. Norėdami tai padaryti, turite šiek tiek apgauti įgyvendindami kuprinės problemą, tačiau asimptotika ir rezultatas nuo to nepasikeis.

Toks sumanus derinys leidžia gauti tokią metriką, palyginti su tiesiog bendradarbiaujančiais modeliais:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
Galutinėje metrikoje matome tokį paveikslėlį:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Tačiau čia matosi, kad yra vienas neatskleistas taškas verslui naudingoms rekomendacijoms. Dabar mes ką tik išmokome, kaip šauniai nuspėti, ką vartotojas pirks, pavyzdžiui, kitą savaitę. Bet vien duoti nuolaidą, kad jis vis tiek pirks, nėra labai šaunu. Tačiau puiku maksimaliai padidinti lūkesčius, pavyzdžiui, dėl šios metrikos:

  1. Marža/apyvarta pagal asmenines rekomendacijas.
  2. Vidutinis pirkėjų patikrinimas.
  3. apsilankymų dažnumas.

Taigi gautas tikimybes padauginame iš skirtingų koeficientų ir jas perrikiuojame taip, kad viršuje būtų produktai, kurie turi įtakos aukščiau pateiktoms metrikoms. Čia nėra paruošto sprendimo, kurį metodą geriau naudoti. Netgi mes eksperimentuojame su tokiais koeficientais tiesiogiai gamyboje. Tačiau čia yra keletas įdomių gudrybių, kurios dažniausiai duoda geriausius rezultatus:

  1. Padauginkite iš prekės kainos / maržos.
  2. Padauginkite iš vidutinio čekio, kuriame pateikiamas produktas. Taigi išeis prekės, su kuriomis dažniausiai pasiima ką nors kita.
  3. Padauginkite iš vidutinio šios prekės pirkėjų lankymosi dažnumo, remiantis hipoteze, kad ši prekė sukelia dažnesnį jos grąžinimą.

Eksperimentuodami su koeficientais, gamyboje gavome tokius rodiklius:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje
Čia bendra produkto konversija - įsigytų produktų dalis iš visų produktų mūsų sugeneruotose rekomendacijose.

Dėmesingas skaitytojas pastebės didelį skirtumą tarp neprisijungus ir prisijungus naudojamų metrikų. Toks elgesys paaiškinamas tuo, kad treniruojant modelį galima atsižvelgti ne į visus dinaminius produktų filtrus, kuriuos galima rekomenduoti. Pas mus normali istorija, kai pusę išgautų kandidatų galima išfiltruoti, toks specifiškumas būdingas mūsų pramonei.

Kalbant apie pajamas, gaunama tokia istorija, aišku, kad po rekomendacijų paleidimo bandomosios grupės pajamos stipriai auga, dabar vidutinis pajamų augimas su mūsų rekomendacijomis yra 3-4%:
Kaip mes labai pagerinome rekomendacijų kokybę neprisijungus mažmeninėje prekyboje

Baigdamas noriu pasakyti, kad jei jums reikia rekomendacijų ne realiuoju laiku, tada labai didelis kokybės padidėjimas randamas eksperimentuose su kandidatų rekomendacijomis. Daug laiko joms generuoti leidžia derinti daugybę gerų metodų, kurie iš viso duos puikių rezultatų verslui.

Man bus malonu pabendrauti komentaruose su visais, kuriems medžiaga bus įdomi. Galite užduoti man klausimus asmeniškai telegrama. Taip pat dalinuosi savo mintimis apie AI/startupus savo telegramos kanalas - Sveiki atvykę 🙂

Šaltinis: www.habr.com

Добавить комментарий