Python の実戦: Whale WOA に基づく VMD ハイパーパラメータの最適化

目次

1原則

2 戦闘

2.1 元の時系列

 2.2 VMD分解のパラメータを直接設定

 2.3 WOA による VMD ハイパーパラメータの最適化

 2.4 最適化されたパラメータを使用した VMD 分解

 3つのコード


VMD (変分モード分解) を使用する場合、その k とアルファは分解結果に大きな影響を与えます。モードの fft スペクトルの分析などを通じて、これら 2 つのパラメーターの選択を最適化する記事が多数あります。インターネット上には matlab の事例も少数ありますが、Python の事例は基本的に存在しないため、Python バージョンを作成しました。

1原則

時系列が複雑になればなるほど、サンプル エントロピー SE の計算値は大きくなり、その逆も同様です。したがって、VMD を適用して信号を分解した後、各サブシーケンスの SE 値を計算します。最小の SE を持つシーケンスが、分解されたシーケンスのトレンド アイテムになります。

分解数 K が小さい場合、信号の分解が不十分でトレンド項目に他の干渉項目が混入し、SE 値が大きくなる可能性があります。適切な K 値を取ると、トレンド項目の SE は小さくなります。したがって、分解された IMF の最小エントロピー SE (ローカル サンプル エントロピー) が最小化されると、VMD 分解が最適になります。

もちろん、サンプルのエントロピーには限界があるため、現時点では、エンベロープ エントロピーの最小化、スペクトル相関尖度の最小化など、多くの方法があります。この記事では、引き続きローカル サンプル エントロピーの最小化をプログラムの開始点として使用しています。

'''适应度函数,最小化各VMD分量的局部样本熵'''
def fitness(pop,data):
    np.random.seed(0)
    
    K = int(pop[0])
    alpha = int(pop[1])
    #print(K,alpha)
    tau = 0  
    DC = 0         
    init = 1         
    tol = 1e-7
    imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)
    comp=np.vstack([imf,res.reshape(1,-1)])
    SE = 0
    se_imf=[]
    for i in range(comp.shape[0]):
        temp= sampEn(comp[i,:], np.std(comp[i,:]),2, 0.15)
        SE +=temp
        se_imf.append(temp)
    # fit = SE
    # fit = SE/K
    fit = min(se_imf)
    
    
    np.random.seed(int(time.time()))
    return fit 

2 戦闘

2.1 元の時系列

 2.2 VMD分解のパラメータを直接設定

 2.3 WOA による VMD ハイパーパラメータの最適化

        ローカルサンプルのエントロピーを最小化しているため、適合度曲線は下降曲線になります。

最適な k と alpha は 9 と 65 です

iteration 1 = 0.03475234914892587 [6, 715]
iteration 2 = 0.03474872927521434 [6, 721]
iteration 3 = 0.03423725134060173 [8, 882]
iteration 4 = 0.034142069286057515 [9, 920]
iteration 5 = 0.015960969553223837 [9, 65]
iteration 6 = 0.015960969553223837 [9, 65]
iteration 7 = 0.015960969553223837 [9, 65]
iteration 8 = 0.015960969553223837 [9, 65]
iteration 9 = 0.015960969553223837 [9, 65]
iteration 10 = 0.015960969553223837 [9, 65]

 2.4 最適化されたパラメータを使用した VMD 分解

 3つのコード

私のブログのコメント欄を参照してください

おすすめ

転載: blog.csdn.net/qq_41043389/article/details/127762397
おすすめ