Похоже, что вы делаете, это отличное место, чтобы начать с персонализации ваших пользовательских каналов.
Ранжирование на основе метрик популярности (лайки, комментарии и т. Д.), Времени ожидания, а в вашем случае тип контента является основой алгоритма EdgeRank, который использовался Facebook.
Есть многометрик, которые вы можете применить, чтобы попытаться повысить заинтересованность.Что-то пользователю понравилось сообщение из команды x, y раз, так что повышайте активность в фиде по log (x), если публикуете, если оно от y, повышайте активность, если оно новее, повышайте активность, если оно популярно и т. Д. Вы можете начать видеть, что эти EdgeRankалгоритмы могут быть немного громоздкими, довольно быстро, чем больше метрик вы отслеживаете.Также все гиперпараметры, которые вы устанавливаете, имеют тенденцию быть фиксированными для каждого пользователя, что не приведет к идеальному алгоритму ранжирования для каждого пользователя.Вот где техника машинного обучения может вступить в игру.
Основной класс алгоритмов, которые имеют дело с такого рода вещами, часто называют обучением ранжированию и могут быть на высоком уровне обобщены на 3 категории.Методы совместной фильтрации, методы на основе контента и гибридные методы (смесь первых двух)
В случае с фидом, который, скорее всего, обновляется довольно часто с помощью новых элементов, я бы взглянул на методы на основе контента,Как правило, эти алгоритмы оптимизируются с учетом таких метрик взаимодействия, как вероятность того, что пользователь собирается щелкнуть, просмотреть, прокомментировать или выполнить какое-либо действие в своей ленте.
Немного саморекламы: я написал пару постов в блоге, в которых некоторые из них могут показаться вам интересными.
https://getstream.io/blog/instagram-discovery-engine-tutorial/ https://getstream.io/blog/beyond-edgerank-personalized-news-feeds/
Это может быть очень много, поэтому вы также можете взглянуть на использование стороннего сервиса, такого как Stream (отказ от ответственности,Я работаю там), который помогает разработчикам создавать масштабируемые, персонализированные каналы.