Neo4j и кластерный анализ

Я разрабатываю веб-приложение, которое будет сильно зависеть от его способности делать предложения по элементам на основе пользователей со схожими предпочтениями. Мой друг сказал мне, что я ищу — математически — какой-нибудь алгоритм кластерного анализа. С другой стороны, здесь, на SO, мне сказали, что Neo4j (или какая-то другая графическая БД) была той БД, к которой я должен был подойти для этой задачи (предпочтения).

Я начал изучать оба этих инструмента, и у меня есть некоторые сомнения. Для целей кластерного анализа мне кажется, что стандартная база данных SQL по-прежнему будет идеальным выбором, в то время как Neo4j лучше подойдет для подхода типа нейронной сети (хотя все еще идеально подходит для этой задачи).

Я что-то пропустил? Я пытаюсь использовать неправильную комбинацию инструментов?

Я хотел бы услышать некоторые идеи по этому вопросу.

Спасибо, что поделился


person Sovos    schedule 13.03.2013    source источник


Ответы (3)


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

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

разница в вычислениях:

  • neo4j не требует затрат на инициализацию и может дать вам рекомендации в приемлемое время.
  • кластеризация требует больше времени для инициализации (например, не в секундах, а, скорее всего, в минутах/часах) и лучше рассчитывать рекомендации для всего набора данных. на самом деле, принимая строго время за один расчет для конкретного пользователя, эта кластеризация может сделать это быстрее, чем neo4j, но большим ограничением является начальная инициализация - поэтому не подходит для приложений в реальном времени.

практическая разница:

  • если у вас есть в основном статические данные и вы можете давать рекомендации время от времени, чем выполнять кластеризацию с помощью SQL

  • если у вас есть динамические данные, где данные обновляются при каждом взаимодействии и вам необходимо всегда предоставлять самую новую рекомендацию, тогда используйте neo4j

person ulkas    schedule 14.03.2013
comment
Это то, о чем я думал. Вторая часть моего вопроса была такова: как вы думаете, мне следует изучать/нужна математическая теория графов, или я должен просто попытаться углубиться в базу данных, и моих фактических знаний должно быть достаточно для достижения необходимых результатов? - person Sovos; 15.03.2013
comment
если вы самоучитель и не имеете образования в колледже, то не тратьте свое время на изучение тем, которые лучше преподавать с учителем, чем на чтение материалов. в этом случае просто попробуйте найти решение для ваших конкретных проблем - например, опубликуйте здесь, в stackoverflow, свои данные и цель, которую вы хотите достичь, и спросите, как это сделать. но с практической точки зрения это самый быстрый способ сделать что-то быстро. если вы просто хотите что-то знать и вам нравится учиться, тогда вперед - person ulkas; 15.03.2013
comment
и для вашей второй части вопроса - я не знаю вашего случая и не могу дать вам ответ. в любом случае, вы должны знать, для чего хороши обе технологии, и поэтому некоторая проверка теории по ним обоим будет полезна. затем вы можете решить, какой из них подходит для вашей конкретной проблемы - person ulkas; 15.03.2013
comment
Мне нравится иметь общее представление о предмете, прежде чем углубляться в тему. Поэтому у меня есть привычка покупать хотя бы книгу университетского уровня, чтобы иметь хороший обзор. Это не позволяет мне использовать неоптимальные подходы, которые приведут к пустой трате времени на более поздних этапах. К сожалению, сейчас у меня почти нет на это времени, и я с радостью приму ваше предложение. Спасибо, что поделился! - person Sovos; 15.03.2013

В настоящее время я работаю над различными темами, связанными с рекомендациями и кластеризацией с neo4j. Я не совсем уверен, что вы ищете, но в зависимости от того, как вы реализуете свои данные на графике, вы можете легко разработать алгоритмы кластеризации, основанные на подсчете ссылок на различные типы узлов.

Если вы правильно спланируете свои узлы и отношения, вы сможете определить группу узлов, которые имеют наиболее общие ссылки на набор категорий.

person bendaizer    schedule 14.03.2013

позвольте мне представить Reco4J (http://www.reco4j.org), это платформа с открытым исходным кодом, которая предоставляет рекомендации на основе источника графовой базы данных. Он использует neo4j в качестве системы управления базой данных графов. Посмотрите на него и свяжитесь с нами, если вы заинтересованы в поддержке. Это очень ранняя версия, но мы прилагаем все усилия, чтобы предоставить расширенную документацию и новые интересные функции.

Привет, Алессандро

person Alessandro Negro    schedule 14.03.2013
comment
Спасибо за ссылки, но я считаю, что проект слишком сложный на ранних стадиях (т. е. с небольшим количеством документации), чтобы к нему подошел полный новичок, как я, даже с небольшим запасом уверенности. - person Sovos; 15.03.2013
comment
Следующий выпуск будет скоро доступен с более подробной информацией в нем. В то же время, если вы свяжетесь с нами, мы можем предоставить вам всю информацию и поддержку, чтобы начать работу с reco4j. - person Alessandro Negro; 16.03.2013
comment
@AlessandroNegro дает рекомендации в реальном времени? - person Abbas Gadhia; 17.05.2013
comment
@Nerrve мы работаем над рекомендацией в реальном времени. Пожалуйста, свяжитесь с нами напрямую, чтобы мы могли обсудить ваш конкретный вариант использования. Контактную информацию можно найти здесь: reco4j .org/contacts.jsp. - person Alessandro Negro; 28.05.2013
comment
ну, я не слишком уверен в точных требованиях. мне нужно некоторое время, чтобы собрать все эти данные, чтобы дать вам. Тем временем я нашел статью, которая может вам понравиться net.pku.edu.cn/report/1< /а>. it (быстрые алгоритмы для запросов и обработки больших графиков) cs.cmu.edu/~htong - person Abbas Gadhia; 31.05.2013
comment
большое спасибо, пожалуйста, заполните, чтобы связаться с нами, когда вы хотите начать, также просто чтобы иметь представление. мы знаем, что документации по reco4j нет, но мы стараемся написать ее и предоставить как можно скорее. А пока мы можем помочь нашему пользователю напрямую. - person Alessandro Negro; 01.06.2013