Предскажите следующее возникновение события, на основе прошлых случаев

Простой подход заключается в использовании forEach -

let statistics = [];
metrics.forEach(m => {
  stats.forEach(s => {
    let value = calculateStatsForMetric(s, m, measures);
    if (value) {
      statistics.push({
        metric: m,
        stat: s,
        value: value
      });
    }
  });
});
16
задан Svante 16 April 2009 в 21:52
поделиться

7 ответов

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

8
ответ дан 30 November 2019 в 22:50
поделиться

This может быть излишним, но цепочки Маркова могут привести к довольно интересным вещам распознавания образов. Что ж, лучше всего подходит для цепочек событий: идея состоит в том, что будет происходить на основе последних N шагов в цепочке событий?

Это хорошо подходит для текста: обработать большой образец Шекспира и Вы можете создавать абзацы, полные шекспировской чепухи! К сожалению, для определения малонаселенных событий требуется гораздо больше данных. (Обнаружение паттернов с периодом в месяц или более потребует от вас отслеживания цепочки из минимум полного месяца данных.)

В псевдопионе вот грубый набросок цепи Маркова скрипт построения / прогнозирования:

n = how_big_a_chain_you_want
def build_map(eventChain):
    map = defaultdict(list)
    for events in get_all_n_plus_1_item_slices_of(eventChain):
        slice = events[:n]
        last = events[-1]
        map[slice].append(last)

def predict_next_event(whatsHappenedSoFar, map):
    slice = whatsHappenedSoFar[-n:]
    return random_choice(map[slice])
4
ответ дан 30 November 2019 в 22:50
поделиться

Если вы имеете в виду модель (например, события происходят регулярно), то примените фильтр Калмана к параметрам этой модели является распространенным методом.

2
ответ дан 30 November 2019 в 22:50
поделиться

Нет единого «лучший» консервированный раствор, это зависит от того, что вам нужно. Например, вы можете усреднить значения, как вы говорите, но используя средневзвешенные значения, когда старые значения не влияют на результат в такой степени, как новые. Или вы можете попробовать сгладить. Или вы можете попытаться увидеть, соответствует ли распределение событий хорошо известному распределению (например, нормальному, пуассоновскому, равномерному).

2
ответ дан 30 November 2019 в 22:50
поделиться

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

0
ответ дан 30 November 2019 в 22:50
поделиться

Вы должны Google Алгоритмы генетического программирования

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

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

Хотя, в первую очередь, это огромная работа, чтобы заставить их работать!

-2
ответ дан 30 November 2019 в 22:50
поделиться

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

1
ответ дан 30 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: