Ebook

3장:

MATLAB 앱을 사용한 전처리


이전 챕터에서는 MATLAB 명령과 라이브 편집기를 사용하여 일반적인 전처리 기법을 수행하는 방법을 알아보았습니다. MATLAB에는 복잡한 작업을 더 쉽게 처리할 목적으로 설계된 앱도 있습니다. 이 챕터에서는 시계열 데이터로 작업하거나 데이터 정리를 위해 모수적 방정식을 사용할 때 데이터 탐색과 전처리에 특히 유용한 앱 두 가지를 소개합니다.

section

신호 분석기 앱을 사용하여 데이터 전처리하기

머신러닝 모델을 성공적으로 훈련시키려면 시계열 데이터를 전처리한 후에 중요한 특징을 사용해야 합니다. 즉, 궁극적으로 신호 데이터의 차원과 변동성을 축소해야 합니다.

시계열 데이터에 대한 전처리 스크립트를 만들 때는 더 넓은 데이터셋을 대표하는 보다 적은 개수의 신호로 시작하는 것이 좋습니다. 신호 분석기 앱 을 사용하면 다음과 같은 작업을 손쉽게 수행할 수 있습니다.

  • 데이터 탐색
  • 적절한 전처리 기법과 방법 확인
  • 전체 데이터셋에 대해 실행할 스크립트 만들기 또는 업데이트

시계열 데이터 탐색하기

데이터에 대한 이해는 시각화에서 시작합니다. 신호 분석기 앱은 한 번에 여러 신호를 살펴보고 패턴을 가려내며 시간, 주파수, 시간-주파수 영역의 신호를 동시에 살펴볼 때 유용한 도구입니다.

이 앱은 MATLAB 툴스트립의 앱 탭에서 실행하거나 MATLAB 명령 창에 signalAnalyzer 를 입력하여 실행할 수 있습니다.

참고: 신호 분석기 앱에서 데이터를 사용하려면 먼저 누락된 데이터를 정리해야 합니다. 누락된 데이터를 처리하는 방법은 다음 섹션을 참조하십시오.

다음은 세 번 복제된 단일 신호입니다. 각각의 복사된 신호는 고역통과, 대역통과 또는 저역통과 필터로 전처리되었습니다. 각각의 처리된 신호가 시간 및 주파수 영역에서 어떻게 나타나는지 원래 신호의 스펙트로그램과 함께 볼 수 있습니다.

신호 분석기 앱을 사용할 때는 먼저 누락된 데이터를 정리해야 합니다. 이에 더해, 신호 분석기 앱은 타임테이블의 데이터를 duration형으로 취급하며, 현재 datetime형인 데이터는 duration형으로 변환됩니다.

시간 값이 datetime형 배열로 저장된 타임테이블을 분석하려면 배열 내 다른 모든 요소에서 첫 번째 요소를 빼서 배열을 상대 duration형 배열로 변환해야 합니다. 다음 예에서는 datetime형 행 시간값을 갖는 타임테이블을 만들고 이를 신호 분석기에서 읽어 들일 수 있는 타임테이블로 변환합니다.

Tt = timetable(datetime(2016,11,9,2,30,1:10)',randn(10,1));
dt = tt.Time-tt.Time(1);
tn = timetable(dt,tt.Var1);

전체 예제를 실행해 보십시오.

적절한 전처리 기법과 방법 파악하기

데이터를 살펴보면 어떤 전처리 기법을 적용해야 하는지 알아내는 데 도움이 됩니다. 신호를 복제하여 각종 전처리 작업이 신호에 어떤 영향을 주는지 살펴보는 습관을 들이는 것이 좋습니다.

두 가지 전처리 작업이 있습니다.

  • 리샘플링을 통한 균등포 데이터 만들기 - 주로 데이터 정리의 초반에 수행됨
  • 평활화를 통해 데이터에서 패턴 찾기 - 리샘플링 후에 수행됨

시계열 데이터가 항상 균일하게 샘플링되는 것은 아닙니다. 센서가 서로 다른 간격으로 신호를 기록할 수도 있고, 또는 어떤 이벤트에 의해 촉발되었을 때만 기록이 수행될 수도 있습니다. 이들 경우에는 샘플 레이트가 크게 등락할 수 있습니다. 또 어떤 경우는 각각 서로 다른 샘플 레이트를 사용하여 균일하게 샘플링된 여러 개의 신호를 처리해야 하는 경우도 있습니다. 구체적인 상황이 무엇이든, 데이터를 균일하게 샘플링된 신호로 리샘플링하면 이후 작업이 훨씬 쉬워집니다.

균일하게 샘플링된 신호에 여러 신호 처리 알고리즘을 적용하여 다음을 수행할 수 있습니다.

  • 특징을 추출하여 다양한 머신러닝 알고리즘에서 데이터 사용
  • 신호 데이터를 스펙트로그램, 파형 변환과 같은 시간-주파수 맵으로 변환하여 시각화하거나 2차원 데이터 표현에 대해 작동하는 모델에서 사용
  • 관심 영역과 비관심 영역 식별

신호 분석기 앱을 사용하면 신호를 손쉽게 리샘플링할 수 있습니다. 작업 공간 브라우저에서 데이터를 신호 테이블로 끌어서 놓거나 디스플레이 위에 놓습니다. 신호를 오른쪽 버튼으로 클릭하고 시간 값을 정의하여 선택한 신호의 샘플 레이트, 샘플 시간 또는 시간 값 벡터를 표현합니다.

이 간단한 예제에서는 6주에 걸쳐 하루에 한 번 샘플링된 균일하지 않은 데이터를 사용합니다. 이 예제에 대한 문서 전문 을 살펴보십시오.

분석기 탭에서 전처리 갤러리를 확장하고 리샘플링 아이콘을 클릭합니다. 신호 분석기는 Signal Processing Toolbox™ 함수 resample 을 사용하여 리샘플링을 수행합니다.

Anazlyzer menu

데이터가 균일하게 샘플링되지 않은 경우 이 앱에서 보간 방법(선형, 형태 보존 조각별 3차 또는 3차 스플라인 보간)과 샘플 레이트를 지정하여 균일한 그리드에 보간할 수 있습니다.

다른 보간 방법이나 리샘플링 설정의 결과를 살펴보려면 전처리 취소를 클릭하고 신호를 다시 리샘플링할 수 있습니다.

균일하게 샘플링된 신호의 경우 이 앱을 사용하여 샘플 레이트를 변경할 수 있습니다. 원하는 샘플 레이트를 지정할 수도 있고, 신호에 대한 보간 인자 또는 데시메이션 인자를 지정할 수도 있습니다.

평활화는 필터링을 통해 중요하지 않은 요소는 제외하고 데이터에서 패턴을 찾을 때 유용합니다. 평활화의 목표는 데이터의 잡음 성분을 제거하여 느린 변화와 추세를 더 쉽게 가려내는 것입니다.

한 달 동안 한 시간에 한 번 섭씨 단위로 측정한 온도 판독값 세트가 있다고 가정하겠습니다.

이동 평균 필터와 리샘플링을 사용하여 시간당 온도 판독값의 주기적인 성분의 영향을 가려내고, 개방 루프 전압 측정값에서 원치 않는 선 잡음을 제거할 수 있습니다.

시간이 온도 판독값에 미치는 영향을 볼 수 있습니다. 한 달 동안의 일별 온도 변동을 보고 싶다면 시간 등락은 잡음으로만 기능하기 때문에 일별 변동을 분간하기가 어렵습니다. 이때 신호 분석기 앱의 전처리 섹션에서 평활화 함수를 선택하여 시간의 영향을 빠르게 제거할 수 있습니다.

사용 가능한 평활화 방법은 8가지가 있습니다.

디폴트 설정으로 이동 평균을 사용하면 선이 영향을 받는 것을 볼 수 있습니다.

이를 프로그래밍 방식으로 수행하는 방법은 신호 평활화 예제를 참조하십시오.

smoothed termperature readings

전체 데이터셋에 대해 실행할 스크립트 만들기 또는 업데이트

전체 데이터셋에 적용할 전처리 기법을 결정했다면 분석기 탭에서 함수 생성을 클릭합니다. 이렇게 하면 지금까지 적용한 모든 전처리 작업의 코드가 MATLAB 스크립트로 저장할 수 있는 하나의 함수로 생성됩니다. 임의로 큰 데이터셋을 전처리하는 것도 짧은 MATLAB 프로그램으로 모든 관련 데이터 기록에 이 함수를 반복적으로 적용하여 자동화할 수 있습니다.

MATLAB toolstrip
MATLAB example
section

곡선 피팅 앱

MATLAB에서 이상값을 정리하는 또 다른 방법은 곡선 피팅 앱을 사용하는 것입니다. 데이터에 잡힌 기반 절차가 모수적 방정식에 의해 잘 근사화되는 경우가 있습니다. 이 경우 곡선 피팅을 사용하여 데이터에 수식을 피팅한 다음 잔차를 검토하여 이상값을 식별할 수 있습니다.

경력과 연령을 묻는 설문조사를 살펴본 이전의 예제에서는 비교적 높은 연령대에서 연령 데이터가 더 많이 누락된 것을 확인할 수 있었습니다. 연령과 경력을 플로팅했을 때 이동 평균으로 누락된 데이터를 채웠다면 선형 피팅이 잘 맞을 것이라 예상할 수 있습니다. 이를 테스트해 보려면 각 변수로 구성된 배열이 필요합니다. 이는 데이터를 정리할 때 만들었으므로 이미 설문 조사 응답자의 연령으로 구성된 499x1 double형 배열 하나와 설문 조사 응답자의 경력으로 구성된 499x1 double형 배열 하나가 준비되어 있습니다.

먼저 MATLAB 툴스트립에서 곡선 피팅 앱을 엽니다.

Curve fitting on the tool strip

이렇게 하면 별도의 창에 사용자 인터페이스가 열립니다. UI의 좌측 상단에는 플로팅하려는 요소를 선택할 수 있는 드롭다운 메뉴가 있습니다. 작업 영역에 무엇이 있는지에 따라 여기에서 어떤 변수를 사용할 수 있는지가 달라집니다.

상단 중앙 드롭다운 메뉴에는 데이터에 곡선을 피팅하는 데 사용할 일련의 방법이 있습니다. 이 예제에서는 선형 피팅이 적합합니다. 보기 아래에는 잔차를 플로팅하는 옵션이 있으며, 이를 통해 두 번째 플롯을 생성할 수 있습니다. 결과는 예상한 바와 비슷합니다. 비교적 어린 연령대는 경력의 차이가 적습니다. 20세 직원의 경력이 15년일 수는 없기 때문입니다. 반대로 연령대가 높아질수록 피팅에서 벗어나는 경향이 커집니다.

데이터에 다양한 피팅을 시도해 볼 수 있습니다. 데이터를 어떻게 플로팅할지 결정했다면 파일 > 코드 생성을 선택하여 함수를 만들고, 이를 전처리 스크립트에 추가할 수 있습니다.

이 앱을 사용하여 이상값을 선택하고 제외하여 이상값을 제거하는 것이 피팅된 모델에 어떤 영향을 주는지 살펴볼 수도 있습니다.

코드 생성

초기 데이터 정리를 마쳤다면 알고리즘을 데이터에 사용해 보고 결과를 살펴보십시오. 데이터에 추가 전처리가 필요한지 여부를 빠르게 확인할 수 있어야 합니다.

절차 반복하기

머신러닝 알고리즘에 사용하기 위해 데이터를 정리하는 것은 반복적인 절차입니다. 데이터를 살펴본 후, 어떤 기법이 필요한지 파악하고, 해당 기법을 적용하여 알고리즘이 데이터에 대해 어떤 성능을 내는지 확인해 보십시오. 모델이 낮은 정확도를 생성한다면 다시 돌아가서 추가 전처리가 필요한지 살펴봐야할 수 있습니다.

데이터 과학: 날씨 이벤트의 손상 비용 예측하기 예제 를 통해 직접 시도해 보거나 이 예제의 전처리 단계를 보여주는 동영상을 시청하십시오.