Рекомендованный двигатель нейронной сети
Как создать проекцию нейронной сети с целью использования механизма рекомендации. Я предполагаю, что для каждого пользователя потребуется их собственная сеть, но как бы вы могли создавать входы и выходы для рекомендации элемента в базе данных. Есть ли хорошие учебники или что-то еще?
Изменить: Я больше думал о том, как создать сеть. Как и сколько входных нейронов и как выходные нейроны указывают на запись в базе данных. Вы бы сказали, 6 выходных нейронов, преобразовать его в целое число (которое было бы чем угодно от 0 до 63), и это идентификатор записи в базе данных? Так люди это делают?
Ответы
Ответ 1
Я бы предложил искать нейронные сети, используя неконтролируемое обучение, например самоорганизующиеся карты. Очень сложно использовать обычные контролируемые нейронные сети, чтобы делать то, что вы хотите, если вы не можете классифицировать данные очень точно для обучения. самоорганизующиеся карты не имеют этой проблемы, потому что сеть самостоятельно изучает классификационные группы.
взгляните на эту статью, в которой описывается музыкальная система рекомендаций для музыки
http://www.springerlink.com/content/xhcyn5rj35cvncvf/
и еще много статей, написанных по этой теме от google scientar
http://www.google.com.au/search?q=%09+A+Self-Organizing+Map+Based+Knowledge+Discovery+for+Music+Recommendation+Systems+&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:official&client=firefox-a&safe=active
Ответ 2
Сначала вы должны решить, что именно вы рекомендуете и при каких обстоятельствах. Есть много вещей, которые нужно учитывать. Вы собираетесь рассмотреть "других пользователей, которые купили X, также купили Y?" Собираетесь ли вы рекомендовать только те предметы, которые имеют сходный характер друг с другом? Вы рекомендуете элементы, которые имеют отношение типа "один-более-полезный-один-один"?
Я уверен, что есть много решений, и каждый из них имеет свои собственные цели. Было бы очень сложно подготовить одну гигантскую сеть для обработки всего вышеперечисленного.
Нейронные сети все сводятся к одному и тому же. У вас есть заданный набор входов. У вас есть топология сети. У вас есть функция активации. У вас есть веса на входах узлов. У вас есть выходы, и у вас есть средство для измерения и исправления ошибок. Каждый тип нейронной сети может иметь свой собственный способ выполнения каждой из этих вещей, но они присутствуют все время (по моим ограниченным знаниям). Затем вы тренируете сеть, подавая ряд наборов входных сигналов, которые имеют известные результаты вывода. Вы запускаете этот тренировочный набор столько, сколько хотите, без тренировки или тренировки (насколько это возможно, так как это следующий парень), а затем вы готовы к работе.
По существу, ваш набор ввода может быть описан как определенный набор качеств, которые, по вашему мнению, имеют отношение к лежащей в основе функции (например: осадки, влажность, температура, болезнь, возраст, местоположение, стоимость, умение, время день, день недели, статус работы и пол, все они могут сыграть важную роль в принятии решения о том, будет ли человек играть в гольф в определенный день). Поэтому вы должны решить, что именно вы пытаетесь рекомендовать и при каких условиях. Ваши сетевые входы могут быть логическими по своей природе (0.0 - false, а 1.0 - истинно, например) или отображаться в псевдо-непрерывном пространстве (где 0.0 может означать не совсем,.45 означает несколько,.8 означает "вероятность", а 1.0 означает да). Этот второй вариант может предоставить вам инструменты для сопоставления уровня достоверности для определенного ввода или простой математический расчет, который, по вашему мнению, имеет значение.
Надеюсь, это помогло. Вы не дали много времени:)