Изменения
Нет описания правки
Заменим жесткую кластеризацию на предположение, что фильм понравится пользователю, если он понравился его друзьям.
<tex> \hat{r}_{ui} = \bar{r}_u + \fracdfrac{\sum_{v \in U_i}{}{sim(u, v)(r_{vi} - \bar{r}_v)}}{\sum_{v \in {U_i}}{}{sim(u, v)}} </tex>
Однако у этого алгоритма есть недостатки:
Так же имеется абсолютно симметричный алгоритм. Теперь будем считать, что фильм понравится пользователю, если ему понравились похожие фильмы.
<tex> \hat{r}_{ui} = \bar{r}_i + \fracdfrac{\sum_{j \in I_u}{}{sim(i, j)(r_{uj} - \bar{r}_j)}}{\sum_{j \in {I_u}}{}{sim(i, j)}} </tex>
У такого подхода остается недостаток в виде холодного старта и при этом рекомендации становятся тривиальными.
Необходимо оптимизировать данный функционал. Множество параметров: для каждого объекта и пользователя есть свой вектор, который нужно оптимизировать. Дабы найти минимум функции воспользуемся градиентом {{---}} вектор из частных производных по каждому параметру.
<tex> \nabla J(\Theta) = (\fracdfrac{\partial J}{\partial \theta_1}, \fracdfrac{\partial J}{\partial \theta_2},\dots,\fracdfrac{\partial J}{\partial \theta_n})^T </tex>
Можно воспользоваться градиентным бустингом:
Было предложено измерять качество рекомендаций при помощи RMSE:
<tex> RMSE = \sqrt{\fracdfrac{1}{|D|} \sum_{(u,i) \in D}{(\hat{r}_{ui} - r_{ui})^2}} </tex>
Однако она также обладает недостатками, хоть и является стандартом измерения качества: