Tôi có một truy vấn phức tạp được sử dụng để tìm kiếm tập dữ liệu để tìm . Mỗi truy vấn mất thời gian trung bình nên tổng thời gian trong tìm kiếm tuyến tính là. Tôi có thể chia truy vấn thành các truy vấn phụ đơn giản hơn q_i và tìm và trong đó . Mỗi truy vấn con nhanh hơn nhiều để tính toán, do đó, tổng thể tìm thấy nhanh hơn và sau đó sử dụng để tìm .S H chính xác = { s ∈ S | nơi Q ( s ) là True } t t ⋅ | S | H xấp xỉ = { s ∈ S | ∀ q j ( s ) là True } H chính xác ⊆ H xấp xỉ q i H khoảng Q H chính xác
Mỗi có nhiều . Sự chồng chéo giữa khác nhau là cao. Tôi đang tìm cách để xác định một bộ câu hỏi cố định giống như cây quyết định nhằm giảm thiểu thời gian trung bình để tìm H_exact, dựa trên một mẫu lớn các truy vấn tìm kiếm.q i Q q j
Để làm cho điều này cụ thể hơn, giả sử tập dữ liệu chứa 7 tỷ người trên thế giới và các truy vấn phức tạp là những câu như "người phụ nữ sống trong ngôi nhà màu đỏ ở góc 5 và Lexington trong một thành phố bắt đầu bằng B."
Giải pháp rõ ràng là kiểm tra mọi người trên thế giới và xem ai phù hợp với truy vấn. Có thể có nhiều hơn một người như vậy. Phương pháp này mất nhiều thời gian.
Tôi có thể tính toán chính xác truy vấn này, trong trường hợp đó sẽ rất nhanh .. nhưng chỉ cho câu hỏi này. Tuy nhiên, tôi biết rằng các truy vấn khác dành cho người phụ nữ sống trong ngôi nhà màu xanh ở cùng một góc, người đàn ông sống cùng góc, cùng một câu hỏi nhưng trong một thành phố bắt đầu bằng C, hoặc một cái gì đó hoàn toàn khác, như ' vua Thụy Điển. '
Thay vào đó, tôi có thể chia câu hỏi phức tạp thành một bộ dễ hơn nhưng tổng quát hơn. Ví dụ: tất cả các câu hỏi trên đều có truy vấn dựa trên vai trò giới, vì vậy tôi có thể tính toán trước tập hợp tất cả mọi người trên thế giới tự coi mình là 'phụ nữ'. Truy vấn phụ này về cơ bản không mất thời gian, vì vậy thời gian tìm kiếm tổng thể giảm khoảng 1/2. (Giả sử rằng theo hiểu biết khác, chúng ta biết rằng một "vị vua" Thụy Điển không thể là "phụ nữ". Hatshepsut là một phụ nữ Ai Cập là vua.)
Tuy nhiên, đôi khi có những truy vấn không dựa trên giới tính, như "người sống trên đường số 8 trong một ngôi nhà màu đỏ trong thành phố bắt đầu bằng A." Tôi có thể thấy rằng câu hỏi phụ "sống trong một ngôi nhà màu đỏ" là phổ biến, và tính toán trước một danh sách tất cả những người sống trong một ngôi nhà màu đỏ.
Điều này cho tôi một cây quyết định. Trong trường hợp thông thường, mỗi nhánh của cây quyết định chứa các câu hỏi khác nhau và các phương pháp để chọn các thuật ngữ tối ưu cho cây quyết định đã được biết đến. Tuy nhiên, tôi đang xây dựng trên một hệ thống hiện có đòi hỏi tất cả các chi nhánh phải hỏi những câu hỏi giống nhau.
Đây là một ví dụ về một quyết định cuối cùng có thể được đặt ra: câu hỏi 1 là 'người đó có phải là phụ nữ không?', Câu hỏi 2 là 'người đó có sống trong một ngôi nhà màu đỏ không?', Câu hỏi 3 là 'người đó có sống trong thành phố không A hoặc người đó sống trong thành phố bắt đầu bằng B? ', Và câu hỏi 4 là' người đó có sống trên một con đường được đánh số không? '.
Khi một truy vấn xuất hiện, tôi sẽ xem liệu của nó có khớp với bất kỳ câu hỏi được tính toán trước nào không tôi đã xác định. Nếu vậy, sau đó tôi nhận được giao điểm của các câu trả lời đó và đặt câu hỏi trên tập hợp giao cắt đó. Ví dụ, nếu câu hỏi là "những người sống trong một ngôi nhà màu đỏ trên đảo" thì thấy rằng "người sống trong một ngôi nhà màu đỏ" đã được tính toán trước, vì vậy việc tìm ra tập hợp con của những người sống trên đảo chỉ là vấn đề.q i q j Q
Tôi có thể có được một mô hình chi phí bằng cách xem một tập hợp nhiều và kiểm tra xem kích thước của tương ứng . Tôi muốn giảm thiểu kích thước trung bình của .H khoảng H khoảng
Câu hỏi là, làm cách nào để tối ưu hóa việc lựa chọn có thể để đưa ra cây quyết định cố định này? Tôi đã thử GA nhưng nó chậm hội tụ. Có lẽ bởi vì không gian tính năng của tôi có vài triệu có thể . Tôi đã đưa ra một phương pháp tham lam, nhưng tôi không hài lòng với kết quả này. Nó cũng rất chậm và tôi nghĩ tôi đang tối ưu hóa điều sai.q j
Những nghiên cứu hiện tại tôi nên xem xét cho ý tưởng?