Algoritmos de Recomendação

Felipe Cruz

@felipejcruz

github.com/felipecruz

Problema
Algoritmos
CF & RBMs

Motivação?

relevância
eficiência
personalização

?

Problema

?

?

?

?

?

?

?

?

+

=

?

Quantos usuários?

Quantos produtos?

Recomendação não serve apenas para "Big Data", só que..

quanto maior for a matriz, mais recursos são necessários

Problema
AlgoritmosCF & RBMs

Sistemas de Recomendação

Sistemas de Recomendação

Filtragem Colaborativa

Similaridade

 

(neighborhood based)

Procedimento de treino

Para cada usuário

Descobre usuários que compraram produtos em comum

Procedimento de treino

Procedimento de treino

agora podemos calcular a similaridade

f(
)
f

é a função de similaridade

f(a, u, I) = \frac{\sum_{i \in I} (r_{a,i} - \overline{r_a}) (r_{u,i} - \overline{r_u})}{\sqrt{\sum_{i \in I} (r_{a,i} - \overline{r_a})^{2} \sum_{i \in I}(r_{u,i} - \overline{r_u})^{2}}}

Pearson correlation

nota dada pelo usuário a ao item i menos média das notas do usuário a

I = \{ \quad , \quad \}
\sum_{i \in I} (r_{a,i} - \overline{r_a})
(r_{u,i} - \overline{r_u})
\sum_{i \in I} (r_{a,i} - \overline{r_a})
(r_{u,i} - \overline{r_u})
[(4.5 - 4)(4 - 3.5)] + [(3.5 - 4)(3 - 3.5)]
[0.5 \times 0.5]+[-0.5 \times -0.5] = 0.5
\sqrt{\sum_{i \in I} (r_{a,i} - \overline{r_a})^2 \sum_{i \in I} (r_{u,i} - \overline{r_u})^2}
[(4.5 - 4)^2 + (3.5 - 4)^2] \times [(4 - 3.5)^2 + (3 - 3.5)^2]
[(0.5)^2 + (-0.5)^2] \times [(0.5)^2 + (-0.5)^2] = \sqrt{0.5^2} = 0.5
\frac{0.5}{0.5} = 1

Predição?

p_{a,i} = \overline{r_{a}} + \frac{\sum_{u \in K}(r_{u,i} - \overline{r_{u}}) \times w_{a,u}}{\sum_{u \in K} w_{a,u}}

Predição

p_{a,i} = 4 + \frac{5 - 3.5 \times 1}{1} = 5.5

Predição

Template method - treino

  • for u in usuarios:
    • similares = mesmos_produtos(R, u)
    • for s in similares:
      • S[(u,s)] = similaridade(u, s)

Outras medidas de similaridade

Jaccard

pausa...

Fator latente

(model based)

Capturar informação implícita

Capturar informação implícita

#comofaz

?

?

?

?

?

?

?

?

R_{ij} \in
(u \times p)

Vamos dar um nome aquela matriz:

Model Based?

Modelo

\langle u_{i},p_{j} \rangle \approx R_{ij}

Fatorar matrizes

\overline{R}_{(u \times p)} = U_{(u \times k)}P_{(k \times p)}
\text{min} \sum_{i,j \in L}(r_{i,j} - u_{i}p_{j})^2
U,P
T
+ \lambda \left(\sum_{i} n_{u_i} \left \vert\vert u_i \right \vert\vert ^2 + \sum_{j} n_{v_j} \vert\vert v_j \vert\vert^2 \right)

Formalização do Problema

\langle u_{i},p_{j} \rangle
\text{min} \sum_{i,j \in L}(r_{i,j} - u_{i}p_{j})^2
U,P
T
+ \lambda \left(\sum_{i} n_{u_i} \left \vert\vert u_i \right \vert\vert^2 + \sum_{j} n_{v_j} \vert\vert v_j \vert\vert^2 \right)

Formalização do Problema

Regularização contra overfit

\text{min} \sum_{i,j \in L}(r_{i,j} - u_{i}p_{j})^2
U,P
T
E = \left( \begin{array}{cc} 2 & 4 \\ 3 & 6 \end{array} \right) - \left( \begin{array}{cc} \langle u_{1},p_{1} \rangle & \langle u_{1},p_{2} \rangle \\ \langle u_{2},p_{1} \rangle & \langle u_{2},p_{2} \rangle \end{array} \right)

Minimizar o erro

R_{ij}
\overline{R}_{ij}

Algoritmo ALS

  1. Inicializa U com valores randômicos
  2. Fixa U, e para cada linha de P resolvemos um problema de regressão linear para achar valores ótimos para P
  3. Fixa P, e para cada linha de U resolvemos um problema de regressão linear para achar valores ótimos para U

ALS

Ajusta traseira

Ajusta frente

Ajusta traseira

Ajusta frente

 

Problema
AlgoritmosCF & RBMs

RBM

  • Modelo generativo
  • Reconhece e completa padrões
  • Algoritmo de aprendizado eficiente

RBMs & CF 

Modelo

  • Cada destino é uma unidade visível
    • 1 se comprou
    • 0 se não comprou

Também é possível usar atributos do usuário no modelo. Ex: tem filhos? Só compra pacotes de luxo? 

Predição - input

profile = [0, 0, 0, 1, 0, 0, 0, 1]

(buzios e ilha grande)

Predição - output

pred = [0, 1, 0, 1, 0, 0, 1, 1]

(buzios, ilha grande, angra, balneário camboriú)

RBM

ALS

Na prática

  • Funciona* bem com amostras do dataset
  • Perfis vazios voltam com destinos mais populares
  • Predição não determinística
  • Pode ser usada antes de um modelo de Rating pra diminuir a quantidade de predições necessárias
  • Ensemble!!!

http://www.slideshare.net/akyrola/largescale-recommendation-systems-on-just-a-pc

Perguntas?

@felipejcruz

github.com/felipecruz

Recomendação e Algoritmos de Filtragem Colaborativa

By Felipe Cruz

Recomendação e Algoritmos de Filtragem Colaborativa

  • 1,179