데이터 마 이 닝(7):Apriori 알고리즘:빈번 한 패턴 발굴
2632 단어 데이터 발굴
알고리즘 은 빈번 한 항목 집합 성질 의 선험 지식 을 사용한다.Apriori 는 한 층 한 층 검색 이 라 고 불 리 는 교체 방법 을 사용 합 니 다.k 항목 집합 은 탐색(k+1)항목 집합 에 사 용 됩 니 다.우선 데이터 베 이 스 를 스 캔 하여 각 항목 의 수 를 누적 하고 최소 지원 도 를 만족 시 키 는 항목 을 수집 하여 빈번 한 1 개의 집합 을 찾 아 낸다.이 집합 은 L1 로 기록 되 어 있 으 며,L1 은 빈번 한 2 항 집합 인 L2 를 찾 는 데 사용 되 며,L2 는 빈번 한 k 항 집합 을 다시 찾 을 수 없 을 때 까지 L3 를 찾 는 데 사용 된다.모든 Lk 를 찾 으 려 면 데이터베이스 전체 스 캔 이 필요 합 니 다.
Apriori 특성 은 검색 공간 을 압축 하여 빈번 한 항목 집합 이 발생 하 는 효율 을 높 일 수 있 습 니 다.
Apriori 성질:빈번 한 항목 집합의 모든 비공 식 서브 집합 도 빈번 해 야 한다.
Apriori 알고리즘 은 주로 연결 스텝 과 가지치기 스텝 두 단계 로 구성 된다.연결 단계 와 가지치기 단계 에서 Apriori 성질 을 사용 하면 알고리즘 의 효율 을 높 일 수 있다.
1.1 연결 단계
이 단 계 는 빈번 한 k-1 항 집합 에서 후보 k 항 집합 을 만 드 는 데 사용 된다.
Lk 를 계산 하기 위해 서 는 Apriori 성질 에 따라 Lk-1 에서 연결 가능 한 모든 연결 에 대해 후보 k 항목 집합 을 만 드 는 집합 을 선택 하여 Ck 로 기록 해 야 합 니 다.항목 이 집 중 된 항목 을 사전 순서에 따라 정렬 한다 고 가정 하면 연결 할 수 있 는 쌍 은 두 개의 빈번 한 항목 집합 이 마지막 항목 만 다르다 는 것 을 말한다.예 를 들 어 Lk-1 의 요소 인 l1 과 l2 가 연결 이 가능 하 다 면 l1 과 l2 두 항목 의 k-1 항목 중 마지막 항목 만 다 르 고 이 조건 은 중복 되 지 않도록 하 는 데 만 사 용 됩 니 다.
1.2 가지치기 걸음
이 단 계 는 Ck 에 포 함 된 항목 집합 수 를 빠르게 줄 이 는 데 사 용 됩 니 다.
Apriori 성격 으로 얻 을 수 있 습 니 다.빈번 하지 않 은(k-1)항목 집합 은 빈번 한 k 항목 집합의 부분 집합 이 아 닙 니 다.따라서 Ck 의 한 후보 k 항목 집합의 임의의(k-1)항목 집합 이 Lk-1 에 없 으 면 이 후보 k 항목 집합 은 빈번 하지 않 기 때문에 Ck 에서 삭제 할 수 있 습 니 다.이 부분 집합 테스트 는 현재 모든 빈번 한 항목 집합 을 사용 하 는 해시 트 리 를 사용 하여 빠르게 완성 할 수 있 습 니 다.
Ck 는 Lk 의 초 집합 으로,부분 집합 테스트 를 거 쳐 Ck 를 압축 한 후 데이터 베 이 스 를 스 캔 하여 Ck 의 각 후보 수 를 확정 하여 Lk 를 확정 할 수 있다.
2 의사 코드
:Apriori,
:
D: ;
min_sup: 。
: L:D 。
:
1) L1 = find_frequent_1_itemsets(D);
2) for (k = 2; Lk-1 ≠ ∅; k++) {
3) Ck = aproiri_gen(Lk-1,min_sup);
4) for each transaction t∈D{ // D
5) Ct = subset(Ck,t); // t k ,
6) for each candidate c∈Ct // t k
7) c.count++;
8) }
9) Lk={c∈Ck | c.count ≥ min_sup}
10) }
11) return L = ∪kLk;
procedure apriori_gen(Lk-1: frequent (k-1)-itemset; min_sup: support)
1) for each itemset l1∈Lk-1
2) for each itemset l2∈Lk-1
3) if (l1[1]=l2[1])∧...∧(l1[k-2]=l2[k-2])∧(l1[k-1]<l2[k-2]) then {
4) c = l1 l2; // : candidates
5) if has_infrequent_subset(c,Lk-1) then
6) delete c; // : cadidate
7) else add c to Ck;
8) }
9) return Ck;
procedure has_infrequent_subset(c:candidate k-itemset; Lk-1:frequent (k-1)-itemset)
//
1) for each (k-1)-subset s of c
2) if c∉Lk-1 then
3) return TRUE;
4) return FALSE;
이 가운데 Lk-1 은 빈번 한 k-1 항 집 을 나타 낸다.
3 실현
예시
참고 자료:
(제2판)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 머신러닝용 경마 데이터 준비하지만 자유형 구축의 논리에도 시간이 걸리고 자유형 자체에도 시간이 걸리는 점 등을 고려해 이번에는 중앙경마를 주최하는 JRA가 제공하는 JRA-VAN 데이터 실험실의 무료 체험판에 첨부된 DVD 데이터로 MySQL...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.