Time-series-naive-methods

提供:Dev Guides
移動先:案内検索

時系列-ナイーブメソッド

前書き

時間 't’での予測値を時間 't-1’での変数の実際の値または系列のローリング平均と仮定するなどの単純な方法を使用して、統計モデルと機械学習モデルがどれだけうまく実行できるかを評価しますそして彼らの必要性を強調します。

この章では、時系列データの機能の1つでこれらのモデルを試してみましょう。

まず、データの「温度」機能の平均とその周辺の偏差を確認します。 また、最大温度値と最小温度値を確認すると便利です。 ここでnumpyライブラリの機能を使用できます。

統計を表示する

[135]で:

import numpy
print (
   'Mean: ',numpy.mean(df['T']), ';
   Standard Deviation: ',numpy.std(df['T']),';
   \nMaximum Temperature: ',max(df['T']),';
   Minimum Temperature: ',min(df['T'])
)

データを理解するのに役立つ等間隔のタイムライン全体のすべての9357観測値の統計があります。

次に、最初の単純な方法を試して、現在の予測値を以前の実際の値に設定し、この方法のパフォーマンスを定量化するために二乗平均平方根誤差(RMSE)を計算します。

1 ^ st ^ナイーブメソッドの表示

[136]で:

df['T']
df['T_t-1'] = df['T'].shift(1)

[137]で:

df_naive = df[[T','T_t-1']][1:]

[138]で:

from sklearn import metrics
from math import sqrt

true = df_naive['T']
prediction = df_naive['T_t-1']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 1: ', error)

単純な方法1のRMSE:12.901140576492974

次の単純な方法を見てみましょう。現在の予測値は、その前の期間の平均と同等です。 この方法のRMSEも計算します。

2 ^ nd ^ナイーブメソッドの表示

[139]で:

df['T_rm'] = df['T'].rolling(3).mean().shift(1)
df_naive = df[[T','T_rm']].dropna()

[140]で:

true = df_naive['T']
prediction = df_naive['T_rm']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 2: ', error)
  • 単純な方法2のRMSE:14.957633272839242 *

ここでは、考慮したい「ラグ」とも呼ばれる以前のさまざまな期間を試すことができますが、ここでは3のままにします。 このデータでは、ラグの数を増やしてエラーを増やすことがわかります。 遅延が1に保たれる場合、それは以前に使用された単純な方法と同じになります。

注意事項

  • 二乗平均平方根誤差を計算するための非常に簡単な関数を書くことができます。 ここでは、パッケージ「sklearn」の平均二乗誤差関数を使用し、その平方根を取得しました。
  • パンダでは、df ['column_name']はdf.column_nameとしても記述できますが、このデータセットでは、df.Tはデータフレームを転置するための関数であるため、df.'T 'と同じようには機能しません。 そのため、df [‘T’]のみを使用するか、他の構文を使用する前にこの列の名前を変更することを検討してください。