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