Наскільки я знаю, що розробляються алгоритми для вирішення проблеми частого видобутку шаблонів (FPM), шлях удосконалення має деякі основні контрольні точки. По-перше, алгоритм Апріорі був запропонований в 1993 році Agrawal et al. разом із формалізацією проблеми. Алгоритм зміг зняти деякі набори з 2^n - 1
наборів (powerset), використовуючи решітку для підтримки даних. Недоліком підходу була необхідність перечитувати базу даних для обчислення частоти кожного розширеного набору.
Пізніше, у 1997 році, Закі та ін. запропонував алгоритм Eclat , який вставив отриману частоту кожного набору всередині решітки. Це було зроблено шляхом додавання на кожному вузлі решітки набору транзакційних ідентифікаторів, які мали елементи від кореня до згаданого вузла. Основний внесок полягає в тому, що не потрібно перечитувати весь набір даних, щоб знати частоту кожного набору, але пам'ять, необхідна для збереження такої структури даних, може перевищувати розмір самого набору даних.
У 2000 році Хан та ін. запропонував алгоритм з назвою FPGrowth , а також структуру даних префіксного дерева з назвою FPTree. Алгоритм міг забезпечити значне стиснення даних, одночасно надаючи, що отримуватимуться лише часті набори елементів (без генерації набору елементів). Це було зроблено головним чином шляхом сортування елементів кожної транзакції у порядку зменшення, так що найчастіші елементи - це найменші повтори в структурі даних дерева. Оскільки частота знижується лише під час глибокого обходу дерева, алгоритм може викреслити нечасті набори елементів.
Редагувати :
Наскільки я знаю, це може вважатися найсучаснішим алгоритмом, але я хотів би знати про інші запропоновані рішення. Які ще алгоритми FPM вважаються "найсучаснішими"? У чому полягає інтуїція / головний внесок таких алгоритмів?
Чи все-таки алгоритм FPGrowth вважається "найсучаснішим" при частому розробці шаблонів? Якщо ні, то який алгоритм може ефективніше витягувати часті набори елементів із великих наборів даних?