>> [MUSIC JOC]
>> BRAIN SCASSELLATI: Bine ati venit la seria CS50 AI.
Numele meu este Scass, iar astăzi vom pentru a vorbi despre sisteme va recomandat.
Acum va recomandat sunete sisteme ca un fel de nume ciudat.
Se pare ca poate ar trebui fi sisteme de recomandare,
și am un fel de acord cu tine.
Dar acestea sunt sistemele care ajută selectați lucruri similare ori de câte ori
selectați ceva on-line.
Netflix, de exemplu, va sugera alte filme care ar putea să doriți să urmăriți.
Sau Pandora va sugera diferite melodii pe care le-ar putea dori pentru a asculta.
Amazon va sugera ce fel de alte produse s-ar putea dori să cumpere.
Facebook va sugera chiar unele dintre celelalte prieteni
că ați putea dori să adăugați.
Fiecare dintre aceste sisteme funcționează utilizând același tip de bază de algoritm,
și asta e ceea ce suntem vorbi despre ziua de azi.
>> Acum acesti algoritmi sunt surprinzător de mare de afaceri.
Netflix câțiva ani în urmă, în 2,009 oferit un 1 milion $
premiu dacă ai putea îmbunătăți lor Sistemul de recomandare de numai 10%.
Asta 10%, deși, reprezintă o sumă substanțială de afaceri.
Estimările sunt greu de gasit, dar mulți oameni
cred că acestea recomandare Sisteme pentru o achiziție on-line
sistem ca Amazon duce undeva între 10% și 25% la creșterea veniturilor.
Astfel încât să puteți imagina un fel de volum care sunteți
vorbim despre atunci când ne gândim la chiar și aceste algoritmi mici.
>> Așa că hai să cateva exemple.
Cum se face ca aceste Sisteme de adevărat?
Există două bază tipuri de algoritmi care
sunt în joc atunci când vorbim despre recomandări generatoare.
Primii sunt numite filtrare pe bază de conținut.
Și filtrare pe bază de conținut se bazează pe similitudini între elementele
ei înșiși, adică între două filme sau două melodii sau două elemente achiziționate.
Vom utiliza filme ca un exemplu, dar acest
ar putea aplica, într-adevăr, la orice tip de opoziție pe care le căutați.
>> Deci, dacă mă gândesc la unele filme din anul trecut,
Am văzut cu Inside Out copiii mei, l-au iubit.
Dar am avut, de asemenea, o alegere.
Am fi putut merge pentru a vedea Minions, am putea văzut Age of Ultron,
sau am putea fi văzut Omul Ant în teatrele.
>> Pentru oricare dintre aceste filme, am putea imagina
generând o listă de caracteristici sau calități despre acele filme diferite.
Deci, de exemplu, am putea lua în considerare care dintre aceste filme sunt animate.
Ei bine, atât în ​​interiorul cât Out și slujitorii sunt animate.
Nici Age of Ultron nici Ant Man sunt filme animate.
Și am putea imagina de construcție o structură, un tabel care
enumeră fiecare dintre aceste proprietăți.
Sunt animate sau nu?
Apoi m-am putea adăuga mai multe caracteristici pentru acest tabel
prin adăugarea de mai multe rânduri în această structură.
Aș putea întreba dacă sau nu sunt filme Marvel.
Ei bine, Inside Out și slujitorii nu sunt filme Marvel,
Age of Ultron și Ant Man cu siguranță sunt.
>> Și am putea întreba orice fel de diferite calitati
pe care am vrut, orice tipuri de caracteristici care ar putea fi important pentru mine.
Au un personaj negativ super-?
Ei bine, nu exista nici ticălos super-Inside , Dar există sunt cele în Minions
și în, evident, doua filme Superhero.
>> Aș putea cere, de asemenea lucruri cum ar fi, bine, nu trec testul Bechdel?
Există două nume personaje feminine care
petrece ceva cantitate semnificativă de timp o conversație care
nu implică bărbați în exprimate?
Ei bine, în acest caz, Inside Out trece testul, Minions eșuează, Age of Ultron
trece testul, și Ant Man nu reușește.
Oricare dintre aceste caracteristici Mă puteam gândi
ca fiind important pentru unii oameni.
>> Aș putea cere, de asemenea lucruri ca sunt acolo orice popor din aceste filme care
sunt absolventi de la să zicem, Parcuri și Recreere, unul dintre spectacolele mele preferate.
Ei bine, Inside Out are Amy Poehler, asta e un Alumni.
Care contează.
Jon Hamm a fost în Minions.
Paul Rudd a fost în Ant Man, dar nimeni nu în vârstă de Ultron a fost în Parcuri și Req
deasemenea.
Așa că am putea construi această listă de caracteristici, și într-adevăr au putut
fi nimic despre filme.
Acestea ar putea fi ceea ce raport de aspect au fost împușcați în,
ar putea fi de multe locuri în care cât de vândute pe week-end lor de deschidere.
Orice facilitate care doresc să genera pot pune în acest tabel.
>> Acum, în acest caz, am construit tot felul de valori lingouri,
da sau nu, treci sau nu, dar acestea ar putea fi orice.
Acestea ar putea fi valori arbitrare.
Pentru filtrarea pe bază de conținut, ceea ce am de gând să faci
este vom să ia în considerare două coloane din acest tabel
și a vedea cum similare sunt.
Deci, de exemplu, dacă am a mers pentru a vedea pe dos,
S-ar putea întreba, care sunt alte filme ca să fi dispus să te duci sa vezi.
Asta este, ceea ce dorește să cheltui banii pentru a te duci sa vezi mea.
Și pot compara acest lucru prin luarea doar cele două coloane, una de la Inside Out
și unul din oricare dintre alte filme, și doar a vedea
cât de multe dintre meci caracteristici.
Deci, dacă am compara Inside Out cu Minions, ei bine, nu e
trei lucruri aici, care se potrivesc.
Sunt atât animat, nici unul dintre ei sunt filme Marvel, și amândoi
au Parcuri și cer absolventi.
Așa că am putut număra până cum multe meciuri au fost,
și în acest caz, nu ar fi trei.
>> Dacă atunci am compara Inside Out cu să zicem Age of Ultron,
Pot privi în jos lista și spune, ei bine, nu e
doar un singur lucru care se potrivește acolo.
Amândoi trece testul Bechtel, așa care va fi un scor de unul.
Și între Inside Out și Man Ant, din nou, am
pot compara linie cu linie cât de multe se potrivesc lucrurile între cei doi.
Ei bine, o e animat, cuiva nu.
Unul e un film Marvel, nu e.
Unul are un personaj negativ super, celălalt nu.
Unul trece Bechtel încercare, o eșuează,
dar ambele au Parcuri și cer absolventi, astfel, din nou, acesta devine un scor de unul.
>> Deci, dacă aș fi în căutarea pentru filme care au fost similare cu Inside Out,
Aș putea căuta filmele care au cel mai mare scor în acest continut
sistem de filtrare.
Deci, în acest caz, am ar lua în considerare Minions
a fi mai aproape și mai susceptibile de a fi ceva
care mi-ar cheltui bani pentru a vedea decât vârsta de Ultron sau Man Ant.
>> Acestea conținut pe bază de sisteme de filtrare se bazează doar
privind proprietățile filme, și așa am
pot construi aceste doar prin cunoașterea ceva despre produsele
că am.
Eu pot folosi orice fel de caracteristici pe care am dori,
și pot construi mai mult caracteristici complexe, care
implica test mai complex de o calitate așa cum am merge de-a lungul.
De fapt, chiar și eu pot vedea acest tabel nu ca fiind un obiect static,
ci mai degrabă ca fiind dimensiuni într-un spațiu de stat mai mare.
Și eu pot începe vorbim despre distanțe între diferite filme.
Acestea sunt toate lucrurile că știm cum
face utilizând tipurile de structuri de date care le-am văzut deja în CS50.
Așa că am putut imagina de construcție o structură de date pentru un film.
Există un struct care l-am construite numit film,
și are cinci intrări booleene în ea.
Este animat, este o minune film, nu-l are un personaj negativ super,
nu-l trece testul Bechdel, și sunt acolo Parcuri și REC absolventi în ea?
Și fiecare dintre acestea este o structură de date pe care am
pot ocupa de acel film special.
>> Apoi calcula dacă două Filmele sunt similare sau nu,
ceea ce scorul lor este, am putea scrie un set de pseudocod care
generează aceeași funcție.
Asta este, având în vedere un film M1, pot găsi filmul cel mai similar cu aceasta
urmând Pseudocodul.
Consider care este cel mai bun sistem care l-am găsit a marcat,
cele mai bune compararea pe care l-am găsit.
Pentru orice alt film Am de gând să merg prin,
Voi stabili un scor meci egal cu 0.
Și voi trece prin asta film, un M1, filmul
Am început cu, voi verifica fiecare caracteristică
că ei trebuie să vadă dacă există o potrivire.
Dacă există un meci, voi incrementa scorul meciului.
Și dacă la sfârșitul scorul meciului care Am este mai bună decât curentul cel mai bun
scor, atunci voi amintiți-vă că cel mai bun scor,
iar acest lucru este cel mai bun meci pe care am.
La final, indiferent de film stă în cel mai bun meci,
care este cel mai aproape de Am fost în stare să vină.
Astfel încât acestea de conținut pe sisteme de filtrare,
toate au această structură de bază.
Ei se bazeaza pe elementul în cauză și nimic
despre oricare dintre preferințele utilizatorului.
>> Celălalt mecanism pe care le folosim în scopul de a construi sisteme de recomandare
este numit de filtrare de colaborare.
Filtrarea de colaborare se bazează pe Nu calitățile obiectului în sine,
dar modul în care oamenii, altele Utilizatorii care este, cum au
a răspuns la aceleași obiecte.
Deci, pentru a continua cu exemplul meu film, S-ar putea să ia o mulțime de prieteni mei
și le sondaj cu privire la posibilitatea sau nu le-a plăcut anumite filme.
Acum locuri diferite va genera aceste date în moduri diferite.
Puteți sondaj direct dvs. utilizatori, sau ai putea doar
vezi ce ei aleg dacă ești, de exemplu, Netflix.
Care filme au ceas?
>> S-ar putea pune la îndoială unele dintre meu prietenii de aici și de a afla
că Jason a plăcut fiecare film el a văzut, nu este surprinzător acolo.
Andy a plăcut doar Minions și mătușa Man.
Sarah a placut Inside Out și Avengers, opusul lui Andy.
Și Sam, ei bine, Sam a plăcut toate filmele super-erou,
dar nici unul dintre filmele animate.
>> Aș putea interoga apoi pentru un nou individ, un alt utilizator ca mine
și de a pune, de asemenea, în cazul în care mi-a placut unul dintre aceste filme,
poți face o predicție cu privire la care alte filme s-ar putea dori.
Asta este, dacă mi-a plăcut în interiorul Out, care alte filme
sunt eu susceptibile de a dori, de asemenea pentru a vedea bazat pe ceea ce au făcut oamenii similare?
Asta este, voi merge printr-un Voi filtrează prin această listă
și găsi doar persoanele care, de asemenea, plăcut
Inside Out, care corespund preferințelor mele.
Ei bine, asta înseamnă că Andy și Sam, ei nu-i plăcea Inside Out,
așa că nu am de gând să le considere.
Am de gând să scape de lor date pentru această comparație.
>> Apoi m-am sa te uiti la ceea ce Jason și Sarah a crezut și Tally
up care dintre filmele pe care le-au văzut că nu am făcut-o, dacă acestea au plăcut
sau nu.
Am putea conta doar în sus, să spunem de voturi.
Deci Minions, de exemplu, ar putea avea un vota pentru el, pentru că Jason a plăcut.
Atât Jason și Sarah placut Avengers, asa ca ar avea două voturi.
Și doar Jason a placut Ant Man, asa ca ar primi un vot.
Deci, dacă am avut de atunci de a recomanda pentru mine care dintre aceste filme
S-ar putea fi cel mai probabil pentru a viziona, aș trebuie să aleagă Vârsta de Ultron: Avengers.
>> Deci, pentru oricare dintre aceste sisteme, acum eu sunt, folosind
date care nu a fost generat aproximativ film în sine, ci despre preferințele
de la alți utilizatori.
Acest lucru are anumite dificultăți, desigur.
Ce se întâmplă dacă nu aveți nici alți utilizatori?
Ei bine, asta se numește problemă de pornire.
Trebuie să aveți unele Cantitatea de date înainte de a te
capabil să înceapă a face aceste recomandări.
Reversul este dată începe colectarea de date,
Dacă aveți posibilitatea de a colecta mai mult și mai mult și mai multe date,
veți obține bine și mai bine și recomandări mai bune.
>> Acum am putea traduce acest lucru în cod, de asemenea.
Putem defini un alt tip de structură,
în acest caz, ne vom numi un utilizator.
Și are caracteristici despre care filmele acest utilizator a placut.
Ți le place Inside Out, Minions, Avengers, și Ant Man.
Am putea genera apoi unele pseudocod să urmeze
aceeași procedură pe care am folosit înainte.
Că este, având în vedere o anumită utilizator X, să recomande un film
că X ar putea plăcea.
Putem merge prin și pentru toate filmele,
putem inițializa un scor pentru că filmul să fie 0.
Și apoi putem găsi toate de alți utilizatori care
au aceleași preferințe ca X.
Și apoi pentru fiecare film care le-a placut,
vom incrementa scorul de acel film.
Indiferent de film din capăt are cel mai mare scor,
asta e cea pe care am ar trebui să recomande.
>> Nici una dintre acest lucru este foarte obscur.
Nimic din toate astea este o provocare.
Acestea sunt toate algoritmi de bază care le-ar putea implementa astăzi.
>> Acum, cu sisteme va recomandat reale, aveți o unele probleme.
Ce se întâmplă dacă nu e nimeni care se potrivește exact preferințele?
Ce se întâmplă dacă există utilizatori care sunt exact preferințele,
dar apoi se abate drastic de la ceea ce iti place?
Îmi place clasic Godzilla filme, dar soția mea nu.
Imi place sa ma uit la ei, mi Contul Netflix le conține.
Ei nu.
Ce se întâmplă atunci când vom începe amestecarea date, cum ar fi acest lucru?
Acestea sunt toate provocările pe care le puteți depăși,
ei iau doar puțin algoritmi mai complexe.
>> Acum, în lumea reală, care sunt de fapt operaționale,
folosim de filtrare pe bază de conținut sau folosim de filtrare de colaborare?
Iar răspunsul este folosim amândoi.
Aproape toate marile utilizatorilor în acest caz, Amazon, Facebook, Netflix,
Pandora, toate folosesc o combinație de aceste sisteme de recomandare diferite.
Și când am combina alegerile din fiecare, le numim sisteme hibride.
Ei într-un fel depinde de caracteristici ale obiectului în sine,
și, în unele moduri în care depind de preferințele altor utilizatori.
Aceste sisteme hibride, sunt o afacere mare,
și sunt ceea ce este actual și astăzi.
>> Deci, mulțumesc foarte mult pentru aderarea mine.
Sper că am ajuns un pic bit de o înțelegere a ceea ce
face aceste sisteme de lucru.
Data viitoare când sunteți online, amintiți-vă că nu numai tu influențează alegerile,
dar potential toată lumea, precum.
Multumesc din nou.