Vercel Analytics 차트에서 노이즈가 많아 트렌드를 읽기 어렵고 델타 계산이 첫/마지막 데이터 포인트 차이만 반영해 왜곡되는 문제를 다항 회귀 기반 커브 피팅으로 해결했다. 선형 회귀부터 과적합 방지까지 구체적인 수학적 접근을 설명한다.
핵심 포인트- 기존 문제: 모든 데이터 포인트를 직선 연결 → 노이즈 많고 트렌드 파악 어려움
- 델타 오류: 첫/마지막 포인트 차이만 계산 → 이상값에 쉽게 왜곡
- 해결책: 다항 회귀로 전체 데이터 트렌드를 나타내는 곡선 피팅, MSE로 적합도 측정
- 과적합 방지: 홀수/짝수 인덱스 분리 후 max(MSE(훈련), MSE(테스트))로 최적 차수 자동 선택
상세 정리- 시각적 노이즈 문제: 데이터 포인트를 직선으로 연결하면 단기 변동이 크게 보여 실제 성능 트렌드 파악이 어렵다. 특히 p75/p99 같은 분포 지표는 일별 노이즈가 크다.
- 델타 왜곡 문제: 기존 델타 = 마지막 값 - 첫 값. 마지막 날이나 첫 날에 이상값이 있으면 전체 트렌드와 반대되는 델타가 나올 수 있다.
- 해결 방향: 커브 피팅으로 전체 데이터 분포를 대표하는 곡선 생성. 이 곡선으로 트렌드를 시각화하고 곡선 기울기로 델타를 계산.
- 선형 회귀 (1차 다항): 직선 피팅의 특수 케이스. 단조 트렌드에 적합. 다항 회귀의 차수를 1로 설정한 경우.
- 다항 회귀 (N차): N-1개의 변곡점을 가져 더 복잡한 패턴 표현 가능. MSE = Σ(실제값 - 예측값)² / 데이터 수로 적합도 측정.
- 과적합 문제: 차수가 높을수록 훈련 오차는 줄지만 노이즈도 따라가 실제 트렌드를 잃음.
- 과적합 방지 방법: 데이터를 홀수 인덱스(훈련)와 짝수 인덱스(테스트)로 분리. error = max(MSE(훈련), MSE(테스트))를 최소화하는 차수를 선택. 두 집합 모두에서 오차가 작은 차수만이 진짜 트렌드를 잡은 것.
- 결과: 알고리즘이 데이터 패턴에 따라 자동으로 적절한 차수를 선택, 수동 설정 없이 깔끔한 트렌드 곡선 생성.
왜 읽나웹 앱 성능 지표나 사용자 지표를 차트로 시각화할 때 노이즈를 줄이고 트렌드를 명확히 드러내려는 프론트엔드/데이터 엔지니어에게 커브 피팅의 실용적 적용 방법과 과적합 방지 기법을 제시한다.