Savitzky-Golayフィルタ
概要
よく用いられる平滑化(ノイズ除去)手法に、移動平均があります。移動平均は長大な時系列に対して、短い窓幅を決め、窓枠をスライドしながら、窓枠内での平均値を求め、注目点の値を置き換えていくものです。
Savitzky-Golayフィルタは移動平均を一般化したフィルタです。逆に言えば、移動平均は特殊化されたSavitzky-Golayフィルタであるといえます。
Savitzky-Golayフィルタはの基本的なアイデアは、短い窓幅を決め、窓枠をスライドしていく点は同様ですが、窓幅内ではN次の多項式による近似を行い、注目点を多項式の値に置き換えていきます。したがって、窓幅のほかに多項式の次数をパラメータとして与えなくてはいけません。この時、移動平均はSavitzky-Golayフィルタにおいて次数を0とした場合と一致します。Savitzky-Golayフィルタは、デジタル平滑化多項式フィルタまたは最小二乗平滑化フィルタとも呼ばれます。
Savitzky-Golayフィルタを用いることで、移動平均と比べ広域な窓幅を用いることが可能になり、局所的な変動に左右されにくい平滑化を可能にします。
また、デジタル信号においては、差分法を用いた微分処理を行うことがあります。これは、Node-AIが扱う時系列データにおいては時間差分に相当します。差分法は理解がしやすいアルゴリズムであり、並列化可能な線形演算によって極めて高速に計算可能であるため、幅広く用いられます。
一方で差分法はノイズに対して鋭敏に反応するなど一定のデメリットがあります。これに対するアプローチとして、対象データを直接用いるのではなく、滑らかな関数で近似したうえで、近似式に対して微分を行うという方法があります。
Savitzky-Golay法ではの途中で求められる多項式に対して、微分を行うことで、平滑化と微分処理を同時に実現できます。
入出力の例
入力
time | pm2.5 |
2010-01-02 00:00 | 129 |
2010-01-02 01:00 | 148 |
2010-01-02 02:00 | 159 |
2010-01-02 03:00 | 181 |
2010-01-02 04:00 | 138 |
2010-01-02 05:00 | 109 |
2010-01-02 06:00 | 105 |
2010-01-02 07:00 | 124 |
2010-01-02 08:00 | 120 |
2010-01-02 09:00 | 132 |
2010-01-02 10:00 | 140 |
2010-01-02 11:00 | 152 |
2010-01-02 12:00 | 148 |
2010-01-02 13:00 | 164 |
2010-01-02 14:00 | 158 |
2010-01-02 15:00 | 154 |
2010-01-02 16:00 | 159 |
2010-01-02 17:00 | 164 |
2010-01-02 18:00 | 170 |
2010-01-02 19:00 | 149 |
2010-01-02 20:00 | 154 |
2010-01-02 21:00 | 164 |
出力
time | pm2.5 |
2010-01-02 00:00 | 143.72 |
2010-01-02 01:00 | 143.72 |
2010-01-02 02:00 | 143.72 |
2010-01-02 03:00 | 143.72 |
2010-01-02 04:00 | 143.72 |
2010-01-02 05:00 | 143.72 |
2010-01-02 06:00 | 143.72 |
2010-01-02 07:00 | 143.72 |
2010-01-02 08:00 | 143.72 |
2010-01-02 09:00 | 143.72 |
2010-01-02 10:00 | 143.72 |
2010-01-02 11:00 | 143.72 |
2010-01-02 12:00 | 143.72 |
2010-01-02 13:00 | 141.08 |
2010-01-02 14:00 | 137.76 |
2010-01-02 15:00 | 133.6 |
2010-01-02 16:00 | 128.96 |
2010-01-02 17:00 | 126.76 |
2010-01-02 18:00 | 126.04 |
2010-01-02 19:00 | 125.28 |
2010-01-02 20:00 | 123.6 |
2010-01-02 21:00 | 122.24 |