평균 검색 성능을 최소화하기위한 고정 길이 의사 결정 트리와 같은 기능 선택


9

나는 복잡한 쿼리가 데이터 집합을 검색하는 데 사용되는 찾을 . 각 쿼리는 평균 시간 하므로 선형 검색의 전체 시간은. 쿼리를 더 간단한 하위 쿼리 q_i로 나누고 및 입니다. 각 하위 쿼리 는 계산 속도가 훨씬 빠르므로 전반적으로 를 찾은 다음 를 사용 하여 를 찾는 것이 더 빠릅니다 .QSHexact={sSwhere Q(s) is True}tt|S|Happrox={sSqj(s)is True}HexactHapproxqiHapproxQHexact

각 에는 많은 있습니다. 다른 사이의 겹침 이 높습니다. 대량의 검색 쿼리 샘플을 기반으로 H_exact를 찾는 데 걸리는 평균 시간을 최소화 하는 의사 결정 트리와 같은 고정 질문 를 결정하는 방법을 찾고 있습니다.QqiQqj

좀 더 구체적으로 설명하기 위해 데이터 세트에 전 세계 70 억 명의 사람들이 포함되어 있고 복잡한 질문은 "5로 모퉁이에있는 빨간 집에 사는 여자와 B로 시작하는 도시의 렉싱턴"과 같은 것들이라고 가정 해 봅시다.

확실한 해결책은 세계의 모든 사람을 확인하고 누가 쿼리와 일치하는지 확인하는 것입니다. 그러한 사람이 둘 이상있을 수 있습니다. 이 방법은 시간이 오래 걸립니다.

이 쿼리를 정확하게 미리 계산할 수 있는데,이 경우에는 매우 빠르지 만이 질문에 대해서만 가능합니다. 그러나 다른 질문은 같은 구석에있는 청와대에 사는 여성, 같은 구석에 사는 남자, 같은 질문이지만 C로 시작하는 도시 또는 완전히 다른 것과 관련이 있습니다. 스웨덴의 왕. '

대신 복잡한 질문을 더 쉽고 일반적인 세트로 나눌 수 있습니다. 예를 들어, 위의 모든 질문에는 성별 역할 기반 쿼리가 있으므로 전 세계에서 자신을 '여자'로 간주하는 모든 사람들을 미리 계산할 수 있습니다. 이 하위 쿼리는 기본적으로 시간이 걸리지 않으므로 전체 검색 시간이 약 1/2만큼 줄어 듭니다. (다른 지식으로 스웨덴의 "왕"은 "여성"이 될 수 없다는 것을 알고 있다고 가정합니다.

그러나 때때로 "A로 시작하는 도시의 빨간 집에서 8 번가에 사는 사람"과 같은성에 근거하지 않은 질문이 있습니다. 하위 쿼리 "빨간 집에 산다"는 것이 일반적이며, 빨간 집에 사는 모든 사람들의 목록을 미리 계산합니다.

이것은 의사 결정 트리를 제공합니다. 일반적인 경우 의사 결정 트리의 각 분기에는 서로 다른 질문이 포함되어 있으며 의사 결정 트리에 대한 최적의 용어를 선택하는 방법은 잘 알려져 있습니다. 그러나 모든 지점에서 동일한 질문을 해야하는 기존 시스템을 구축하고 있습니다.

가능한 최종 결정 세트의 예는 다음과 같습니다. 질문 1은 '사람이 여자입니까?', 질문 2는 '사람이 빨간 집에 살고 있습니까?', 질문 3은 '사람이 도시에서 시작합니까? A 또는 사람이 B로 시작하는 도시에 살고 있습니까? ', 질문 4는'번호가 매겨진 거리에 살고 있습니까? '입니다.

쿼리 할 때 온의 경우, 내가 볼 미리 계산 된 질문 중 하나가 일치 내가 결정했습니다. 그렇다면, 나는 그 대답의 교회법을 얻고, 질문 물어 그 교차 부분 집합에. 예를 들어, "섬에있는 빨간 집에 사는 사람들"이라는 질문이 있다면 "빨간 집에 사는 사람"이 이미 사전 계산 된 것이므로 섬에 사는 사람들의 부분 집합을 찾는 것만 중요합니다.QqiqjQ

많은 세트를보고 비용 모델을 얻을 수 있으며 해당 의 크기를 확인하십시오 . 의 평균 크기를 최소화하고 싶습니다 .QHapproxHapprox

문제는 이 고정 결정 트리를 만들기 위해 가능한 선택을 어떻게 최적화 합니까? GA를 시도했지만 수렴하는 데 느 렸습니다. 아마도 내 기능 공간에 가능한 개의 있기 입니다. 나는 탐욕스러운 방법을 생각해 냈지만 결과에 만족하지 않습니다. 너무 느려서 잘못된 것을 최적화하고 있다고 생각합니다.qjqj

아이디어를 찾고자하는 기존 연구는 무엇입니까?


데이터가 고정되어 있습니까? 예를 더 추가 하시겠습니까? 그렇지 않으면 정보 엔트로피 가 가장 높은 하위 쿼리로 시작하여 결정 트리를 작성해보십시오 . 또한 트리 기반 결정을 중지하고 S가 충분히 작을 때 | S | .t 시간으로 검색 할 최소 엔트로피를 선택할 수도 있습니다.
Anton

답변:


1

내가 찾은 해결책 (질문과 대답)은 중첩 된 코딩, 특히 계층 적 설명자를 더 잘 지원하는 Zatocoding의 변형을 사용하는 것입니다.

내가 사용한 방법은 '화학 구조 검색을위한 효율적인 디자인'에서 온 것입니다. I. The Screens ', Alfred Feldman 및 Louis Hodes, J. Chem. Inf. 계산. Sci., 1975, 15 (3), 147-152 쪽.

비 계층 적 솔루션은 정보 밀도를 보는 것입니다. 각 디스크립터에는 비트 가 할당됩니다. 여기서 는 데이터 세트의 주파수입니다 ( f_i <= 1.0). 사용하여 총 비트 수 (결정 트리의 크기)를 여기서 는 Mooers 압축 계수 0.69 ( 부터 )입니다. 사용할 총 비트 수를 결정했으면 비트 할당을 위해 각 디스크립터에 대해 비트를 무작위로 선택하십시오 .si=log2(fi)fi0<DD=(sifi)/McMcloge2si

Feldman과 Hodes의 계층 적 솔루션 은 다른 디스크립터의 서브 세트 인 디스크립터를 로 대체합니다 . 이 경우 여기서 는 가장 빈번하지 않은 부모의 빈도입니다. 또한 비트 할당을 수행 할 때 부모의 비트 할당에서도 사용되는 비트를 선택하지 마십시오.si=log2(fi)si=log2(fi/gi)gi

올바른 설명자를 만드는 방법에는 여전히 문제가 있지만 도메인마다 다릅니다.

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