Механизм рекомендаций на основе SOM - PullRequest
3 голосов
/ 08 марта 2012

Я и мой друг решили сделать проект на движке рекомендаций в python. Первоначально мы решили сделать наш проект с использованием SVM, но вскоре это оказалось трудным в качестве обучения под наблюдением, и теперь мы планируем использовать самоорганизующуюся карту и возможную соедините его с коллаборативной фильтрацией (не знаю, возможно ли это) для создания движка. Кто-нибудь посоветует хороший справочник для самоорганизации карты. Также возможны альтернативные варианты, кроме использования коллаборативной фильтрации.

Большое спасибо.

1 Ответ

3 голосов
/ 13 июня 2013

Я не уверен, что самоорганизующаяся карта на самом деле лучше всего подходит для вашего приложения.Он может сохранять топологические свойства вашего входного пространства, но он не очень хорошо подходит для разреженного набора данных, что является постоянной проблемой в механизмах рекомендаций.Я не собираюсь говорить, что SVM лучше, на самом деле он намного дальше того, что вы на самом деле хотите сделать, но SOM будет лишь незначительно лучше.Тем не менее, если вы хотите узнать, как создать SOM, в порядке полезности, стоит обратить внимание на следующие ресурсы.Также стоит упомянуть, что SOM на самом деле очень близок к сверточной нейронной сети, поэтому любые ресурсы для этого должны переноситься довольно хорошо.

http://en.wikipedia.org/wiki/Self-organizing_map
http://ftp.it.murdoch.edu.au/units/ICT219/Papers%20for%20transfer/papers%20on%20Clustering/Clustering%20SOM.pdf
http://www.eicstes.org/EICSTES_PDF/PAPERS/The%20Self-Organizing%20Map%20%28Kohonen%29.pdf
http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf
http://www.willamette.edu/~gorr/classes/cs449/Unsupervised/SOM.html

Насколько подходы, вероятно, будут иметь больше смысла для вашегоконкретное применение, я бы, вероятно, предложил ограниченную машину Больцмана.Идея с RBM состоит в том, что вы пытаетесь создать «профиль рекомендации» для каждого пользователя на основе различной статистики о нем, определяя вектор признаков для пользователя.Это базовое предсказание будет происходить способом, очень похожим на глубокую нейронную сеть.

Как только ваша сеть обучена в одном направлении, реальный блеск RBM заключается в том, что вы затем запускаете ее в обратном направлении.Вы пытаетесь создать профили пользователей из рекомендательных профилей, что очень хорошо работает для таких приложений, как эти.Для получения информации о RBM вы можете посетить эти ссылки:

http://deeplearning.net/tutorial/rbm.html
http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf
http://www.cs.toronto.edu/~hinton/absps/netflix.pdf

Хинтон, в основном, является авторитетным специалистом в этой области, а также представляет собой общий BAMF в области науки о данных.Последняя ссылка в списке RBM фактически сможет полностью создать ваш механизм рекомендаций, но на случай, если вы захотите использовать больше готовых библиотек или использовать другие части науки о данных, я настоятельно рекомендую использовать какое-то уменьшение размерности.механизм, прежде чем пытаться какой-либо совместной фильтрации.

Самая большая проблема с совместной фильтрацией заключается в том, что у вас обычно очень разреженная матрица, которая не совсем дает вам необходимую информацию и в конечном итоге удерживает множество вещей, которыене очень полезно для вас.По этой причине существует ряд алгоритмов в области тематического моделирования, которые обеспечат вам более низкую размерность для ваших данных, которые затем сделают совместную фильтрацию тривиальной или могут быть использованы в любом из других вышеупомянутых подходов для получения более значимых данных сменьшая интенсивность.

gensim - это пакет на python, в котором для вас выполнено множество тематических моделей, а также будут созданы векторы tfidf для вас с использованием numpy и scipy.Это также очень хорошо задокументировано.Примеры, однако, направлены на более прямой НЛП.Просто имейте в виду, что тот факт, что их отдельные элементы являются словами, не влияет на базовые алгоритмы, и вы можете использовать его для менее ограниченных систем.

Если вы хотите получить золото в разделе моделирования тем, вам действительно стоит взглянуть на Pachinko Allocation (PA), который является новым алгоритмом в моделировании тем, который имеет больше возможностей, чем большинство других разработчиков, но неприйти в комплекте в пакетах.

http://www.bradblock.com /Pachinko_Allocation_DAG_Structured_Mixture_Models_of_Topic_Correlations.pdf

Желаю вам удачи в ваших подвигах науки о данных!Дайте мне знать, если у вас есть еще вопросы, и я постараюсь на них ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...