Механизм рекомендаций на основе SOM

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

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


person Joe Dominic Valluvassery    schedule 08.03.2012    source источник
comment
Вы могли бы лучше использовать CrossValidated или новый DataScience.SE.   -  person smci    schedule 28.11.2016


Ответы (1)


Я не уверен, что самоорганизующаяся карта на самом деле лучше всего подходит для вашего приложения. Он может сохранить топологические свойства вашего входного пространства, но он не очень хорошо подходит для разреженного набора данных, что является постоянной проблемой в механизмах рекомендаций. Я не собираюсь говорить, что 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

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

person Slater Victoroff    schedule 13.06.2013