อะไรคือวิธีที่ต้องการและมีประสิทธิภาพสำหรับการแก้ไขข้อมูลหลายมิติ?


22

อะไรคือวิธีที่ต้องการและมีประสิทธิภาพสำหรับการแก้ไขข้อมูลหลายมิติ?

สิ่งที่ฉันกังวลเกี่ยวกับ:

  1. ประสิทธิภาพและหน่วยความจำสำหรับการสร้างการประเมินผลเดี่ยว / ชุด
  2. การจัดการมิติตั้งแต่ 1 ถึง 6
  3. เชิงเส้นหรือสูงกว่าคำสั่ง
  4. ความสามารถในการรับการไล่ระดับสี (ถ้าไม่ใช่เชิงเส้น)
  5. กริดปกติกับกระจัดกระจาย
  6. ใช้เป็นฟังก์ชัน Interpolating เช่นค้นหารากหรือย่อขนาด
  7. ความสามารถในการอนุมาน

มีการใช้งานโอเพนซอร์ซที่มีประสิทธิภาพหรือไม่

ฉันมีโชคบางส่วนกับ scipy.interpolate และความสนใจจาก scikit เรียนรู้

ฉันไม่ได้ลอง splines, Chebyshev polynomials เป็นต้น

นี่คือสิ่งที่ฉันพบจนถึงในหัวข้อนี้:

Python 4D การประมาณเชิงเส้นในตารางสี่เหลี่ยม

การแก้ไขที่รวดเร็วของข้อมูล 3D ตัวอย่างเป็นระยะด้วยช่วงเวลาที่แตกต่างกันใน x, y และ z

การแก้ไขข้อมูลกริดแบบปกติอย่างรวดเร็ว

วิธีการแก้ไขแบบกระจายหลายตัวแปรที่ดีที่สุดสำหรับการใช้งานจริงคืออะไร?


1
คุณต้องการการแก้ไขของคุณเพื่ออะไร ข้อมูลอินพุตของคุณเป็นอย่างไร ฉันไม่คิดว่ามิติข้อมูลเปลี่ยนแปลงปัญหาได้มาก
nicoguaro

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

1
นี่คือการสำรวจการประมาณพหุนามหลายตัวแปรถ้าคุณต้องการที่จะใช้วิธีการนั้น: Gasca & Sauer, "การแก้ไขพหุนามในหลายตัวแปร", 2000 citeseerx.ist.psu.edu/viewdoc/ ......
cfh

3
ชื่อพหุนาม Chebyshev ในตารางที่กระจัดกระจาย (เช่น Smolyak) รวดเร็วมากสำหรับขนาดที่สูงขึ้น จุดกริดเป็นส่วนย่อยที่กำหนดไว้ล่วงหน้าของคะแนน Chebyshev การใช้งานบางอย่าง: tasmanian.ornl.gov , ians.uni-stuttgart.de/spinterp/about.html , github.com/EconForge/Smolyak
Ronaldo Carpio

1
คุณสามารถลองบางอย่างเช่น Delaunay tessellation บนท่อร่วมไอดี
EngrStudent - Reinstate Monica

คำตอบ:


14

ในส่วนแรกของคำถามของฉันฉันพบว่าการเปรียบเทียบที่มีประโยชน์มากสำหรับประสิทธิภาพของวิธีการประมาณค่าเชิงเส้นต่าง ๆ โดยใช้ไลบรารีหลาม:

http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb

ด้านล่างคือรายการวิธีการรวบรวมจนถึงปัจจุบัน

การแก้ไขมาตรฐานของ Standart ตารางที่มีโครงสร้าง:

http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.ndimage.interpolation.map_coordinates.html

http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RegularGridInterpolator.html

https://github.com/rncarpio/linterp/

ตารางที่ไม่มีโครงสร้าง (กระจัดกระจาย):

http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.LinearNDInterpolator.html#scipy.interpolate.LinearNDInterpolator

http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html

http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.Rbf.html

2 โครงการขนาดใหญ่ที่มีการแก้ไข:

https://github.com/sloriot/cgal-bindings (ส่วนของ CGAL, GPL / LGPL ที่ได้รับใบอนุญาต)

https://www.earthsystemcog.org/projects/esmp/ (ใบอนุญาตมหาวิทยาลัยอิลลินอยส์ - NCSA ~ = MIT + BSD-3)

กระจัดกระจายกริด:

https://github.com/EconForge/Smolyak

https://github.com/EconForge/dolo/tree/master/dolo/numeric/interpolation

http://people.sc.fsu.edu/~jburkardt/py_src/sparse_grid/sparse_grid.html

https://aerodynamics.lr.tudelft.nl/~rdwight/work_sparse.html

https://pypi.python.org/pypi/puq

Kriging (กระบวนการแบบเกาส์):

http://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.GaussianProcess.html

https://github.com/SheffieldML/GPy

https://software.sandia.gov/svn/surfpack/trunk/

http://openmdao.org/dev_docs/_modules/openmdao/lib/surrogatemodels/kriging_surrogate.html

ใบอนุญาต GPL ทั่วไป:

https://github.com/rncarpio/delaunay_linterp

เดวิล

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

Python สำหรับ Tasmanian:

https://github.com/rncarpio/py_tsg

https://github.com/sloriot/cgal-bindings (ส่วนของ CGAL, GPL / LGPL ที่ได้รับใบอนุญาต)


2
ฉันจะเพิ่มว่าแพคเกจ DAKOTA ที่ยอดเยี่ยมมากจาก sandia มีวิธีการทั้งหมดข้างต้นที่นำมาใช้และอื่น ๆ อีกมากมายและมันให้การผูกหลาม มันอาจไม่ใช่วิธีที่ง่ายที่สุดในการเริ่มต้นและใช้งาน แต่มันยอดเยี่ยมและมีตัวเลือกมากมายและคุ้มค่าที่จะลองใช้
Aurelius

@Aurelius คุณกรุณาชี้ไปที่การแก้ไข / ขั้นตอนการประมาณภายใน DAKOTA ได้หรือไม่ ฉันมีประสบการณ์กับแพคเกจนั้น แต่เพียงสังเกต surfpack (อ้างอิงแล้วข้างต้น) สำหรับ kriging
denfromufa


@Aurelius โมเดลการประมาณ dakota ทั้งหมดอยู่ใน surfpack
denfromufa

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