{"id":71852,"date":"2020-02-28T20:59:58","date_gmt":"2020-02-28T17:59:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij"},"modified":"2020-03-03T16:14:08","modified_gmt":"2020-03-03T13:14:08","slug":"kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij","title":{"rendered":"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pavlov Parchomenko vagyok, ML-fejleszt\u0151. Ebben a cikkben szeretn\u00e9m bemutatni a Yandex Zen szolg\u00e1ltat\u00e1s m\u0171k\u00f6d\u00e9s\u00e9t, \u00e9s megosztani technikai fejleszt\u00e9seket, amelyek bevezet\u00e9se lehet\u0151v\u00e9 tette a aj\u00e1nl\u00e1sok min\u0151s\u00e9g\u00e9nek n\u00f6vel\u00e9s\u00e9t. A posztb\u00f3l megtudhatja, hogyan tal\u00e1lhat\u00f3k meg n\u00e9h\u00e1ny milliszekundum alatt a legrelev\u00e1nsabb dokumentumok a felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra a milli\u00f3k k\u00f6z\u00fcl; hogyan v\u00e9gezhet\u0151 el a nagy m\u00e1trix folyamatos felbont\u00e1sa (milli\u00f3 oszloppal \u00e9s t\u00f6bb t\u00edzmilli\u00f3 sorral), hogy az \u00faj dokumentumok vektort kapjanak n\u00e9h\u00e1ny percen bel\u00fcl; hogyan haszn\u00e1lhat\u00f3 \u00fajra a felhaszn\u00e1l\u00f3-cikk m\u00e1trix felbont\u00e1sa, hogy j\u00f3 vektori\u00e1lis reprezent\u00e1ci\u00f3t kapjunk a vide\u00f3khoz.<\/p>\n<p><img decoding=\"async\" alt=\"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n\" src=\"\/wp-content\/uploads\/2020\/02\/d63caf9162ca3533548fdef9cd740c24.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <br \/>\nAj\u00e1nl\u00f3rendszer\u00fcnk milli\u00f3 dokumentumot tartalmaz k\u00fcl\u00f6nb\u00f6z\u0151 form\u00e1tumban: sz\u00f6veges cikkek, amelyeket a platformunkon k\u00e9sz\u00edtettek \u00e9s k\u00fcls\u0151 webhelyekr\u0151l vettek, vide\u00f3k, narrat\u00edv\u00e1k \u00e9s r\u00f6vid posztok. Az ilyen jelleg\u0171 szolg\u00e1ltat\u00e1s fejleszt\u00e9se sz\u00e1mos technikai kih\u00edv\u00e1st hoz. \u00cdme n\u00e9h\u00e1ny k\u00f6z\u00fcl\u00fck:<\/p>\n<ul>\n<li>A sz\u00e1m\u00edt\u00e1si feladatok sz\u00e9tv\u00e1laszt\u00e1sa: minden neh\u00e9z m\u0171veletet offline v\u00e9gezni, m\u00edg val\u00f3s id\u0151ben csak a modellek gyors alkalmaz\u00e1s\u00e1t v\u00e9gezni, hogy 100-200 ms-ra v\u00e1laszoljunk.<\/li>\n<li>Gyorsan figyelembe venni a felhaszn\u00e1l\u00f3i tev\u00e9kenys\u00e9geket. Ehhez sz\u00fcks\u00e9ges, hogy minden esem\u00e9ny azonnal eljusson az aj\u00e1nl\u00f3ba, \u00e9s hat\u00e1ssal legyen a modellek m\u0171k\u00f6d\u00e9s\u00e9re.<\/li>\n<li>Olyan h\u00edrfolyam l\u00e9trehoz\u00e1sa, amely gyorsan alkalmazkodik az \u00faj felhaszn\u00e1l\u00f3k viselked\u00e9s\u00e9hez. A rendszerbe frissen \u00e9rkez\u0151 embereknek \u00e9rezni\u00fck kell, hogy visszajelz\u00e9s\u00fck hat\u00e1ssal van az aj\u00e1nl\u00e1sokra.<\/li>\n<li>Gyorsan meg\u00e9rteni, kinek aj\u00e1nljunk \u00faj cikket.<\/li>\n<li>Gyorsan reag\u00e1lni az \u00faj tartalom folyamatos megjelen\u00e9s\u00e9re. Naponta t\u00f6bb t\u00edzezer cikk jelenik meg, \u00e9s soknak korl\u00e1tozott \u00e9lettartama van (p\u00e9ld\u00e1ul a h\u00edrek). Ez k\u00fcl\u00f6nb\u00f6zteti meg \u0151ket a filmekt\u0151l, zen\u00e9t\u0151l \u00e9s m\u00e1s hosszan tart\u00f3 \u00e9s dr\u00e1g\u00e1n el\u0151\u00e1ll\u00edtott tartalmakt\u00f3l.<\/li>\n<li>Tud\u00e1st \u00e1tvinni egy dom\u00e9nb\u0151l a m\u00e1sikba. Ha az aj\u00e1nl\u00f3rendszernek vannak kik\u00e9pzett modelljei sz\u00f6veges cikkekre, \u00e9s vide\u00f3kat adunk hozz\u00e1, akkor a megl\u00e9v\u0151 modellek \u00faj t\u00edpus\u00fa tartalom jobb rangsorol\u00e1s\u00e1hoz is \u00fajra felhaszn\u00e1lhat\u00f3k.<\/li>\n<\/ul>\n<p>\nElmondom, hogyan oldottuk meg ezeket a feladatokat.<\/p>\n<h2>Jel\u00f6ltek kiv\u00e1laszt\u00e1sa<\/h2>\n<p>\n<b>Hogyan lehet n\u00e9h\u00e1ny milliszekundum alatt jelent\u0151sen cs\u00f6kkenteni a dokumentumok sz\u00e1m\u00e1t an\u00e9lk\u00fcl, hogy gyakorlatilag rontan\u00e1nk a rangsorol\u00e1s min\u0151s\u00e9g\u00e9n?<\/b><\/p>\n<p>Tegy\u00fck fel, hogy sok ML-modellt betan\u00edtottunk, \u00e9s ezek alapj\u00e1n jellemz\u0151ket gener\u00e1ltunk, majd betan\u00edtottunk egy m\u00e1sik modellt, amely a felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra rangsorolja a dokumentumokat. Minden rendben lenne, de nem lehet egyszer\u0171en az \u00f6sszes jellemz\u0151t kisz\u00e1m\u00edtani minden dokumentumra val\u00f3s id\u0151ben, ha ezek a dokumentumok milli\u00f3sz\u00e1mra vannak, \u00e9s a javaslatokat 100-200 ms alatt kell elk\u00e9sz\u00edteni. A feladat az, hogy a milli\u00f3k k\u00f6z\u00fcl kiv\u00e1lasszunk egy r\u00e9szhalmazt, amelyet rangsorolni fogunk a felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra. Ezt a l\u00e9p\u00e9st \u00e1ltal\u00e1ban jel\u00f6lt- vagy kandid\u00e1l\u00f3 kiv\u00e1laszt\u00e1snak h\u00edvj\u00e1k. Ennek t\u00f6bb k\u00f6vetelm\u00e9nye van. El\u0151sz\u00f6r is, a kiv\u00e1laszt\u00e1snak rendk\u00edv\u00fcl gyorsan kell t\u00f6rt\u00e9nnie, hogy a rangsorol\u00e1sra a lehet\u0151 legt\u00f6bb id\u0151 maradjon. M\u00e1sodszor, a rangsorol\u00e1sra sz\u00e1nt dokumentumok sz\u00e1m\u00e1nak jelent\u0151s cs\u00f6kkent\u00e9se mellett maxim\u00e1lisan meg kell \u0151rizn\u00fcnk a felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra relev\u00e1ns dokumentumokat.<\/p>\n<p>Kandid\u00e1l\u00f3 kiv\u00e1laszt\u00e1si elv\u00fcnk fokozatosan fejl\u0151d\u00f6tt, \u00e9s jelenleg egy t\u00f6bb l\u00e9pcs\u0151s rendszerhez jutottunk:<\/p>\n<p><img decoding=\"async\" alt=\"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n\" src=\"\/wp-content\/uploads\/2020\/02\/ed9657ed1febe871f36dc7cf7e585963.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKezdetben az \u00f6sszes dokumentumot csoportokra osztjuk, \u00e9s minden csoportb\u00f3l a legn\u00e9pszer\u0171bb dokumentumokat vessz\u00fck. A csoportok lehetnek weboldalak, t\u00e9m\u00e1k vagy klaszterek. Minden felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra az \u0151 t\u00f6rt\u00e9nete alapj\u00e1n a legk\u00f6zelebb \u00e1ll\u00f3 csoportokat v\u00e1lasztjuk ki, \u00e9s ezekb\u0151l vessz\u00fck a legjobb dokumentumokat. Emellett kNN-indexet is haszn\u00e1lunk, hogy a felhaszn\u00e1l\u00f3hoz legk\u00f6zelebb \u00e1ll\u00f3 dokumentumokat val\u00f3s id\u0151ben kiv\u00e1lasszuk. A kNN-index fel\u00e9p\u00edt\u00e9s\u00e9nek t\u00f6bb m\u00f3dszere l\u00e9tezik, sz\u00e1munkra a legjobban m\u0171k\u00f6d\u00f6tt: <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1603.09320\">HNSW<\/a><\/noindex> (Hierarchical Navigable Small World grafikonok). Ez egy hierarchikus modell, amely lehet\u0151v\u00e9 teszi, hogy n\u00e9h\u00e1ny milliszekundum alatt megtal\u00e1ljuk a felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra legk\u00f6zelebbi N vektort egy milli\u00f3s adatb\u00e1zisb\u00f3l. El\u0151zetesen offline index\u00e1ljuk az \u00f6sszes dokumentumunkat. Mivel az indexben a keres\u00e9s el\u00e9g gyorsan m\u0171k\u00f6dik, ha t\u00f6bb er\u0151s embedder \u00e1ll rendelkez\u00e9sre, k\u00e9sz\u00edthet\u00fcnk t\u00f6bb indexet (minden embedderhez egy indexet), \u00e9s minden egyes indexhez val\u00f3s id\u0151ben hozz\u00e1f\u00e9rhet\u00fcnk.<\/p>\n<p>T\u00f6bb t\u00edzezer dokumentum marad a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra. Ez m\u00e9g mindig sok a jellemz\u0151k \u00f6sszesz\u00e1ml\u00e1l\u00e1s\u00e1hoz, \u00edgy ezen a ponton k\u00f6nny\u00edtett rangsorol\u00e1st alkalmazunk - egy nehezebb rangsor k\u00f6nny\u00edtett modellj\u00e9t, kevesebb jellemz\u0151vel. A feladat az, hogy megj\u00f3soljuk, mely dokumentumok szerepelnek a neh\u00e9z modell legjobb helyein. A legmagasabb predikci\u00f3val rendelkez\u0151 dokumentumokat haszn\u00e1ljuk a neh\u00e9z modellben, teh\u00e1t a rangsorol\u00e1s utols\u00f3 szakasz\u00e1ban. Ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy n\u00e9h\u00e1ny tizedm\u00e1sodperc alatt a felhaszn\u00e1l\u00f3nak sz\u00e1nt dokumentumok alapj\u00e1t a milli\u00f3kr\u00f3l ezerre cs\u00f6kkents\u00fck.<\/p>\n<h2>ALS l\u00e9p\u00e9s fut\u00e1si id\u0151ben<\/h2>\n<p>\n<b>Hogyan lehet figyelembe venni a felhaszn\u00e1l\u00f3i visszajelz\u00e9st azonnal kattint\u00e1s ut\u00e1n?<\/b><\/p>\n<p>Fontos t\u00e9nyez\u0151 a javaslatokban a felhaszn\u00e1l\u00f3i visszajelz\u00e9sre val\u00f3 reakci\u00f3 id\u0151. Ez k\u00fcl\u00f6n\u00f6sen fontos \u00faj felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra: amikor valaki \u00e9ppen csak elkezdi haszn\u00e1lni az aj\u00e1nl\u00f3 rendszert, egy nem szem\u00e9lyre szabott, k\u00fcl\u00f6nb\u00f6z\u0151 tematik\u00e1j\u00fa dokumentumokb\u00f3l \u00e1ll\u00f3 men\u00fct kap. Amint az els\u0151 kattint\u00e1st v\u00e9grehajtja, ezt azonnal figyelembe kell venni \u00e9s a preferenci\u00e1ihoz igazodni. Ha minden t\u00e9nyez\u0151t offline sz\u00e1m\u00edtunk, a rendszer gyors reakci\u00f3ja lehetetlenn\u00e9 v\u00e1lik a k\u00e9sleltet\u00e9s miatt. Ez\u00e9rt a felhaszn\u00e1l\u00f3i tev\u00e9kenys\u00e9geket val\u00f3s id\u0151ben kell feldolgozni. E c\u00e9lokra fut\u00e1si id\u0151ben ALS l\u00e9p\u00e9st haszn\u00e1lunk a felhaszn\u00e1l\u00f3i vektor\u00e1lis reprezent\u00e1ci\u00f3 kialak\u00edt\u00e1s\u00e1hoz.<\/p>\n<p>Tegy\u00fck fel, hogy minden dokumentumnak van vektor\u00e1lis reprezent\u00e1ci\u00f3ja. P\u00e9ld\u00e1ul offline, a cikk sz\u00f6vege alapj\u00e1n l\u00e9trehozhatjuk az embeddingeket ELMo, BERT vagy m\u00e1s g\u00e9pi tanul\u00e1si modellek seg\u00edts\u00e9g\u00e9vel. Hogyan lehet a felhaszn\u00e1l\u00f3k vektor\u00e1lis reprezent\u00e1ci\u00f3j\u00e1t ugyanabban a t\u00e9rben megszerezni az interakci\u00f3ik alapj\u00e1n a rendszerben?<\/p>\n<p><b class=\"spoiler_title\">A felhaszn\u00e1l\u00f3-dokumentum m\u00e1trix form\u00e1l\u00e1s\u00e1nak \u00e9s lebont\u00e1s\u00e1nak \u00e1ltal\u00e1nos elve<\/b>Legyen m felhaszn\u00e1l\u00f3nk \u00e9s n dokumentumunk. N\u00e9h\u00e1ny felhaszn\u00e1l\u00f3 eset\u00e9ben ismert a dokumentumokkal kapcsolatos viszonyuk. Ezt az inform\u00e1ci\u00f3t egy m x n m\u00e1trix form\u00e1j\u00e1ban lehet megjelen\u00edteni: a sorok a felhaszn\u00e1l\u00f3knak, az oszlopok a dokumentumoknak felelnek meg. Mivel a legt\u00f6bb dokumentumot az emberek nem l\u00e1tt\u00e1k, a m\u00e1trix nagy r\u00e9sze \u00fcresen marad, m\u00edg m\u00e1s cell\u00e1k ki lesznek t\u00f6ltve. Minden esem\u00e9nyhez (tetszik, nem tetszik, kattint\u00e1s) a m\u00e1trixban van valamilyen \u00e9rt\u00e9k \u2013 de vizsg\u00e1ljunk meg egy egyszer\u0171s\u00edtett modellt, ahol a tetszik 1-nek, a nem tetszik pedig -1-nek felel meg.<\/p>\n<p>Bontsuk a m\u00e1trixot k\u00e9t r\u00e9szre: P (m x d) \u00e9s Q (d x n), ahol d a vektoresem\u00e9ny dimenzi\u00f3ja (\u00e1ltal\u00e1ban ez egy kis sz\u00e1m). Ekkor minden objektumhoz d-dimenzi\u00f3s vektor fog tartozni (a felhaszn\u00e1l\u00f3nak a P m\u00e1trix sor\u00e1ban, a dokumentumnak a Q m\u00e1trix oszlop\u00e1ban). Ezek a vektorok szolg\u00e1lnak az adott objektumok be\u00e1gyaz\u00e1sak\u00e9nt. Ahhoz, hogy el\u0151re jelezz\u00fck, hogy egy felhaszn\u00e1l\u00f3nak tetszeni fog-e a dokumentum, egyszer\u0171en megszorozzuk \u0151ket be\u00e1gyaz\u00e1saikkal.<\/p>\n<p><img decoding=\"async\" alt=\"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n\" src=\"\/wp-content\/uploads\/2020\/02\/a0c721bccb3806f2c4a18693a9458a89.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA m\u00e1trix egy lehets\u00e9ges felbont\u00e1si m\u00f3dja az ALS (Alternating Least Squares). Az al\u00e1bbi vesztes\u00e9gf\u00fcggv\u00e9nyt fogjuk optimaliz\u00e1lni:<\/p>\n<p><img decoding=\"async\" alt=\"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n\" src=\"\/wp-content\/uploads\/2020\/02\/aab8a1ae1cdf39de21e7469864c5190a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nItt rui a felhaszn\u00e1l\u00f3 u \u00e9s az i dokumentum k\u00f6z\u00f6tti interakci\u00f3, qi az i dokumentum vektora, pu pedig a felhaszn\u00e1l\u00f3 u vektora.<\/p>\n<p>Ez\u00e9rt a k\u00f6z\u00e9p\u00e9rt\u00e9k n\u00e9gyzetes hiba szempontj\u00e1b\u00f3l optim\u00e1lis felhaszn\u00e1l\u00f3i vektor (a dokumentum vektorok r\u00f6gz\u00edt\u00e9se mellett) analitikusan tal\u00e1lhat\u00f3 meg a megfelel\u0151 line\u00e1ris regresszi\u00f3 megold\u00e1s\u00e1val.<\/p>\n<p>Ezt \"ALS l\u00e9p\u00e9snek\" h\u00edvj\u00e1k. Az ALS algoritmus abban \u00e1ll, hogy felv\u00e1ltva r\u00f6gz\u00edtj\u00fck az egyik m\u00e1trixot (felhaszn\u00e1l\u00f3k \u00e9s cikkek) \u00e9s friss\u00edtj\u00fck a m\u00e1sikat, keresve az optim\u00e1lis megold\u00e1st.<\/p>\n<p>Szerencs\u00e9re a felhaszn\u00e1l\u00f3i vektorok megtal\u00e1l\u00e1sa egy viszonylag gyors m\u0171velet, amelyet fut\u00e1si id\u0151ben el lehet v\u00e9gezni vektoros utas\u00edt\u00e1sok seg\u00edts\u00e9g\u00e9vel. Ez a tr\u00fckk lehet\u0151v\u00e9 teszi, hogy azonnal figyelembe vegy\u00fck a felhaszn\u00e1l\u00f3i visszajelz\u00e9st a rangsorol\u00e1s sor\u00e1n. Ugyanez a be\u00e1gyaz\u00e1s felhaszn\u00e1lhat\u00f3 a kNN-indexben a jel\u00f6ltek sz\u0171r\u00e9s\u00e9nek jav\u00edt\u00e1s\u00e1ra.<\/p>\n<h2>Elosztott kollaborat\u00edv sz\u0171r\u00e9s<\/h2>\n<p>\n<b>Hogyan v\u00e9gezz\u00fcnk inkrement\u00e1lis elosztott m\u00e1trix faktor\u00e1l\u00e1st, \u00e9s gyorsan tal\u00e1ljunk vektork\u00e9pviseletet \u00faj cikkekhez?<\/b><\/p>\n<p>A tartalom nem az egyetlen forr\u00e1sa a javaslatoknak. Egy m\u00e1sik fontos forr\u00e1s a kooperat\u00edv inform\u00e1ci\u00f3. A j\u00f3 rangsorol\u00e1si jelek hagyom\u00e1nyosan a felhaszn\u00e1l\u00f3-dokumentum m\u00e1trix sz\u00e9tszed\u00e9s\u00e9b\u0151l sz\u00e1rmaznak. Azonban amikor megpr\u00f3b\u00e1ltuk ezt a sz\u00e9tszed\u00e9st v\u00e9grehajtani, probl\u00e9m\u00e1kba \u00fctk\u00f6zt\u00fcnk:<\/p>\n<p>1. M\u0171velet\u00fcnkben milli\u00f3nyi dokumentum \u00e9s t\u00edzmilli\u00f3 felhaszn\u00e1l\u00f3 van. A m\u00e1trix nem f\u00e9r el egy g\u00e9pen, r\u00e1ad\u00e1sul a sz\u00e9tszed\u00e9s nagyon hosszadalmas lenne.<br \/>\n2. A rendszer tartalm\u00e1nak t\u00f6bbs\u00e9ge r\u00f6vid \u00e9let\u0171: a dokumentumok csak n\u00e9h\u00e1ny \u00f3r\u00e1n \u00e1t relev\u00e1nsak. Ez\u00e9rt min\u00e9l gyorsabban kell l\u00e9trehozni a vektoros reprezent\u00e1ci\u00f3jukat.<br \/>\n3. Ha a dokumentum k\u00f6zz\u00e9t\u00e9tele ut\u00e1n k\u00f6zvetlen\u00fcl v\u00e9gezz\u00fck el a sz\u00e9tszed\u00e9st, nem lesz elegend\u0151 id\u0151, hogy a felhaszn\u00e1l\u00f3k meg\u00edt\u00e9lj\u00e9k azt. \u00cdgy a vektoros reprezent\u00e1ci\u00f3 val\u00f3sz\u00edn\u0171leg nem lesz valami j\u00f3.<br \/>\n4. Ha egy felhaszn\u00e1l\u00f3 like-ot vagy dislike-ot ad, ezt azonnal nem tudjuk figyelembe venni a sz\u00e9tszed\u00e9sben.<\/p>\n<p>A felsorolt probl\u00e9m\u00e1k megold\u00e1s\u00e1hoz v\u00e9grehajtottuk a felhaszn\u00e1l\u00f3-dokumentum m\u00e1trix eloszt\u00e1s\u00e1t gyakori inkrement\u00e1lis friss\u00edt\u00e9ssel. Hogyan m\u0171k\u00f6dik ez pontosan?<\/p>\n<p>Tegy\u00fck fel, hogy van egy N g\u00e9pb\u0151l \u00e1ll\u00f3 klaszter\u00fcnk (N sz\u00e1mos a sz\u00e1zakban), \u00e9s el szeretn\u00e9nk v\u00e9gezni egy elosztott sz\u00e9tszed\u00e9st egy olyan m\u00e1trixon, amely nem f\u00e9r el egy g\u00e9pen. A k\u00e9rd\u00e9s \u2014 hogyan lehet ezt a sz\u00e9tszed\u00e9st v\u00e9grehajtani \u00fagy, hogy egyr\u00e9szt minden g\u00e9pen elegend\u0151 adat legyen, m\u00e1sr\u00e9szt pedig a sz\u00e1m\u00edt\u00e1sok f\u00fcggetlenek maradjanak? <\/p>\n<p><img decoding=\"async\" alt=\"Hogyan dolgozunk a min\u0151s\u00e9g \u00e9s a sebess\u00e9g jav\u00edt\u00e1s\u00e1n a aj\u00e1nl\u00e1sok ter\u00e9n\" src=\"\/wp-content\/uploads\/2020\/02\/9170b0fecb6efcd41754ec20ee539a15.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz el\u0151z\u0151leg le\u00edrt ALS sz\u00e9tszed\u00e9si algoritmust fogjuk haszn\u00e1lni. N\u00e9zz\u00fck meg, hogyan lehet elosztott m\u00f3don v\u00e9grehajtani egy l\u00e9p\u00e9st az ALS-b\u0151l \u2014 a t\u00f6bbi l\u00e9p\u00e9s hasonl\u00f3 lesz. Tegy\u00fck fel, hogy a dokumentumm\u00e1trixunk r\u00f6gz\u00edtett, \u00e9s az felhaszn\u00e1l\u00f3i m\u00e1trixot szeretn\u00e9nk l\u00e9trehozni. Ehhez felosztjuk N r\u00e9szre sorok szerint, mindegyik r\u00e9sz k\u00f6r\u00fclbel\u00fcl azonos sz\u00e1m\u00fa sorral fog b\u00edrni. Az \u00f6sszes g\u00e9pre megfelel\u00f5 sorok nem \u00fcres cell\u00e1it \u00e9s a dokumentumok embedding m\u00e1trix\u00e1t (teljes eg\u00e9sz\u00e9ben) elk\u00fcldj\u00fck. Mivel annak m\u00e9rete nem t\u00fal nagy, m\u00edg a felhaszn\u00e1l\u00f3-dokumentum m\u00e1trix \u00e1ltal\u00e1ban er\u0151sen sz\u00f3rt, ezek az adatok elf\u00e9rnek egy hagyom\u00e1nyos g\u00e9pen.<\/p>\n<p>Ez a tr\u00fckk t\u00f6bb kor sor\u00e1n kereszt\u00fcl megism\u00e9telhet\u0151 a modell konvergenci\u00e1j\u00e1nak el\u00e9r\u00e9s\u00e9ig, fokozatosan v\u00e1ltoztatva a r\u00f6gz\u00edtett m\u00e1trixon. De m\u00e9g \u00edgy is a m\u00e1trix felbont\u00e1sa \u00f3r\u00e1kig tarthat. \u00c9s ez nem oldja meg a probl\u00e9m\u00e1t, hogy gyorsan kell megtartani az \u00faj dokumentumok be\u00e1gyaz\u00e1s\u00e1t, valamint friss\u00edteni azokat a be\u00e1gyaz\u00e1sokat, amelyekr\u0151l kev\u00e9s inform\u00e1ci\u00f3 \u00e1llt rendelkez\u00e9sre a modell ki\u00e9p\u00edt\u00e9sekor. <\/p>\n<p>Seg\u00edtett nek\u00fcnk a modell gyors inkrement\u00e1lis friss\u00edt\u00e9s\u00e9nek bevezet\u00e9se. Tegy\u00fck fel, hogy van egy jelenlegi betan\u00edtott modell\u00fcnk. A betan\u00edt\u00e1sa \u00f3ta \u00faj cikkek jelentek meg, amelyekkel a felhaszn\u00e1l\u00f3ink interakci\u00f3ba l\u00e9ptek, \u00e9s olyan cikkek, amelyek betan\u00edt\u00e1s k\u00f6zben kev\u00e9s interakci\u00f3t kaptak. Az ilyen cikkek gyors be\u00e1gyaz\u00e1s\u00e1nak el\u00e9r\u00e9s\u00e9hez haszn\u00e1ljuk a felhaszn\u00e1l\u00f3k be\u00e1gyaz\u00e1sait, amelyek az els\u0151 nagyobb modellbetan\u00edt\u00e1s sor\u00e1n k\u00e9sz\u00fcltek, \u00e9s egy ALS l\u00e9p\u00e9st v\u00e9gz\u00fcnk, hogy a dokumentumok m\u00e1trix\u00e1t kisz\u00e1molhassuk egy r\u00f6gz\u00edtett felhaszn\u00e1l\u00f3i m\u00e1trixon. Ez lehet\u0151v\u00e9 teszi sz\u00e1munkra, hogy a be\u00e1gyaz\u00e1sokat meglehet\u0151sen gyorsan \u2014 n\u00e9h\u00e1ny percen bel\u00fcl a dokumentum k\u00f6zz\u00e9t\u00e9tele ut\u00e1n \u2014 megszerezz\u00fck, \u00e9s gyakran friss\u00edts\u00fck a friss dokumentumok be\u00e1gyaz\u00e1sait.<\/p>\n<p>Annak \u00e9rdek\u00e9ben, hogy a javaslatok sor\u00e1n az emberi tev\u00e9kenys\u00e9geket azonnal figyelembe vegy\u00fck, a fut\u00e1si id\u0151ben nem haszn\u00e1lunk offline k\u00f6rnyezetb\u0151l sz\u00e1rmaz\u00f3 felhaszn\u00e1l\u00f3i be\u00e1gyaz\u00e1sokat. Ehelyett ALS l\u00e9p\u00e9st v\u00e9gz\u00fcnk, \u00e9s megkapjuk a felhaszn\u00e1l\u00f3 aktu\u00e1lis vektort.<\/p>\n<h2>\u00c1thelyez\u00e9s egy m\u00e1sik dom\u00e9nbe<\/h2>\n<p>\n<b>Hogyan haszn\u00e1lhat\u00f3 a felhaszn\u00e1l\u00f3i visszajelz\u00e9s a sz\u00f6veges cikkekhez a vide\u00f3k vektoralap\u00fa reprezent\u00e1ci\u00f3j\u00e1nak fel\u00e9p\u00edt\u00e9s\u00e9re?<\/b><\/p>\n<p>Eredetileg csak sz\u00f6veges cikkeket aj\u00e1nlottunk, ez\u00e9rt sok algoritmusunk erre a tartalom t\u00edpusra van optimaliz\u00e1lva. De amikor m\u00e1s t\u00edpus\u00fa tartalmakat adtunk hozz\u00e1, a modellek adapt\u00e1ci\u00f3j\u00e1nak sz\u00fcks\u00e9gess\u00e9g\u00e9vel szembes\u00fclt\u00fcnk. Hogyan oldottuk meg ezt a feladatot a vide\u00f3k eset\u00e9ben? Az egyik lehet\u0151s\u00e9g az, hogy az \u00f6sszes modellt a null\u00e1r\u00f3l \u00fajra betan\u00edtjuk. De ez id\u0151ig\u00e9nyes, r\u00e1ad\u00e1sul egyes algoritmusok ig\u00e9nyesek a tanul\u00e1si minta nagys\u00e1g\u00e1ra, amelyb\u0151l az \u00faj t\u00edpus\u00fa tartalom eset\u00e9ben az els\u0151 pillanatokban m\u00e9g nem \u00e1ll rendelkez\u00e9sre a sz\u00fcks\u00e9ges mennyis\u00e9g.<\/p>\n<p>M\u00e1s k\u00fcl\u00f6nb\u00f6z\u0151 utat v\u00e1lasztottunk, \u00e9s \u00fajra felhaszn\u00e1ltuk a vide\u00f3sz\u00f6vegmodelleket. A vide\u00f3k vektoros reprezent\u00e1ci\u00f3j\u00e1nak l\u00e9trehoz\u00e1s\u00e1ban ugyanaz a tr\u00fckk seg\u00edtett az ALS-szel. A felhaszn\u00e1l\u00f3i vektoros reprezent\u00e1ci\u00f3t sz\u00f6veges cikkek alapj\u00e1n vett\u00fck, \u00e9s ALS l\u00e9p\u00e9st hajtottunk v\u00e9gre a vide\u00f3megtekint\u00e9sekr\u0151l sz\u00e1rmaz\u00f3 inform\u00e1ci\u00f3k felhaszn\u00e1l\u00e1s\u00e1val. \u00cdgy k\u00f6nnyen megkaptuk a vide\u00f3 vektoros reprezent\u00e1ci\u00f3j\u00e1t. Fut\u00e1sid\u0151ben egyszer\u0171en kisz\u00e1m\u00edtjuk a k\u00f6zels\u00e9get a felhaszn\u00e1l\u00f3i vektor \u00e9s a vide\u00f3 vektora k\u00f6z\u00f6tt.<\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nA val\u00f3s idej\u0171 aj\u00e1nl\u00f3rendszer magj\u00e1nak fejleszt\u00e9se sz\u00e1mos feladattal j\u00e1r. Gyorsan kell feldolgozni az adatokat, \u00e9s ML-m\u00f3dszereket kell alkalmazni ezek hat\u00e9kony felhaszn\u00e1l\u00e1s\u00e1hoz; bonyolult elosztott rendszereket kell \u00e9p\u00edteni, amelyek minim\u00e1lis id\u0151 alatt k\u00e9pesek feldolgozni a felhaszn\u00e1l\u00f3i jeleket \u00e9s az \u00faj tartalmi egys\u00e9geket; \u00e9s m\u00e9g sok m\u00e1s feladat.<\/p>\n<p>A megl\u00e9v\u0151 rendszerben, amelynek fel\u00e9p\u00edt\u00e9s\u00e9t le\u00edrtam, a felhaszn\u00e1l\u00f3i aj\u00e1nl\u00e1sok min\u0151s\u00e9ge n\u0151 a aktivit\u00e1ssal \u00e9s a szolg\u00e1ltat\u00e1sban elt\u00f6lt\u00f6tt id\u0151vel. \u00c1m itt rejlik a legf\u0151bb neh\u00e9zs\u00e9g is: a rendszernek neh\u00e9z azonnal meg\u00e9rteni egy olyan szem\u00e9ly \u00e9rdekl\u0151d\u00e9si k\u00f6r\u00e9t, aki alig l\u00e9pett interakci\u00f3ba a tartalommal. Az \u00faj felhaszn\u00e1l\u00f3k aj\u00e1nl\u00e1sainak jav\u00edt\u00e1sa a kulcsfontoss\u00e1g\u00fa feladatunk. Tov\u00e1bbra is optimaliz\u00e1lni fogjuk az algoritmusokat, hogy a sz\u00e1mukra relev\u00e1ns tartalom gyorsabban eljusson az \u0151 h\u00edrfolyamukba, m\u00edg a nem relev\u00e1ns ne jelenjen meg.<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/490140\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u041f\u0430\u0440\u0445\u043e\u043c\u0435\u043d\u043a\u043e, \u044f ML-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0437\u0435\u043d \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439. \u0418\u0437 \u043f\u043e\u0441\u0442\u0430 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u043e \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f; \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b (\u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438\u0437 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71853,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u041f\u0430\u0440\u0445\u043e\u043c\u0435\u043d\u043a\u043e, \u044f ML-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0437\u0435\u043d \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u041f\u0430\u0440\u0445\u043e\u043c\u0435\u043d\u043a\u043e, \u044f ML-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0437\u0435\u043d \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-28T17:59:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Hogyan dolgozunk a aj\u00e1nl\u00e1sok min\u0151s\u00e9g\u00e9nek \u00e9s sebess\u00e9g\u00e9nek jav\u00edt\u00e1s\u00e1n | ProHoster","description":"A nevem Pavel Parkhomenko, ML-fejleszt\u0151 vagyok. Ebben a cikkben szeretn\u00e9m bemutatni a Yandex.Zen szolg\u00e1ltat\u00e1s fel\u00e9p\u00edt\u00e9s\u00e9t, \u00e9s megosztani a technikai fejleszt\u00e9seket, amelyek jav\u00edtott\u00e1k az aj\u00e1nl\u00e1sok min\u0151s\u00e9g\u00e9t.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u041f\u0430\u0440\u0445\u043e\u043c\u0435\u043d\u043a\u043e, \u044f ML-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0437\u0435\u043d \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-my-rabotaem-nad-kachestvom-i-skorostyu-podbora-rekomendaczij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-28T17:59:58+00:00","article:modified_time":"2020-03-03T13:14:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71852","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:55:28","updated":"2022-10-09 15:47:56","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/71852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=71852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/71852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/71853"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=71852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=71852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=71852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}