[시계열] Chapter 12

유니·2022년 4월 6일
0

시계열

목록 보기
9/9

12. 시계열 모델의 학습과 배포에 대한 성능 고려 사항

  • 특정 모델을 사용한 학습과 추론에 필요한 계산 자원을 줄이는 방법의 고려 사항

일반 사례를 위해 만들어진 도구로 작업하기

월간 판매 기록

팔린 제품 개수
2014년 1월11,221
2014년 2월9,880
2014년 3월14,423
2014년 4월16,720
2014년 5월17,347
2014년 6월22,020
2014년 7월21,340

6개월 기간의 곡선을 관심 있는 '모양들'로 사용하고 싶을 때 구성하는 데이터

11221, 9880, 14423, 16720, 17347, 22020
9880, 14423, 16720, 17347, 22020, 21340

성능에 대한 문제를 해결하기 위한 고려 사항

  • 중첩 데이터를 사용하지 말 것
    각 개별 달이 유일한 곡선을 만들 수 있게 곡선을 구성하는 '데이터'를 구성

    11221, 9880, 14423, 16720, 17347, 22020
    21340, 25973, 11210, 11583, 12014, 11400

    단순히 원본 데이터 배열의 형태를 고친 것

  • 제너레이터와 같은 패러다임을 사용해서 데이터셋을 반복 접근하기

def array_to_ts(arr):
	idx = 0
    while idx + 6 <= arr.shape[0]:
    	yield arr[idx:(idx+6)]

선택한 모델이 부분적으로 사전에 계산될 수 있는지 고려해야 함

  • 100가지 서로 다른 시간 단계에 대해 채널 여러 개에서 정보를 입력받는 순환 신경망을 사용한다면, 신경망을 처음 99개의 시간 단계에 대해 사전계산 및 풀어헤치기를 수행해볼 수 있다
  • AR(5) 모델을 사용한다면 모델을 구성하는 가장 최신 항에 대한 합산을 제외한 모든 것을 사전에 계산할 수 있다
  • 시계열에 대한 요약 특징으로 최근접 이웃을 찾는 클러스터링 모델을 사용하면, 이러한 특징들은 데이터가 하나 부족한 시계열에 대해 모델을 실행하여 최근점 이웃을 식별하여 계산될 수 있다

데이터 스토리지 형식의 장단점

데이터 저장하는 방법의 일반적인 오류

  • 열을 가로지르며 형성되는 시계열 데이터를 행 기반 형식으로 저장하는 경우
  • 원시 데이터를 저장하고, 그 저장된 데이터의 분석을 실행하는 경우

바이너리 형식의 데이터 저장

데이터를 CSV와 같이 콤마로 구분된 텍스트 파일로 저장
→ 사람이 읽을 수 있는 형태라, 처리 공정의 출력이 저장된 파일에서 데이터를 직접적으로 검증하는 것이 수월

데이터를 슬라이딩할 수 있는 방식의 전처리

전처리를 각 시간 윈도에 대해 수행할 계획의 단점

  • 중첩 데이터에 대해 이러한 전처리 작업을 여러 번 수행하려면 계산 자원이 많이 필요하다
  • 약간 다른 전처리에 의한 중첩 데이터를 여러 번 저장할 필요가 있다
  • 데이터에 대한 슬라이딩 윈도의 최적의 이점을 얻을 수 있다

성능 고려 사항에 맞게 분석 수정

새로 들어오는 데이터로 갱신될 수 있도록 모델이 빠르게 적합될 필요가 있다
모델의 예측을 사용하는 소비자가 예측에 대응하는 시간을 많이 벌 수 있도록 모델이 빠르게 동작할 필요가 있다

전체 대신 일부 데이터가 나은 상황

시계열의 모든 데이터의 중요도가 같지 않다
데이터는 오래되면 오래될수록 중요도가 떨어진다

  • 다운샘플링
    : 동일한 과거의 윈도를 다루기 위해 적은 빈도의 데이터를 사용
    → 복합적인 요소로 데이터를 축소하는 방식
  • 모델 훈련에 최근 데이터만 사용하기
    : 별로 도움이 되지 않는 정보의 데이터를 입력 데이터에서 제거하여 입력 데이터의 크기를 줄일 수 있도록 도와줌
  • 예측에 사용되는 과거의 윈도 크기 줄이기
    : 점점 더 많은 과거를 돌이켜볼수록 모델의 성능은 계속 증가

간다한 모델이 더 나은 상황

분석 모델을 선택할 때 문제는 복잡한 모델이 추가로 계산 자원을 요구한 만큼의 값을 치르는지 이다

비용편익 분석 없이 모델의 복잡성을 단순히 늘리는 것이 곧 자동으로 개선됨을 의미하는 것은 아님
약간 성능이 떨어지지만 자원 집약이 덜한 방법이 성능을 약간 향상시켜주는 복잡한 모델보다 훨씬 나을 수도 있다

선택 가능한 고성능 도구

기반 코드 바꾸기
-파이썬 및 R과 같이 속도가 느린 스크립트 언어로 작성된 코드를 바꾸는 방법

  • C++ 및 자바로 올인하는 방법
    : 느린 처리 공정의 일부분을 처리 가능한 수준으로 속도를 올려볼 수 있다
  • 파이썬 코드를 C나 C++ 코드로 컴파일해주는 여러 가지 파이썬 모듈을 사용해서 실행 시간의 속도를 빠르게 할 수 있다
    → 여러 반복문으로 구성된 반복적인 코드에 유용
  • R에서도 Rcpp로 유사한 기능을 사용할 수 있다

0개의 댓글