Lựa chọn tính năng giống như cây quyết định có độ dài cố định để giảm thiểu hiệu suất tìm kiếm trung bình


9

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ácH xấp xỉ q i H khoảng Q H chính xácQSHexact={sSwhere Q(s) is True}tt|S|Happrox={sSqj(s)is True}HexactHapproxqiHapproxQHexact

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 jQqiQqj

Để 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 QQqiqjQ

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ảngQHapproxHapprox

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 jqjqj

Những nghiên cứu hiện tại tôi nên xem xét cho ý tưởng?


Dữ liệu của bạn đã được sửa chưa - bạn có muốn thêm nhiều ví dụ không? Nếu không - tốt hơn hãy thử xây dựng cây giải mã bằng cách bắt đầu với truy vấn con với entropy thông tin cao nhất . Bạn cũng có thể chọn một số entropy tối thiểu để dừng phân vùng dựa trên cây và tìm kiếm với thời gian | S | .t khi S đủ nhỏ.
Anton

Câu trả lời:


1

Giải pháp tôi tìm thấy (tôi đã đặt câu hỏi) là sử dụng mã hóa xếp chồng, và cụ thể hơn, một biến thể của Zatocoding hỗ trợ tốt hơn cho các mô tả phân cấp.

Phương pháp tôi sử dụng xuất phát từ 'Một thiết kế hiệu quả cho tìm kiếm cấu trúc hóa học. I. Màn hình ', Alfred Feldman và Louis Hodes, J. Chem. Thông tin Tính toán. Sci., 1975, 15 (3), tr.

Giải pháp không phân cấp là xem xét mật độ thông tin. Mỗi mô tả sẽ được gán các bit trong đó là tần số trong tập dữ liệu ( f_i <= 1.0). Tính tổng số bit (kích thước của cây quyết định) bằng trong đó là hệ số nén Mooers 0,69 (từ ). Khi bạn đã xác định tổng số bit sẽ sử dụng, hãy chọn ngẫu nhiên các bit cho mỗi bộ mô tả để gán bit.f i 0 < D D = ( s i f i ) / M csi=log2(fi)fi0<DD=(sifi)/Mc l o g e 2 s iMcloge2si

Giải pháp phân cấp từ Feldman và Hodes thay thế cho các bộ mô tả là tập con của các bộ mô tả khác. Trong trường hợp đó, sử dụng trong đó là tần số của cha mẹ ít gặp nhất. Ngoài ra, khi thực hiện gán bit, không chọn các bit cũng được sử dụng bởi phép gán bit của cha mẹ.s i = - l o g 2 ( f i / g i ) g isi=log2(fi)si=log2(fi/gi)gi

Vẫn còn một vấn đề làm thế nào để đưa ra các mô tả đúng, nhưng đó sẽ là miền cụ thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.