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

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 3: Строка 3:
 
== Обзор и постановка задачи ==
 
== Обзор и постановка задачи ==
  
Основная задача рекомендательных систем<ref>[https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 Рекомендательные системы]</ref> {{---}} проинформировать пользователя о товарах или услугах, которые будут для него наиболее интересными и актуальными. Разнообразие таких систем можно проиллюстрировать основными характеристиками:
+
Основная задача рекомендательных систем {{---}} проинформировать пользователя о товарах или услугах, которые будут для него наиболее интересными и актуальными. Разнообразие таких систем можно проиллюстрировать основными характеристиками:
  
 
* предмет рекомендации;
 
* предмет рекомендации;
Строка 66: Строка 66:
 
Заменим жесткую кластеризацию на предположение, что объект понравится пользователю, если он понравился похожим пользователям. Тогда предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> можно записать следующим образом:
 
Заменим жесткую кластеризацию на предположение, что объект понравится пользователю, если он понравился похожим пользователям. Тогда предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> можно записать следующим образом:
  
<tex> \hat{r}_{ui} = \bar{r}_u + \dfrac{\sum_{v \in U_i}{}{sim(u, v)(r_{vi} - \bar{r}_v)}}{\sum_{v \in {U_i}}{}{sim(u, v)}} </tex>, где <tex>\bar{r}_u</tex> {{---}} средняя оценка, проставленная пользователем <tex> u </tex>, а <tex> sim(u,v) </tex> {{---}} мера схожести пользователей  <tex>u</tex> и <tex>v</tex>.  
+
<tex> \hat{r}_{ui} = \bar{r}_u + \dfrac{\sum_{v \in U_i}{}{sim(u, v)(r_{vi} - \bar{r}_v)}}{\sum_{v \in {U_i}}{}{sim(u, v)}} </tex>, где <tex>\bar{r}_u</tex> {{---}} средняя оценка, проставленная пользователем <tex> u </tex>, <tex> sim(u,v) </tex> {{---}} мера схожести пользователей  <tex>u</tex> и <tex>v</tex>.  
  
 
Однако у этого алгоритма есть недостатки:  
 
Однако у этого алгоритма есть недостатки:  
Строка 76: Строка 76:
 
Также имеется абсолютно симметричный алгоритм. Теперь будем считать, что объект понравится пользователю, если ему понравились похожие объекты. Предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> запишется так:
 
Также имеется абсолютно симметричный алгоритм. Теперь будем считать, что объект понравится пользователю, если ему понравились похожие объекты. Предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> запишется так:
  
<tex> \hat{r}_{ui} = \bar{r}_i + \dfrac{\sum_{j \in I_u}{}{sim(i, j)(r_{uj} - \bar{r}_j)}}{\sum_{j \in {I_u}}{}{sim(i, j)}} </tex>, где <tex>\bar{r}_i</tex> {{---}} средняя оценка, проставленная объекту <tex> i </tex>, а <tex> sim(i, j) </tex> {{---}} мера схожести объектов  <tex>i</tex> и <tex>j</tex>.   
+
<tex> \hat{r}_{ui} = \bar{r}_i + \dfrac{\sum_{j \in I_u}{}{sim(i, j)(r_{uj} - \bar{r}_j)}}{\sum_{j \in {I_u}}{}{sim(i, j)}} </tex>, где <tex>\bar{r}_i</tex> {{---}} средняя оценка, проставленная объекту <tex> i </tex>, <tex> sim(i, j) </tex> {{---}} мера схожести объектов  <tex>i</tex> и <tex>j</tex>.   
  
 
У такого подхода остается недостаток в виде холодного старта и при этом рекомендации становятся тривиальными.
 
У такого подхода остается недостаток в виде холодного старта и при этом рекомендации становятся тривиальными.
Строка 90: Строка 90:
 
Применяя усеченное разложение, получим следующее:
 
Применяя усеченное разложение, получим следующее:
 
<tex> R'_{n \times m} = U'_{n \times d} \times \Sigma '_{d \times d} \times V'^T_{d \times m} </tex>.
 
<tex> R'_{n \times m} = U'_{n \times d} \times \Sigma '_{d \times d} \times V'^T_{d \times m} </tex>.
Из свойств сингулярного разложения мы знаем, что матрица <tex> R'_{n \times m} </tex> является наилучшим низкоранговым приближением с точки зрения средне-квадратичного отклонения. Несколько упростим запись выражения: запишем произведение первых двух матриц <tex> \tilde{U}_{n \times d} = U'_{n \times d} \times \Sigma '_{d \times d} </tex>, а матрицу <tex> V'^T_{d \times m} </tex> обозначим как <tex> \tilde{V}_{d \times m} </tex>. Получим формулу <tex> R'_{n \times m} =  \tilde{U}_{n \times d}  \times \tilde{V}_{d \times m} </tex>. Интерпретировать полученную формулу стоит следующим образом: приближенная матрица оценок может быть вычислена как произведение усеченных матриц пользователей и оценок.
+
Из свойств сингулярного разложения мы знаем, что матрица <tex> R'_{n \times m} </tex> является наилучшим низкоранговым приближением с точки зрения средне-квадратичного отклонения. Несколько упростим формулу: запишем произведение первых двух матриц <tex> \bar{U}_{n \times d} = U'_{n \times d} \Sigma '_{d \times d} </tex>, а матрицу V'^T_{d \times m} обозначим как <tex> \bar{V}_{d \times m} </tex>. Получим формулу следующего вида <tex> R'_{n \times m} =  \bar{U}_{n \times d}  \times \bar{V}_{d \times m} </tex>.  
  
 
Благодаря использованию такого усечения можно решить одну из главных проблем всех ранее упомянутых алгоритмов: ресурсоемкость вычислений.
 
Благодаря использованию такого усечения можно решить одну из главных проблем всех ранее упомянутых алгоритмов: ресурсоемкость вычислений.
  
[[Файл:RecommendSVD.png|450px|thumb|right|SVD для рекомендательных систем.]]
+
[[Файл:3.png|400px|thumb|right|SVD для рекомендательных систем.]]
  
 
Чтобы предсказать оценку пользователя <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> u </tex> для объекта <tex> i </tex>, берём некоторый вектор <tex> p_u </tex> для данного пользователя и вектор данного объекта <tex> q_i </tex>. Получаем необходимое предсказание: <tex> \hat{r}_{ui} = \langle p_u,q_i \rangle </tex>.
Строка 149: Строка 149:
 
* [[Оценка качества в задаче кластеризации]]
 
* [[Оценка качества в задаче кластеризации]]
 
* [[Оценка качества в задачах классификации и регрессии]]
 
* [[Оценка качества в задачах классификации и регрессии]]
== Примечания ==
+
 
<references/>
 
 
== Источники информации==
 
== Источники информации==
 
* [https://habr.com/ru/company/yandex/blog/241455/ Как работают рекомендательные системы.]
 
* [https://habr.com/ru/company/yandex/blog/241455/ Как работают рекомендательные системы.]

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: