Phân rã giá trị kỳ dị (SVD)

Xây dựng Recommendation Engine bằng Python

Rob O'Callaghan

Director of Data

SVD làm gì

Ma trận thưa hình chữ nhật

Xây dựng Recommendation Engine bằng Python

SVD làm gì

Ma trận thưa hình chữ nhật cạnh thừa số thứ nhất

Xây dựng Recommendation Engine bằng Python

SVD làm gì

Ma trận thưa hình chữ nhật cạnh hai thừa số của nó

Xây dựng Recommendation Engine bằng Python

SVD làm gì

Ma trận thưa hình chữ nhật cạnh các thừa số của nó

Xây dựng Recommendation Engine bằng Python

Chuẩn bị dữ liệu

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]])
Xây dựng Recommendation Engine bằng Python

Chuẩn bị dữ liệu

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
     ...               ...                       ...                     ...
Xây dựng Recommendation Engine bằng Python

Áp dụng 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)
Xây dựng Recommendation Engine bằng Python

Áp dụng 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    ]),
Xây dựng Recommendation Engine bằng Python

Tạo ma trận cuối

Ba ma trận nhân tố từ SVD

Xây dựng Recommendation Engine bằng Python

Tạo ma trận cuối

Ba ma trận nhân tố từ SVD

Xây dựng Recommendation Engine bằng Python

Tạo ma trận cuối

Ba ma trận nhân tố từ SVD

Xây dựng Recommendation Engine bằng Python

Tạo ma trận cuối

Ba ma trận nhân tố từ SVD bên cạnh tích của chúng

Xây dựng Recommendation Engine bằng Python

Tính tích trong Python

recalculated_ratings =        np.dot(U, sigma)     

Xây dựng Recommendation Engine bằng Python

Tính tích trong 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      ...   ]
 [ ...        ...        ...      ...   ]]
Xây dựng Recommendation Engine bằng Python

Cộng lại giá trị trung bình

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      ...   ]
 [ ...        ...        ...      ...   ]]
Xây dựng Recommendation Engine bằng Python

Ayo berlatih!

Xây dựng Recommendation Engine bằng Python

Preparing Video For Download...