Tamr (이전의 Data Tamer)는 데이터베이스 중복 제거를 대규모로 수행합니다. Naive Bayes 및 그래프 클러스터링이 포함됩니다.
알고리즘은 SQL에서 대부분 구현 된 것으로 생각되는데 다소 이상하지만 백서의 주 저자 인 Michael Stonebraker는 PostgreSQL 생성을 주도했습니다.
여기 에서 백서를 확인 하십시오 .
편집 : 나는 그들의 종이가 아래에 취하는 단계를 요약했습니다. 내 말 중 일부는 논문과 거의 동일합니다.
Tamr의 중복 제거 시스템에는 새로운 데이터 소스를 처리하기위한 두 가지 주요 단계 인 (1) 속성 식별 및 (2) 엔티티 통합이 있습니다. 이는 열 중복 제거 및 행 중복 제거와 거의 같습니다.
1) 새로운 데이터 소스를 기존 데이터 소스와 비교하는 첫 번째 단계는 속성 식별입니다.
새 소스의 속성 (열)은 네 가지 알고리즘으로 기존 소스의 속성에 매핑됩니다.
- 퍼지 문자열 비교와 속성 이름 비교 (트리 그램 코사인 유사성)
- 전체 열을 문서로 간주하고 토큰 화하고 해당 열과 다른 열 사이의 총 빈도 / TFFID 코사인 유사성을 측정합니다.
- 최소 설명 길이 : 교차점의 크기를 기준으로 두 열을 비교하고 정확하게 일치하는 조합
- 숫자 열의 경우 새 열과 기존 숫자 열 사이에서 t- 검정을 수행하여 동일한 분포에서 나온 것인지 확인합니다.
2) 엔티티 통합 (행 중복 제거)
속성 식별이 수행되면 행 (레코드)을 중복 제거하려고합니다.
클러스터링을 통한 분류
레코드는 먼저 유사성을 기반 으로 범주 로 그룹화 된 다음 범주 수준에서 중복 제거 규칙을 학습합니다. 이들이 분류하는 예는 서부 스키 리조트가 동부 스키 리조트와 다른 카테고리 여야하는 스키 리조트 데이터베이스에 대한 것입니다. 기본 고도와 같은 기능은 리조트가 동쪽인지 서쪽인지에 따라 크게 분리되어 있기 때문입니다. 분류는 클러스터링 알고리즘으로 수행되며 k- 평균은 예제로 제공됩니다.
Naive Bayes와 중복 제거
속성이 식별되고 레코드가 카테고리로 클러스터링되면, 우리는 교육 및 비 교육의 훈련 세트를 기반으로 각 카테고리에 대한 중복 제거 규칙을 학습합니다.
중복 제거 규칙에는 두 가지 유형이 있습니다.
- 속성 에 적합한 거리 함수와 관련하여 속성 유사성 에 대한 임계 값입니다 . (이 문서는 이러한 임계 값을 배우는 방법에 대해서는 명확하지 않습니다.)
- 각 속성에서 속력 및 비 속성에 대한 확률 분포 . 예를 들어,
P("Title" values similar | duplicate) ~ 1
및
Pr("State" values are different | duplicate) ~ 0
각 레코드 쌍에 대해 적절한 거리 메트릭을 사용하여 각 속성의 유사성을 계산합니다. 속성이 임계 값을 초과하는 속성이있는 경우 레코드 쌍은 Naive Bayes 분류기를 통해 공급되어 중복 또는 비 속성으로 분류됩니다.
내 가정은 기록을 위해이다 X1 = (a1,b1,c1,d1)
, X2 = (a2,b2,c2,d2)
그들은 유사성 벡터 계산 정확한 거리 측정에 그 속성 WRT에 대한 유사성이다.S = (s_a, s_b, s_c, s_d)
s_i
나는 Naive Bayes 분류 기가 다음 구조를 가지고 있다고 가정합니다.
P(dupe|S) = P(dupe)P(s_a|dupe)(s_b|dupe)(s_c|dupe)P(s_d|dupe) / P(S)
그래프 클러스터링을 통한 엔티티 분석
분류 단계 후, 우리는 주어진 카테고리에서 쌍으로 복제 된 것으로 여겨지는 레코드의 부분 집합을가집니다. 이것들은 이제 별개의 엔터티 로 해결되어야합니다 . 이로 인해 일시적 문제가 해결됩니다. 레코드 t1이 t2의 속임수이고 t2가 t3의 속임수 인 경우 t1도 t3의 속임수 여야합니다. 다시 말해 t1, t2 및 t3 은 동일한 엔티티를 나타냅니다 .
그래프 구조는 이 단계에서 사용된다. 범주 내에서 속일 수있는 각 레코드는 노드입니다. 서로의 속임수가 의심되는 노드는 그 사이에 모서리가 있습니다. 그런 다음 그래프에서 클러스터가 발견 된 후 한 클러스터가 다른 클러스터에 얼마나 강력하게 연결되어 있는지에 대한 임계 값을 기반으로 함께 병합됩니다. 다음은 연결성을 기반으로 병합되거나 병합되지 않을 수있는 클러스터 쌍의 세 가지 예입니다.
c1 c2
x-x-x-----y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Meets similiarity threshold
|/|\| |/|\|
x-x-x-----y-y-y
x-x-x y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Does not meet similarity threshold
|/|\| |/|\|
x-x-x y-y-y
x y
| |
x-----y Meets similarity threshold
| |
x y
알고리즘이 종료되면 각 클러스터는 카테고리 내의 고유 한 엔티티를 나타내야합니다 . 프로세스를 완료하려면 이 엔티티의 속성이 그 안의 레코드 속성에서 결정되어야합니다 . 널을 먼저 버린 다음 빈도, 평균, 중간 및 가장 긴 방법을 사용합니다.
이 논문은 또한 알고리즘이 확실하지 않은 경우 도움을주기 위해 도메인 전문가를 사용하는 방법과 전문 지식이 다른 여러 전문가를 사용하는 방법을 개발합니다.