Нейронная сеть .NET или AI для будущих прогнозов - PullRequest
7 голосов
/ 04 мая 2010

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

В качестве примера я хотел бы привести в библиотеку следующие цифры 1,2,3,4,5

и на основании этого следует прогнозировать следующую последовательность 6,7,8,9,10 и т. Д.

Входные данные будут намного более сложными и содержат гораздо больше информации.

Это будет использоваться в приложении C #.

Если у вас есть какие-либо рекомендации или предупреждения, это будет здорово.

Спасибо

EDIT

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

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

Ответы [ 3 ]

3 голосов
/ 04 мая 2010

Если вы ищете .NET API, то я бы порекомендовал вам попробовать AForge.NET http://code.google.com/p/aforge/

Если вы просто хотите попробовать различные алгоритмы машинного обучения для набора данных, который есть в вашем распоряжении, то я бы порекомендовал вам поиграть с Weka ; он (относительно) прост в использовании и реализует множество алгоритмов ML / AI. Запустите несколько прогонов с разными настройками для каждого алгоритма и попробуйте столько алгоритмов, сколько сможете. Большинство из них будут обладать некоторой предсказательной силой, и если вы объедините правильные, вы действительно сможете получить что-то полезное.

1 голос
/ 04 мая 2010

У меня просто предупреждение, извините. =) * * Тысяча одна

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

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

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

1 голос
/ 04 мая 2010

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

f(0) = 1
f(1) = 2
f(2) = 3
f(3) = 4
f(4) = 5

Хорошим приближением для этих точек будет f(x) = x+1, и это даст f(5) = 6 ... как и ожидалось. Проблема в том, что вы не можете решить эту проблему без знания функции, которую вы хотите экстраполировать: она линейна? Это многочлен? Это гладко? Это (приблизительно или точно) циклический? Каков диапазон и область действия функции? Чем больше вы знаете о функции, которую вы хотите экстраполировать, тем лучше будут ваши прогнозы.

...