Tanto quanto eu sei o desenvolvimento de algoritmos para resolver o problema da Mineração de Padrão Frequente (FPM), o caminho das melhorias tem alguns pontos de verificação principais. Primeiramente, o algoritmo Apriori foi proposto em 1993 por Agrawal et al. , juntamente com a formalização do problema. O algoritmo conseguiu remover alguns conjuntos dos 2^n - 1
conjuntos (conjunto de energia) usando uma treliça para manter os dados. Uma desvantagem da abordagem foi a necessidade de reler o banco de dados para calcular a frequência de cada conjunto expandido.
Mais tarde, no ano de 1997, Zaki et al. propuseram o algoritmo Eclat , que inseriu a frequência resultante de cada conjunto dentro da rede. Isso foi feito adicionando, em cada nó da rede, o conjunto de IDs de transação que tinham os itens da raiz ao nó referido. A principal contribuição é que não é necessário reler todo o conjunto de dados para saber a frequência de cada conjunto, mas a memória necessária para manter essa estrutura de dados construída pode exceder o tamanho do próprio conjunto de dados.
Em 2000, Han et al. propuseram um algoritmo chamado FPGrowth , juntamente com uma estrutura de dados da árvore de prefixos denominada FPTree. O algoritmo foi capaz de fornecer compactação de dados significativa, além de conceder que apenas conjuntos de itens frequentes seriam gerados (sem geração de conjunto de itens candidatos). Isso foi feito principalmente pela classificação dos itens de cada transação em ordem decrescente, para que os itens mais frequentes sejam aqueles com menos repetições na estrutura de dados da árvore. Como a frequência apenas desce enquanto percorre a árvore em profundidade, o algoritmo é capaz de eliminar conjuntos de itens não frequentes.
Editar :
Até onde eu sei, isso pode ser considerado um algoritmo de última geração, mas eu gostaria de saber sobre outras soluções propostas. Quais outros algoritmos para o FPM são considerados "avançados"? Qual é a intuição / contribuição principal de tais algoritmos?
O algoritmo FPGrowth ainda é considerado "estado da arte" na mineração de padrões frequente? Caso contrário, quais algoritmos podem extrair conjuntos de itens frequentes de grandes conjuntos de dados com mais eficiência?