(Да, я намеренно даю другой ответ.)
Другой ответ заключается в том, что все эти алгоритмы имеют свои сильные и слабые стороны и преуспевают в один день, но не в другие. Но некоторое время назад у меня было похожее замечание о склоне-1, и я даже получил некоторые комментарии от Даниэля Лемира, который первоначально предложил реализацию.
Рассмотрим, что происходит, когда данные становятся на 100% плотными - каждый пользователь оценивает каждый элемент. Разница рейтинга между элементом A и элементом B представляет собой среднее для всех пользователей u, занимающихся совместной оценкой, разницы в рейтинге: среднее (r_uB - r_uA). Но, как оценивают все пользователи, это просто приближается к средней оценке (по всем пользователям) для B, минус средняя оценка для A: средняя (r_uB) - средняя (r_uA). Назовите эти средние (B) и средние (A) для простоты.
Представьте себе предмет Р с самым высоким средним рейтингом в целом. Разница между A и P будет больше, чем разница между A и любым другим B; это (среднее (P) - среднее (A)), против (среднее (B) - среднее (A)). Различия P всегда выше, чем у любого другого B (среднее (P) - среднее (B)).
Но поскольку алгоритм оценивает предпочтения, добавляя эти различия к рейтингам пользователей и усредняя их, P всегда становится главной рекомендацией для всех пользователей. Независимо от того, что рейтинг пользователя, и независимо от различий, сумма для P (и, следовательно, в среднем) является наибольшей. И так далее.
Это тенденция, когда данные становятся плотными, и я думаю, что вы уже видите некоторое эхо этого эффекта. Это не «неправильно» (в конце концов, P высоко ценится!), Но интуитивно кажется неоптимальным, так как рекомендации становятся не персонализированными.
Даниэль Лемир говорит, что лучший подход, описанный в некоторых последующих документах, состоит в том, чтобы сегментировать модель данных на «положительные» и «отрицательные» рейтинги и строить независимые модели из обоих. Это позволяет избежать этого и дает лучшую производительность.
Другой вариант, реализованный в Apache Mahout, заключается в использовании лучшего взвешивания при расчете оценочных предпочтений. Он имеет возможность взвешивания против различий, которые имеют высокое стандартное отклонение, и для тех, кто имеет низкое стандартное отклонение. Это благоприятствует различиям, рассчитанным для многих пользователей. Это грубый шаг, но помогает.