Насколько мне известно, разработка алгоритмов для решения проблемы Frequen Pattern Mining (FPM), путь улучшения имеет несколько основных контрольных точек. Во-первых, алгоритм Apriori был предложен в 1993 году Agrawal et al. наряду с формализацией проблемы. Алгоритм был в состоянии убрать некоторые наборы из 2^n - 1
наборов (powerset), используя решетку для поддержки данных. Недостатком подхода была необходимость перечитать базу данных, чтобы вычислить частоту каждого расширенного набора.
Позже, в 1997 году, Zaki et al. Предложен алгоритм Eclat , который вставляет результирующую частоту каждого набора внутри решетки. Это было сделано путем добавления в каждом узле решетки набора идентификаторов транзакций, которые имели элементы от корня до упомянутого узла. Основной вклад заключается в том, что не нужно перечитывать весь набор данных, чтобы узнать частоту каждого набора, но объем памяти, необходимой для построения такой структуры данных, может превышать размер самого набора данных.
В 2000 году Han et al. предложил алгоритм с именем FPGrowth вместе со структурой данных префиксного дерева с именем FPTree. Алгоритм был способен обеспечить значительное сжатие данных, а также обеспечить возможность получения только частых наборов элементов (без создания набора элементов-кандидатов). Это было сделано главным образом путем сортировки элементов каждой транзакции в порядке убывания, так что наиболее частыми являются элементы с наименьшим количеством повторений в древовидной структуре данных. Поскольку частота опускается только при обходе дерева в глубине, алгоритм может лишить-офф не-часто встречающихся наборов.
Редактировать :
Насколько я знаю, это можно считать современным алгоритмом, но я хотел бы знать о других предлагаемых решениях. Какие еще алгоритмы для FPM считаются «современными»? Какова интуиция / основной вклад таких алгоритмов?
Является ли алгоритм FPGrowth по-прежнему «современным» в частом анализе паттернов? Если нет, то какой алгоритм (ы) может более эффективно извлекать частые наборы элементов из больших наборов данных?