Алгоритмы извлечения кортежей данных на огромном выборочном пространстве

Я читал, что алгоритм Apriori используется для извлечения правил ассоциации из набора данных, таких как набор кортежей. Это помогает нам найти наиболее часто встречающиеся наборы из 1 элемента, из 2 элементов и так далее. Моя проблема немного в другом. У меня есть набор данных, представляющий собой набор кортежей, каждый из которых имеет разный размер:

(1, 234, 56, 32) (25, 4575, 575, 464, 234, 32) . . . кортежи разного размера

Домен для записей огромен, а это означает, что я не могу иметь двоичный вектор для каждого кортежа, который сообщает мне, присутствует ли элемент «x» в кортеже. Следовательно, я не вижу здесь подходящего априорного алгоритма.

Моя цель - ответить на такие вопросы, как:

  1. Дайте мне ранжированный список из 5 чисел, которые встречаются с 234 большую часть времени.
  2. Назовите 5 лучших подмножеств размера «k», которые чаще всего встречаются вместе

Требования: Точное представление чисел в выводе (не приблизительное). Домен чисел можно рассматривать как от 1 до 1 миллиарда.

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


person Code4Fun    schedule 09.10.2012    source источник
comment
Насколько огромен огромный? Я не очень хорошо знаком с алгоритмом Apriori, но я читал о его использовании на векторах признаков длиной в миллионы. Помогает хорошее разреженное представление (которое у вас уже есть).   -  person Fred Foo    schedule 09.10.2012
comment
Вы хотите получить точное или приблизительное представление ваших данных? т. е. готовы ли вы принять небольшие ошибки в ответах на ваши вопросы? Кроме того, есть ли у вас какие-либо предварительные знания о том, как числа будут связаны (не о конкретных числах, а о структуре их распределения)?   -  person Bitwise    schedule 09.10.2012
comment
Кроме того, не то чтобы ваше представление было эквивалентно гиперграфу, вы можете посмотреть алгоритмы/реализации для них.   -  person Bitwise    schedule 09.10.2012
comment
Основная проблема заключается в том, что целые числа, составляющие кортежи, могут варьироваться от 1 до огромного числа, скажем, миллиарда. В этом сценарии я не могу сохранить вектор (1,0,0,0,1,0,0,....) так как это было бы лишним.   -  person Code4Fun    schedule 09.10.2012


Ответы (2)


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

person Yaelgro    schedule 09.10.2012
comment
Точно, все itemIds не присутствуют в наборе данных. Фактически, я хочу использовать этот набор данных не только для анализа, но и для рекомендаций, таких как числа Predict 3, которые можно увидеть с входным числом «X» и т. д. - person Code4Fun; 09.10.2012
comment
Попробуйте использовать Orange AssociationRulesSparseInducer, который вызывает частые наборы элементов и правила ассоциации из редких наборы данных. В нем также есть довольно понятное руководство по правилам ассоциации. - person Yaelgro; 09.10.2012

Для Apriori вам не нужны кортежи или векторы. Он может быть реализован с очень разными типами данных. Общий тип данных — это отсортированный список элементов, который также может выглядеть как 1 13 712 1928 123945 191823476, хранящийся как 6 целых чисел. По сути, это эквивалентно разреженному двоичному вектору и часто очень эффективно использует память. Кроме того, APRIORI на самом деле предназначен для работы с наборами данных, которые слишком велики для вашей оперативной памяти!

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

person Has QUIT--Anony-Mousse    schedule 09.10.2012