본문 바로가기

ML

[ML] 데이터 증강 (Data Augmentation)

1. 데이터 증강의 필요성

기술의 발달로 데이터에 대한 접근이 쉬워졌음에도 일부 데이터는 여전히 구하기 어렵다.
예를들어 '자동차 사고'에 대한 데이터는 자율주행 자동차 분야에서 필요함에도 불구하고 
데이터를 얻는데에 비용이 많이 들기 때문에 구하기 어렵다. 
ML이 활발히 적용되는 의료 분야에서도 개인정보 문제 때문에 데이터를 구하기 어렵다.
이렇듯 모델을 훈련시킬 때, 훈련 데이터가 적은 경우가 종종 발생하는데
훈련 데이터가 적으면 아래와 같은 문제가 발생할 수 있다.


훈련 데이터 세트에 대해 과적합 (overfitting)
적은 훈련 세트에 대해 학습을 시키면 훈련 세트에 대해 과하게 학습되어 
테스트 세트에서의 정확도가 떨어질 수 있다.
모의고사에 너무 익숙해져서 실제 수능에서 성적이 낮게 나오는 경우와 비슷하다.

불균형 데이터 (imbalanced data)
특정 클래스에 대한 훈련 데이터가 적을 때 발생하는 문제이다.
예를들어 사과 데이터가 99개, 오렌지 데이터가 1개이면
모든 데이터를 사과로 분류하는 바보같은 모델이더라도
훈련 세트에서의 정확도가 99%가 되는 문제가 발생할 수 있다.

위의 문제를 해결할 수 있는 기술이 바로 '데이터 증강'이다.

 


2. 데이터 증강이란?

데이터 증강이란 원본 데이터로부터 새로운 데이터를 만들어내는 것을 말한다. 
(이때 새로운 데이터는 원본 데이터의 특성을 잘 반영하고 있어야 함)
데이터 증강은 사용하는 데이터의 종류에 따라 특성이 달라진다.

 


3. 데이터 증강의 종류

1) 이미지 데이터 증강
이미지에 약간의 변형을 주는 방법으로 데이터를 증강시킬 수 있다.

- 랜덤하게 이미지를 자르기
- 회전
- 밝기 조절
- 블러 처리
- 노이즈 삽입

https://blog.insightdatascience.com/automl-for-data-augmentation-e87cf692c366

 


2) 텍스트 데이터 증강
데이터에 약간의 변형을 주는 이미지 증강과 달리 텍스트는 한 단어만 바꿔도 문장의 의미가 달라질 수 있으므로 데이터 증강이 어렵다고 알려져있다. 그럼에도 아래의 방법으로 데이터를 증강시킬 수 있다.

- text를 다른 언어로 번역한 후 다시 원래 언어로 번역
- 특정 단어를 유의어로 교체
- 임의의 단어를 삽입 or 삭제
- 문장내 두 단어의 위치를 임의로 바꾸기

마지막 두 방법의 경우 의외로 의외로 원본 문장의 라벨을 대체로 잘 따른다는 결과가 나왔다.

 

3) 시계열 데이터 증강

3-1) 시계열 데이터란?

시계열 데이터 증강을 이해하기 전에 시계열 데이터에 대해 이해할 필요가 있다.
시계열 데이터란, 일정 시간 간격으로 배치된 데이터들을 말한다.
ex. 일별 주가, 분당 심박동 수
시계열의 영어 표현인 time series를 생각하면 이해하기 편하다.
시계열 데이터를 통해 ‘시계열 분류’와 ‘이상치 탐지’라는 작업를 수행할 수 있다.

시계열 데이터는 시간 영역과 주파수 영역으로 나누어 분석할 수 있다.

  • 시간 영역 (time domain)
    일정 기간 동안의 데이터를 분석하는 것 ( = 변수를 시간에 대해 측정)
    ex. 시간 영역에서의 전기 신호 분석 : 오실로스코프
  • 주파수 영역 (frequency domain)
    주파수에 대한 수학적 함수 또는 신호를 주파수와 관련하여 분석하는 것
  • 푸리에 변환 (시간 영역 → 주파수 영역)
    시간 도메인에서의 연속적 신호를 여러 sin 곡선들의 합으로 나타내어
    주파수 도메인으로 변환할 수 있음
    cf. 역 푸리에 변환 : 주파수 영역 → 시간 영역

 

3-2) 시계열 데이터 증강의 어려움
시계열 데이터 증강에는 다음과 같은 어려움이 있다.

1. 현재의 데이터 증강 기법은 시간에 종속적(temporal dependency)이라는 시계열의 본질적 특성을 활용하지 못한다.

2. 증강 기법은 task에 의존적이기 때문에 ‘시계열 분류’에 적용 가능한 증강 기법이 ‘이상치 탐지’에는 적용되기 힘들 수 있다.

따라서 단순히 기존의 데이터 증강을 적용하는 것은 효과적이지 않으므로
시계열 데이터를 위한 증강 방법을 고안할 필요가 있다.

 

3-3) 시계열 데이터 증강의 분류

논문 [Time Series Data Augmentation For Deep Learning : A Survey] 에서는 시계열 데이터 증강 기법을 위와 같이 분류하고 있다. 본 글에서는 이중 가장 활용도가 높은 Time Domain에서의 시계열 데이터 증강 기법을 정리하고자 한다.

 

3-4) Time Domain에서의 증강 기법

  • Window cropping or slicing
    원본 데이터에서 랜덤하게 연속적인 slice를 추출하는 방법이다.
    CV에서 이미지를 랜덤하게 잘라 데이터를 증강하는 것과 유사하다.
  • Window warping
    랜덤한 구간을 선정하여 압축 or 확장하는 방법이다. (DTW와 유사함)
    원본 시계열의 전체 길이를 바꿀 수 있다.
  • Flipping
    원본 데이터의 부호를 바꿔 새로운 시퀀스를 만드는 방법이다.
    부호를 바꿔도 라벨은 동일하다. (시계열 분류, 이상치 탐지 둘 다 해당됨)
  • Noise injection
    라벨을 바꾸지 않은 채 원본 데이터에 노이즈를 삽입하는 방법이다.
    가우시안 노이즈(정규분포를 갖는 잡음) 또는
    spike, step-like trend, and slope-like trend 등의 노이즈를 삽입할 수 있다.
  • Label expansion 이상치 감지를 위한 증강 기법이다.시계열 데이터에서 이상치는 연속적으로 발생하기 때문에 시작점과 끝점이 모호하다. 따라서 시간 거리와 값 거리가 이상치와 가까운 데이터는 이상치일 가능성이 높다. 이러한 데이터를 이상치로 분류하여 라벨을 확장할 수 있다.

'ML' 카테고리의 다른 글

통계적 관점에서의 머신러닝  (0) 2023.01.29
[ML] 교차 검증  (0) 2022.02.20
[ML] Fashion MNIST  (0) 2022.02.13
[ML] 타이타닉 생존자 예측하기  (0) 2022.01.30
[ML] CNN  (0) 2022.01.23