[Glazbom] MOZAK SCASSELLATI: Dobrodošli u seriji CS50 AI. Moje ime je Scass, a danas ćemo razgovarati o se sustavima. Sada se sustavima zvukovi kao neka vrsta ak imena. To zvuči kao možda trebao biti preporuka sustava, i ja vrsta složiti s vama. No, to su sustavi koji pomažu odabrati iz slične stvari kad god Odaberete li nešto online. Netflix, primjerice će predložiti drugog filmove koje možda želite gledati. Ili Pandora će predložiti različite pjesme koje možda želite slušati. Amazon će predložiti što vrste ostali proizvodi možda želite kupiti. Facebook će čak sugeriraju neke druge prijatelje da možda želite dodati. Svaki od ovih sustava u radu koriste ista osnovna vrsta algoritma, i to je ono što smo će govoriti o danas. Sada su ti algoritmi su iznenađujuće veliki posao. Netflix je prije nekoliko godina u 2009 ponudio 1 milijun $ Nagrada ako bi mogao poboljšati njihovu Preporuka Sustav za samo 10%. To je 10%, ipak, predstavlja znatnu količinu posla. Procjene su teško doći, ali mnogi ljudi Vjerujem da je ova preporuka Sustavi za online kupnju Sustav poput Amazon dovesti do negdje između 10% i 25% povećanja prihoda. Na taj način možete zamisliti vrsta volumena koji ste govori o tome kada mislimo o čak i ti mali algoritmi. Tako ćemo dobiti neke primjere. Kako je to da su ti Sustavi stvarno rade? Postoje dvije osnovne vrste algoritama koji su u igri, kada govorimo o Preporuke priljev. Prvima su pozvani sadržaj temelji filtriranje. A sadržaj temelji filtriranje oslanja na sličnosti između stavki sami, da se između dva filma ili dvije pjesme ili dvije kupljene stavke. Idemo koristiti filmova kao primjer, ali to mogao primijeniti, stvarno, na bilo koji tip objekta koji tražimo. Dakle, ako ja mislim o nekim filmova iz prošle godine, Vidio sam iznutra prema van s moja djeca su ga voljeli. Ali, mi također imao izbora. Mogli smo otišli vidjeti podanici, mogli smo vidjeti Doba Ultron, ili smo mogli vidjeti Ant Čovjek u kazalištima. Za bilo koji od ovih filmove, možemo zamisliti generiranje popisa značajki ili osobine o tim različitim filmovima. Tako, na primjer, mogao sam uzeti u obzir koji od tih filmova su animirani. Pa, kako Inside Out a sluge su animirani. Ni Dob Ultron, niti Ant Man su animirane filmove. I ja sam mogao zamisliti zgradu do strukture, stol kako navodi svako od tih svojstava. Jesu li animirani ili ne? Onda bih mogao dodati više Značajke u ovoj tablici dodavanjem više redaka u toj strukturi. Mogao bih pitati da li Ne oni oduševljavati filmove. Pa, Inside Out i ruke nisu Marvel filmovi, Dob Ultron i Ant Man svakako jesu. I ja mogao pitati bilo koje vrste različite kvalitete da sam htio, bilo koje vrste značajki to bi moglo biti važno za mene. Da li oni imaju super negativca? Pa, nema super negativca u rastavljanja Out, ali postoje one u ruke a, očito je Dva superherojima filmova. Također sam mogao pitati stvari kao, dobro, oni prolaze Bechdel test? Postoje dva imenu ženski likovi koji provesti neko značajnu količinu Vrijeme ima razgovor koji ne uključuju ljude u cast? Pa, u ovom slučaju, Inside Out prolazi test, podanici ne uspije, Age of Ultron prolazi test i Ant Man uspije. Svaka od tih značajki Mogao sam misliti o kao važno za neke ljude. Također sam mogao pitati stvari kao što su Postoje li ljudi u tim filmovima koje su alumni iz recimo, parkovima i Rekreacija, jedan od mojih omiljenih emisija. Pa, Inside Out ima Amy Poehler, to je alumni. To je važno. Jon Hamm je u ruke. Paul Rudd bio je u Ant Man, ali nitko u doba Ultron je u parkovima i Req kao. Dakle, ja mogu izgraditi taj popis obilježja, a oni bi stvarno biti ništa o filmovima. Oni mogu biti o tome što omjer su pucali u, to bi mogao biti koliko mjesta su prodaju na njihovom prvom vikendu. Svaka značajka da želim generiranje mogu staviti u ovoj tablici. Sada, u ovom slučaju, ja sam izgradio sve vrste Poluga vrijednosti, da ili ne, proći ili ne, ali oni mogu biti ništa. Oni mogu biti proizvoljne vrijednosti. Za sadržaj temelji filtriranje, što ćemo učiniti se da ćemo u obzir dva stupca u ovoj tablici i vidjeti kako slični su. Tako na primjer, ako otišao vidjeti iznutra prema van, Možda ću pitati, što su ostali filmovi da budem spreman ići vidjeti. To jest, ono što žele potrošiti moj novac ići vidjeti. I ja mogu usporediti to po samo uzimanje dva stupca, jedan od Inside Out i jedan iz bilo koje od druge filmove i samo viđenje koliko njihove mogućnosti utakmicu. Dakle, ako sam usporediti naopačke s ruke, dobro, tu je tri stvari ovdje koje odgovaraju. Oni i animirani, niti jedan od njih su Marvel filmove, i obojica imaju parkove i REQ bivših. Tako sam mogao računati na tome mnogo mečeva bilo, te u tom slučaju bilo bi tri. Ako sam zatim usporedite naopačke sa recimo Doba Ultron, Ja mogu gledati dolje na popisu i reći, dobro, tu je samo jedna stvar koja odgovara tamo. Obojica proći Bechtel testa, tako da koja će biti rezultat jednog. A između Inside Out i Ant Man, opet sam može usporediti liniju po liniju koliko stvari odgovarati između njih dvoje. Pa, on je animirani, jedan nije. Jedan je Marvel filma, jedan nije. Jedan je dobio super negativca, drugi ne. Jedan prolazi Bechtel Test, jedan ga ne uspije, ali obojica imaju parkove i REQ alumni, pa opet, dobiva rezultat od jedan. Dakle, ako ja bili u potrazi za filmove koji su bili slični Inside Out, Mogao bih tražiti filmova koji su najveći rezultat u tom sadržaju filtriranje shemu. Dakle, u ovom slučaju, ja bi razmotriti ruke da se bliže i više vjerojatno nešto da bih potrošiti novac da biste vidjeli od doba Ultron ili Ant Man. To sadržaj temelji filtriranje sustavi oslanjaju samo o svojstvima filmovi, pa sam mogu graditi to samo znajući nešto o proizvodima da imam. Mogu koristiti bilo koje vrste značajke koje bih želio, i ja mogu izgraditi više složene značajke koje uključiti složeniji ispit o kvaliteti kao što sam ići zajedno. U stvari, ja čak mogu vidjeti ovu tablicu ne kao što je jedan statički objekt, nego kao dimenzija unutar većeg državnog prostora. I ja mogu početi govoriti o udaljenosti između različitih filmova. To su sve stvari da znamo kako su učiniti pomoću vrste strukture podataka koje smo već vidjeli u CS50. Tako sam mogao zamisliti zgradu struktura podataka za film. Postoji struct da imam izgrađena zove film, i ima pet Boolean unose u njega. Je li animirani, to je čudo film, to su super negativca, to proći Bechdel test, i postoje parkovi i REC bivših u njemu? I svaki od njih je struktura podataka koje sam može zauzeti za to film. Zatim izračunati da li dva filmovi su slični ili ne, što je njihova ocjena je, što sam mogao napisati skup pseudokod koji stvara istu funkciju. To je, s obzirom na neke filmske M1, mogu pronaći najviše sličan film za njega slijedeći pseudokod. Smatram koji je najbolji sustav bodovanja koji sam pronašao, najbolja usporedba koju sam pronašao. Za svaki drugi film Idem proći, Ja ću postaviti utakmicu rezultat jednak 0. A ja ću proći kroz to Film, An M1, film Počeo sam s, ja ću provjeriti svaki lik da su vidjeti ako postoji utakmicu. Ako postoji utakmicu, ja ću povećajte utakmicu rezultat. A ako na kraju utakmice rezultat koji Ja sam se bolje nego trenutni najbolji postići, onda ću sjećam se da je najbolji rezultat, i to je najbolji meč da imam. Na kraju, ono što film sjedi u najboljem susret to je najbliže Ja sam bio u mogućnosti doći. Dakle, to sadržaj temelji filtriranje sustavi, svi oni imaju tu osnovnu strukturu. Oni se oslanjaju na stavci u pitanju i ništa o bilo kojem od korisničke postavke. Drugi mehanizam koji koristimo u Kako bi se izgraditi preporuka sustava naziva suradničke filtriranje. Kolaborativni filtriranje oslanja Ne osobine samog objekta, ali kako su ljudi, drugi Korisnici koji je, kako oni ' odgovorila na te iste objekte. Tako da i dalje s mojim filma, primjerice, Možda ću uzeti hrpa mojih prijatelja i istraživanja o tome hoće li ili ih Nije im se svidjela pojedinih filmova. Sada različita mjesta će generirati ovi podaci na različite načine. Možete izravno pregledati svoje Korisnici, ili možete jednostavno vidjeti što se odlučite ako ste, na primjer, Netflix. Koji filmovi su oni gledaju? Možda sam pitanje neke od mojih prijatelji ovdje i saznajte da je Jason volio svaki film vidio, ne čudi tamo. Andy je samo volio ruke i teta Man. Sara svidjela naopačke i Osvetnici, suprotno od Andy. I Sam, dobro, Sam volio sve superjunacima filmova, ali nitko od animirane filmove. I onda mogao upita za neke nove pojedinac, neki drugi korisnik poput mene i pitati, dobro, ako mi se svidjelo jedan od tih filmova, Možete li napraviti predviđanja o što drugi filmovi sam možda željeli. To jest, ako sam volio Unutar Out, što drugim filmovima ja sam vjerojatno također žele vidjeti na temelju onoga što su ljudi slični učinio? To jest, ja ću proći Ja ću filtrirati kroz ovaj popis i naći samo pojedinci koji je također volio Inside Out, koji je odgovarao mojim željama. Pa, to znači da je Andy i Sam, nisu željeli naopačke, pa neću ih uzeti u obzir. Idem da biste dobili osloboditi od njihove Podaci za ovu usporedbu. I onda mogu gledati na ono što Jasonom i Sarah misli i zbroj se koji od filmova koji su vidjeli da nisam, da li su im se svidjela ili ne. Mogao sam samo brojati do, recimo glasova. Dakle podanici, primjerice može imati jednu glasati za njega, jer je Jason se svidjelo. I Jason i Sarah volio Osvetnici, tako da će imati dva glasa. I samo Jason volio Ant Man, tako da bi dobili jedan glas. Dakle, ako sam morao onda preporučujem za mene koji od tih filmova Možda ću biti najvjerojatnije gledati, ja bih morate odabrati doba Ultron: Osvetnici. Tako da za bilo koji od ovih Sustavi, sada sam pomoću Podaci koji se generira ne o Sam film, ali o preferencijama od drugih korisnika. To ima neke poteškoće, naravno. Što ako nemate nikakve druge korisnike? Pa, to se zove pokretanja problema. Morate imati neke količina podataka prije nego što ste mogli početi zarađivati ove preporuke. Druga strana je to jednom počnete prikupljanja podataka, ako možete prikupiti više a sve više i više podataka, ćete dobiti bolje i bolje i bolje preporuke. Sada bismo mogli prevesti to u kodu, kao dobro. Možemo definirati različite vrsta strukture, u ovom slučaju ćemo ga nazvati korisnik. I to je dobio značajke o koje filmove ovaj korisnik voljeli. Jesu li željeli naopačke, Ruke, Osvetnici, i mrav Man. Mi smo tada mogli generirati Neki pseudokod pratiti isti postupak koji sam koristio prije. To je, s obzirom na određeni Korisnik x, neka je preporuči film da je x svidjeti. Možemo proći i za sve filmove, možemo inicijalizirati rezultat za taj film biti 0. I onda možemo pronaći sve od drugih korisnika koji su imaju iste sklonosti kao X. I onda za svaki film koji se svidio, ćemo povećajte rezultat tog filma. Koji god film u kraj ima najviše bodova, to je jedan i treba preporučiti. Ništa od toga stvarno nejasno. Ništa od toga je izazovna. To su sve osnovne algoritmi da biste mogli provesti danas. Sada s pravim se sustavima, naiđete na neke probleme. Što ako nema nikoga tko odgovara točno postavke? Što ako postoje korisnici koji su točno vaše želje, ali onda odstupaju drastično od onoga što vam se sviđa? Volim klasičnu Godzillu filmova, ali moja žena ne. Volim ih gledati, moj Netflix račun ih sadrži. Njezina je ne. Što se događa kada smo započeli miješanje podatke kao što je ovaj? To su sve izazovi koje možete prevladati, oni samo uzeti malo složeniji algoritmi. Sada je u stvarnom svijetu, koji su zapravo operativni, koristimo sadržaj temelji filtriranje ili koristimo suradničke filtriranje? A odgovor je da koristite oboje. Gotovo svi od glavnih korisnika u ovaj slučaj, Amazon, Facebook, Netflix, Pandora, svi oni koriste kombinaciju ti različiti preporuka sustavi. A kad smo kombinirati izbor iz svaki, mi ih zovemo hibridni sustavi. Oni na neki način ovisiti o značajke samog objekta, i na neki način ovise o sklonosti drugim korisnicima. Ti hibridni sustavi, oni su veliki posao, i oni su ono što je trenutni danas. Dakle, hvala puno za mene pridružio. Nadam se da ste stečen malo malo razumijevanja onoga što čini ti sustavi rade. Sljedeći put kada ste online, ne zaboravite da ne samo što utjecanje svoj izbor, ali potencijalno svi drugi to kao dobro. Hvala još jednom.