Я ищу, чтобы написать базовую рекомендательную систему в Objective-C, и я ищу базовый алгоритм работы. К сожалению, готовые системы отключены от таблицы, поскольку, похоже, для Objective-C не существует.Алгоритм алгоритма основных рекомендаций
У меня будет база данных с элементами, каждая с тегами (думаю, фильмы с тегами типа «ужас», «действие» и т. Д.). У каждого элемента было бы ~ 5 или около того этих тегов. Когда пользователь сначала использует приложение, их профиль будет загружаться на основе их ввода в ряд вопросов, связывая некоторые теги с их профилем.
Поскольку пользователь продолжает использовать систему и оценивать различные элементы (на основе ненависти/любви/любви), я бы хотел настроить взвешивание рекомендуемых тегов на основе этой обратной связи. Я также хотел бы взять еще несколько свойств своих рейтингов, поскольку их профиль растет, например, «80-е», если это касается фильмов. Или, может быть, режиссер, придерживающийся темы фильма.
Я предпочитаю избегать нормальной (или, по крайней мере, популярной) системы рекомендаций, где он ищет похожих пользователей для создания рекомендаций. Это будет иметь размер базы данных и минимальных пользователей для запуска.
Может ли кто-нибудь порекомендовать хорошую отправную точку для такого алгоритма, мне бы не хотелось изобретать колесо, и там много чего?
У меня нет опыта с этим, но я думаю, что это можно сделать без каких-либо движков или фреймворков, что, вероятно, даст вам гораздо большую гибкость и контроль. По основам я не думаю, что это должно быть намного больше, чем подсчет тегов и, может быть, лет со временем и т. Д. (Например, 80-е годы), а затем либо рассчитать, что нравится пользователям, либо найти совпадения на них, либо рассчитать каждый результат матча с пользователем и выбрать топ-что-то. – altschuler
Как насчет создания базы знаний и использования алгоритма обратной цепочки? это немного перебор, но я думаю, что это сработает. – doNotCheckMyBlog
Есть ли причина, по которой вы придерживаетесь цели-c, если у вас есть готовый продукт на другом языке? Я бы использовал его, написав этот язык как код или использовать его в качестве существующей реализации и просто построить интерфейс для обмена данными между двумя модулями. – amit