Изменения

Перейти к: навигация, поиск

Рекомендательные системы

832 байта убрано, 22:59, 18 декабря 2020
Алгоритм SVD
==Алгоритм SVD==
Попробуем воспользоваться [[Сингулярное разложение | сингулярным разложением(SVD)]] для задачи рекомендации.
Разложим матрицу оценок <tex> R </tex> с использованием сингулярного разложения:
<tex> R'_{n \times m} = U'_{n \times d} \times \Sigma '_{d \times d} \times V'^T_{d \times m} </tex>.
 
Из свойств сингулярного разложения мы знаем, что матрица <tex> R'_{n \times m} </tex> является наилучшим низкоранговым приближением с точки зрения средне-квадратичного отклонения.
[[Файл:3.png|400px|thumb|right|SVD для рекомендательных систем.]]
Матрицы <tex> U, V </tex> ортогональные, <tex> \Sigma </tex> {{---}} диагональная:
<tex> UU^T = I_n</tex>,<tex>VV^T = I_m</tex>, <tex> \Sigma = diag(\lambda_1,\dots,\lambda_{min(n, m)})</tex>, <tex>\lambda_1 \geq \dots \geq \lambda_{min(n, m)} \geq 0 </tex> .
 
Обратить внимание же стоит на усеченное разложение, когда из лямбд, остаются только первые <tex> d </tex> чисел, а остальные полагаются равными нулю.
 
<tex> \lambda_{d+1},\dots,\lambda_{min(n,m)} = 0 </tex>
 
Значит у матриц <tex> U </tex> и <tex> V </tex> остаются только первые <tex> d </tex> столбцов, а матрица <tex> \Sigma </tex> становится квадратной размером <tex> d \times d </tex>.
 
<tex> A'_{n \times m} = U'_{n \times d} \times \Sigma'_{d \times d} \times V'^T_{d \times m} </tex>
 
Получаем наилучшее низкоранговое приближение с точки зрения средне-квадратичного отклонения.
Чтобы предсказать оценку пользователя <tex> U </tex> для объекта <tex> I </tex>, берём некоторый вектор <tex> p_u </tex> для данного пользователя и вектор данного объекта <tex> q_i </tex>. Получаем необходимое предсказание: <tex> \hat{r}_{ui} = \langle p_u,q_i \rangle </tex>.
442
правки

Навигация