2012-05-05 5 views
0

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

chain of digits time 
23 67 34 23 54 | 12:34 
23 54   | 12:42 
78 96 23  | 12:46 
56 93 23 54 | 12:48 

мне нужно основать тенденции номера цепи (расти, падать, стабильный). В моем примере это может быть 23 54 или 23. Также я хочу найти различные корреляции между тенденциями. Данные очень большие. Это могут быть миллиарды строк. Можете ли вы предложить какие-либо книги или алгоритмы? Обратите внимание, что мне нужна информация только о тенденциях и корреляциях в таких типах данных. Мне не нужны базовые книги для интеллектуального анализа данных.

+0

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

+0

Анализ последовательной ассоциации –

ответ

0

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

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

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

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

(1) Consolidate multiple sets into a single, larger set. 

т.е. принять 100 последовательных наборов (в вашем примере, 23, 67, 34, 23, 54, 23, 54, 78, 96, 23 и следующие 97 комплектов) и просто объединить их в набор (игнорируя дубликаты).

(2) Give each *consolidated* set from (1) a label (or index), 
and then map this set (by its label) to the original sets that compose it. 

Таким образом, вы будете иметь возможность получить (посмотреть) оригинал индивидуальные наборы 23, 67, 34, 23, 54 и т.д.

(3) The data is now denormalized - there are a much smaller number of sets, and each set is much larger. 

Теперь, алгоритм переходит на новый этап.

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

Я не предоставляю алгоритм для выполнения сопоставления между двумя отдельными наборами здесь; Я предполагаю, что вы можете придумать один (сортировать как наборы, так и т. Д.).

(5) For every possible matching sequence found in (4), iterate through the individual sets that compose 
the two larger sets being compared, weeding out false positives. 

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

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

(6) Execute steps (4) and (5) for every pair of large sets constructed in (2). 

Теперь у вас будет ВСЕ подходящие последовательности - с дубликатами.

(7) Remove duplicates from the set of matching sequences. 

Просто мысль.

+0

Спасибо, Дэн! Но я думаю, что нашел ключевые слова для решения моей проблемы. Это последовательный паттерн и последовательный последовательный паттерн. Таким образом, это типичная задача интеллектуального анализа данных, и я могу использовать алгоритмы из этих полей, таких как AprioriSome, DynamicSome и т. Д. – Neir0

+0

Задача для интеллектуального анализа данных не является типичной задачей интеллектуального анализа данных. Надеюсь, все идет хорошо! –

+0

Я вижу слово «последовательные узоры». Если вас интересует последовательный анализ шаблонов, вы можете проверить мой проект по разработке последовательных шаблонов: http://www.philippe-fournier-viger.com/spmf/ Это не поможет вам обнаружить тенденции. Но это может помочь вам обнаружить подпоследовательности, общие для нескольких последовательностей. Проект предлагает 46 алгоритмов в Java с пользовательским интерфейсом. Удачи в вашем проекте! – Phil