2014-06-25 59 views
1

我有一個函數f需要N實值輸入,並且計算起來非常昂貴。 N輸入中的每一個,由n調用一個,其輸入值的範圍爲(n_min, n_max)。我有興趣研究f的屬性,方法是在各種輸入上生成樣本並查看它產生的輸出。 (目標是用ML建立一個近似值爲f。)從高維函數採樣

假設由於時間限制,我只能生成1000個樣本。是它「更好」,以選擇該組的N s表示我通過

n_min

(A)迭代到n_max用一個足夠大的步長大小對於每個n,或

(B)均勻地採樣饋送到f每個n的範圍爲(n_min, n_max)? (A)具有保持每一個其他輸入固定的理想特性,同時每次只改變一個值,但選擇(B)具有可能探索輸入空間的更多部分的期望屬性(012)。

回答

1

B當函數對所有輸入沒有相同的方差時更好,但它可能不會。在極端情況下,假設您有1000個樣本,3個輸入,但其中只有一個實際影響了函數。如果您在一個10x10x10的常規網格上進行採樣,如A,則最終只有10個相關輸入採樣。如果您採用統一分佈進行採樣,則所有1000個樣本都會提供信息。

作爲B的變體,請考慮使用輸入的準隨機序列,例如Sobol sequence。統一分佈的優勢在於您的輸入空間覆蓋範圍不會有羣集或空洞。

+0

這是一個很好的答案,謝謝。我正在尋找在Python中生成Sobol序列的手段,但是我稍微短了一點。 – rhombidodecahedron

+0

我使用的是C++實現。我不知道在Python中重現會有多容易。 http://web.maths.unsw.edu.au/~fkuo/sobol/ –