Изменения

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

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

5221 байт добавлено, 17:46, 25 марта 2020
Измерение качества реомендаций
==Решение проблемы матрицы оценок==
 
Модель будет зависить от ногих параметров - вектора пользователей и вектора объектов. Для заданных парметров, возьмем вектор пользователя, вектор объекта и получим их скалярное произведение, чтобы предсказать оценку:
 
<tex> \hat{r_{ui}}(\Theta) = p^T_uq_i </tex>,
 
<tex> \Theta = {p_u,q_i | u \in U, i \in 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>
 
{{Определение
|definition=
'''Регуляризация''' (англ. ''regularization'') в статистике, машинном обучении, теории обратных задач — метод добавления некоторых дополнительных ограничений к условию с целью решить некорректно поставленную задачу или предотвратить переобучение. Чаще всего эта информация имеет вид штрафа за сложность модели.
}}
 
Регуляризация заключается в том, что минимизируется не только ошибка, но и некоторая функция параметров (например, норма вектора параметров). Это позволяет ограничить размер параметров в решении, уменьшает степень свободы модели.
 
==Численная оптимизация==
 
<tex> J(\Theta) = \sum_{(u,i) \in D}{(r^T_u - r_{ui})^2} + \lambda (\sum_u{||p_u||^2} + \sum_i{||q_i||^2}) </tex>
 
Необходимо оптимизировать данный функционал. Множество параметров: для каждого объекта и пользователя есть свой вектор, который нужно оптимизировать. Дабы найти минимум функции воспользуемся градиентом - вектор из частных производных по каждомц параметру.
 
<tex> \nabla J(\Theta) = (\frac{\partial J}{\partial \theta_1}, \frac{\partial J}{\partial \theta_2},...,\frac{\partial J}{\partial \theta_n})^T </tex>
 
Можно воспользоваться градиентным бустингом:
 
<tex> \Theta_{t+1} = \Theta_t - \eta \nabla J(\Theta) </tex>
 
Проблема же заключается в том, что алгоритм работает медленно, а минимумы которые он находит - локальные, а не глобальные.
 
==Измерение качества рекомендаций==
 
Было предложено измерять качество рекомендаций при помощи RMSE:
 
<tex> RMSE = \sqrt{\frac{1}{|D|} \sum_{(u,i) \in D}{(\hat{r_{ui}} - r_{ui})^2}} </tex>
 
Однако она также обладает недостатками, хоть и является стандартом измерения качества:
 
* Пользователи с большим разбросом оценок будут влиять на значение метрики больше, чем остальные.
* Ошибка в предсказании высокой оценки имеет такой же вес, что и ошибка в предсказании низкой оценки.
* Есть риск плохого ранжирования при почти идельаной RMSE и наоборот.
 
Существуют при этом и другие метрики - метрики ранжирования, на основе полноты и точности. Однако они не так популярны и используются значительно реже.
22
правки

Навигация