多次元データを補間するための好ましい効率的なアプローチは何ですか?


22

多次元データを補間するための好ましい効率的なアプローチは何ですか?

私が心配していること:

  1. 構築のためのパフォーマンスとメモリ、シングル/バッチ評価
  2. 1から6の寸法を処理する
  3. 線形または高次
  4. 勾配を取得する機能(線形でない場合)
  5. 通常のグリッドと散布グリッド
  6. 補間関数として使用、たとえば根を見つけたり最小化する
  7. 外挿機能

これの効率的なオープンソース実装はありますか?

私はscipy.interpolateとscikit-learnからのクリギングで部分的な運がありました。

スプライン、チェビシェフ多項式などは試しませんでした。

これは、このトピックでこれまでに見つけたものです。

長方形グリッド上のPython 4D線形補間

x、y、zの異なる間隔で定期的にサンプリングされた3Dデータの高速補間

通常のグリッドデータの高速補間

多変量散乱補間のどの方法が実用に最適ですか?


1
補間の対象は何ですか?入力データはどうですか?次元が問題を大きく変えるとは思わない。
ニコグアロ

2
残念ながら、多変量補間は単変量ほどにはカットおよびドライされません。たとえば、1Dでは、任意の補間ノードを選択して(相互に明確である限り)、常に一定の一意の補間多項式を取得できます。すでに2Dではこれは当てはまらず、ノードの選択方法によっては、明確に定義された多項式補間の問題がない場合があります。要するに、有用な入力を得るには、データの構造に関する詳細情報を提供する必要があります。
cfh

1
多変量多項式近似に関する調査は、そのアプローチを追求したい場合です:Gasca&Sauer、「いくつかの変数の多項式補間」、2000citeseerx.ist.psu.edu
viewdoc/

3
スパース(たとえば、Smolyak)グリッド上のチェビシェフ多項式は、高次元では非常に高速です。グリッドポイントは、チェビシェフポイントの所定のサブセットです。一部の実装:tasmanian.ornl.govians.uni-stuttgart.de / spinterp / about.htmlgithub.com
ロナウド

1
多様体でドローネテッセレーションのようなものを試すことができます。
EngrStudent-モニカの復活

回答:


14

私の質問の最初の部分では、Pythonライブラリを使用したさまざまな線形補間法のパフォーマンスについて、この非常に便利な比較が見つかりました:

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

以下は、これまでに収集されたメソッドのリストです。

標準補間、構造化グリッド:

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

クリギング(ガウス過程):

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バインディング:

https://github.com/rncarpio/py_tsg

https://github.com/sloriot/cgal-bindings(CGALの一部、ライセンスされたGPL / LGPL)


2
sandiaの非常に優れたDAKOTAパッケージには、上記のすべてのメソッドが実装されており、さらに多くの機能があり、Pythonバインディングが提供されていることを付け加えます。起動して実行するのが最も簡単ではないかもしれませんが、一流であり、多くのオプションがあり、チェックアウトする価値があります。
アウレリウス

@Aureliusは、DAKOTA内の補間/近似ルーチンを指摘できますか?私はそのパッケージでの経験がありますが、クリギング用のサーフパック(上記のref-dのみ)に気付きました。
denfromufa


すべてのダコタ近似モデル@Aurelius surfpackである
denfromufa

これは流血のエースです。よくやった!
アストリッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.