분석 지표 Wiki

Most Replayed 히트맵 기반 시청자 행동 분석 가이드

1. 소개

Most Replayed 히트맵은 YouTube가 제공하는 시청자 행동 데이터로, 영상의 어느 구간이 가장 많이 재시청되었는지를 시각적으로 보여줍니다.

💡 YouTube 동영상 플레이어 하단의 진행 바 위에 표시되는 그래프 형태의 막대가 바로 Most Replayed 히트맵입니다. 높이가 높을수록 해당 구간을 많이 다시 봤다는 의미입니다.

본 도구는 이 히트맵 데이터를 SVG Path 형태로 추출하여 다음과 같은 분석을 수행합니다:

  • 재시청 피크: 가장 많이 다시 본 구간
  • 이탈 구간: 시청자가 스킵하거나 이탈한 지점
  • 시청 안정성: 구간별 시청 집중도 변동
  • 하이라이트 구간: 자동 감지된 인기 구간

👉 이 분석은 YouTube Studio의 내부 Retention 데이터가 아닌, 공개된 히트맵 데이터를 기반으로 한 근사 분석입니다.

2. 데이터 수집 및 품질

YouTube 히트맵은 SVG Path 형식으로 제공됩니다. 이 도구는 Playwright를 사용하여 동영상 페이지에서 SVG 데이터를 실시간으로 스크래핑합니다.

Popularity 정규화

SVG의 Y 좌표(낮을수록 인기 높음)를 분석에 적합한 Popularity 값(0~100)으로 변환합니다.

popularityi=5+(maxYyi)yRange×95popularity_i = 5 + \frac{(maxY - y_i)}{yRange} \times 95

Y 좌표를 0~100 범위의 popularity로 변환

최소값 5를 적용하여 일관성을 유지하며, 영상 시작/끝점은 0으로 고정됩니다.

타임스탬프 계산

각 데이터 포인트의 위치는 인덱스 기반으로 계산됩니다.

positioni=in1,timestampi=positioni×videoDurationposition_i = \frac{i}{n-1}, \quad timestamp_i = position_i \times videoDuration

인덱스 기반 타임스탬프 계산

데이터 품질 기준

품질 수준기준설명
High≥ 3 포인트/분정상 분석 가능
Medium1~3 포인트/분일부 구간 정확도 저하 가능
Low< 1 포인트/분분석 결과 신뢰도 낮음

품질이 낮은 경우, Cubic Bezier 곡선 기반 보간을 적용하여 데이터 해상도를 향상시킬 수 있습니다.

3. Engagement Curve

Engagement Curve는 영상 전반에 걸친 시청 집중도의 연속 곡선입니다. 시간대별로 시청자들이 얼마나 해당 구간에 집중했는지를 보여줍니다.

입력 데이터

  • DataPoint[] — position, timestamp, popularity
  • 출처: 히트맵 SVG 파싱 결과

계산 방식

원본 popularity 값을 0~1 범위로 정규화합니다.

engagementValuei=popularityi100engagementValue_i = \frac{popularity_i}{100}

popularity를 0~1 범위로 변환

👉 이동평균을 적용하지 않습니다. 이동평균 적용 시 피크값이 희석되어 Replay Peak와 불일치가 발생하기 때문입니다.

해석 가이드

값 범위: 0 ~ 1
높은 값

해당 구간에서 시청자 집중도가 높음. 재시청이 많이 발생한 구간

중간 값

평균적인 시청 집중도

낮은 값

시청자들이 해당 구간을 스킵하거나 관심이 적었음

시각화 예시

Engagement Curve 예시샘플 데이터

🔥 2:30 지점이 가장 높은 시청 집중도 (Replay Peak)

4. Replay Peak Index

Replay Peak Index는 영상 내에서 시청자가 가장 많이 다시 본 단일 지점을 식별합니다.

입력 데이터

  • DataPoint[] — popularity 배열

계산 방식

원본 데이터에서 직접 최대 popularity 지점을 탐색합니다.

peakIndex=argmaxi(popularityi)peakIndex = \arg\max_i (popularity_i)

최대 popularity를 가진 인덱스 탐색

score=popularitypeakIndex100score = \frac{popularity_{peakIndex}}{100}

score는 0~1 범위로 정규화

출력 값

  • position: 타임라인 상 위치 (0~1)
  • timestamp: 초 단위 시간
  • score: 정규화된 점수 (0~1)

해석 가이드

값 범위: 0 ~ 1
높은 값

매우 인기 있는 순간. 영상의 하이라이트 또는 핵심 콘텐츠일 가능성이 높음

낮은 값

다른 구간들도 비슷하게 인기 있거나, 전체적으로 평탄한 시청 패턴

5. Drop Rate Index & Max Drop Path

Drop Rate Index는 특정 구간에서 시청 집중도가 급격히 감소하는 정도를 측정합니다. 이탈 또는 스킵 가능성이 높은 지점을 식별하는 데 활용됩니다.

노이즈 스무딩 전처리

SVG 데이터는 근사치이므로 미세한 노이즈(Jitter)가 포함될 수 있습니다. 단순 1차 차분은 노이즈를 증폭시키므로, 먼저 3점 이동평균 필터를 적용합니다.

smoothedi=popularityi1+popularityi+popularityi+13smoothed_i = \frac{popularity_{i-1} + popularity_i + popularity_{i+1}}{3}

3점 이동평균 스무딩 (중간 포인트)

Drop Rate 계산

스무딩된 데이터에서 1차 차분을 계산하고, 감소분만 추출합니다.

δi=smoothedi+1smoothedi\delta_i = smoothed_{i+1} - smoothed_i
dropScorei={δiif δi<00otherwisedropScore_i = \begin{cases} -\delta_i & \text{if } \delta_i < 0 \\ 0 & \text{otherwise} \end{cases}

음수(감소)인 경우만 drop score로 변환

normalizedDropi=dropScoreimax(dropScore)normalizedDrop_i = \frac{dropScore_i}{\max(dropScore)}

최대 drop score로 정규화 → 0~1 범위

Max Drop Path

Max Drop Path는 가장 큰 하락이 발생한 구간의 시작점과 끝점을 반환합니다.

maxDropIdx=argmaxi(popularityipopularityi+1)maxDropIdx = \arg\max_i (popularity_i - popularity_{i+1})
dropAmount=popularitymaxDropIdxpopularitymaxDropIdx+1dropAmount = popularity_{maxDropIdx} - popularity_{maxDropIdx+1}

하락폭 (percentage points)

해석 가이드

값 범위: 0 ~ 1
높은 값

해당 구간에서 급격한 이탈 발생. 콘텐츠가 흥미를 잃게 하거나, 스킵하고 싶은 부분일 수 있음

낮은 값

시청 흐름이 자연스럽게 유지됨. 이탈이 적은 구간

시각화 예시

Drop Rate Index 예시샘플 데이터

📉 2:30 → 3:00 구간에서 최대 이탈 발생 (Max Drop Path)

6. Stability Score

Stability Score는 특정 구간에서 시청자 반응이 얼마나 안정적으로 유지되는지를 측정합니다.

  • 변동이 적을수록 안정적 (높은 점수)
  • 변동이 클수록 불안정 (낮은 점수)

시간 기반 윈도우 (Time-based Window)

인덱스 고정 방식은 영상 길이에 따라 분석 단위가 달라지는 문제가 있습니다. 이를 해결하기 위해 시간 기반 윈도우(기본 5초)를 사용합니다.

windowSize=round(targetSecondsvideoDuration×totalPoints)windowSize = \text{round}\left(\frac{targetSeconds}{videoDuration} \times totalPoints\right)

영상 길이에 따라 윈도우 크기를 동적으로 계산

윈도우 크기는 최소 2, 최대 10으로 제한됩니다.

Absolute Threshold 정규화

상대적 Min-Max 정규화는 잔잔한 영상(ASMR 등)에서 미세한 변동을 과대 표현하는 문제가 있습니다. 이를 방지하기 위해 절대적 기준값(Critical Variance)을 사용합니다.

σi2=Var(popularity[ihalfWindow:i+halfWindow])\sigma^2_i = \text{Var}(popularity[i - halfWindow : i + halfWindow])

로컬 윈도우 분산 계산

stabilityi=1min(1,σi2CRITICAL_VARIANCE)stability_i = 1 - \min\left(1, \frac{\sigma^2_i}{CRITICAL\_VARIANCE}\right)

CRITICAL_VARIANCE = 400 (표준편차 약 20에 해당)

평균 안정성

averageStability=1ni=1nstabilityiaverageStability = \frac{1}{n}\sum_{i=1}^{n} stability_i

해석 가이드

값 범위: 0 ~ 1
높은 값

시청자 반응이 일정하게 유지됨. 콘텐츠 흐름이 자연스러움

중간 값

일부 구간에서 변동이 있지만 전반적으로 안정적

낮은 값

시청 반응 변동이 큼. 급격한 관심 변화나 불안정한 콘텐츠 구조

시각화 예시

Stability Score 예시샘플 데이터

1:30~2:00 구간에서 안정성 저하 (시청 반응 변동 큼)

7. Highlight Density & Segments

Highlight Density는 영상 전체에서 하이라이트 구간이 차지하는 시간 비율을 측정합니다.Highlight Segments는 자동 감지된 개별 하이라이트 구간 목록입니다.

IQR 기반 임계값

YouTube 시청 그래프는 L자형, 스파이크형 등 비정규 분포를 보이는 경우가 많습니다. 평균(Mean)과 표준편차(Std)는 이상치에 취약하므로,중앙값(Median)IQR(Interquartile Range)을 사용합니다.

IQR=Q3Q1IQR = Q_3 - Q_1

사분위범위: 75번째 백분위수 - 25번째 백분위수

threshold=median(popularity)+α×IQRthreshold = median(popularity) + \alpha \times IQR

기본 α = 0.5

적응형 임계값 (안정적인 패턴)

시청 패턴이 균일한 영상에서는 IQR이 너무 작아져 거의 모든 구간이 하이라이트로 잡힙니다. 이 경우 상위 25% 백분위수를 임계값으로 사용합니다.

variabilityRatio=IQRmedian+0.001variabilityRatio = \frac{IQR}{median + 0.001}
if variabilityRatio<0.15threshold=P75\text{if } variabilityRatio < 0.15 \Rightarrow threshold = P_{75}

안정적인 패턴으로 판단 시 상위 25% 기준 적용

구간 탐지 알고리즘

  1. 로컬 피크 탐지: 임계값 이상이면서 양옆보다 높은 포인트
  2. 양방향 확장: 각 피크에서 임계값의 80%까지 확장
  3. 인접 구간 병합: 적응형 gap (영상 길이의 0.5%, 최소 3초, 최대 30초)
  4. 긴 구간 분할: 로컬 딥(상대적 저점)에서 분할
  5. 필터링: 최소 3초 미만 구간 제외

Density 계산

density=(endTimestampistartTimestampi)videoDurationdensity = \frac{\sum (endTimestamp_i - startTimestamp_i)}{videoDuration}

하이라이트 구간의 총 길이 / 전체 영상 길이

해석 가이드

값 범위: 0 ~ 1
높은 값

영상의 많은 부분이 하이라이트로 감지됨. 전반적으로 인기 있는 콘텐츠

중간 값

몇 개의 뚜렷한 하이라이트 구간이 존재

낮은 값

특정 구간에만 관심이 집중되거나, 전체적으로 낮은 시청 집중도

시각화 예시

Highlight Timeline 예시샘플 데이터
0:002:305:00

✨ 3개의 하이라이트 구간 감지 · Highlight Density: 35%

8. 용어 정리

용어설명
Popularity0~100 범위로 정규화된 재시청 빈도
Position타임라인 상 위치 (0~1)
IQRInterquartile Range, 사분위범위 (Q3 - Q1)
Critical Variance안정성 판단 기준값 (400, 표준편차 약 20)
Time-based Window영상 길이에 따라 조정되는 분석 윈도우
Local Dip구간 내 상대적 저점 (하이라이트 분할 기준)
Cubic Bezier 보간데이터 포인트 부족 시 SVG 곡선 기반 포인트 생성

이 문서는 코드베이스의 실제 구현을 기반으로 작성되었습니다.