2013-07-23 18 views
10

私は科学的な数学や統計に関する経験が不足していると言いましょう - これは非常によく知られた問題かもしれませんが、どこから始めるべきか分かりません。多くのパラメータ(python)を持つ関数を最大化

私はx'sesを推測し、fの最高値を見つける必要がある機能f(x1, x2, ..., xn)を持っています。この関数は、以下のプロパティを持っています:

  • 総数またはパラメータは、通常約40〜60です。したがって、ブルートフォースアプローチは不可能です。

  • 0.01から各xの範囲で使用できる値

  • 2.99に関数は、より高いF値がパラメータの推測が良く、逆もまた同様であることを意味することを意味し、安定しています。

これまでのところ、私はかなり基本的な方法をPythonで実装しました。最初はすべてのパラメータを1に設定し、ランダムに新しい値を推測し、fが以前よりも高いかどうかをチェックします。そうでない場合は、以前の値にロールバックします。 繰り返し回数が10,000回のループでは、これは何とか動作するようですが、その結果は完璧ではありません。

最適なパラメータの検索方法を改善する方法についてのご意見をお待ちしております。この問題をグーグルで調べると、linke MCMCが登場しましたが、それは非常に高度な方法のように思え、方法を理解するためにも多くの時間が必要になります。 基本的なヒントやコンセプトは、精巧な方法やアルゴリズム以上に役立ちます。

+0

ようこそ! 私はこの問題の正式な解決策があると確信していますが、私の最初の推測は欲張りなアルゴリズムでしょう...それぞれの 'xn'に対して、' f'を最大化する 'xn'の値を見つけて繰り返しますか?これは 'f'の性質に依存します。思考? –

+0

関数に最大値がほとんどないのか、それともたくさんあると予想されるのか分かりますか?もしそれが比較的少ないのであれば、[gradient descent]を試すことができます(http://en.wikipedia.org/wiki/Gradient_descent) –

+0

関数に未知数の変数を送る場合は、配列、リスト、または辞書に格納されます。おそらくあなたのケースのリスト。 – Josh

答えて

7

自分でしないでください。 SciPyをインストールし、そのoptimizationルーチンを使用してください。 scipy.optimize.minimizeはよく似ています。

+1

ありがとう!ついにそれを試す時間があり、それは魅力のように機能します。今私はそれがどのように動作するかを理解するためにコードを見てほしいという衝動に立ち向かう必要があります:) – David

0

タスクがあなたがそれを行うことができないと言っていない限り、あなたはいつもリストを1つのパラメータとして使うことができます。リストを使うともっと簡単になります。

関連する問題