Upload
pablo-zivic
View
2.151
Download
2
Tags:
Embed Size (px)
Citation preview
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!
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