본문 바로가기

MATLAB/ㄴ 기타

38. 데이터 평활화와 이상 감지

데이터 평활화는 데이터에서 원치 않는 잡음이나 동작을 제거하는 기법을 나타내는 반면,

이상값 감지는 나머지 데이터와 큰 차이가 있는 데이터 점을 식별합니다.

 


 

1) 이동 윈도우 방법

일반적으로 데이터에서 이웃한 점들을 통계적으로 나타내기 위해 데이터를 더 작은 단위로 구분해

한 번에 한 단위씩 처리하는 방법입니다.

이동 평균은 데이터를 따라 윈도우를 이동하면서 윈도우 내 점의 평균을 구하는 일반적인 데이터 평활화 기법입니다.

이 기법은 한 데이터 점과 다음 데이터 점 간의 작은 변동을 제거하는 데 도움이 될 수 있습니다.

 

예를 들어, 약 3시간 동안 매분 측정된 풍속 값이 있다고 가정하겠습니다. 

movmean 함수와 윈도우 크기 5분을 사용하여 빠른 속도의 돌풍을 평활화합니다.

 

마찬가지로, movmedian 함수를 사용하여 슬라이딩 윈도우에서의 풍속 중앙값을 계산할 수 있습니다.

 

모든 데이터가 이동 윈도우 방법으로 평활화하기 적합한 것은 아닙니다.

예를 들어, 랜덤 잡음이 삽입된 정현파 신호를 생성해 보겠습니다.

 

윈도우 크기가 3인 이동 평균을 사용하여 잡음이 있는 데이터를 평활화합니다.

 

이동 평균을 사용하면 데이터의 일반적인 모양을 얻을 수 있지만, 국소 최솟값을 아주 정확하게 나타낼 수는 없습니다.

윈도우에서 밸리 점이 두 개의 더 큰 이웃으로 둘러싸여 있으므로, 이때의 평균은 밸리 점에 대한 좋은 근삿값이 아닙니다.

윈도우 크기를 더 크게 설정하면 평균은 더 작은 피크를 모두 제거합니다.

이러한 유형의 데이터에는 다른 평활화 기법을 고려해 볼 수 있습니다.

 


 

2) 일반적인 평활화 방법

smoothdata 함수는 여러 가지 평활화 옵션을 제공합니다.

기본적으로 smoothdata는 데이터에 따라 평활화 방법에 가장 적합한 윈도우 크기를 추측하여 선택합니다.

사비츠키-골레이 방법을 사용하여 잡음이 있는 신호 Anoise를 평활화하고,

이 방법에 사용된 윈도우 크기를 출력해 보겠습니다. 이 방법은 movmean에 비해 더 나은 밸리 근삿값을 제공합니다.

 

 

또 다른 평활화 방법으로, 데이터에 잡음 외에도 이상값이 있는 경우 특히 도움이 되는 로버스트 Lowess 방법이 있습니다.

잡음이 있는 데이터에 이상값을 넣은 다음, 로버스트 Lowess를 사용하여 데이터를 평활화해 보겠습니다.

그러면 이상값이 제거됩니다.

 


 

3) 이상값 감지하기

데이터에 이상값이 있으면 데이터 처리 결과와 그 밖의 계산된 양이 크게 왜곡될 수 있습니다.

예를 들어, 이상값이 포함된 데이터를 사용하여 평활화하려 할 경우

잘못된 피크 또는 밸리가 나타날 수 있습니다.

 

isoutlier 함수는 이상값이 감지될 경우 논리값 1을 반환합니다. 

Anoise에 있는 이상값의 인덱스와 값을 확인해 보겠습니다.

 

filloutliers 함수를 사용하고 채우기 방법을 지정하여 데이터에 있는 이상값을 대체할 수 있습니다.

예를 들어, Anoise에 있는 이상값을 그 바로 오른쪽에 있는 이웃 값으로 채워 보겠습니다.

 

또는 rmoutliers 함수를 사용하여 데이터에서 이상값을 제거할 수 있습니다.

예를 들어, Anoise에 있는 이상값을 제거할 수 있습니다.

 


 

4) 비균일 간격의 데이터

모든 데이터가 균일한 간격의 점으로 구성되는 것은 아니며, 이는 데이터 처리 방법에 영향을 줄 수 있습니다. 

Airreg의 데이터에 대한 불규칙한 샘플링 시간을 포함하는 datetime형 벡터를 만들어 보겠습니다. 

이 time 벡터는 이틀에 걸쳐 처음 30분 동안은 1분마다, 그다음에는 1시간마다 추출한 샘플을 나타냅니다.

 

기본적으로 smoothdata균일한 간격에 대해 평활화합니다.

정수 타임스탬프가 Airreg의 점 샘플링과 시점이 잘 맞지 않아 처음 30분간의 데이터는 평활화 후에도

여전히 잡음이 있는 것처럼 보입니다.

 

smoothdatamovmeanfilloutliers를 비롯한 MATLAB의 여러 데이터 처리 함수를 사용하면,

제공된 샘플 점에 대해 그 샘플링 단위와 샘플링 주파수를 기준으로 데이터가 처리되도록 할 수 있습니다. 

Airreg의 처음 30분간 데이터의 고주파 변동을 제거하려면 time의 타임스탬프에 

SamplePoints 이름-값 인수를 사용하십시오.

 


 

https://kr.mathworks.com/help/matlab/data_analysis/data-smoothing-and-outlier-detection.html