Node-AIリソース
マニュアルアカデミーカスタムカードギャラリー公開レシピヘルプログイン新規登録
マニュアルアカデミーカスタムカードギャラリー公開レシピヘルプログイン新規登録
トップ/カスタムカードギャラリー/Savitzky-Golayフィルタ

Savitzky-Golayフィルタ

2024/7/31 17:292025/3/27 11:05
概要活用シーン動作上の注意点分析上の注意点コード入出力の例入力出力
 

概要

 
よく用いられる平滑化(ノイズ除去)手法に、移動平均があります。移動平均は長大な時系列に対して、短い窓幅を決め、窓枠をスライドしながら、窓枠内での平均値を求め、注目点の値を置き換えていくものです。
 
Savitzky-Golayフィルタは移動平均を一般化したフィルタです。逆に言えば、移動平均は特殊化されたSavitzky-Golayフィルタであるといえます。
 
Savitzky-Golayフィルタはの基本的なアイデアは、短い窓幅を決め、窓枠をスライドしていく点は同様ですが、窓幅内ではN次の多項式による近似を行い、注目点を多項式の値に置き換えていきます。したがって、窓幅のほかに多項式の次数をパラメータとして与えなくてはいけません。この時、移動平均はSavitzky-Golayフィルタにおいて次数を0とした場合と一致します。Savitzky-Golayフィルタは、デジタル平滑化多項式フィルタまたは最小二乗平滑化フィルタとも呼ばれます。
 
Savitzky-Golayフィルタを用いることで、移動平均と比べ広域な窓幅を用いることが可能になり、局所的な変動に左右されにくい平滑化を可能にします。
 
また、デジタル信号においては、差分法を用いた微分処理を行うことがあります。これは、Node-AIが扱う時系列データにおいては時間差分に相当します。差分法は理解がしやすいアルゴリズムであり、並列化可能な線形演算によって極めて高速に計算可能であるため、幅広く用いられます。
一方で差分法はノイズに対して鋭敏に反応するなど一定のデメリットがあります。これに対するアプローチとして、対象データを直接用いるのではなく、滑らかな関数で近似したうえで、近似式に対して微分を行うという方法があります。
 
Savitzky-Golay法ではの途中で求められる多項式に対して、微分を行うことで、平滑化と微分処理を同時に実現できます。
 

活用シーン

主にデータを平滑化(ノイズ除去)を行う場合に使用します。パラメータを調整することによって、平滑化と微分を同時に行うことも可能です。

動作上の注意点

  • COLUMNに指定したカラム名が元のデータに含まれていない場合、エラーが発生します。
  • POLYORDER (次数)は必ずWINDOW(窓幅)より小さい必要があります。

分析上の注意点

  • 目的変数の列を平滑化した場合、学習カードや評価カードの評価指標の一部が平滑化後の値で計算されます。
  • 次数は0以上の整数であり、大きくなるほどに平滑化効果は弱まります。
  • 窓幅は1以上の整数であり、大きくなるほどに平滑化効果は高まります。
  • 次数と窓幅のバランス調整が重要です。

コード

入出力の例

入力

timepm2.5
2010-01-02 00:00129
2010-01-02 01:00148
2010-01-02 02:00159
2010-01-02 03:00181
2010-01-02 04:00138
2010-01-02 05:00109
2010-01-02 06:00105
2010-01-02 07:00124
2010-01-02 08:00120
2010-01-02 09:00132
2010-01-02 10:00140
2010-01-02 11:00152
2010-01-02 12:00148
2010-01-02 13:00164
2010-01-02 14:00158
2010-01-02 15:00154
2010-01-02 16:00159
2010-01-02 17:00164
2010-01-02 18:00170
2010-01-02 19:00149
2010-01-02 20:00154
2010-01-02 21:00164

出力

timepm2.5
2010-01-02 00:00143.72
2010-01-02 01:00143.72
2010-01-02 02:00143.72
2010-01-02 03:00143.72
2010-01-02 04:00143.72
2010-01-02 05:00143.72
2010-01-02 06:00143.72
2010-01-02 07:00143.72
2010-01-02 08:00143.72
2010-01-02 09:00143.72
2010-01-02 10:00143.72
2010-01-02 11:00143.72
2010-01-02 12:00143.72
2010-01-02 13:00141.08
2010-01-02 14:00137.76
2010-01-02 15:00133.6
2010-01-02 16:00128.96
2010-01-02 17:00126.76
2010-01-02 18:00126.04
2010-01-02 19:00125.28
2010-01-02 20:00123.6
2010-01-02 21:00122.24
 
お問い合わせ
利用規約(PDF:1,527KB)
情報の外部送信について
プライバシーポリシー
 
Copyright © NTT Communications Corporation All Rights Reserved.