FPGrowth는 자주 패턴 마이닝에서 "최신 기술"로 간주됩니까?


12

FMF (Frequent Pattern Mining) 문제를 해결하기위한 알고리즘 개발을 알고있는 한, 개선의 길에는 몇 가지 주요 체크 포인트가 있습니다. 먼저, Apriori 알고리즘은 Agrawal et al.에 의해 1993 년에 제안되었다 . 문제의 공식화와 함께. 알고리즘은 데이터를 유지하기 위해 격자를 사용하여 세트 (파워 세트)에서 일부 세트 를 제거 할 수있었습니다 2^n - 1. 이 접근법의 단점은 확장 된 각 세트의 빈도를 계산하기 위해 데이터베이스를 다시 읽어야한다는 것이 었습니다.

나중에 1997 년에 Zaki et al. 는 격자 내부의 각 세트의 결과 주파수 를 삽입 한 알고리즘 Eclat을 제안했습니다 . 이것은 격자의 각 노드에서 루트에서 참조 된 노드로 항목을 가진 트랜잭션 ID 세트를 추가하여 수행되었습니다. 주요 기여는 각 세트의 빈도를 알기 위해 전체 데이터 세트를 다시 읽을 필요는 없지만, 그러한 데이터 구조를 구축하는 데 필요한 메모리는 데이터 세트 자체의 크기를 초과 할 수 있다는 것입니다.

2000 년에 Han et al. FPTree 라는 접두사 트리 데이터 구조와 함께 FPGrowth 라는 알고리즘을 제안했습니다 . 이 알고리즘은 상당한 데이터 압축을 제공하는 동시에 후보 항목 세트 생성없이 빈번한 항목 세트 만 생성되도록 허용했습니다. 이는 주로 각 트랜잭션의 항목을 내림차순으로 정렬하여 수행되었으므로 가장 빈번한 항목은 트리 데이터 구조에서 반복이 가장 적은 항목입니다. 트리를 깊이 탐색하는 동안에 만 주파수가 내려 가기 때문에 알고리즘은 자주 사용하지 않는 항목 세트 를 제거 할 수 있습니다.

편집 :

내가 아는 한, 이것은 최첨단 알고리즘으로 간주 될 수 있지만 제안 된 다른 솔루션에 대해 알고 싶습니다. "최첨단"으로 간주되는 다른 FPM 알고리즘은 무엇입니까? 그러한 알고리즘 의 직관 / 주요 기여 는 무엇입니까?

FPGrowth 알고리즘은 여전히 ​​빈번한 패턴 마이닝에서 "최신 상태"로 간주됩니까? 그렇지 않은 경우 어떤 알고리즘이 큰 데이터 세트에서 빈번한 항목 세트를 더 효율적으로 추출 할 수 있습니까?


이 게시물은 연구되고 잘 발표되었습니다. SE 네트워크 사이트에 대해서는 의문의 여지가 있지만 토론 포럼에서 시작하는 것이 좋습니다.
Air

@AirThomas 경고 해 주셔서 감사합니다. 적절한 질문을하여 게시물을 저장하려고했습니다.
Rubens

답변:


9

실무에서 사용되거나 이론적으로 작동 한 최신 기술?

APRIORI는 새로운 빈번한 항목 세트 알고리즘 개발을 제외하고 모든 곳에서 사용됩니다. 구현이 쉽고 매우 다양한 도메인에서 재사용하기 쉽습니다. 다양한 품질의 수백 가지 APRIORI 구현을 찾을 수 있습니다. 실제로 APRIORI를 잘못 이해하기 쉽습니다.

FPgrowth는 구현하기가 훨씬 어렵지만 훨씬 더 재미 있습니다. 따라서 학문적 관점에서, 모든 사람들이 FPgrowth를 개선하려고 시도합니다. APRIORI를 기반으로하는 일을 받아들이는 것은 지금까지 매우 어려울 것입니다.

구현이 좋으면 모든 알고리즘에 좋으며 제 생각에는 나쁜 상황입니다. 좋은 APRIORI 구현됩니다 데이터베이스 스캔해야 케이 길이의 모든 자주 itemsets 찾기 위해 시간을 케이 . 특히 데이터가 주 메모리에 맞으면 저렴합니다. APRIORI를 죽일 수있는 것은 너무 많은 빈번한 2 가지 항목입니다 (특히 Trie 및 유사한 가속 기법 등을 사용하지 않는 경우). 자주 사용하는 항목 집합 수가 적은 대용량 데이터에 가장 적합합니다.

Eclat는 열에서 작동합니다. 하지만 각 열을 훨씬 더 자주 읽어야합니다. 이 작업을 줄이기 위해 diffsets에 대한 작업이 있습니다. 데이터가 주 메모리에 맞지 않으면 Eclat는 아마도 Apriori 이상을 겪을 것입니다. 깊이를 먼저 설정하면 Apriori보다 훨씬 빠른 첫 번째 흥미로운 결과를 반환 할 수 있으며 이러한 결과를 사용하여 매개 변수를 조정할 수 있습니다. 따라서 좋은 매개 변수를 찾으려면 반복이 적습니다. 그러나 설계 상으로는 Apriori처럼 깔끔하게 가지 치기를 이용할 수 없습니다.

FPGrowth는 데이터 세트를 트리로 압축합니다. 중복 레코드가 많을 때 가장 효과적입니다. 데이터를 사전 정렬하고 복제본을 가중 벡터로 병합 할 수있는 경우 Apriori 및 Eclat의 이점도 얻을 수 있습니다. FPGrowth는이를 극단적 인 수준에서 수행합니다. 단점은 구현이 훨씬 어렵다는 것입니다. 이 트리가 더 이상 메모리에 맞지 않으면 구현하기가 어려워집니다.

성능 결과 및 벤치 마크에 대해서는 신뢰하지 마십시오. 잘못 구현해야 할 것이 너무 많습니다. 10 가지의 다른 구현을 시도하면 10 가지의 매우 다른 성능 결과를 얻을 수 있습니다. 특히 APRIORI의 경우 대부분의 구현이 APRIORI의 주요 공헌 중 일부를 잃어 버렸다는 의미에서 깨 졌다는 느낌이 들었습니다 ...이 부분을 가진 것들은 최적화의 품질이 많이 다릅니다.

실제로 이러한 알고리즘을 효율적으로 구현하는 방법에 대한 논문도 있습니다.

Apriori와 Eclat의 효율적인 구현.
Christian Borgelt
빈번한 항목 세트 마이닝 구현 워크샵 (FIMI 2003, Melbourne, FL, USA).

이 도메인에서 다음 설문을 읽을 수도 있습니다.

  • Goethals, Bart. "빈번한 패턴 마이닝을 조사하십시오." 대학교 헬싱키 (2003).

  • Ferenc Bodon, 2006 년 부다페스트 기술 경제 대학교 (Budapest University of Technology and Economic)의 빈번한 Itemet Mining에 대한 설문 조사,

  • 빈번한 항목 세트 마이닝
    Christian Borgelt
    Wiley 학제 간 검토 : 데이터 마이닝 및 지식 발견 2 (6) : 437-456. 2012 년


2

내가 문헌에서 본 최근의 빈번한 패턴 접근법의 대부분은 FPGrowth 최적화를 기반으로합니다. 나는 수년 동안 FPM의 문헌 내에서 많은 발전을 보지 못했다는 것을 인정해야합니다.

이 위키 북에는 FPGrowth의 여러 변형 강조되어 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.