非線形性能こんにちは、
定期的に非線形プラットフォームを使用する顧客がいます。
彼は16個のパラメーターで方程式を定義し、比較的大きなデータ(106300行)でそれらを推定したいと考えています。推定にかかる時間は非常に長く、約3時間かかります。
彼は4コアのコンピューターを持っていますが、このプロセスでは1つしか使用されません。
RAMを除いて、彼のケースの時間の問題を改善するためのアドバイスはありますか?この場合、RAMを追加すると本当に良い影響がありますか?
デフォルトでは、彼はニュートン法を使用しています。このオプションの変更が役立つかどうかはわかりません。
ご提案ありがとうございます。
フィレンツェ
PS:みんなにお祝いの休憩をしたい!
再:非線形性能ニックのアプローチ、特に開始点と使用されるアルゴリズムに同意します。ニュートンを使用する場合、開始点は非常に重要です。その場合でも、背後の方法に基づいたローカルソリューションを思いつくかもしれません。また、ニュートンには、複数のターニングポイントがある高度に非線形の動作がある場合、最適なものから別の最適なものにジャンプする可能性があり、収束するのに苦労します。BFGSまたはQuasi Neetonのパフォーマンスが向上するはずです。そして、彼らは真の最適な結果になりそうです。事前にパラメーターセットを減らすことができない場合に備えて、これら2つの提案を試してください。また、これが大きなパラメーターセットであることに同意します。数値最適化では珍しいことではありませんが。ただし、Newtonでは、各反復で16x16ヘッセ行列を計算する必要があり、その逆は時間がかかることに留意する必要があります。また、Newton iでは、各ステップが前のステップの微分を計算する必要があるため、マルチスレッドであるとは考えていません。しかし、ヘッセ行列の計算では、マルチスレッド化できます。また、JMPに1以外のステップサイズが実装されているかどうかはわかりませんが、これは多くの極端な非線形関数に適しています。BFGSおよびlevenberg markwardtなどは、前の反復の勾配情報に基づいてヘシアンの近似を使用しています。したがって、必要な操作は少なくなります。再:非線形性能こんにちは、フィレンツェ!
16個のパラメーターを持つモデルは非常に聞こえますが、16個のパラメーターを実行している理由(物理モデルなど)がありますか?また、使用しているJMPのバージョン、OS、Ramサイズなどは?
ノンリニアはハイパースレッドであるため(「JMPの使用」pg 602を参照)、4つのコアすべてで実行する必要があります。フィッティング中に他のコアに負荷がかかっていない場合、ハイパースレッディングを許可しないように設定されている可能性があります。JMP全体でパフォーマンスが向上するので、最初にそれを追います。
ベスト、
M
再:非線形性能私は常に非線形プラットフォームを使用して、以下の戦略を顧客と共有しています。一般的に、これらは戦略への迅速な収束に役立ちます。
-反復オプションのさまざまな組み合わせを使用します(Newton、QuasiNewton BFGS、QuasiNewton SR1およびNumeric Derivativesのみ)
-スライダーを使用してパラメーターの開始値を調整し、曲線を視覚的に修正してよりフィットするようにします
-方程式を変換することにより多項式を中心に配置します。これにより、最適化の条件が改善されます
-許可される反復回数を増やす
-収束基準の1つを緩和
-別のモデルを試してください。データが選択したモデルと同じ関係を示さない場合、ソリューションに収束するのは困難です。
-パラメーターの数を減らします。定義が過剰なモデルとは、関係をモデル化するのに必要なパラメーターよりも多くのパラメーターを持つモデルです。
再:非線形性能こんにちはフィレンツェ、
これは少し逆に聞こえるかもしれませんが、データの非常に小さいサブセットでパラメーター推定を試してから、推定値をより大きなデータセットと比較し、完全なデータセットの使用からどれだけ離れているかを確認することをお勧めします。 彼らは、データの10%、または20%で妥当な推定値のセットを取得できますか?信頼できるパラメータのセットを取得したら、残りのデータセットに式を適用できます。
ベスト、
ビル