산출 방식
이 앱은 ListeningMind Data API의 `keyword_info`(data_type=ads_info)가 주는 48개월 월별 검색량만으로 카테고리와 세그먼트의 다음 3~6개월 검색 수요를 예측합니다. 검색 수요는 월 검색량의 합계이며 판매나 매출이 아닙니다. 모든 숫자에는 출처 라벨이 붙습니다.
1. 데이터 수집
- 시드 키워드마다 `intent_finder/keyword_list`를 검색량순(시드당 100 또는 200)과 증감률순(40)으로 호출해 카테고리 검색 키워드 유니버스를 만듭니다. [실측]
- LLM이 동음이의어, 시사 이슈, 무관한 키워드를 제외합니다. 제외 목록과 사유는 근거 탭에 공개됩니다. [LLM]
- 남은 키워드 전부에 대해 `keyword_info`(ads_info, 키워드당 1 크레딧)로 48개월 월별 검색량을 받습니다. 한국은 구글+네이버 합계, 일본·미국은 구글 기준입니다. [실측]
2. 세그먼트 구성
- 자동(2단계): ① 검색량 상위 80개 키워드로 LLM이 5~8개 세그먼트의 택소노미(이름·정의·예시)를 정합니다. ② 전체 키워드를 100개씩 배치로 나눠 각 키워드를 세그먼트 하나 또는 특수 버킷(인접 카테고리 / 이벤트·인물 / 기타)에 배정합니다. 키워드 대조는 공백·대소문자를 정규화해서 하므로 표기 차이로 누락되지 않습니다. 세그먼트 검색량은 소속 키워드 월별 검색량의 합입니다. [LLM]
- 격리 그룹: 인접 카테고리(원료·부산물·이름만 겹치는 제품, 예: 와인 카테고리의 와인 비니거)와 이벤트·인물(연예인·이슈·일회성 행사) 키워드는 별도 그룹으로 격리해 표시만 하고, 카테고리 합계·우선순위·타이밍에서 제외합니다.
- 실패 기준: 세그먼트가 3개 미만이거나 "기타"가 카테고리 키워드의 50%를 넘으면 자동 세그먼테이션을 실패로 보고 시드별 세그먼트로 대체하며, 화면에 그 사실을 표시합니다. 상위 키워드를 세그먼트로 승격하는 식의 임의 대체는 하지 않습니다.
- 시드별: 시드 하나가 세그먼트 하나. 키워드는 수집 출처 시드에 배정됩니다.
- 직접 정의: 사용자가 준 세그먼트명과 키워드를 고정하고, 수집된 나머지 키워드를 위 ② 단계로 배정합니다.
- 상위 3 키워드 비중(집중도)을 함께 표시해 합계가 한두 키워드에 끌려가는지 알 수 있게 합니다. [계산]
3. 시계열 유형 판정
모델을 고르기 전에 시계열마다 유형을 먼저 판정합니다. 순서대로 첫 번째로 맞는 유형이 됩니다. [계산]
| 유형 | 기준 | 처리 |
| 급등형 | 최근 6개월 평균 ÷ 이전 18개월 평균 ≥ 3.0 (월 20건 이상) | 시즌 모델 대신 최근 3개월 수준 유지. 구간 −50%/+60%. 참고용. 타이밍·순위 제외 |
| 이벤트 스파이크 | 최대월 ≥ 중앙값×4, 최근 24개월 내, 현재(최근 3개월) ≤ 최대의 50%, 1년 전후 같은 달에 반복 없음 | 스파이크 전 12개월 중앙값으로 매월 40%씩 감쇠. 참고용. 타이밍·순위 제외 |
| 불안정 | 채택 모델 백테스트 오차 > 50% | 채택 모델 예측은 내되 참고용. 타이밍·순위 제외 |
| 시즌형 | 시즌성 강도 ≥ 0.3, 진폭 ≥ 1.25 | 시즌 타이밍 규칙 적용 |
| 상승/하락 추세형 | 탈계절 Theil-Sen 기울기 연환산 ≥ +15% / ≤ −15% | 연중형으로 취급, 추세 표시 |
| 연중 안정형 | 나머지 | 연중형 |
- 저기저 가드: 전년 동기·모멘텀·예측 기간 전년비의 분모가 월 20건 미만이거나 배율이 10배 이상이면 증감률 대신 "기저 부족"으로 표시합니다. +243,000% 같은 숫자는 나오지 않습니다. [계산]
4. 예측 모델
첫 비영(非零) 월부터의 시계열을 씁니다. 유효 이력이 24개월 미만이면 시즌 모델을 끄고, 12개월 미만이면 예측하지 않습니다.
| 모델 | 방법 |
| S 시즌 나이브 (베이스라인) | 예측 = 전년 같은 달 |
| M 12개월 평균 (베이스라인) | 예측 = 최근 12개월 평균, 수평 |
| A 시즌 나이브+성장 | 예측 = 전년 같은 달 × (1 + 최근 12개월 합 ÷ 직전 12개월 합 − 1) |
| B 고전 분해+Theil-Sen | 12개월 중심이동평균 대비 비율의 월별 중앙값으로 계절지수를 만들고, 탈계절 최근 24개월에 Theil-Sen 직선을 맞춰 예측 = (수준 + 기울기×h) × 계절지수 |
| C Holt-Winters 승법 | α·β·γ를 격자 탐색해 학습 구간 1-step 오차를 최소화하는 삼중지수평활 |
| D 앙상블 | A·B·C의 중앙값 |
- 확장 롤링 오리진 백테스트: 학습 길이를 36개월부터 42개월까지 매월 늘리며 각 origin에서 6개월을 예측합니다(48개월이면 7개 origin, 42개 오차점, h+1~h+6 각 7개). 평균 sMAPE가 가장 낮은 모델을 채택하되, 0.5%p 이내 차이면 더 단순한 모델(S→M→A→B→C→D 순)을 우선합니다. 베이스라인을 못 이기는 복잡한 모델은 그래서 채택되지 않습니다. 6개 모델의 sMAPE와 채택 모델의 MASE(시즌 나이브 대비 절대오차 비율, 1.0이면 시즌 나이브와 같음)를 근거 탭에 표기합니다. [계산]
- 80% 예측 구간: 채택 모델 로그 오차의 10/90 분위(전체 origin 풀)를 예측 개월별 RMS 오차 비율로 늘리고(뒤 개월이 앞 개월보다 좁아지지 않도록 단조 증가), 같은 백테스트로 모델을 골랐기 때문에 생기는 낙관 편향을 보정하려고 1.1배 합니다. 최소 ±10%. 백테스트 오차가 25%를 넘으면 "참고용" 배지를 답니다.
- 카테고리 전체 = 격리 그룹을 뺀 세그먼트(기타 포함) 예측의 합(bottom-up). 세그먼트 합이 카테고리와 항상 일치합니다. 카테고리의 백테스트 오차와 구간은 각 origin에서 세그먼트별 채택 모델의 과거 예측을 합산해 카테고리 실측과 비교한 값이라, 화면의 숫자가 실제로 검증된 오차입니다. 참고로 카테고리 단독 모델(top-down) 결과도 근거 데이터에 남깁니다. [계산]
- 시즌성 강도 = max(0, 1 − Var(잔차) ÷ Var(계절+잔차)), 로그 스케일. 피크월·저점월·진폭(계절지수 최대/최소), 전년 동기 대비, 모멘텀(최근 3개월 ÷ 전년 같은 3개월 − 1)도 함께 계산합니다. [계산]
5. 타이밍 규칙
계절지수에서 다음을 뽑습니다. 이 항목은 측정이 아니라 규칙 적용이므로 [규칙] 라벨을 답니다.
- 상승 시작월: 피크월을 포함해 계절지수가 1.0 이상으로 이어지는 시즌 구간의 첫 달 (두 봉우리 시즌이면 첫 봉우리 쪽 시작). 피크 한 달만 튀는 스파이크형이면 그 전 달
- 피크월: 계절지수 최대 월. 하강 시작월: 피크 뒤 계절지수가 1.0 아래로 내려가는 달
- 캠페인 시작 = 상승 시작월. 콘텐츠·SEO 준비 = 그 2개월 전 [관례]. 출시 창 = 상승 시작월부터 2개월. 프로모션 종료 = 하강 시작월
- 성수기/비수기: 예측값 ÷ 최근 12개월 월평균이 1.15 이상 / 0.85 이하
- 시즌성 강도 0.3 미만이거나 진폭 1.25 미만이면 "연중형"으로 두고 달을 지정하지 않습니다
- 급등형·이벤트 스파이크·불안정 유형과 격리 그룹은 타이밍을 계산하지 않습니다
- 기회 점수(상대 순위): 순위 대상 세그먼트끼리 40 × 최근 12개월 실측 전년비 순위(예측치의 전년비는 쓰지 않음: 시즌 나이브 예측은 전년비가 정의상 0이므로) + 30 × 모멘텀 순위 + 30 × 예측 기간 내 성수기 비율 순위 (순위 백분위). 절대 성장이 아니라 상대 순위이므로 전부 감소하는 카테고리에서도 누군가는 높은 점수를 받습니다. 백테스트 오차 25% 초과, 급등형, 이벤트 스파이크, 불안정, 격리 그룹은 점수를 받지 않고 순위에서 제외됩니다(hard gate). [계산]
현재 파라미터: ramp_cross_level=1.0, prep_lead_months=2, launch_window_months=2, peak_high=1.15, peak_low=0.85, evergreen_strength=0.3, min_amplitude=1.25
6. 브리프와 수치 가드
타이밍 브리프와 세그먼트별 한 줄 지침은 LLM이 씁니다. 문장 안의 모든 숫자를 근거 팩과 대조해 근거에 없는 숫자가 있으면 그 문장을 버리고 템플릿 문장으로 대체합니다. 버린 문장은 근거 탭에 남깁니다. [LLM]
7. 한계
- 48개월이면 origin 7개, 오차점 42개입니다. 예측 개월별로는 7개뿐이라 구간은 분위 대신 RMS 비율로 늘립니다. 오차는 그대로 보여 주고 과신하지 않도록 합니다.
- 세그먼트 배정은 LLM 판단입니다. 인접 카테고리·이벤트 격리도 마찬가지이며, 격리 그룹의 키워드는 화면에서 확인할 수 있습니다.
- 조회 시점 기준 데이터 최신월은 전월입니다. 이번 달은 예측 1개월차로 취급합니다.
- 검색 수요는 관심의 선행 지표이지 판매가 아닙니다. 검색과 구매의 시차는 카테고리마다 다릅니다.
- 성·연령은 한국 데이터에만 있으며, 상위 키워드의 검색량 가중 평균입니다. [파생]