Время от времени пользователи спрашивают нас, как мы делаем рекомендации в Feeedpresso, и теперь это хорошая возможность рассказать об этом, чтобы наши пользователи могли быть более уверенными во всем процессе.
Я не буду вдаваться здесь во все мельчайшие детали, но это должно дать вам гораздо лучшее представление о том, как работает система.
Прежде всего, речь идет о данных, которые мы собираем. Feedpresso отмечает несколько основных взаимодействий с приложением:
- новость открыта для чтения
- новость добавлена в закладки
- запись новости введена и покинула экран
- новость отмечена как неинтересная (проведите пальцем влево)
- новость отмечена как интересная (проведите пальцем вправо)
Первые три — это неявная обратная связь об актуальности историй, а последние две — явная обратная связь, поскольку пользователь намеренно дает нам знать, уместно это или нет.
Эти взаимодействия имеют разный вес в нашей системе. Например, открытие статьи — действительно сильный показатель того, что история интересна. С другой стороны, тот факт, что вход пришел на экран и ушел без каких-либо действий, расценивается как мягкий отрицательный отзыв. Кроме того, серьезно воспринимается явная обратная связь — если пользователю не понравилась история, ее будет намного меньше.
При этом система создает исторический профиль пользователя и его предпочтений, взвешенных по более свежим интересам.
Когда пользователь открывает приложение и загружается новый поток обновлений, учитывается несколько факторов, чтобы выбрать лучшие истории и определить их порядок. Назовем наиболее важные факторы:
- Содержание историй (подход, выходящий за рамки одних только ключевых слов) сопоставляется с историческим профилем пользователя, чтобы увидеть, интересует ли его тема.
- Склонен ли пользователь читать из этого источника (надежен ли источник для читателя)?
- Является ли источник спамом? Источники спама (много историй в день) получают отрицательную оценку.
- История горячая (интересная) для всех? Если да, то это, вероятно, то, что вы должны увидеть.
- Очевидно, есть своевременность — насколько свежее обновление.
И это все. В конце концов, все это вводится в нашу вероятностную модель машинного обучения, которая взвешивает различные факторы и дает окончательную оценку — насколько вероятно, что история актуальна для пользователя.
Технический человек сразу увидит, что мы не используем приемы коллаборативной фильтрации — это правильно. Этот подход плохо подходит для контента, который быстро меняется и быстро становится неактуальным. Кроме того, он страдает от проблемы с холодным запуском — трудно сразу предоставить релевантный контент пользователям.
Тем не менее, у нас есть планы на открытие новых источников (блоги и новостные сайты).
Если так случится, что вы не пробовали Feedpresso, попробуйте — это может вас удивить :).