Charla recommender systems

27
Sistemas de recomendación Pablo Hernán Rodriguez Zivic @ideasrapidas

Transcript of Charla recommender systems

Sistemas de recomendación

Pablo Hernán Rodriguez Zivic @ideasrapidas

Big pictureBig Data

• Factorización de matrices

• Un planteo un poco más general (problema de optimización)

• Algoritmos para efectivamente computarlo

• Consideraciones para programárlo en un caso

concreto

• Factorización de matrices

• Un planteo un poco más general (problema de optimización)

• Algoritmos para efectivamente computarlo

• Consideraciones para programarlo en un caso

concreto

Big pictureBig Data

Planteo general

• Contamos con una colección de usuarios

asignando puntajes a películas

• Queremos predecir el puntaje que un usuario

asignaría a una película que no vio (o por lo menos no

tenemos su puntaje).

Alternativas

• Basadas en contenido

• Basadas en comportamiento

• Vecinos más cercanos

• Análisis de factores latentes

Notación

rij Es el rating que el usuario i dio a la película j

ui Es la representación aprendida para el usuario i

vj Es la representación aprendida para el película j

rij = ui vjt

Singular Value Decomposition

• Descomposición que proviene del álgebra lineal

• Necesita la matriz completamente llena

• Cualquier forma de llenarla estaría resolviendo

el problema que nos planteamos originalmente

No sirve

R = USVt

Considerando sólo las entradas que conocemos

• Definimos

• Podemos reformularlo como un problema de

optimización

• Encontrar U y V tales que minimicen

ji

t

jiijvur

,

2

)(

}0/,{ij

Rji

Considerando sólo las entradas que conocemos

• Esto nos deja en el terreno de la optimización

de funciones

• Planteamos un modelo, una función de costo y

luego la minimizamos

ji

t

jiijvur

,

2

)(

Problemas de esta aproximación

• Overfitting• Cantidad de parámetros

• Modelo un tanto simplista

• Sesgos

• Cold start (como casi todas las técnicas basadas en comportamiento)

• Dinámica temporal, niveles de confianza, etc…

Problemas

• Suele estar asociado a valores grandes en los

parámetros

• Una solución estándar: regularización

• Estamos penalizando valores altos para u y v

Overfitting

)||||||(||)(22

,

2

vuvur

ji

t

jiij

Problemas

• El modelo anterior no captura tendencias

sistemáticas de ciertos usuarios o películas

• Esto se puede atacar agregando nuevos

parámetros al modelo

Modelo simplista

t

ji

v

j

u

iijvubbr

Problemas

• Cuando un usuario es nuevo, todavía no vio

películas

• Feedback implícito, N(u)

• Atributos del usuario, A(u) (edad, género, etc.)

• Entonces podemos representar al usuario asi:

Cold start

)( )(

5.0

|)(|

uNi uAa

aiiyxuNu

Optimización

• Hay muchos algoritmos de optimización de

funciones de costo

• Su elección depende de la cantidad de datos y

el tipo de función de costo

• ¿Es diferenciable?• Regularización L1

• ¿Es convexa? ¿Se puede arreglar eso?

• ¿Cuan rala es R?

Optimización

• Descenso por el gradiente

•Computar el gradiente implica iterar todo R en cada paso!!

• Gradiente estocástico• Menor costo computacional

• No tiene garantías de convergencia

• Requiere que los ejemplos estén randomizados

• Híbrido: Descenso por el gradiente mini-batch• Permite realizar un compromiso entre costo computacional y

convergencia

• Todas estas técnicas tienen problemas con

funciones de costo no convexas

Optimización

• Las funciones de costo que definimos tienen

muchos parámetros y son no convexas

• Cuadrados mínimos alternados

• Si hacemos U constante, optimizar V es convexo

• Mismas consideraciones para el computo del

gradiente

No nos olvidemos

Queremos estimar las entradas

desconocidas de R a partir de las

conocidas a partir de

¡¡Entonces podemos utilizar cualquier

técnica de aprendizaje con ese fin!!

Ejemplo de BellKor

En la vida real• Qué técnica elijamos y cómo la computemos

depende de:

• Cantidad de datos

•Velocidad requerida de respuesta

• Coyuntura de costos

• ¿Realmente tenemos que implementarlo? Python-recsys, http://zoogestr.com/

Cantidad de datos• ¿Entran en memoria RAM?

• ¿En un disco rígido?

• ¿Se espera que crezcan mucho?

•¿Necesitamos todos los datos para hacer las

cuentas?

• Overfitting: relación entre cantidad de parámetros y

de datos

Velocidad de respuesta

• ¿El proceso es periódico? ¿Con qué período?

• ¿Es un proceso tipo stream de datos?

• ¿Cuanto tiempo estamos dispuestos a hacer

esperar al usuario nuevo?

Coyuntura de costos

Nobody (yet!) ever got fired

for using Hadoop on a cluster(Microsoft Research, 2012)

• 90% de los jobs de Facebook tienen < 100GB

• Hoy es barato tener 100GB de RAM!

Map-Reduce

Potenciales cuellos de botella

Implementación naïve en Map-Reduce

VUVRV

EVvE

vvur

u

vur

u

vur

t

nknj

j

kj

nj

j n

njnkjk

kn

j

t

jkkj

nk

ji

t

jiij

k

k

k

,,

,

'

',',,

2

,

,

2

)(2

)(2

)()(

Implementación naïve en Map-Reduce

• Entonces tenemos que calcular RVt y UVtV

• Este sketch de implementación está adaptada de

Liu, Chao et al; 2010

• Asume que R tiene 106 x 106 elementos, con 109

elementos distintos de 0

Cálculo de RV

• Map 1: Leer de FS distribuido -> ( j , { i, vj, rij })

• Reduce 1: ( j , { i, vj, rij } ) -> ( i , vj rij )

• Reduce 2: ( i, [ vj rij para j en Ii ] ) -> ( i, xi ) • Donde xi es el definido arriba

p

j

jij

p

j

jiji

i

vrvrxRVX

1

Cálculo de UVtV

• Hay que evitar computar UVt, porque es densa y gigante

• Por otro lado, VtV es una matriz de f x f, donde f es la

cantidad de factores elegidos

• Por lo tanto, puede ser calculada localmente

• Luego U(VtV) se computa de forma similar al caso

anterior

¡Preguntas!¿Preguntas?