22
правки
Изменения
Нет описания правки
{{Определение
|definition=
'''SVD''' (''Single Value Decomposition'') {{---}} у любой матрицы <tex> A </tex> размера <tex> n \times m </tex> существует разложение трех матриц: <tex> U, \Sigma, V^T </tex>:. Матрицы <tex> U, V </tex> ортогональные, а <tex> \Sigma </tex> - диагональная.
<tex> A_{n \times m} = U_{n \times n} \times \Sigma_{n \times m} \times V^T_{m \times m} </tex>
}}
<tex> UU^T = I_n</tex>, <tex>VV^T = I_m</tex>
<tex> \Sigma = diag(\lambda_1, ..., \lambda_{min(n, m)})</tex>, <tex>\lambda_1 \geq ... \geq \lambda_{min(n, m)} \geq 0 </tex>
Обратить внимание же стоит на усеченное разложение, когда из лямбд, остаются только первые <tex> d </tex> чисел, а остальные полагаем, что равны нулю.
<tex> \lambda_{d+1}, ..., \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>.
Помимо предсказания оценок, алгоритм позволяет выявлять скрытые признаки объектов и интересы пользователей.
Одна есть и свои проблемы:
*<tex> R </tex> матрица оценок полностью не известна, поэтому просто взять SVD разложение не получится.
*SVD разложение не единственное, поэтому даже если какое-то разложение будет найдено, нет гарантии, что первая координата в нем будет соответствовать некоторым выбранным характеристикам пользователя.
==Решение проблемы матрицы оценок==