การเลือกคุณลักษณะที่คล้ายต้นไม้ตัดสินใจที่มีความยาวคงที่เพื่อลดประสิทธิภาพการค้นหาโดยเฉลี่ย


9

ฉันมีแบบสอบถามที่ซับซ้อนใช้ในการค้นหาชุดข้อมูลเพื่อหา\} แต่ละแบบสอบถามใช้เวลาเฉลี่ยดังนั้นเวลาโดยรวมในการค้นหาเชิงเส้นคือ. ฉันสามารถแบ่งแบบสอบถามออกเป็นย่อยที่ง่ายกว่าและค้นหา และที่{} แต่ละแบบสอบถามย่อยรวดเร็วยิ่งขึ้นในการคำนวณดังนั้นโดยรวมก็จะเร็วขึ้นเพื่อหาแล้วใช้เพื่อหา{}QSHexact={sSwhere Q(s) is True}tt|S|Happrox={sSqj(s)is True}HexactHapproxqiHapproxQHexact

แต่ละมีมากมาย การทับซ้อนระหว่างแตกต่างกันนั้นสูง ฉันกำลังมองหาวิธีในการกำหนดชุดคำถามคงที่แบบต้นไม้ตัดสินใจซึ่งลดเวลาโดยเฉลี่ยในการค้นหา H_exact ตามตัวอย่างการค้นหาขนาดใหญ่QqiQqj

หากต้องการทำให้เป็นรูปธรรมมากขึ้นสมมติว่าชุดข้อมูลมีผู้คน 7 พันล้านคนทั่วโลกและข้อความค้นหาที่ซับซ้อนคือ "ผู้หญิงที่อาศัยอยู่ในบ้านสีแดงตรงหัวมุมที่ 5 และเล็กซิงตันในเมืองที่เริ่มต้นด้วย B"

ทางออกที่ชัดเจนคือการตรวจสอบทุกคนในโลกและดูว่าใครตรงกับคำค้นหา อาจมีบุคคลดังกล่าวมากกว่าหนึ่งคน วิธีนี้ใช้เวลานาน

ฉันสามารถคำนวณแบบสอบถามนี้ได้ล่วงหน้าซึ่งในกรณีนี้มันจะเร็วมาก .. แต่สำหรับคำถามนี้เท่านั้น อย่างไรก็ตามฉันรู้ว่าข้อความค้นหาอื่น ๆ สำหรับผู้หญิงที่อาศัยอยู่ในบ้านสีฟ้าที่มุมเดียวกันชายที่อาศัยอยู่ที่มุมเดียวกันคำถามเดียวกัน แต่ในเมืองที่เริ่มต้นด้วย C หรือสิ่งที่แตกต่างอย่างสิ้นเชิงเช่น ' ราชาแห่งสวีเดน '

แต่ฉันสามารถแบ่งคำถามที่ซับซ้อนออกเป็นชุดที่ง่ายขึ้น แต่มีชุดทั่วไปมากกว่า ตัวอย่างเช่นคำถามด้านบนทั้งหมดมีข้อความค้นหาตามบทบาทเพศดังนั้นฉันสามารถคำนวณชุดของทุกคนในโลกที่คิดว่าตัวเองเป็น 'ผู้หญิง' แบบสอบถามย่อยนี้ไม่ต้องใช้เวลาดังนั้นเวลาค้นหาโดยรวมจึงลดลงประมาณ 1/2 (สมมติว่าโดยความรู้อื่นเรารู้ว่า "ราชา" ของสวีเดนไม่สามารถเป็น "หญิง" ได้ Hatshepsut เป็นผู้หญิงชาวอียิปต์ที่เป็นราชา)

อย่างไรก็ตามบางครั้งมีคำถามที่ไม่ได้อิงตามเพศเช่น "คนที่อาศัยอยู่บนถนนสายที่ 8 ในบ้านสีแดงในเมืองที่เริ่มต้นด้วย A. " ฉันเห็นได้ว่าข้อความค้นหาย่อย "อาศัยอยู่ในบ้านแดง" เป็นเรื่องปกติและคำนวณรายชื่อของคนเหล่านั้นทั้งหมดที่อาศัยอยู่ในบ้านแดง

นี่ทำให้ฉันตัดสินใจต้นไม้ ในกรณีปกติแต่ละสาขาของแผนผังการตัดสินใจจะมีคำถามที่แตกต่างกันและวิธีการเลือกคำศัพท์ที่เหมาะสมที่สุดสำหรับแผนผังการตัดสินใจนั้นเป็นที่รู้จักกันดี อย่างไรก็ตามฉันกำลังสร้างระบบที่มีอยู่ซึ่งต้องการให้ทุกสาขาต้องถามคำถามเดียวกัน

ต่อไปนี้เป็นตัวอย่างของชุดการตัดสินใจขั้นสุดท้ายที่เป็นไปได้: คำถามที่ 1 คือ 'เป็นผู้หญิงหรือไม่', คำถามที่ 2 คือ 'บุคคลนั้นอาศัยอยู่ในบ้านแดงหรือไม่' คำถามที่ 3 คือ 'บุคคลนั้นอาศัยอยู่ในเมืองที่เริ่มต้นด้วย A หรือบุคคลนั้นอาศัยอยู่ในเมืองที่เริ่มต้นด้วย B หรือไม่ 'และคำถามที่ 4 คือ' บุคคลนั้นอาศัยอยู่บนถนนที่มีหมายเลขหรือไม่ '

เมื่อมีคำถามมาฉันจะเห็นว่าตรงกับคำถามที่คำนวณล่วงหน้าใด ๆฉันได้พิจารณาแล้วหรือไม่ หากเป็นเช่นนั้นแล้วฉันจะได้รับจุดตัดของคำตอบเหล่านั้นและถามคำถามในเซตที่สี่แยก เช่นหากคำถามคือ "คนที่อาศัยอยู่ในบ้านสีแดงบนเกาะ" จากนั้นพบว่า "คนที่อาศัยอยู่ในบ้านหลังสีแดง" ได้รับการคำนวณล่วงหน้าแล้วดังนั้นจึงเป็นเรื่องของการค้นหากลุ่มย่อยของผู้ที่อาศัยอยู่บนเกาะด้วยQqiqjQ

ฉันสามารถรับแบบจำลองต้นทุนได้โดยดูที่ชุดของจำนวนมากและตรวจสอบเพื่อดูขนาดของเกี่ยวข้อง ฉันต้องการที่จะลดขนาดเฉลี่ยของ{}QHapproxHapprox

คำถามคือฉันจะเพิ่มประสิทธิภาพการเลือกเป็นไปได้เพื่อสร้างการตัดสินใจที่แน่นอนนี้ได้อย่างไร ฉันลองใช้ GA แต่มันช้าไปบรรจบกัน อาจจะเป็นเพราะพื้นที่คุณลักษณะของฉันมีไม่กี่ล้านเป็นไปได้q_jฉันมาด้วยวิธีโลภ แต่ฉันไม่พอใจกับผลลัพธ์ มันช้ามากและฉันคิดว่าฉันปรับสิ่งผิดให้เหมาะสมqjqj

ฉันควรวิจัยเรื่องใดที่มีอยู่


ข้อมูลของคุณได้รับการแก้ไขหรือไม่คุณจะเพิ่มตัวอย่างเพิ่มเติมหรือไม่ ถ้าไม่ลองสร้างต้นไม้ descision โดยเริ่มต้นด้วยแบบสอบถามย่อยที่มีข้อมูลสูงสุดคุณสามารถเลือกเอนโทรปีขั้นต่ำที่จะหยุดการสืบทอดต้นไม้ตามต้นไม้และค้นหาด้วย | S | .t เวลาที่ S มีขนาดเล็กพอ
Anton

คำตอบ:


1

วิธีแก้ปัญหาที่ฉันพบ (ฉันถามคำถาม) คือการใช้การเข้ารหัสแบบซ้อนทับและโดยเฉพาะอย่างยิ่งตัวแปรของ Zatocoding ซึ่งสนับสนุนการอธิบายลำดับชั้นได้ดียิ่งขึ้น

วิธีที่ฉันใช้มาจาก 'การออกแบบที่มีประสิทธิภาพสำหรับการค้นหาโครงสร้างทางเคมี I. หน้าจอ 'Alfred Feldman และ Louis Hodes, J. Chem Inf คอมพิวเต วิทย์, 1975, 15 (3), pp 147–152

วิธีการแก้ปัญหาที่ไม่ใช่ลำดับชั้นคือการดูความหนาแน่นของข้อมูล descriptor แต่ละตัวจะถูกกำหนดบิตโดยที่เป็นความถี่ในชุดข้อมูล ( f_i <= 1.0) คำนวณจำนวนบิตทั้งหมด (ขนาดของการตัดสินใจ) โดยใช้โดยที่คือปัจจัยการบีบอัด Mooers 0.69 (จาก ) เมื่อคุณกำหนดจำนวนบิตทั้งหมดที่จะใช้แล้วให้เลือกบิตสุ่มสำหรับแต่ละ descriptor สำหรับการกำหนดบิตsผม=-ล.โอก.2(ผม)ผม0<DD=Σ(sผมผม)/MMล.โอก.อี2sผม

โซลูชันลำดับชั้นจาก Feldman และ Hodes แทนที่สำหรับ descriptors ซึ่งเป็นชุดย่อยของ descriptor อื่น ในกรณีดังกล่าวใช้โดยที่เป็นความถี่ของพาเรนต์ที่พบบ่อยที่สุด นอกจากนี้เมื่อทำการกำหนดบิตห้ามเลือกบิตที่ใช้โดยการกำหนดบิตของพาเรนต์sผม=-ล.โอก.2(ผม)sผม=-ล.โอก.2(ผม/ก.ผม)ก.ผม

ยังคงมีปัญหาว่าจะอธิบายตัวอธิบายที่ถูกต้องได้อย่างไร แต่นั่นจะเป็นโดเมนเฉพาะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.