Изменения

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

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

6 байт добавлено, 01:11, 16 декабря 2020
Нет описания правки
Очевидно, что явное оценивание лучше, так как сам пользователь определяет насколько ему интересен тот или иной объект, однако из-за непостоянства в получении явных оценок от пользователей, на практике используется оба подхода.
Формализуем задачу. Имеется множество пользователей <tex> u \in U </tex>, множество объектов <tex> i \in I </tex> и множество событий <tex> (r_{ui}, u, i, ...\dots) \in D </tex> (действия, которые совершают пользователи с объектами). Каждое событие задается пользователем <tex> u </tex>, объектом <tex> i </tex>, своим результатом <tex> r_{ui} </tex> и, возможно, но не обяхательно, другими харакетристиками. По итогу требуется:
* предсказать предпочтение: <tex> \hat{r}_{ui} = Predict(u, i,\dots) \approx r_{ui} </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> \nabla J(\Theta) = (\frac{\partial J}{\partial \theta_1}, \frac{\partial J}{\partial \theta_2},...\dots,\frac{\partial J}{\partial \theta_n})^T </tex>
Можно воспользоваться градиентным бустингом:
442
правки

Навигация