Scomposizione ai valori singolari (SVD)

Creare motori di raccomandazione in Python

Rob O'Callaghan

Director of Data

Cosa fa la SVD

Matrice rettangolare sparsa

Creare motori di raccomandazione in Python

Cosa fa la SVD

Matrice rettangolare sparsa accanto al suo primo fattore

Creare motori di raccomandazione in Python

Cosa fa la SVD

Matrice rettangolare sparsa accanto a due dei suoi fattori

Creare motori di raccomandazione in Python

Cosa fa la SVD

Matrice rettangolare sparsa accanto ai suoi fattori

Creare motori di raccomandazione in Python

Prepariamo i dati

print(book_ratings_df.shape)
(220, 500)
avg_ratings = book_ratings_df.mean(axis=1)

print(avg_ratings)
array([[4.5 ],
       [3.5],
       [2.5],
       [3.5],
        ... 
       [2.2]])
Creare motori di raccomandazione in Python

Prepariamo i dati

user_ratings_pivot_centered = user_ratings_df.sub(avg_ratings, axis=0)
user_ratings_df.fillna(0, inplace=True)

print(user_ratings_df)
          The Great Gatsby    The Catcher in the Rye    Fifty Shades of Grey                    
User_233               0.0                       0.0                     0.0
User_651               0.0                       0.5                    -0.5
User_965               0.5                      -0.5                     0.0
     ...               ...                       ...                     ...
Creare motori di raccomandazione in Python

Applicare la SVD

from scipy.sparse.linalg import svds

U, sigma, Vt = svds(user_ratings_pivot_centered)
print(U.shape)
(610, 6)
print(Vt.shape)
(6, 1000)
Creare motori di raccomandazione in Python

Applicare la SVD

print(sigma)
[3.0, 4.8, -12.6, -3.8, 8.2, 7.3]
sigma = np.diag(sigma)
print(sigma)
array([   3.0    ,   0.     ,   0.     ,   0.     ,   0.     ,   0.     ],
       [  0.     ,   4.8    ,   0.     ,   0.     ,   0.     ,   0.     ],
       [  0.     ,   0.     , -12.6    ,   0.     ,   0.     ,   0.     ],
       [  0.     ,   0.     ,   0.     ,  -3.8    ,   0.     ,   0.     ],
       [  0.     ,   0.     ,   0.     ,   0.     ,   8.2    ,   0.     ],
       [  0.     ,   0.     ,   0.     ,   0.     ,   0.     ,   7.3    ]),
Creare motori di raccomandazione in Python

Ottenere la matrice finale

Le tre matrici fattori ottenute con SVD

Creare motori di raccomandazione in Python

Ottenere la matrice finale

Le tre matrici fattori ottenute con SVD

Creare motori di raccomandazione in Python

Ottenere la matrice finale

Le tre matrici fattori ottenute con SVD

Creare motori di raccomandazione in Python

Ottenere la matrice finale

Le tre matrici fattori ottenute con SVD accanto al loro prodotto

Creare motori di raccomandazione in Python

Calcolare il prodotto in Python

recalculated_ratings =        np.dot(U, sigma)     

Creare motori di raccomandazione in Python

Calcolare il prodotto in Python

recalculated_ratings = np.dot(np.dot(U, sigma), Vt)
print(recalculated_ratings)
[[  0.1      -0.9       -3.6.     ...   ]
 [ -2.3       0.5       -0.5      ...   ]
 [  0.5      -0.5        2.0      ...   ]
 [ ...        ...        ...      ...   ]]
Creare motori di raccomandazione in Python

Raggiungi di nuovo le medie

recalculated_ratings = recalculated_ratings + avg_ratings.values.reshape(-1, 1)
print(recalculated_ratings)
[[  4.6       3.6        0.9      ...   ]
 [  1.8       4.0        3.0      ...   ]
 [  3.0       2.0        4.5      ...   ]
 [ ...        ...        ...      ...   ]]
print(book_ratings_df)
[[  5.0       4.0         NA      ...   ]
 [   NA       4.0        3.0      ...   ]
 [  3.0       2.0         NA      ...   ]
 [ ...        ...        ...      ...   ]]
Creare motori di raccomandazione in Python

Ayo berlatih!

Creare motori di raccomandazione in Python

Preparing Video For Download...