[Muzikos grojimo] BRAIN SCASSELLATI: Sveiki į CS50 AI serijos. Mano vardas Scass, ir šiandien mes ketiname kalbėti apie Rekomenduokite sistemas. Dabar Rekomendacinės sistemos garsai kaip rūšies nelyginis vardu. Tai skamba kaip gal ji turėtų būti rekomendacija sistemos, ir I rūšies sutinku su jumis. Bet tai yra sistemos, kurios padeda pasirinkite vykdo panašią dalykus kai tik prireiks Pasirinkę kažką internete. "Netflix", pavyzdžiui, bus pasiūlyti kiti Filmai, kad jūs galbūt norėsite žiūrėti. Arba Pandora siūlys skiriasi dainas, kad jūs galbūt norėsite klausytis. "Amazon" siūlys Kokie kiti produktai jums gali nori pirkti. "Facebook" bus netgi rodo kai kurių kitų draugais kad jūs galbūt norėsite pridėti. Kiekviena iš šių sistemų veikia naudodami tą pačią pagrindinę rūšies algoritmas, ir tai, ką mes ketiname kalbėti apie šiandien. Dabar šie algoritmai yra Nenuostabu didelis verslas. "Netflix" prieš kelerius metus 2009 pasiūlyta 1 mln $ prizas, jei jūs galėtumėte pagerinti savo Rekomendacija sistema vos 10%. , Kad 10%, nors, žymi Nemažai verslui. Prognozės yra sunku ateiti, tačiau daugelis žmonių mano, kad šie rekomendacijos sistemos internete pirkimo sistema, kaip Amazonės švino kažkur tarp 10% ir 25% padidėjo pajamų. Taigi galite įsivaizduoti rūšies kiekio, kad esate kalbėti apie tai, kada mes galvojame apie net ir šie maži algoritmai. Taigi galime gauti keletą pavyzdžių. Kaip tai, kad šie sistemos tikrai veikia? Yra du pagrindiniai rūšių algoritmų, kurie yra ne žaidimą, kai mes kalbame apie generatoriniai rekomendacijos. Pirmieji vadinami turinys pagrįstas filtravimas. Ir turinys grindžiamas filtravimo priklauso nuo panašumų tarp daiktų patys, tai yra tarp dviejų filmų ar dvi dainos ar du įsigytų daiktų. Mes ketiname naudoti filmus kaip, pavyzdžiui, bet tai gali būti taikomos, tikrai, kad bet kokio tipo objektas, kad mes ieškome. Taigi, jei aš galvoju apie kai Filmai iš praėjusių metų, Mačiau Inside Out su mano vaikai, jie myli jį. Bet mes taip pat turėjo pasirinkimą. Mes galėjo būti pamatyti pakalikai, galėtume matyti amžius Ultron, ar mes galime matyti Ant žmogus teatruose. Už bet kurį iš šių Filmai, mes galime įsivaizduoti generuoti funkcijų sąrašą arba savybės apie šių skirtingų filmų. Taigi, pavyzdžiui, aš galėtų apsvarstyti kuris iš šių filmų yra animacinis. Na, tiek Inside Out ir Minions yra animacinis. Nei Ultron Amžius nei Ant Žmogus yra animaciniai filmai. Ir aš galėjau įsivaizduoti pastatą iki struktūros lentelę, kad išvardytos kiekviena iš šių savybių. Ar jie animacinis ar ne? Tada aš galėtų pridėti daugiau Savybės šią lentelę pridedant daugiau eilučių į šią struktūrą. Galėčiau paklausti, ar ne jie Marvel filmus. Na, Inside Out ir Minions nėra Marvel filmai, Amžius Ultron ir skruzdžių Man tikrai yra. Ir aš galėčiau užduoti rūšių skirtingos kokybės kad aš norėjau, bet funkcijų rūšių kad gali būti svarbu man. Ar jie turi super villain? Na, ten ne super piktadarys Inside Atlikti, tačiau ten yra tie, į pakalikai ir, akivaizdu, kad du superherojus filmus. Aš taip pat galėtų prašyti dalykų, pavyzdžiui, gerai, jie praeiti Bechdel testą? Yra du pavadintas moterų simbolių, kuris praleisti didelę sumą laikas turėti pokalbį, kad neapima vyrų dauguma? Na, šiuo atveju, Inside Out eina testus, Minions nepavyksta, amžius Ultron eina testą ir Skruzdė Žmogus nepavyksta. Bet kuris iš šių funkcijų vienas Galėčiau galvoti apie kaip svarbu kai kuriems žmonėms. Aš taip pat galėtų prašyti dalykų, pavyzdžiui, yra yra kokių nors šiuos filmus žmonės, yra absolventai iš tarkim, parkai ir Poilsis, vienas iš mano mėgstamiausių šou. Na, Inside Out turi Amy Poehler, tai Alumni. Tai svarbiausia. Jon Hamm buvo pakalikai. Paul Rudd buvo Ant žmogus, bet niekas Age of Ultron buvo parkuose ir Req taip pat. Taigi aš galiu sukurti šį sąrašą funkcijos, ir jie tikrai galėjo būti nieko apie filmus. Jie gali būti apie tai, ką santykis buvo nušautas, tai galėtų būti, kiek vietų jos parduodami jų atidarymo savaitgalį. Bet funkcija, kad aš noriu generuoti aš galiu įdėti į šią lentelę. Dabar, šiuo atveju, aš pastatytas visi lydiniams vertybių rūšiuoti, Taip arba Ne, teigiamas arba neigiamas, tačiau jie gali būti bet kas. Jie gali būti savavališkai vertės. Dėl turinio pagrįstas filtravimas, ką mes ketiname daryti yra mes ketiname apsvarstyti du stulpeliai šioje lentelėje ir pamatyti, kokie jie yra panašūs. Taigi, pavyzdžiui, jei aš teko matyti Inside Out, Galėčiau paklausti, kokie yra kiti filmai kad būčiau pasiruošęs eiti pamatyti. Tai yra, kas pasiruošęs išleisti savo pinigus eiti pamatyti. Ir aš galiu palyginti tai tiesiog atsižvelgiant du stulpeliai, vienas iš Inside Out Ir vienas iš bet kurios kiti filmai, ir tik matydamas kiek jų savybės rungtynių. Taigi, jei aš galiu palyginti Inside Out su pakalikai, gerai, ten Trys dalykai, kad čia rungtynes. Jie abu animacinis, nė vienas iš jų yra Marvel filmų ir jie abu turi Parkai ir Req absolventai. Taigi galėčiau suskaičiuoti, kaip daug atitikmenų buvo, ir šiuo atveju būčiau tris. Jei tada aš palyginti Inside Out su tarkim amžius Ultron, Galiu pažvelgti žemyn sąrašą ir sako, gerai, ten tik vienas dalykas, kuris atitinka ten. Jie abu praeiti Bechtel testą, todėl kad tai bus vienos rezultatas. Ir tarp Inside Out ir Skruzdė Žmogau, aš vėl galima lyginti pagal kiekvieną eilutę, kiek viskas atitiktų tarp dviejų iš jų. Na, vienas manimi animacinis, vienas ne. Vienas yra stebuklas filmas, vienas ne. Vienas atšoko super villain, kitas ne. Vienas eina Bechtel testus, nepavyksta tai, bet jie abu turi Parkai ir Req absolventai, Taigi dar kartą, ji gauna vieną balą. Taigi, jei aš buvo ieškote filmus kad buvo panašus į Inside Out, Galėčiau ieškoti filmų, kurie aukščiausią rezultatą per šį turinį filtravimo sistema. Taigi šiuo atveju, aš turėtų apsvarstyti pakalikai būti arčiau ir daugiau gali būti kažką kad man būtų išleisti pinigus pamatyti nei amžius Ultron ar skruzdžių Man. Tai turinys pagrįstas filtravimo sistemų remtis tik apie savybių filmai, ir todėl aš gali kurti tai tik žinant kažkas apie produktus kad turiu. Galiu naudoti jokių rūšių funkcijos, kurios man norėtųsi, ir aš galiu sukurti daugiau sudėtingų funkcijų, dalyvauja daugiau sudėtingą testą tokios kokybės, kaip aš einu kartu. Tiesą sakant, aš netgi galite peržiūrėti šią lentelę ne kaip viena statinė objektas, o kaip matmenis per didesnį valstybinės erdvėje. Ir galiu pradėti kalbėti apie atstumai tarp skirtingų filmų. Tai yra viskas kad mes žinome, kaip jie padaryti naudojant duomenų struktūrų rūšių kad mes jau matėme iš CS50. Taigi galėjau įsivaizduoti pastatą duomenų struktūra filmą. Yra konstrukto, kad aš pastatytas vadinamas filmas, ir ji turi penkis Bulio įrašus į jį. Ar tai animacinis, tai stebuklas Filmas, ji neturi super villain, ji praeiti Bechdel testą ir yra ten Parkai ir Rec absolventai jame? Ir kiekvienas iš jų yra duomenų struktūra, kad aš gali užimti tam konkrečiam filmą. Tada apskaičiuoti, ar dviejų filmai yra panašūs, ar ne, kas jų rezultatas yra, galėčiau rašyti keletą Pseudocode rinkinį, generuoja tą pačią funkciją. Tai yra, nes kai filmas M1, galiu rasti labiausiai panašų filmą į jį sekdami Pseudocode. Laikau, kuris yra geriausias balais sistemą, kuri radau, geriausias palyginimas, kad aš rasiu. Už kiekvieną Kita filmą Aš ruošiuosi eiti per, Aš nustatyti minutę išlygino rezultatą, lygų 0. Ir aš eisiu per tą Filmas, M1, filmas Aš pradėjau su, aš patikrinti kiekvienas bruožas , kad jie turi pamatyti jei ten rungtynės. Jei yra rungtynės, aš prieaugio minutę išlygino rezultatą. Ir jei ne baigti mačo rezultatas, kuris Aš geriau nei dabartinis geriausias rezultatas, tada aš prisiminti, kad geriausią rezultatą, ir tai yra geriausias rungtynės, kad turiu. Pabaigoje, nepriklausomai filmą sėdi geriausią rungtynių tai arčiausiai Aš galėjo ateiti. Taigi šie turinys pagrįstas filtravimo sistemų, visi jie turi šią pagrindinę struktūrą. Jie remiasi elemento į klausimą ir nieko apie bet vartotojų pageidavimus. Kitas mechanizmas, mes naudojame siekiant sukurti rekomendacija sistemas vadinama bendradarbiavimo filtravimas. Bendradarbiavimo filtravimas remiasi ne paties objekto savybes, bet kaip žmonės, kita vartotojai, kurie yra, kaip jie jau atsakė į tuos pačius objektus. Taigi toliau mano filmų, pavyzdžiui, Aš gali užtrukti iš mano draugų krūva ir apklausti juos apie tai, ar jie patiko tikrus filmus. Dabar skirtingose ​​vietose sukurs šis duomenų skirtingais būdais. Jūs galite tiesiogiai apklausą jūsų Vartotojų, arba galite tiesiog pamatyti, ką jie pasirinkti, jei jūs, pavyzdžiui, "Netflix". Kuris filmus jie žiūri? Galėčiau abejoti kai mano draugai čia ir sužinokite kad Jasonas patiko kiekvieną filmą jis pamatė, nenuostabu ten. Andy patiko tik pakalikai ir teta žmogus. Sara patiko Inside Out ir Keršytojas, Andy priešinga. Sam, gerai, Sam patiko visi superhero filmus, tačiau nė vienas iš animacinių filmų. Tada galėčiau užklausti kai nauja individualus, kai kitas vartotojas kaip aš ir paklausti, gerai, jei man patiko vienas iš šių filmų, galite padaryti prognozę apie kuris kitas filmai man gali patikti. Tai yra, jei man patiko Viduje Iš, kuris kitų filmų aš tikriausiai taip pat noriu pamatyti remiantis tuo, kas panašūs žmonės padarė? Tai yra, aš eisiu per Aš filtruojama per šį sąrašą ir sužinoti tik asmenys, kurie taip pat patiko Inside Out, kuris atitiko mano pageidavimus. Na, tai reiškia, kad Andy ir Samas, jie nepatiko Inside Out, todėl aš neketinu svarstyti juos. Aš ruošiuosi atsikratyti savo duomenų šiam palyginimui. Aš tada gali pažvelgti, kas Jason ir Sara minties ir sutampa iki kurios iš filmų, kad jie matė, kad aš ne, ar jiems patiko juos arba ne. Galėčiau tik suskaičiuoti, tarkim balsus. Taigi pakalikai, pavyzdžiui, gali turėti vieną balsuoti už jį, nes Jasonas patiko. Tiek Jasonas ir Sarah patiko Avengers, todėl būtų du balsus. Ir tik Jasonas patiko Ant Man, todėl norėčiau gauti vieną balsą. Taigi, jei aš turėjo tada rekomenduojame už save, kuri iš šių filmų Aš gali būti labiausiai tikėtina, kad žiūrėti, aš norėčiau turite pasirinkti amžius Ultron: Keršytojas. Taigi, bet kuris iš šių sistemos, o dabar aš naudoju duomenų, kad buvo sukurtas ne apie Pats filmas, bet apie lengvatas iš kitų naudotojų. Tai turi keletą žinoma sunkumų. Ką daryti, jei jūs neturite jokių kitų vartotojų? Na, tai vadinama paleidimo problema. Jūs turite keletą duomenų kiekis prieš jums galėtų pradėti uždirbti šių rekomendacijų. Pasitaiko tai yra vieną kartą pradėdami rinkti duomenis, jei galite surinkti daugiau ir vis daugiau duomenų, jums geriau ir geriau ir geriau rekomendacijos. Dabar mes galime išversti į tai kodas, kaip gerai. Mes galime nustatyti skirtingas rūšies struktūra, šiuo atveju mes jį vadiname vartotojas. Ir jis gavo funkcijas apie kurie filmai Šis vartotojas patiko. Ar jie patinka Inside Out, Pakalikai, Keršytojas, o skruzdė žmogus. Mes tada gali generuoti kai Pseudocode sekti ta pati procedūra, kad aš naudojamas anksčiau. Tai reiškia, kad suteikta pirma Vartotojas: x, tegul rekomenduoti filmą kad x gali patikti. Mes galime pereiti ir visiems filmus, mes galime inicijuoti rezultatą už tai filmas bus 0. Ir tada mes galime rasti visus kitų naudotojų, kurie turi tas pačias lengvatas kaip x. Ir tada kiekvienas filmas, kad jiems patiko, mes prieaugio tą filmą rezultatą. Kurį filmą į pabaigos turi didžiausią rezultatą, tai vienas aš turėtų rekomenduoti. Visa tai tikrai neaiški. Visa tai sudėtinga. Tai yra visi pagrindiniai algoritmai , kad galėtumėte įgyvendinti šiandien. Dabar su nekilnojamojo Rekomenduokite sistemų, paleisti į kai kurias problemas. Ką daryti, jei ten niekas, kas tiksliai atitinka Jūsų pageidavimus? Ką daryti, jei yra vartotojai, kurie yra tiksliai į jūsų pageidavimus, bet tada nukrypti drastiškai nuo to, ką norite? Man patinka klasikinis Godzilla Filmai, tačiau mano žmona nėra. Man patinka žiūrėti jiems: "Mano "Netflix" sąskaitos juos yra. Jos s neturi. Kas atsitinka, kai mes pradedame maišymo duomenis, kaip šis? Tai yra visi iššūkiai kad jūs galite įveikti jie tiesiog truputį daugiau sudėtingų algoritmų. Dabar realiame pasaulyje, kuris yra iš tikrųjų veikti, mes naudojame turinį, kurių filtravimo arba mes naudojame bendradarbiavimo filtravimas? Ir atsakymas yra mes naudojame abu. Beveik visi iš pagrindinių vartotojų šiuo atveju, "Amazon", "Facebook", "Netflix", Pandora, visi jie naudoja kombinaciją šie skirtingi rekomendacija sistemos. Ir kai mes deriname pasirinkimus nuo kiekvienas mes vadiname juos hibridiniai sistemos. Jie tam tikru būdu priklauso nuo bruožai paties objekto, ir tam tikrais būdais jie priklausys nuo kitų vartotojų pageidavimus. Šie hibridiniai sistemos, jie didelis verslas, ir jie kas dabartinis šiandien. Taigi labai ačiū už prisijungimą mane. Tikiuosi, kad jūs Dotarłeś šiek tiek tiek yra supratimo, kas daro šias sistemas darbą. Kitą kartą jūs internete, prisiminti, kad ne tik jums daryti įtaką savo pasirinkimą, tačiau potencialiai visi kiti taip pat. Ačiū dar kartą.