[Přehrávání hudby] BRAIN SCASSELLATI: Vítejte k sérii CS50 AI. Jmenuji se Scass, a dnes budeme mluvit o doporučující systémy. Nyní Doporučující systémy zvuky jako druh podivné jméno. Zní to, jako by snad mělo být doporučení systémy, a nějak jsem s vámi souhlasím. Ale to jsou systémy, které pomáhají vyberte z podobné věci, kdykoli je to vyberete něco online. Netflix, například navrhne další filmy, které budete chtít sledovat. Nebo Pandora navrhne jiný Písně, které budete chtít poslouchat. Amazon navrhne, jaké druhy ostatní výrobky budete chtít koupit. Facebook bude dokonce naznačují, některé z dalších přátel že budete chtít přidat. Každý z těchto systémů pracují na bázi stejné základní druh algoritmu, a to je to, co jsme mluvit o dnes. Nyní tyto algoritmy jsou Překvapivě velký byznys. Netflix před několika lety v 2.009 nabídl 1.000.000 $ Cenu kdybyste mohl zlepšit jejich Doporučení systém o pouhých 10%. , Že 10%, i když, představuje podstatná část obchodu. Odhady jsou těžké přijít, ale mnoho lidí věří, že tyto doporučení Systémy pro on-line nákupy systém, jako je Amazon vedou k někam mezi 10% a 25% zvýšení výnosu. Takže si můžete představit druh svazku, který jste mluví o tom, kdy si myslíme, že o i tyto malé algoritmy. Takže pojďme několik příkladů. Jak je možné, že tyto Systémy opravdu funguje? Existují dva základní druhy algoritmů, které jsou ve hře, když hovoříme o doporučení generování. První z nich se nazývají Obsah založené filtrování. A filtrování založený obsah spoléhá na podobnosti mezi položkami samy o sobě, že se mezi dva filmy nebo dvě písně nebo dvě zakoupené položky. Budeme používat filmy jako příklad, ale toto by se mohly vztahovat, opravdu, na jakýkoliv typ objektů, které hledáme. Takže pokud si myslím o některých filmy z loňského roku, Viděl jsem naruby s moje děti, se jim to líbilo. Ale také jsme měli na výběr. Mohli jsme šli vidět přisluhovače, jsme mohli vidět Age of Ultron, nebo jsme mohli vidět Ant Muž v kinech. Pro některé z těchto filmy, mohli bychom si představit, generování seznamu funkcí nebo vlastnosti o těch různých filmech. Tak například, mohl považuji které z těchto filmů jsou animované. No, a to jak Inside Out a oblíbenci jsou animované. Ani věk, ani Ultron Ant Man jsou animované filmy. A já jsem si představit, budova up struktury, tabulky, která uvádí každé z těchto vlastností. Jsou animované, nebo ne? Mohl bych pak přidat další Funkce v této tabulce přidáním dalších řádků do této struktury. Mohl bych se zeptat, zda ne, že jsou Marvel filmy. No, Inside Out a oblíbenci nejsou Marvel filmy, Věk Ultron a mravenec člověka jistě jsou. A mohl bych se zeptat všechny druhy různé kvality že jsem chtěl, všechny druhy funkcí které by mohly být důležité pro mě. Mají super darebáka? No, je tu žádný Super padouch v Inside Out, ale tam jsou ty v přisluhovači a, se tedy jedná o dvě superhrdiny filmy. Mohl bych také požádat věci, jako, dobře, se jim projít testem Bechdel? Jsou tu za dva pojmenoval ženské postavy, které strávit nějaký značné množství Doba konverzaci, která nezahrnuje muže v obsazení? No, v tomto případě, Inside Out projde testy, oblíbenci nezdaří, věk Ultron projde testem, a Ant Muž se nezdaří. Každý z těchto funkcí Nemohl jsem myslet za důležité pro některé lidi. Mohl bych také požádat věci, jako jsou tam nějací lidé v těchto filmů, které jsou absolventi z řekněme, parky a Rekreace, jeden z mých oblíbených pořadů. No, Inside Out má Amy Poehler, to je Alumni. To se počítá. Jon Hamm byl v přisluhovači. Paul Rudd byl v Ant Man, ale nikdo Age of ULTRON bylo v parcích a Req také. Tak jsem si vybudovat tento seznam rysy, a mohli opravdu být něco o filmech. Mohou být, co Poměr stran byli výstřel v, to by mohlo být, jak mnoho míst, které prodal na svém víkendu otevření. Všechny funkce, které chci generovat můžu dát do této tabulky. Nyní, v tomto případě, jsem postavil všechny druh hodnot Bullion, ano nebo ne, projít nebo selhání, ale mohly by být cokoliv. Mohou být libovolné hodnoty. Pro obsahu založené filtrování, co budeme dělat se budeme uvažovat dva sloupce v této tabulce a vidět, jak podobné jsou. Tak například, pokud I šel vidět zevnitř ven, Mohl bych se zeptat, jaké jsou další filmy že bych mohl být ochoten jít vidět. To znamená, že to, co ochoten utrácet své peníze jít vidět. A můžu srovnávat jen s tím, že dva sloupce, jeden z Inside Out a jeden z některého z ostatní filmy, a jen vidět kolik z jejich funkcí zápasu. Takže když to srovnám Inside Out s přisluhovači, no, je tu tři věci, které zde zápas. Jsou oba animované, ani jeden z nich Marvel jsou filmy, a to jak z nich mají parky a REQ absolventy. Takže jsem mohl spočítat, jak Mnoho zápasů tam bylo, a v tomto případě, že by tři. Pokud bych pak porovnat Inside Out s řekněme Age of Ultron, Já se podívat dolů v seznamu a říkají, dobře, je tu jen jedna věc, která tam odpovídá. Oba projít testem Bechtel, tak že to bude skóre jednoho. A mezi Inside Out a Ant Muž, jsem znovu Můžete porovnat řádek po řádku, kolik věci zápas mezi dvěma z nich. No, jeden je animovaný, člověk není. Jeden to film Marvel, jeden to není. Jeden má super darebáka, druhý nikoli. Jeden prochází Bechtel test, to selže, ale oba mají parků a req absolventů, takže opět se dostane skóre jeden. Takže když jsem hledali filmy které byly podobné naruby, Mohl bych hledat filmy, které mají nejvyšší počet bodů v rámci tohoto obsahu schéma filtrování. Takže v tomto případě, myslím, bude uvažovat přisluhovače být blíž a více pravděpodobné, že bude něco že bych utrácet peníze, aby vidět než Age of ULTRON nebo Ant Man. Tyto obsah založený filtrační systémy se spoléhají jen Na základě vlastností filmy, a tak jsem se může stavět to právě tím, že zná něco o produktech že mám. Mohu použít všechny druhy funkce, které bych chtěl, a můžu postavit více komplexní funkce, které zahrnovat složitější zkoušky o kvalitě, jak jsem jít dál. Ve skutečnosti, mohu dokonce zobrazit tuto tabulku ne jak být jeden statický objekt, ale spíše jako rozměry v rámci větší stavového prostoru. A můžu začít mluvit o vzdálenosti mezi různými filmy. To vše jsou věci že bychom vědět, jak se provést pomocí druhy datových struktur že jsme již viděli v CS50. Takže jsem si dokázal představit budovu struktura dat pro film. Je tu struct, který jsem postaven tzv film, a to má pět logické položky v něm. Je to živý, je to Marvel film, to má super darebáka, to projít testem Bechdel, a jsou tam Parky a Rec absolventy v ní? A každý z nich je struktura dat, které jsem mohou zabírat pro konkrétní film. Poté vypočítat, zda dva filmy jsou podobné či nikoliv, co jejich skóre, mohl bych vypsat sadu pseudokódu, který generuje tuto stejnou funkci. To znamená, že vzhledem k tomu nějaký film M1, mohu najít nejvíce podobný film k němu pomocí následujícího pseudokódu. Domnívám se, což je nejlepší bodovací systém, který jsem našel, nejlepší srovnání, které jsem našel. Pro každý jiný film Chystám se projít, Budu nastavit zápas skóre rovnou 0. A já půjdu přes to film, což M1, film Začal jsem se, Podívám každý rys že musíte vidět jestli je shoda. Pokud existuje shoda, budu zvýšit zápas skóre. A pokud se na konci zápas skóre, které Jsem je lepší než současný nejlepší skóre, pak budu nezapomeňte, že nejlepší skóre, a to je to nejlepší zápas, který mám. Na konci, bez ohledu na film sedí v nejlepším zápase, to je nejbližší Byl jsem schopen přijít. Tak to obsah na bázi filtrační systémy, všechny mají základní strukturu. Oni se spoléhají na položku v pochybnost a nic o některý z uživatelských preferencí. Druhý mechanismus, který budeme používat ve s cílem vybudovat doporučení systémy se nazývá spolupracovní filtrování. Spolupracovní filtrování spoléhá na ne vlastnosti samotného objektu, ale jak se lidé, ostatní Uživatelé, že je, jak jsem reagoval na tyto stejné objekty. Takže pokračovat ve svém příkladu filmu, Mohl bych mít spoustu mých přátel a průzkum je o tom, zda Není se jim líbilo jednotlivé filmy. Nyní různá místa budou vytvářet tato data různými způsoby. Můžete přímo průzkumu svůj Uživatelé, nebo můžete prostě vidět, co si vybrat, zda jste, například Netflix. Jaké filmy se jim dívat? Mohl bych zpochybnit některé z mých přátele a zjistit, že Jason líbil každý film viděl, tam není překvapující. Andy jen rád přisluhovače a tetou Man. Sarah ráda Inside Out a Mstitelé, opak Andy. A Sam, dobře, Sam rád všechny superhrdiny filmů, ale žádný z animovaných filmů. Mohl bych potom dotaz pro některé nové jednotlivec, nějaký jiný uživatel, jako jsem já a zeptat se, dobře, pokud se mi líbilo jeden z těchto filmů, můžete dělat předpověď o které další filmy bych mohl líbit. To znamená, že když jsem Inside líbil Out, které další filmy mám pravděpodobné, že také chtějí vidět na základě toho, co lidé dělali podobné? To znamená, že půjdu přes Budu filtrovat přes tento seznam a najít jen jednotlivci, kteří se rovněž líbilo Naruby, který uzavřeno předvolby. No, to znamená, že Andy a Sam se jim nelíbilo, Inside Out, takže nebudu zkoumat je. Chystám se zbavit svých Údaje pro toto srovnání. Pak jsem se podívat na to, co Jason a Sarah si myslel, a shodují up, který z filmů, které oni viděli že jsem to neudělal, zda se jim líbilo nebo ne. Mohl bych prostě počítat, řekněme hlasů. Takže přisluhovači, například může mít jeden pro něj hlasovat, protože Jason to líbilo. Oba Jason a Sarah ráda Avengers, tak to bude mít dva hlasy. A pouze Jason líbilo Ant Man, tak to by si jeden hlas. Takže pokud bych měl do té doby doporučit pro sebe, které z těchto filmů Mohl bych být s největší pravděpodobností sledovat, bych si vybrat Age of ULTRON: Avengers. Takže pro některý z nich Systémy, teď jsem pomocí Data, která byla generována ne o Film sám o sobě, ale o preferencích od ostatních uživatelů. To má určité potíže samozřejmě. Co když nemáte žádné jiné uživatele? No, to se říká spuštění problém. Musíte mít některé Množství dat, než jste mohli začít dělat tato doporučení. Odvrácenou stranou je to opět začnete sběru dat, pokud můžete sbírat více a další a další údaje, budete mít lepší a lepší a lepší doporučení. Nyní bychom mohli přeložit toto do kódu také. Můžeme definovat jiný druh struktury, V tomto případě budeme říkat uživatel. A je to tu o funkce jaké filmy tento uživatel líbilo. Líbilo se jim líbí naruby, Přisluhovači, mstitelé a Ant Man. Mohli bychom pak generovat někteří pseudokód následovat stejný postup, který jsem použil předtím. To znamená, že při určitém Uživatel x, pojďme doporučit film že x mohlo líbit. Můžeme projít a pro všechny filmy, můžeme inicializovat skóre Pro ten film bude 0. A pak můžeme najít vše, z ostatních uživatelů, kteří mají stejné preference jako x. A pak za každých film, který se jim líbí, budeme zvyšovat skóre tohoto filmu. Bez ohledu na film v konec má nejvyšší skóre, to je ten, co jsem měla doporučit. Nic z toho je opravdu obskurní. Nic z toho, je náročné. To vše jsou základní algoritmy že byste mohli realizovat dnes. Nyní s reálnými doporučujícího systémy, se dostanete do nějaké problémy. Co když tam nikdo, kdo odpovídá přesně vaše preference? Co když tam jsou uživatelé, kteří jsou přesně vaše preference, ale pak se odchylují drasticky z toho, co se vám líbí? Mám rád klasickou Godzilla filmy, ale moje žena není. Rád se na ně dívat, my Netflix účet obsahuje je. Její to není. Co se stane, když začneme míchání data, jako je tato? To vše jsou výzvy že můžete překonat, oni jen se mírně složitější algoritmy. Nyní v reálném světě, který jsou skutečně v provozu, používáme filtrování obsahu, nebo na základě použijeme spolupracovní filtrování? A odpověď je používáme oba. Téměř všechny hlavní uživateli Tento případ, Amazon, Facebook, Netflix, Pandora, že všichni používají kombinaci Tyto různé doporučení systémy. A když jsme kombinovat volby z každý, jim říkáme hybridní systémy. Jsou nějakým způsobem záviset na vlastnosti samotného objektu, av některých ohledech jsou závislé na preference jiných uživatelů. Tyto hybridní systémy, oni jsou velký byznys, a oni jsou to, co je aktuální i dnes. Takže díky moc za mě spojování. Doufám, že jste se dostali trochu trochu pochopení toho, co činí tyto systémy pracují. Příště jste online, pamatujte, že a to nejen ty ovlivňují vaše volby, ale potenciálně všichni ostatní to také. Děkuji znovu.