moving average가 가장 평균적으로 많이 쓰이는 smoothing 방식입니다. 이는 주어진 데이터 전/후의 일정 개수의 데이터의 평균이나 중간값을 그 데이터의 값으로 추정하는 방법입니다. 그에 반해 savgol filter은 특정구간의 평균/중간값이 아니라, 특정구간을 ax^2 + bx + c 같은 회귀모델을 이용한 smoothing을 수행합니다.
xi의 새로운 값은 양쪽 근방 2n+1 개의 점으로 다항식 회귀한 식으로부터 다시 추정해 내는 것이 핵심 아이디어입니다. 즉, xi 를 포함하고 있는 양쪽 근방 2n+1 개의 점으로 다항식 회귀한 식 Si을 찾고, Si(xi)로 xi 를 대체하는 것입니다. (** 2n+1인이유는 오른쪽으로 n개, 왼쪽으로 n개 , xi 1개해서 2n+1로 셉니다. 그래서 윈도우 갯수는 홀수입니다.) 아래 그림을 예제로 들면 25값을 기준으로 오른쪽으로3개 왼쪽으로3개값을 떼서 7개 데이터를 윈도우로 떼서 봅니다. 7개데이터를 가지고 회귀곡선을 새롭게 그린다음 25에 해당하는 Y값을 새로이 지정해줍니다.
여기서 가장 큰 문제는 xi를 구하기위해 앞뒤 데이터들을 합친 2n+1개 윈도우를 떼서 새로이 다항회귀식(si)를 재구성하는것입니다.
(출처 : https://eigenvector.com/wp-content/uploads/2020/01/SavitzkyGolay.pdf)
Si 회귀함수를 구하고, 그에 맞는 새로운값을 구하는과정은 아래와같이 구해질수 있습니다.
'<개념> > 시계열' 카테고리의 다른 글
Luminiol CPD 개념 (1) | 2023.12.22 |
---|---|
Timeseries similiarity algorithm List (0) | 2022.05.25 |
CPD Algorithm 1) Rupture 2) jenkspy 간단히 사용해보기 (0) | 2021.12.30 |
CPD Luminonl 개념 예제 (kaggle 코드참조) (0) | 2021.12.30 |
적용가능한 python CPD (change point detection) 링크모음 (0) | 2021.12.24 |