การค้นหาศูนย์วงกลมที่รู้จำนวนมากที่สุดซึ่งจะเพิ่มจำนวนคะแนนภายในระยะทางที่แน่นอน


10

ฉันมีชุดข้อมูล 2 มิติที่ฉันต้องการค้นหาศูนย์กลางของจำนวนศูนย์กลางของวงกลม ( ) ที่ระบุซึ่งจะเพิ่มจำนวนจุดทั้งหมดภายในระยะทางที่กำหนด ( )RNR

เช่นฉันมี 10,000 จุดข้อมูลและฉันต้องการที่จะหาศูนย์ของแวดวงที่จับเป็นจุดมากเท่าที่เป็นไปได้ภายในรัศมีของR5 ศูนย์และรัศมี 10 ได้รับล่วงหน้าไม่ได้มาจากข้อมูลN = 5 R = 10(Xi,Yi)N=5R=10

การปรากฏตัวของจุดข้อมูลภายในวงกลมเป็นเลขฐานสอง / หรือข้อเสนอ ถ้าไม่มีความแตกต่างของมูลค่าของจุด 11 หน่วยกับ 100 หน่วยในขณะที่ทั้งสอง> 10 ในทำนองเดียวกันกับที่อยู่ในวงกลมไม่มีค่าพิเศษที่จะอยู่ใกล้กับใจกลางและใกล้กับขอบ . จุดข้อมูลอาจอยู่ในหนึ่งในแวดวงหรือออกR=10

มีอัลกอริทึมที่ดีที่สามารถใช้แก้ปัญหานี้ได้หรือไม่? ดูเหมือนว่าสิ่งเหล่านี้เกี่ยวข้องกับเทคนิคการจัดกลุ่ม แต่แทนที่จะลดระยะทางเฉลี่ยให้น้อยที่สุดฟังก์ชัน "ระยะทาง" คือ 0 ถ้าจุดอยู่ภายในของจุดใด ๆและ 1 เป็นอย่างอื่นNRN

ความชอบของฉันคือการหาวิธีที่จะทำสิ่งนี้ใน R แต่วิธีการใดก็ได้รับการชื่นชม


วงกลมทับซ้อนกันได้หรือไม่
อยากรู้อยากเห็น _cat

1
นี่คือการดำเนินงานพื้นที่ใกล้เคียง (หรือโฟกัส) บนชุดข้อมูลแบบแรสเตอร์ มันจะเป็นการดีที่จะตรวจสอบเว็บไซต์ GIS เพื่อดูว่ามันได้รับคำตอบหรือไม่และตรวจสอบแพ็กเกจ R เพื่อทำการวิเคราะห์ Raster
Andy W

1
อนุญาตการทับซ้อนของวงกลม แต่จุดข้อมูลที่ครอบคลุมโดยวงกลมทั้งสองจะไม่ถูกนับซ้ำ ขอบคุณสำหรับตัวชี้ไปยังพื้นที่ใกล้เคียง / การโฟกัสบนชุดข้อมูลแบบแรสเตอร์ ฉันจะค้นหาบางสิ่งตามบรรทัดเหล่านั้น
Colonel.triq

@ Andy W แม้ว่าการดำเนินการโฟกัสจะมีส่วนร่วมในการแก้ปัญหาตามธรรมชาติ แต่คำถามนี้อยู่นอกเหนือความเชี่ยวชาญของชุมชน GIS, IMHO เพราะเป็นปัญหาการเพิ่มประสิทธิภาพ (ยากมาก) จริงๆ มันไม่ได้เป็นกริดที่หาได้ง่ายที่สุด ฉันขอแนะนำให้เก็บไว้ที่นี่ซักพักแล้วหากไม่มีวิธีแก้ปัญหาที่น่าพอใจเกิดขึ้นให้ย้ายไปยังไซต์ที่เน้นการเขียนโปรแกรม
whuber

.... หรือย้ายไปที่ math.overflow หรือไม่ พวกเขาอาจมีข้อมูลเชิงลึกเกี่ยวกับเรื่องนี้เช่นกัน
อยากรู้อยากเห็น _cat

คำตอบ:


1

นี่เป็นปัญหารูปแบบ k-mean รัศมีของศูนย์ไม่สำคัญตราบใดที่ถือว่ามีค่าเท่ากัน

ลิงค์:

มันจะทำให้ศูนย์กลางของวงกลมไปยังตำแหน่งที่มีความน่าจะเป็นสูงที่สุดของคะแนน

คลาสสิก K- หมายถึงขั้นตอน:

  1. ตั้งค่าคลัสเตอร์นับเป็น 5
  2. ใส่แต่ละจุดในคลัสเตอร์แบบสุ่ม
  3. สำหรับแต่ละกลุ่มให้คำนวณตำแหน่งเฉลี่ย
  4. สำหรับแต่ละจุดให้คำนวณระยะทางไปยังตำแหน่งเฉลี่ยใหม่แต่ละตำแหน่ง
  5. เป็นสมาชิกเชื่อมโยงกับคลัสเตอร์ที่ใกล้ที่สุด
  6. ทำซ้ำจนกว่าจะเสร็จ (ซ้ำการเปลี่ยนแปลงตำแหน่งหรือการวัดข้อผิดพลาดอื่น ๆ )

ตัวเลือก:

  • คุณสามารถใช้การผ่อนปรนหลังจาก 3 ซึ่งคุณแปลตำแหน่งเฉลี่ยช้าลงสู่ตำแหน่งใหม่
  • นี่เป็นระบบที่ไม่ต่อเนื่องดังนั้นมันจึงไม่เข้ากันอย่างสมบูรณ์ บางครั้งมันทำได้และคุณสามารถจบลงได้เมื่อคะแนนหยุดเปลี่ยนการเป็นสมาชิก แต่บางครั้งพวกเขาก็กระดิกไปเล็กน้อย
  • หากคุณกำลังสร้างรหัสของคุณเอง (ตามที่คนส่วนใหญ่ควรทำ) คุณสามารถใช้ POR k- หมายถึงด้านบนเป็นจุดเริ่มต้นและทำรูปแบบของ EM ที่ได้รับการบอกเล่าโดยร้อยละของคะแนนโดยเฉพาะอย่างยิ่ง

ทำไม K-หมายถึงโจมตีปัญหา:

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

ควรมีอนาล็อกบางส่วนของ"Zero Inflated Poisson"ซึ่งมีองค์ประกอบที่ไม่ใช่เกาส์เซียนที่หยิบชุดกระจาย

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


คุณช่วยเพิ่มความกระจ่างในวิธีแก้ปัญหานี้ได้ไหม?
whuber

ขอบคุณสำหรับคำแนะนำ มันยังไม่ชัดเจนสำหรับฉันที่วิธี K - หมายถึงการแก้ปัญหาหรือไม่ พิจารณาตัวอย่างของสามกลุ่มของข้อมูลที่สร้างขึ้นปกติ (0,1) โดยที่ศูนย์ถูกชดเชยด้วย 5 หน่วยหรือมากกว่านั้น ศูนย์ K หมายถึงจะให้ความหนาแน่นสูงสุด ตอนนี้ตัดบางจุดด้วย "หลุม" เช่นข้อมูลที่อยู่ใกล้กว่า 0.5 ถึงศูนย์จะถูกลบออก K-หมายความว่ายังคงแสดงเกี่ยวกับศูนย์เดียวกัน แต่ถ้าคุณได้รับความคุ้มครองสูงสุดสำหรับ N = 3, R = 0.5 นั่นไม่ใช่คำตอบที่ชัดเจน (เพราะหลุมโดนัทไม่มีข้อมูล) ฉันเข้าใจอะไรผิดไปหรือเปล่า?
Colonel.triq

จะพิจารณาคำถามของคุณมากขึ้นเพื่อหาคำตอบที่ดีกว่าเมื่อฉันมีเวลา ฉันต้องการให้น้ำหนักเชิงลบ บางครั้งสามารถจัดการข้อมูลโดนัทเช่นเดียวกับชื่อพหุนามเรเดียนที่มีเหตุผล
EngrStudent

0

บางคนอาจมีอัลกอริธึมที่ดีกว่า แต่นี่คือวิธีการบังคับแบบเดรัจฉาน ฉันจะใช้อัลกอริธึม binning หกเหลี่ยมเพื่อคำนวณฮิสโตแกรม 2D เช่นเดียวกับในhexbinR

ฉันจะใช้ขนาดหกเหลี่ยมที่จะ จำกัด วงรัศมี R ของคุณอย่างคร่าวๆแล้วเรียงลำดับบนถังขยะ N ด้านบน หากคุณมีNถังขยะที่อยู่ไกลมาก ทีนี้วิธีหนึ่งคือเคลื่อนไปรอบ ๆ วงกลมบนสเกล 2 * R (ในทิศทาง x และ y) จากจุดศูนย์กลางของรูปหกเหลี่ยมความหนาแน่นสูงสุด การคำนวณความหนาแน่นสามารถประมาณตำแหน่งในท้องถิ่นได้อย่างเหมาะสมที่สุด สิ่งนี้จะอธิบายถึงความจริงที่ว่ารูปหกเหลี่ยมไม่ใช่หน้าต่างที่เคลื่อนไหวซึ่งเกี่ยวกับต้นกำเนิดที่แน่นอน

หากถังขยะด้านบนทั้งหมดอยู่ใกล้คุณคุณจะต้องมีวิธีที่ชาญฉลาดในการเคลื่อนย้ายแวดวงของคุณในบริเวณนั้น

โปรดทราบว่าฉันสามารถนึกถึงหลายมุมที่กลยุทธ์ไร้เดียงสาดังกล่าวจะล้มเหลวอย่างงดงาม แต่เป็นเพียงจุดเริ่มต้น

ในขณะเดียวกันฉันหวังว่าบางคนมีอัลกอริทึมที่ดีกว่า


1
สิ่งนี้อาจแก้ปัญหาอย่างน้อยประมาณหนึ่งวง (สามารถทำได้อย่างง่ายดายโดยใช้การนับโฟกัสด้วย GIS) แต่มันจะไม่แก้ปัญหาหลายวง
whuber

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

R=10,N=20,1,2,20,21,28,29,30,31,32,39,4028,29,30,31,320,1,220,21,28,29,3030,31,32,39,40

@whuber: จริง คุณพูดถูก แม้ว่าจะขึ้นอยู่กับโครงสร้างของจุดอินพุตในบางกรณี (มาก?) การแก้ปัญหาโลภและไม่โลภอาจเหมือนหรือใกล้เคียงกับ? ฉันไม่รู้
อยากรู้อยากเห็น _cat

@whuber: ปัญหาดูเหมือนว่าส่วนใหญ่อยู่ในขอบเขต เกิดอะไรขึ้นถ้า (เหมือนที่ผมกล่าวถึงในคำตอบของฉัน) หนึ่งย้ายหน้าต่าง+Rและ-Rแล้วทำให้การแก้ปัญหาที่เป็นไปได้ทั้งหมดในกองและเลือกในหมู่พวกเขา เช่นใน1Dตัวอย่างของคุณเกี่ยวกับการกดปุ่ม28,29,30,31,32มันจะเลื่อนหน้าต่างจนถึง18-28และ38-48มองหาโซลูชันที่เป็นไปได้ทั้งหมด จากนั้นภายในหนึ่งเหล่านี้สามารถมองหาจุดรวมที่ให้ผลผลิตสูงสุด ไม่แน่ใจว่าจะช่วยได้ไหม? ฉันพยายามที่จะดูว่าอัลกอริทึมไร้เดียงสาของฉันสามารถกู้ได้หรือไม่? :)
อยากรู้อยากเห็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.