Ortalama arama performansını en aza indirmek için sabit uzunlukta karar ağacı benzeri özellik seçimi


9

Karmaşık bir sorgu bulmak için bir veri kümesi aramak için kullanılır . Her sorgu ortalama zaman alır, böylece doğrusal aramadaki toplam zaman. Bir sorguyu daha basit alt sorgular q_i'ye bölebilir ve ve burada . Her bir alt sorgu hesaplanması çok daha hızlıdır, bu nedenle genel olarak bulmak ve daha sonra bulmak için düğmesini kullanmak daha hızlıdır .QS'Hkesin={sS|nerede S(s) doğru}tt|S|'Hyaklaşık={sS|qj(s)doğru}'Hkesin'Hyaklaşıkqben'HyaklaşıkS'Hkesin

Her birçok . Farklı arasındaki çakışma yüksektir. Arama sorguları büyük bir örnek dayalı bir H_exact bulmak için ortalama süre en aza sabit sorular karar ağacı benzeri bir dizi belirlemek için bir yol arıyorum .SqbenSqj

Bunu daha somut hale getirmek için, veri setinin dünyada 7 milyar insanı içerdiğini ve karmaşık sorguların "5. köşedeki kırmızı evde yaşayan kadın ve B ile başlayan bir şehirde Lexington" olduğunu varsayalım.

Açık çözüm, dünyadaki her insanı kontrol etmek ve sorguyla kimin eşleştiğini görmek. Birden fazla kişi olabilir. Bu yöntem uzun sürüyor.

Ben tam olarak bu sorguyu önceden hesaplamak olabilir, bu durumda çok hızlı olurdu .. ama sadece bu soru için. Ancak, diğer sorguların aynı köşedeki mavi evde yaşayan kadın, aynı köşede yaşayan aynı soru, ancak C ile başlayan bir şehirde veya tamamen farklı bir şey için olduğunu biliyorum. İsveç kralı. '

Bunun yerine, karmaşık soruyu daha kolay ama daha genel kümelere ayırabilirim. Örneğin, yukarıdaki soruların hepsinin cinsiyet rolü temelli bir sorgusu var, bu yüzden dünyadaki kendilerini 'kadın' olarak gören tüm insanları önceden hesaplayabilirim. Bu alt sorgu aslında hiç zaman almaz, bu nedenle toplam arama süresi yaklaşık 1/2 oranında azalır. (Başka bir bilgiyle, İsveçli bir “kralın” “kadın” olamayacağını bildiğimizi varsayarsak. Hatshepsut kral olan bir Mısırlı kadındı.)

Bununla birlikte, bazen "A ile başlayan bir şehirde kırmızı bir evde 8. sokakta yaşayan kişi" gibi cinsiyete dayalı olmayan sorgular olabilir. "Kırmızı evde yaşayan" alt sorgunun yaygın olduğunu görebiliyorum ve kırmızı bir evde yaşayan tüm insanların bir listesini önceden hesaplayabiliyorum.

Bu bana bir karar ağacı veriyor. Olağan durumda, karar ağacının her dalı farklı sorular içerir ve karar ağacı için en uygun terimleri seçme yöntemleri iyi bilinmektedir. Ancak, tüm şubelerin aynı soruları sormasını gerektiren mevcut bir sistem üzerine inşa ediyorum.

İşte olası nihai bir karar kümesi örneği: 1. soru 'kadın kadın mı?', Soru 2 'kişi kırmızı evde mi yaşıyor?', Soru 3 'kişi' ile başlayan bir şehirde mi yaşıyor? ' A ya da kişi B ile başlayan bir şehirde mi yaşıyor? 'Ve soru 4' kişi numaralı bir sokakta mı yaşıyor? '

sorgusu geldiğinde, değerinin belirlediğim önceden hesaplanmış sorular görüyorum. Eğer öyleyse, o zaman bu cevapların kesişimini alıyorum ve sorusunu o kesişim alt kümesinde soruyorum . Örneğin, soru "bir adada kırmızı bir evde yaşayan insanlar" ise, o zaman "kırmızı bir evde yaşayan kişi" nin önceden hesaplandığını bulun, bu yüzden sadece bir adada yaşayanların alt kümesini bulmak önemlidir.SqbenqjS

Birçok setine bakarak bir maliyet modeli alabilirim ve ilgili boyutunu görmek için kontrol edin . ortalama boyutunu en aza indirmek istiyorum .S'Hyaklaşık'Hyaklaşık

Soru, bu sabit karar ağacını yapmak için olası seçimini nasıl optimize edebilirim ? Bir GA denedim ama yakınsama yavaştı. Muhtemelen özellik birkaç milyon olası . Açgözlü bir yöntem buldum, ama sonuçtan memnun değilim. Çok yavaş ve sanırım yanlış şeyi optimize ediyorum.qjqj

Fikirler için hangi araştırmalara bakmalıyım?


Verileriniz düzeltildi mi - daha fazla örnek ekleyecek misiniz? Daha iyi değilse, en yüksek bilgi entropisine sahip alt sorgu ile başlayarak desizyon ağacı oluşturmayı deneyin.Ayrıca , ağaç bazlı kararları durdurmak ve S yeterince küçük olduğunda | S | .t zamanını aramak için bazı minimum entropi seçebilirsiniz.
Anton

Yanıtlar:


1

Bulduğum çözüm (soruyu sordum) üst üste binmiş kodlama ve daha spesifik olarak, hiyerarşik tanımlayıcıları daha iyi destekleyen bir Zatocoding varyantı kullanmaktır.

Kullandığım yöntem 'Kimyasal Yapı Arama için Verimli Bir Tasarım' dan geliyor. I. Ekranlar ', Alfred Feldman ve Louis Hodes, J. Chem. Enf. Comput. Sci., 1975, 15 (3), s. 147-152.

Hiyerarşik olmayan çözüm, bilgi yoğunluğuna bakmaktır. Her tanımlayıcı atanacaksben=-lÖg2(fben) nerede bit fben veri kümesindeki sıklıktır (0<f_i <= 1.0). Toplam bit sayısını hesaplamaD (karar ağacının büyüklüğü) D=Σ(sbenfben)/Mc nerede Mc Mooers sıkıştırma faktörü 0.69 (itibaren lÖge2). Kullanılacak toplam bit sayısını belirledikten sonra,sben bit ataması için her bir tanımlayıcı için rastgele bitler.

Feldman ve Hodes'un hiyerarşik çözümü yerini alıyor sben=-lÖg2(fben)diğer tanımlayıcıların bir alt kümesi olan tanımlayıcılar için. Bu durumda,sben=-lÖg2(fben/gben) nerede gbenen az sıklıkta ebeveynin sıklığıdır. Ayrıca, bit ataması yaparken, üst öğenin bit ataması tarafından da kullanılan bitleri seçmeyin.

Hala doğru tanımlayıcıları bulma konusunda bir sorun var, ancak bu etki alanına özgü olacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.