Рекомендация Engin для одного из видов "продуктов" - PullRequest
1 голос
/ 25 марта 2011

Рынок, который мы создаем, позволяет людям перечислять свои вещи для продажи, но в пакетах / сумках / коробках. Мы рассчитываем встроить механизм рекомендаций для этого, но большинство статей там, кажется, лучше подходят для рынков, которые «продают» большое количество многих продуктов - например, amazon, netflix и т. Д. Поскольку каждый листинг несколько уникален, что является лучший подход для рекомендации двигателя? Какие-нибудь соответствующие статьи там?

Мы знаем, что люди покупали в прошлом. Мы знаем размер или возраст, который они ищут.

В перечисленных комплектах есть категории, бренды, размеры / возраст, цвета и текст произвольной формы.

Есть идеи, чтобы помочь нам начать? Какой конкретный язык вы считаете лучшим, если наши данные хранятся в MySQL?

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

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

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

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

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

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

Что касается механизма рекомендаций, вы можете использовать SVD с научной библиотекой GNU (привязки доступны для любой платформы).Вы также можете выбрать механизм рекомендаций Mahout (часть мира Hadoop), если вы собираетесь использовать большие данные.Что касается фильтра, вы можете посмотреть на apophenia, libsvm или FANN.

Вы также можете некоторое время поработать в аналитической среде, пока не почувствуете, что у вас есть контроль над вещами.Некоторые из них на выбор: Weka, R, Octave, Matlab, Maple и Mathematica.Я думаю, что сначала перечислил их с точки зрения цены, а затем простоты использования.

Что касается ресурсов, есть несколько хороших вводных книг: Коллективный разум, Махоут (MEAP от Мэннинга), Data Mining (все о Weka) и моделирование с использованием данных (справочник по апофении).

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

0 голосов
/ 25 марта 2011

Лично я предпочитаю Ruby, но Ruby, Python и Perl могут легко подключаться к MySQL.

Одной из причин, по которой мне нравится Ruby, является его Sequel gem, который является очень мощным ORM, что делает доступ к базе данных очень простым в управлении. Если вы используете MVC, Ruby имеет Rails , который предпочитает ActiveRecord в качестве ORM, что также облегчает общение с MySQL. Также есть Sinatra и Padrino, которые немного легче ORM, но тоже очень способные. Они более независимы от БД и прекрасно интегрируются с Sequel.

...