늦깎이 공대생의 인공지능 연구실
[MLOps] 고급 레이블링, 데이터 증강 및 데이터 전처리(2) 본문
※내용이 길어져 포스팅 내용을 분리하여 시계열 관련 내용을 별도로 정리하였습니다.
시계열(Time series)
먼저 데이터에 대해 작업 중인 문제에 따라 몇 가지 다른 유형의 데이터를 간략히 언급하고자 합니다. 서로 다른 유형의 데이터로 작업을 해야만 하는데, 각 유형들은 다른 전처리 작업을 요구하며, 몇몇 경우에는 다른 모델링 기술을 요구합니다.
예를 들어 이미지나 비디오, 텍스트, 오디오 또는 시계열 데이터에 대한 작업을 할 수도 있을것입니다. 이와 같은 데이터는 워낙 많아 전부다 다룰 수는 없습니다. 이 중 일부를 직접 살펴볼 수 있도록 몇 가지 선택된 데이터들을 보여드리겠습니다. CIFAR-10 이미지 데이터셋에 사용할 수 있는 옵션들이 있으며 시계열 데이터로 작업할 수 있는 다른 데이터도 두 개 있습니다. 한 데이터는 날씨 데이터에 대한 것이고 다른 데이터는 가속도 측정기 및 대부분의 휴대폰에서 사용할 수 있는 다른 센서의 데이터를 포함합니다. 여기에 나열된 모든 데이터 유형 중에서 시계열은 대부분의 개발자가 가장 잘 알지 못하는 유형입니다. 그럼 시계열의 주요 측면을 살펴보는 것부터 시작하겠습니다.
시계열은 시간 차원이 이벤트 발생 시간을 나타내는 기록된 이벤트에서 비롯된 연속으로 나타나는 데이터 포인트입니다. 원본 데이터에서 순서가 지정되거나 지정되지 않을 수 있지만 거의 항상 모델링 시간에 따라 순서가 지정되는 것을 선호합니다. 시계열 관점에서 우리는 일반적인 상황에서 특정값을 예측하고 싶습니다. 우리는 이전 측정값을 바탕으로 향후 t시점의 y값을 예측하고 싶습니다. 목표는 허용 가능한 정확도로 미래의 출력을 예측하는 모델을 학습시키는 것입니다.
시계열 예측은 정확하게 미래를 예측하는 역할을 합니다. 이는 과거의 데이터를 분석함으로써 예측 합니다. 예를 들어, 주어진 위치의 미래 온도를 예측하기 위해 시간 인덱스 데이터가 필요합니다. 우리는 과거에 기록된 기압, 바람, 방향, 속도 등과 같은 다른 기상학적 변수를 사용할 수 있습니다. 날씨 예보를 하는 구체적인 예를 살펴보도록 합니다.
이 예제는 Max Planck Institute에서 기록한 시계열 데이터셋을 사용하여 작업을 진행하게 됩니다. 이 데이터셋에는 대기 온도, 대기 압력 및 습도를 포함한 14가지 특성이 포함되어 있습니다. 이 데이터는 2003년부터 10분마다 관측되었습니다. TFX 파이프라인을 사용하여 특성을 전처리하고 데이터를 시간 시퀀스로 변환합니다. 이 형식은 장단기 메모리 모델 또는 LSTM과 같은 반복 신경망을 학습하는 데 필요합니다.
데이터가 어떻게 정리되고 수집되는지 자세히 살펴보겠습니다. 습도, 바람, 방향과 속도, 온도와 기압과 관련된 측정치를 포함하여 14개의 변수가 있습니다. 예측 대상은 온도 T입니다. 표본 추출률(Sampling rate)은 10분마다 관측치 1개입니다. 따라서 한 시간에 6개의 관측치가 있고 주어진 하루에 144개의 특성값이 있습니다.
시간 경과에 따른 몇 가지 특성과 목표 변수 T(온도)에 대한 그림입니다. 특정 시간 간격 동안 반복되는 패턴이 있음을 알 수 있습니다. 이 데이터에 대해 특성 엔지니어링(Feature engineering)을 수행할 때 고려해야 하는 계절성이 분명히 있습니다. 계절을 별도로 고려해야 하지만 이 예제에서 단순하게 유지하려면 그렇게 하지 않을겁니다.
데이터는 명확한 주기성 또는 계절성을 보여주는데, 이 경우에는 1년 동안의 일반적인 계절 진행으로 인해 대부분 그럴 가능성이 높습니다. 그러나 계절성은 데이터의 특성이며 종종 실제 계절과 관련이 없습니다. 이는 실로 주기성에 관한 것입니다. 과거 데이터와의 의존성을 살펴보기 위해 윈도잉 전략(Windowing strategy)을 사용하는 것은 과거를 자연스럽게 활용하는 것처럼 보입니다. 그리고 다행히도 TFX는 이 기능이 이미 노트북에 내장되어 있습니다. tf.data의 windows() 함수가 보일 것이며, 이를 사용하여 데이터 집합을 window로 묶을 것입니다. 날씨 데이터를 예로 들면서 이것이 실제로 어떻게 작동하는지 정확히 알아보겠습니다.
시계열의 윈도잉 전략은 상당히 중요하며 시계열 및 유사한 유형의 시퀀스 데이터에 대해 유일무이합니다. 이 예에서는 미래 1시간 예측을 위해 사용할 수 있는 모델이 있으며 6시간의 history가 주어지면 window 크기가 6이고 offset이 1인 슬라이딩 window를 사용합니다. 그래서 총 window 크기는 7로, 6 + 1입니다.
또 다른 예제에서는 24시간의 history가 주어진 미래로 24시간을 예측한다고 가정합니다. 따라서 history 크기가 24인 경우 offset 크기도 24가 됩니다. 따라서 총 window 크기는 history에 출력 offset을 더한 48입니다. 지금이 언제인지도 고려해야 하며, 미래에는 시간 여행이라고 하는 데이터를 포함하지 말아야 합니다. 이 예제에서 현재가 T와 같으면 T=25에서 T=47까지의 데이터를 학습 데이터에 포함하지 않도록 주의해야 합니다. 특성 엔지니어링이나 window 크기를 줄여 history과 레이블만 포함할 수 있습니다.
샘플링 전략에 대해 이야기해보겠습니다. 시간당 관측치가 6개라는 것은 이미 알고 있습니다. 이 예에서는 10분마다 한 번씩 하루에 144개의 관측값이 있게 됩니다. 5일 동안의 과거 관측 결과를 가지고 6시간 후의 미래를 예측한다면요. 이는 history size가 5 곱하기 144, 즉 관측치 720이 되고, 출력 offset은 12 곱하기 6 또는 72가 된다는 것을 의미합니다. 따라서 한 시간 동안의 관측치는 크게 변하지 않기 때문에 총 window 크기는 792입니다. 한 시간에 한 개의 관측치를 표본으로 추출해 보겠습니다. 그래서 10분마다 한 대씩 하는 대신 한 시간에 한 대씩 가겠습니다. 한 시간 안에 첫 번째 관측치를 표본으로 삼을 수도 있고, 더 좋은 결과를 얻을 수도 있습니다. 매 시간마다 관측치의 중앙값을 구할 수도 있습니다. 그러면 histoy size는 5 곱하기 1 또는 120이 되고, 출력 offset은 6이 됩니다. 그래서 총 window 크기는 126이 됩니다. 따라서 매시간 샘플링 또는 매시간 데이터를 집계하여 특성 벡터의 크기를 792에서 126으로 줄였습니다. 숫자가 좀 헷갈리겠지만 중요한 점은 윈도우에서 데이터를 어떻게 다루고 있는지에 대해 생각해 보는 것입니다. 위의 예는 느린 시간에 변하는 신호를 위한 데이터 window과 다운 샘플링을 예로 들 수 있습니다.
센서와 신호(Sensor and signal)
센서에 의해 생성된 데이터를 한번 볼까요? 센서 생성 데이터는 흔히 신호라고 합니다. 스마트폰에서 수집한 가속도계 데이터를 예로 들어 중요한 용어를 정의하는 것부터 시작해보겠습니다. 가속도계는 센서입니다. 신호는 센서에서 실시간으로 수집한 데이터의 시퀀스입니다. 데이터 포인트는 타임스탬프로 인덱싱됩니다. 따라서 이는 시계열 데이터이며 시계열 분석을 사용할 것입니다. 인간 행동 인식(Human activity recognition) 또는 HAR과 같은 구체적인 문제를 살펴봅시다. 우리는 시간 내에 가속도계 패턴으로부터 활동을 추론할 수 있을까요?
행동 인식의 몇 가지 도전과제를 살펴보겠습니다. 센서 데이터를 적절하게 분할하는 행동 인식을 성공적으로 이해할 수 있는 핵심입니다. 이는 방금 날씨 데이터에 대해 논의한 윈도잉 전략과 유사합니다. 이와 같은 관성 데이터는 시간이 지남에 따라 크게 변동하므로 분할은 적절한 행동을 한 부분을 탐지하는 데 중요합니다. 원본 시간 종속 가속 데이터셋은 데이터 분할 프로세스 중에 세그먼트로 분할됩니다. 특성 추출, 분류 및 검증 등을 포함한 다음의 모든 HAR 관련 작업은 이러한 세그먼트에 기초합니다. 세그먼트의 길이는 센서의 애플리케이션 컨텍스트 및 샘플링 속도에 따라 달라집니다. HAR의 세그먼트는 일반적으로 1-10초 정도입니다.
이제 데이터가 세분화되었으므로 일반적인 변환에 대해 살펴보겠습니다. 모델 정확도와 성능에 도움이 되므로 모델링을 위해 데이터 세그먼트를 변환해야 합니다. 데이터 변환에는 여러 가지 방법이 있습니다. 관성 신호의 스펙트로그램은 주파수와 시간의 함수로써 신호를 새롭게 표현한 것입니다. 스펙트로그램 표현은 여러 관성 데이터 포인트 간의 강도 차이를 나타내는 해석 가능한 특징을 추출하는 강력한 방법입니다. 스펙트로그램은 각 주파수의 진폭 변화를 시간의 함수로 표시합니다. 다른 옵션으로는 정규화 및 인코딩, 다중 채널 처리 및 푸리에 변환 적용이 있습니다.
참고자료: https://ko.coursera.org/learn/machine-learning-data-lifecycle-in-production
Machine Learning Data Lifecycle in Production
deeplearning.ai에서 제공합니다. In the second course of Machine Learning Engineering for Production Specialization, you will build data pipelines by ... 무료로 등록하십시오.
ko.coursera.org