Изменения

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

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

55 байт добавлено, 01:02, 16 декабря 2020
Replace hyphen with dash
'''Рекомендательные системы''' {{- --}} программы, которые пытаются предсказать, какие объекты будут интересны пользователю, имея определенную информацию о его профиле.
== Обзор и постановка задачи ==
Основная задача рекомендательных систем {{- --}} проинформировать пользователя о товаре или услуге, которая будет для него наиболее инетерсной и акутальной. Разнообразие таких систем можно проиллюстрировать основными характеристиками:
* Предмет рекомендации.
* Алгоритмы.
В центре таких систем лежит матрица предпочтений. В этой матрице одна из осей отвечает за пользователей, вторая за обхекты рекомендации. Заполнена же эта матрица значениями по заданной шкале (например от 1 до 5). Каждый клиент с малой долей вероятностью оценивал все объекты рекомендации, поэтому задача системы {{- --}} это обобщение информации и предсказание, какое отношение к рекомендуемому обхекту будет у пользователя.
Пользовательские оценки, необходимые для составления матрицы предпочтений, можно получить двумя способами:
}}
Основная идея метода {{- --}} похожим пользователям нравятся похожие объекты.
Алгоритм можно разбить на следующие шаги:
Проблемы алгоритма:
* Нечего рекомендовать новым пользователям, их невозможно определить к какому-нибудь кластеру,а значит и рекомендовать им нечего.
* Не учитывается контекст и специфика пользователя.
* Если в кластере нет оценки объекта, то предсказание невозможно.
{{Определение
|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> \hat{r}_{ui}(\Theta) = p^T_uq_i </tex>,
<tex> E_{(u,i)}(\hat{r}_{ui}(\Theta) - r_{ui})^2 \to min_{\Theta} </tex>
То есть, нужно найти такие параметры <tex> \Theta </tex>, чтобы квадрат ошибки был наименьшим. Однако ситуация следующая: оптимизация приведет к наименьшим ошибкам в будущем, но как именно оценки будут спрашивать {{- --}} неизвестно. Следовательно, это нельзя оптимизировать. Однако, так как оценки уже проставленные пользователями известны, постараемся минимизировать ошибку на тех данных, что у нас уже есть. Так же добавим регуляризатор.
<tex> \sum_{(u,i) \in D}{(\hat{r}_{ui}(\Theta) - r_{ui})^2} + \lambda \sum_{\theta \in \Theta}{\theta^2} \to min_{\Theta} </tex>
<tex> \Theta_{t+1} = \Theta_t - \eta \nabla J(\Theta) </tex>
Проблема же заключается в том, что алгоритм работает медленно, а минимумы которые он находит {{- --}} локальные, а не глобальные.
==Измерение качества рекомендаций==
* Есть риск плохого ранжирования при почти идельаной RMSE и наоборот.
Существуют при этом и другие метрики {{- --}} метрики ранжирования, на основе полноты и точности. Однако они не так популярны и используются значительно реже.
== Источники информации==
442
правки

Навигация