개념

이 문서에서는 Timeseries Insights API에서 사용하는 일반적인 개념을 살펴보고 어떤 의미인지 직관적으로 설명해 보겠습니다.

이벤트

이벤트는 데이터 포인트이며 Timeseries Insights API가 작업할 원시 입력입니다. 개념적으로는 특정 에이전트에서 수행되는 작업(예: 클라이언트의 트랜잭션 또는 뉴스 기사 게시)이나 관찰(예: 온도 센서 측정값 또는 컴퓨터의 CPU 사용량)을 나타냅니다.

이벤트에는 다음이 포함됩니다.

  • 라벨 또는 수치 측정값과 같이 이벤트를 설명하는 속성을 나타내는 다양한 측정기준을 아우르는 값 집합.
  • 이벤트가 발생한 시간을 나타내는 타임스탬프. 이 타임스탬프는 시계열을 형성하도록 이벤트를 집계할 때 사용됩니다.
  • 그룹 ID.

측정기준

측정기준은 데이터 세트 이벤트의 속성 유형과 취할 수 있는 값의 범위를 나타냅니다. 측정기준 유형은 다음과 같습니다.

  • 범주형. 이 측정기준 유형에 해당하는 이벤트 속성은 제한적/한정적 값(일반적으로 문자열)을 수용할 수 있습니다. 뉴스 기사가 포함된 데이터 세트의 국가 또는 게시자 이름, 프로덕션 모니터링 데이터가 포함된 데이터 세트의 컴퓨터 이름이 그 예에 해당합니다.
  • 숫자형. 이벤트의 측정값이나 일반적인 수치적 속성입니다. 뉴스 기사의 페이지 조회수, 프로덕션 모니터링 데이터의 CPU 사용량 또는 오류 수가 그 예에 해당합니다.

데이터 세트

데이터 세트는 프로젝트 내에서 고유한 이름을 가진 이벤트의 모음입니다. 쿼리는 동일한 데이터 세트 내에서 수행됩니다.

그룹

이벤트는 동일한 그룹 ID를 지정하여 그룹으로 묶을 수 있습니다(Event.groupId 참조). 이 그룹은 인터넷 활동의 '세션'과 유사합니다.

일반적으로 각 이벤트 레코드에는 고유한 그룹 ID가 부여됩니다. 또한 그룹 ID의 사용 사례로는 다음이 포함되며 이에 국한되지 않습니다.

  • 여러 이벤트 레코드에서 동일한 이벤트(타임스탬프가 같거나 비슷함)를 의미하는 이벤트 식별자(특히 동일한 이벤트의 다양한 속성이 다양한 소스에서 비롯되고 시스템에 유입되기 전에 병합되지 않은 경우). 예를 들어 같은 기기를 모니터링하는 여러 센서는 각각 별도의 이벤트 레코드를 생성할 수 있습니다.
  • 관련 이벤트 모음을 의미하는 세션 식별자(일반적으로 짧은 기간 이내의 타임스탬프가 있는 경우). 웹 탐색 세션의 활동을 예로 들 수 있습니다. 또 다른 예시는 택시 탑승의 로그 항목입니다.
  • 사용자 계정 식별자, 즉 동일한 그룹 ID를 사용하는 모든 이벤트 레코드는 동일한 사용자에게 속합니다.

그룹의 목적은 동일한 그룹의 이벤트(그 측정기준) 간 상관관계를 계산하는 것입니다. 예를 들어 데이터 세트에 모니터링 데이터(예: CPU, RAM 등)가 있으면 그룹에는 한 프로세스의 모든 모니터링 데이터가 포함될 수 있습니다. 이를 통해 결과적으로 CPU 증가가 이전 시점의 바이너리 버전 업데이트와 같은 다른 이벤트와 상관 관계가 있음을 감지할 수 있습니다.

확실하지 않거나 이러한 유형의 상관관계를 계산하는 데 관심이 없으면 각 이벤트에 전역적으로 고유한 그룹 ID가 있어야 합니다. groupId을(를) 생략하면 비슷한 효과가 발생하며 콘텐츠 및 타임스탬프를 기준으로 내부 groupId이(가) 생성됩니다.

슬라이스

슬라이스는 데이터 세트에서 일부 측정기준 전반적으로 지정된 값을 가진 모든 이벤트의 하위 집합입니다. 범주형 측정기준에서 지정된 값은 고정된 하나의 값이고 숫자형 측정기준에서 지정된 값은 범위입니다.

예를 들어 해외 소매업체의 매출이 담긴 데이터 세트가 있고 각 이벤트는 판매가 발생한 국가, 제품 이름, 제품을 만든 회사의 이름 등 범주형 측정기준을 포함하는 판매입니다. 이 경우 슬라이스의 예로는 특정 제품의 모든 판매, 특정 회사에서 만든 모든 제품에 대한 특정 국가의 전체 판매가 있습니다.

시계열

Google에서 작업하는 시계열은 동일한 시간 간격의 포인트로 구성된 별개의 시간으로 이루어집니다. 연속된 시계열 지점 사이의 시간 간격의 길이를 시계열의 세분화 수준이라고 합니다.

시계열은 다음 방법으로 계산됩니다.

  • 지정된 슬라이스에 대해 [detectionTime - TimeseriesParams.forecastHistory, detectionTime + granularity] 시간 간격 이내의 모든 이벤트를 수집합니다.
  • 타임스탬프와 세분화 수준에 따라 이러한 이벤트를 그룹화합니다. 이벤트 EE.eventTime이(가) [T, T + granularity] 시간 간격 이내인 경우 T 시간에 시작되는 포인트에 할당됩니다.
  • 시계열 내 모든 포인트에 대해 그러한 포인트의 값을 나타내는 측정항목(TimeseriesParams.metric)으로 지정된 숫자형 측정기준을 기반으로 하는 이벤트를 집계합니다. 집계는 계수(metric이(가) 지정되지 않은 경우, 일반적으로 이벤트의 모든 측정기준이 범주형인 경우), 합산 또는 평균(metric이(가) 지정된 경우)을 통해 수행됩니다.

시계열 포인트

각 시계열 포인트는 시간과 연결되어 있습니다.

시간은 실제로 granularity 길이의 시작 시간이 time인 간격입니다.

측정항목(TimeseriesParams.metric)이 지정된 경우 이는 숫자형 측정기준이어야 합니다. 포인트의 value은(는) TimeseriesParams.metricAggregationMethod을(를) 사용하여 시간 간격 이내 모든 이벤트의 metric 측정기준의 측정기준 값에서 집계됩니다.

측정항목이 지정되어 있지 않은 경우 포인트의 value은(는) 시간 간격 이내의 이벤트 수입니다.

예측

특정 시계열의 미래 값을 예측하는 프로세스입니다. 예측은 시계열의 시작 부분을 학습 데이터로 사용하여 모델을 빌드합니다.

시간 범위

감지 시간부터 시간 범위(ForecastParams.horizonTime 필드로 표시)에 이르는 시계열의 값을 예측합니다.

직관적으로 이 필드는 예측해야 하는 미래의 기간을 알려줍니다. 주로 슬라이스가 이상으로 분류되는 감지 포인트의 값에 관심을 가지는 한편 사용자에게 유용한 정보를 제공할 수 있도록 추가 포인트를 예측할 수 있습니다.

감지 시간 및 감지 포인트

감지 시간(QueryDataSetRequest.detectionTime(으)로 지정)은 잠재적인 이상치 여부를 분석하는 시점입니다.

감지 포인트는 감지 시간 시계열 포인트입니다.

예상 편차

시계열의 안정성과 예측 가능성에 따라 예측을 확신하거나 확신하지 못할 수 있습니다. 신뢰 수준은 감지 시간에 대해 예측한 값을 기준으로 허용 가능한 절대 편차를 지정하는 EvaluatedSlice.expectedDeviation 필드에 반영됩니다.

이상치

감지 시간 동안 예측 값과 실제 값 사이의 편차가 예상보다 큰 경우 슬라이스가 이상으로 간주될 수 있습니다.

실제 편차와 예상 편차의 차이를 이상치 점수라고 합니다.

anomalyScore = (detectionPointActual - detectionPointForecast) / expectedDeviation

일반적으로 이 점수가 1.0 미만이면 슬라이스 기록을 검토해야 하는 일반적인 이상에 해당하지만 점수가 1.0 이상이면 주의가 필요하고 점수가 높아질수록 더 심각한 이상치를 나타냅니다.

노이즈 기준점

이전에 정의된 이상치 점수는 편차가 정상치와 비교하여 통계적으로 유의한 정도를 보여줍니다. 하지만 절대 수치의 변화는 중요하지 않을 수 있으므로 많은 경우 이러한 편차는 중요하지 않을 수 있습니다.

예를 들어 시계열의 모든 값이 (9.9, 10.1) 범위에 균일하게 분포되어 있으면 expectedDeviation은(는) 약 0.1입니다. 만약 detectionPointForecast이(가) 10.0이고 detectionPointActual이(가) 10.3이면 anomalyScore은(는) 3.0입니다.

절대 수치의 증가 변화가 더 중요하다면 노이즈 기준점을 통해 이상치 점수에 가중치를 부여하는 식으로 변화가 해당 기준점에 미치지 못하는 슬라이스에 페널티를 적용할 수 있습니다.

anomalyScore = (detectionPointActual - detectionPointForecast) / (expectedDeviation + noiseThreshold)

다음 단계