私は "チューニング"する必要がある2つのパラメータを持つシンプルなモデルを持っています。パラメータ「A」及び「B」を使用して、モデル式は次のとおりScikit-Learnやその他のパラメータ最適化用のPythonツール
model = (a * temp) + (b * rad)
temp
とrad
(この場合、温度と放射で)データセットを測定します。これらのデータセットは、1日(24時間)の頻度でPandas DateTimeでインデックス付けされたシリーズです。
temp
データは次のようになります。
TIMESTAMP
2014-07-17 1.399556
2014-07-18 1.492743
2014-07-19 1.865306
2014-07-20 2.478098
...
2016-08-23 2.327437
2016-08-24 3.065250
2016-08-25 2.427021
2016-08-26 1.365833
Name: AirTC_2, Length: 213, dtype: float64
rad
データは次のようになります。
TIMESTAMP
2014-07-17 2292.717541
2014-07-18 2228.255459
2014-07-19 2166.962811
2014-07-20 2803.802975
...
2016-08-23 696.327810
2016-08-24 1431.858289
2016-08-25 1083.182916
2016-08-26 542.908838
Name: CNR_Wm2, Length: 213, dtype: float64
私もモデルが近似しようとしている測定データセットを持っています。 measured
データセットは次のようになります。model
とmeasured
の平方差(誤差)の総和を最小化:私は、標準的な回帰技術を使用して、モデルパラメータの予備的な最適化を行っている
TIMESTAMP
2014-07-17 0.036750
2014-07-18 0.045892
2014-07-19 0.041919
2014-07-20 0.044640
...
2016-08-23 0.029696
2016-08-24 0.033997
2016-08-25 0.032872
2016-08-26 0.012204
Name: melt_sonic, Length: 213, dtype: float64
。私はa
とb
の両方のパラメータ空間の範囲をテストし、10,000の一意のパラメータの組み合わせ(a
とb
の配列の長さが100の場合)でモデルを実行しました。
a = np.arange(0.00000009,0.00001,0.0000001)
b = np.arange(0.0115,0.0125,0.00001)
私は単純に、この分析を行うための数学をコーディングしています、と私は独立して、適切なライブラリーからのパッケージ方法を使用してパラメータを最適化することによって、私の結果を再確認したいと思います。
Scikit-Learnや他のPythonライブラリを使用してこれらのパラメータを最適化する最も適切な方法は何ですか?
はい私は単純な線形回帰問題であると考えました。不必要に大きなパラメータの組み合わせをテストしていると思いますが、分析に近いソリューションを得るべきです(np.arange()のステップサイズによって制限されます)。私はあなたのコードを試します。 'y =測定値#モデルの出力'に対して、私はコメントが正確であるかどうかはわかりません。私の例では、変数 'model'はモデルの出力です。しかし、ここでは、 'y = measured'を使いたいと思っています。コメントは、より適切には「測定データ」であり、モデルの理想的な近似を表します。 – PJW
またはドキュメントから、 'y = measured'が 'Target values'です。 – PJW
あなたの答えを使って計算された 'a'と' b'を使って、私は元の方法と非常によく似た値を得ています。以前は、値の範囲を使ったaとbの最適化された値は、それぞれ0.0121と4.99e-06でした。あなたの方法は0.0108と2.59e-06を与えます。分析解が最も正確でなければならないが、新しいパラメータを使用したモデル結果は、モデル化/測定された間の合計二乗誤差に対してわずかに高い値を与える。それをどうしたらいいかわからないけど、あなたの答えはまさに私が探していたものでした。ありがとう! – PJW