>> [Música tocando]
>> Cerebro Scassellati: Benvido para a serie CS50 AI.
O meu nome é Scass, e hoxe nós estamos indo para falar sobre sistemas de recomendación.
Agora sons sistemas de recomendación tipo como dun nome estraño.
Parece que quizais debese ser sistemas de recomendación,
e eu medio que estou de acordo con vostede.
Pero estes son os sistemas que axudan seleccionar as cousas semellantes, sempre que
selecciona algo en liña.
Netflix, por exemplo, pode suxerir outro películas que pode querer ver.
Ou Pandora pode suxerir diferentes cancións que pode querer escoitar.
Amazon vai suxerir que tipo de Outros produtos que pode querer mercar.
Facebook vai mesmo suxerir algúns dos outros amigos
que pode querer engadir.
Cada un destes sistemas funcionan utilizando o mesmo tipo de algoritmo de base,
e iso é o que somos vai falar hoxe.
>> Agora, estes algoritmos son sorprendentemente grande empresa.
Netflix fai uns anos en 2009 ofreceu un $ 1000000
premio se podería mellorar a súa sistema de recomendación por só 10%.
10%, con todo, representa un cantidade de empresas.
As estimacións son de difícil pasar por aquí, pero moita xente
creo que estas recomendación sistemas para unha compra en liña
sistema como Amazon levar a algún lugar entre o 10% eo 25% de aumento dos ingresos.
Entón podes imaxinar o tipo de volume que está
fala de cando pensamos sobre mesmo eses pequenos algoritmos.
>> Entón, imos obter algúns exemplos.
Como é que estes sistemas realmente funcionan?
Hai dous básico tipos de algoritmos que
están en xogo cando falamos de recomendacións xeradoras.
Os primeiros son chamados filtrado en base a contidos.
E filtrado de contidos baseado confía sobre semellanzas entre os elementos
si, que se atopa entre dúas películas ou dúas cancións ou dous elementos compras.
Estamos indo para usar películas como un exemplo, pero este
podería aplicar-se, realmente, de calquera tipo do obxecto que estamos a procurar.
>> Entón, se eu pensar sobre algunhas películas do ano pasado,
Vin Inside Out con meus fillos, eles adoraban.
Pero tamén tiña unha opción.
Poderiamos ir para ver Minions, poderiamos ver Age of Ultron,
ou que se podería ver Home Formiga nos cines.
>> Para calquera destas películas, poderiamos imaxinar
xerando unha lista de recursos ou calidades sobre os filmes diferentes.
Así, por exemplo, podería considerarse cales destes filmes son animados.
Ben, tanto Inside Out e Minions son animados.
Nin a idade, nin de Ultron Home-Formiga son películas de animación.
E eu podería imaxinar edificio Se unha estrutura, unha táboa que
Listas de cada unha destas propiedades.
Son animados ou non?
Podería, entón, engadir recursos para esta táboa
pola adición de máis liñas para esa estrutura.
Podería preguntar se é Non son películas da Marvel.
Ben, Inside Out e Minions non son películas de Marvel,
Age of Ultron e Home-Formiga son certamente.
>> E eu podería pedir calquera tipo de diferentes calidades
que eu quería, calquera tipo de recursos que pode ser importante para min.
Será que eles teñen un super vilán?
Ben, non hai super-vilán no interior Fóra, pero hai aqueles en Minions
e en que evidentemente o dúas películas de superheroes.
>> Eu tamén podería preguntar cousas como, ben, pasan a proba Bechdel?
Existen dous nomeados personaxes femininos que
pasar algún cantidade significativa de tempo de manter unha conversa que
non implica homes no reparto?
Ben, neste caso, pasa Inside Out a proba, Minions falla, Age of Ultron
pasar a proba, e home-Formiga fallar.
Algunha destas características Eu podía pensar
como importante para algunhas persoas.
>> Eu tamén podería preguntar cousas como son Hai algún persoas neses filmes que
son ex-alumnos de digamos, Parques e Recreación, un dos meus programas favoritos.
Ben, Inside Out ten Amy Poehler, que é un ex-alumnos.
Que conta.
Jon Hamm estaba Minions.
Paul Rudd estaba Home-Formiga, pero ninguén en Age of Ultron foi en Parques e REQ
ben.
Para que eu poida construír esta lista de recursos, e eles poderían realmente
ser calquera cousa, sobre as películas.
Poderían ser sobre o que relación de aspecto foron tiroteados en,
podería ser cantos asentos eles vendido na súa semana de estrea.
Calquera recurso que quero xerar podo poñer a esta táboa.
>> Agora, neste caso, eu constrúe todo tipo de valores Bullion,
si ou non, pasar ou non, pero poderían ser calquera cousa.
Poderían ser valores arbitrarios.
Para a filtrado de contidos baseado, o que nós imos facer
é que imos considerar dúas columnas nesta táboa
para ver como son semellantes.
Así, por exemplo, se eu fun ver Inside Out,
Podería preguntar, cales son os outros filmes que eu podería estar disposto a ir ver.
É dicir, o que está disposto a gastar o meu diñeiro para ir ver.
E podo comparar esta tomando só as dúas columnas, unha de Inside Out
ea partir de calquera do outros filmes, e só ver
como moitos dos seus recursos xogo.
Entón, se eu comparar Inside Out con Minions, así, hai
tres cousas aquí que xogo.
Ambos están animado, ningún deles son películas de Marvel, e ambos
ten Parques e REQ se formaron.
Entón, eu podería contar-se como moitas partidas houbese,
e neste caso habería tres.
>> Se eu, entón, comparar Inside Out con digamos Age of Ultron,
Podo ollar para abaixo na lista e dicir, ben, hai
só unha cousa que corresponda alí.
Ambos pasar a proba Bechtel, entón que vai ser un resultado de un.
E entre Inside Out e Home Formiga, de novo I
pode comparar liña por liña cantas cousas corresponder entre os dous.
Ben, un está animado, un non é.
Un é un filme da Marvel, non é.
Un ten un super-vilán, o outro non.
Pásase a Bechtel proba, un fallo que,
pero ambos teñen Parques e REQ alumnos, Entón, de novo, recibe unha puntuación de un.
>> Entón, se eu estaba a buscar para películas que foron similares dentro para fóra,
Podería mirar para as películas que teñen a maior puntuación dentro este contido
esquema de filtrado.
Polo tanto, neste caso, eu consideraría Minions
para estar máis preto e máis susceptible de ser algo
que eu ía gastar diñeiro para ver de Age of Ultron ou Man Ant.
>> Estes contidos baseados sistemas de filtrado dependen só
sobre as propiedades de as películas, e entón eu
pode construír estes só por saber algo sobre os produtos
que eu teño.
Podo usar calquera tipo de características que me gustaría,
e podo construír características complexas que
involucrar proba máis complexo dunha calidade como eu ir xunto.
De feito, podo ata ver esta táboa non como un obxecto estático,
senón como dimensións dentro dun espazo de estado maior.
E podo comezar a falar do distancias entre diferentes películas.
Estas son todas as cousas que sabemos como
facer usando os tipos de estruturas de datos que xa vimos en CS50.
Entón eu podería imaxinar edificio unha estrutura de datos para unha película.
Hai un struct que teño construído chamado película,
e ten cinco entradas booleanas nel.
É animado, é un Marvel película, ten un super vilán,
el pasar a proba Bechdel, e están aí Parques e Rec formaron nel?
E cada un deles é un estrutura de datos que
pode ocupar a este filme en particular.
>> Logo calcular dous películas son similares ou non,
o que a súa puntuación dicir, eu podería escribir un conxunto de pseudocódigo que
que xera mesma función.
Isto é, dado algún filme M1, podo atopar a película máis semellante a el
seguindo o pseudocódigo.
Eu considero que é o mellor sistema que eu atope marcando,
a mellor comparación que podo atopar.
Para todos os demais película Vou pasar,
Vou definir unha puntuación xogo igual a 0.
E eu vou pasar por iso película, un M1, a película
Comece con, vou comprobar cada recurso
que teñen que ver se hai unha correspondencia.
Se hai un xogo, eu vou incrementar a puntuación do partido.
E, ao rematar a puntuación do partido que Teño é mellor que o actual mellor
marcar, entón eu vou lembre que mellor puntuación,
e este é o mellor xogo que eu teño.
Ao final, calquera que sexa película está sentándose no mellor xogo,
que é o máis próximo Eu teño sido capaz de chegar.
Entón, eses contidos baseados sistemas de filtrado,
todos eles teñen esta estrutura básica.
Confían enriba do elemento en cuestión e nada
sobre calquera das preferencias do usuario.
>> O outro mecanismo que utilice en a fin de construír sistemas de recomendación
chámase filtrado colaborativa.
Filtrado colaborativo baseado en non as calidades do obxecto en si,
pero como a xente, outra usuarios ou sexa, como eles teñen
respondeu a eses mesmos obxectos.
Entón, para continuar co meu exemplo película, Podería tomar unha morea de amigos meus
e examina-los sobre a existencia ou non lles gustaba de películas particulares.
Agora pode xerar sitios diferentes estes datos de diferentes xeitos.
Pode examinar directamente o seu usuarios, ou lle podería só
ver que eles escollen se é, por exemplo Netflix.
Cales películas que fixo ver?
>> Podería cuestionar algúns dos meus amigos aquí e descubre
Jason gustaba que todas as películas viu, non sorprendendo alí.
Andy só lle gustaba Minions e tía Man.
Sarah gustaba de dentro para fóra e Avengers, o contrario do Andy.
E Sam, así, Sam gusta todas as películas do Superhero,
pero ningún dos filmes de animación.
>> Podería, entón, consultar algún novo individuo, algún outro usuario, como eu,
e preguntar, así, se eu me gustou un destes filmes,
pode facer unha previsión sobre que outras películas que pode gustar.
É dicir, se eu lle gustaba de Dentro Fóra, que outras películas
Eu son propensos a querer tamén para ver con base no que a xente semellantes fixo?
É dicir, eu vou pasar por unha Vou filtrar a través desta lista
e atopar só o individuos que tamén gusta
Inside Out, que combinaba as miñas preferencias.
Ben, iso significa que Andy e Sam, eles non lles gustaba Inside Out,
entón eu non vou considera-los.
Eu estou indo a se librar da súa datos para esta comparación.
>> Podo, entón, mirar para o que Jason e Sarah pensou e Tally
Se que das películas que vían que eu non fixen, no caso de que lles gustou a eles
ou non.
Podería simplemente contar ata, digamos votos.
Entón Minions, por exemplo pode ter un votar a favor porque Jason me gustou.
Ambos Jason e Sarah gustaba Avengers, polo que tería dous votos.
E só Jason gustábame Home-Formiga, polo que sería obter un voto.
Entón, se eu tivese que entón recomendar para min mesmo que estas películas
Podería ser máis probable para asistir, eu o faría ten que escoller Age of Ultron: Avengers.
>> Así, para calquera destes sistemas, agora está a usar
datos que foron xerados non sobre o película en si, pero sobre as preferencias
doutros usuarios.
Isto ten algunhas dificultades, por suposto.
E se non ten outros usuarios?
Ben, iso é chamado de problema de arranque.
Vostede ten que ter algún cantidade de datos antes de que está
capaz de comezar a facer estas recomendacións.
O outro lado é unha vez comezar a recollida de datos,
se pode recoller máis e máis e máis datos,
vai estar mellor e mellor e mellores recomendacións.
>> Agora podemos traducir esta en código tamén.
Podemos definir unha diferente tipo de estrutura,
neste caso, imos chamalo un usuario.
E ten características ten preto de películas que este usuario gusta.
Será que eles gusta Inside Out, Sequazes, Vingadores e Home-Formiga.
Poderiamos, entón, xerar algúns pseudocódigo a seguir
o mesmo procedemento que usei antes.
Isto é, dado un determinado usuario x, imos recomendar unha película
x que pode gustar.
Podemos pasar e para todas as películas,
podemos arrincar unha puntuación para ese filme para ser 0.
E, a continuación, podemos atopar todo dos outros usuarios que
teñen as mesmas preferencias que x.
E, a continuación, para cada película que lles gustou,
imos incrementar a puntuación deste filme.
Calquera que sexa a película final ten a maior puntuación,
que é o que eu debería recomendar.
>> Nada diso é realmente escuro.
Nada diso é un reto.
Estes son todos os algoritmos básicos que pode aplicar hoxe.
>> Agora, con sistemas de recomendación reais, topar con algúns problemas.
E se non hai ninguén que coincide exactamente coas súas preferencias?
E se hai usuarios que son exactamente as súas preferencias,
pero, a continuación, desviar-se drasticamente dende o que lle gusta?
Gústame clásico Godzilla películas, pero a miña muller non.
Eu gusto de velos, meu Conta Netflix contén a eles.
De súa non.
Que pasa cando comezamos mesturando datos como este?
Estes son todos os retos que pode superar,
eles só tomar un pouco algoritmos máis complexos.
>> Agora, no mundo real, o que son realmente operativo,
podemos utilizar a filtrado en base a contidos ou usamos filtrado colaborativo?
E a resposta é que usan os dous.
Case todos os principais usuarios Neste caso, Amazon, Facebook, Netflix,
Pandora, todos eles usan unha combinación de estes sistemas de recomendación diferentes.
E cando quedamos as opcións de cada un, nós os chamamos sistemas híbridos.
Eles dalgunha forma dependen da características do obxecto en si,
e nalgúns aspectos dependen as preferencias de outros usuarios.
Estes sistemas híbridos, son un gran negocio,
e son o que hai de actual hoxe.
>> Entón, moitas grazas por unirse a min.
Espero que ficase un pouco pouco de unha comprensión do que
fai estes sistemas de traballo.
A próxima vez que vostede está en liña, recorda que non só influenciando súas opcións,
pero potencialmente toda a xente é así.
Grazas de novo.