맛집 아직도 평균 평점으로만 찾으시나요?

맛집 아직도 평균 평점으로만 찾으시나요?

ML활용을 위한 카카오맵 데이터분석

맛집을 선정할 때 흔히 사용되는 “평점 평균”이나 “리뷰수”가 아니라, 리뷰어 특성과 최신성, 주관적인 평가 편차 등을 고려해 더 정교하고 신뢰도 높은 점수를 산출하는 과정을 공유합니다.


1. 음식점 평균만으로 부족한 이유

1-1. 리뷰어의 주관적 취향이 다 다르다

  • 사람마다 미각과 기준이 제각각이라, 같은 4점짜리 리뷰라도 ‘원래 3점을 주는 게 흔한 리뷰어’가 준 4점인지, ‘항상 4점을 주는 관대한 리뷰어’가 준 4점인지에 따라 맛집 판단이 달라질 수 있습니다.
  • 단순 평균 평점은 리뷰를 작성한 사람의 평점 습관을 전혀 반영하지 못합니다.

1-2. 리뷰 수가 많으면 유리하거나, 적어도 유리할 수 있다

  • 리뷰 개수가 많은 곳:
    단순 합계 기준으로 높은 순위에 오를 수 있음(리뷰가 1,000개 이상이면, 살짝만 좋은 평이 많아도 ‘합계’가 커지기 때문).
  • 리뷰 개수가 적은 곳:
    단 1~2명만 만점을 주면 평균이 5점에 가깝게 올라가기도 합니다.
    이 경우, 충분한 샘플이 없음에도 불구하고 ‘평균 점수’만으로는 고평가를 받을 수 있어 왜곡이 발생합니다.

1-3. 맛집은 ‘시간 흐름’에 따라 변한다

  • 맛집도 사람이 운영하는 이상, 시간이 지남에 따라 맛과 서비스가 달라질 수 있음.
  • 단순 평균 평점은 1년 전, 심지어 2~3년 전의 낡은 리뷰도 똑같은 비중으로 계산합니다.
  • “인테리어 리뉴얼” 후 확 좋아졌거나, “셰프 교체”로 맛이 바뀐 경우가 있는데도, 단순 평균에선 반영이 어렵습니다.

1-4. 리뷰어의 신뢰도를 반영하지 못함

  • 활동지수(리뷰 횟수, 사진·텍스트 작성량 등)가 높은 리뷰어의 평가와,
    계정만 만들어 한 번 딱 리뷰를 남긴 뒤 사라진 리뷰어의 평점을 같은 비중으로 처리하는 것은 문제가 될 수 있습니다.
  • 예를 들어, 인플루언서, 푸드 칼럼니스트, 오래도록 다양한 식당을 다닌 미식가의 리뷰는 일반 초보 리뷰어에 비해 상대적으로 신뢰도가 높다고 볼 여지가 있는데, 단순 평균은 이를 고려하지 못합니다.

1-5. 조작 평점에 취약

  • 일부 업체나 단체가 “별점 테러” 혹은 “가짜 계정으로 자사 평점 올리기”를 시도할 경우,
    • 단순 평균은 고평점·저평점의 극단치에 쉽게 영향을 받아 왜곡될 수 있습니다.
  • 실제로 리뷰어가 일정 수준 이상의 활동내역이 있는지, 어느 정도 신뢰할 만한 사람인지를 고려하지 않으면 조작 리스크에 취약해집니다.

2. 리뷰어 관점에서 보정: 개별 리뷰에 대한 Combined Score 계산

2-1. 리뷰어의 평균평점 대비 차이(Score)

  • score_scaled

    {리뷰어가 해당 음식점에 준 평점} - {리뷰어의 평균평점}

    • 예: 평소 3.0점만 주던 리뷰어가 특정 음식점엔 5점을 줬다면, 그 차이가 크므로 “상대적 만족도”가 높다고 판단.

2-2. 리뷰 최신성(Date)

  • date_scaled

    {리뷰 작성일이 최근 3개월은 동일하게 가중치 1} ~ {오래될수록 낮은 가중치}

    • 리뷰어가 남긴 평점에 최신성을 반영.
    • 최근 3개월 내의 평점에 대해서는 같은 가중치를 두고 3개월 도래한 평점에 대해서는 멀어지는 만큼 하락하는 가중치를 둠. 2년을 도래하는 최저점은 0.01
    • 3개월로 정한 이유는 미슐랭에서도 1년 사이 5-6번 음식점을 방문하여 평가하는데 이는 2-3개월 동안은 음식점의 퀄리티가 유지된다고 보는 것을 차용.

2-3. 리뷰어 레벨(Badge)

  • badge_scaled

    {리뷰어의 레벨(1~100)를 min-max 등으로 정규화}

    • 자주 리뷰를 쓰고, 새 장소를 발굴하며, 다른 사용자들과 소통하는 “활동 지수가 높은 리뷰어”가 남긴 리뷰에 좀 더 높은 가중치를 부여.
    • 카카오맵에서 레벨에 미치는 활동 목록

2-4. 최종 Combined Score

위 세 가지 지표(score_scaled, date_scaled, badge_scaled)를 각각 min-max scaling 후 다음 가중치를 적용해 더합니다.

{Combined Score} = (0.5 * {score_scaled}) + (0.2 * {date_scaled}) + (0.3 * {badge_scaled})

  • (1) 점수 차이(Score)에 0.5
  • (2) 최신성(Date)에 0.2
  • (3) 리뷰어 레벨(Badge)에 0.3

결과적으로, 각 리뷰마다 “단순 평점”이 아닌 “리뷰어 주관과 신뢰도, 최신성”을 반영한 combined_score가 생성됩니다.


3. 음식점 단위 점수 산출: 리뷰별 Combined Score의 집계

3-1. 단순 합계 vs 단순 평균의 한계

  • 단순 합계: 리뷰가 많으면 점수가 지나치게 높아짐.
  • 단순 평균: 리뷰 수가 너무 적은 곳이 운 좋게 고평점을 받으면 상위에 노출될 위험.

3-2. 영화 평점의 계산 방법 베이지안 평균(Bayesian Average)

영화 평점 사이트인 IMDBRotten Tomatoes 등도 실제로는 단순 평균을 그대로 쓰지 않고, 베이지안 평균을 응용한 방식을 사용합니다. 예를 들어, IMDB는 아래와 같은 공식으로 “Weighted Rating”을 계산한다고 알려져 있습니다.

  • (v): 해당 영화(또는 작품)의 리뷰(투표) 수
  • (R): 해당 영화의 평균 평점
  • (m): IMDB에서 설정한 ‘최소 보장 리뷰 수’(예: 25,000표 등)
  • (C): 사이트 전체 영화들의 평균 평점

리뷰가 많지 않은 영화라도, 극단적 고평점(혹은 저평점)만으로 순위가 급상승/급락하지 않도록, 사이트 전체 평균 (C)에 가중치를 두어 평점을 보정하는 방식입니다.

Rotten Tomatoes 역시 단순히 ‘평점 평균’이 아니라, 일정 개수 이상의 비평가 리뷰(토마토미터)와 일반 관객 리뷰를 종합하여, 조작 또는 극단적인 의견에 의해 결과가 치우치지 않도록 보정하고 있습니다.


왜 베이지안 평균이 유용한가?

  1. 리뷰(투표) 수가 적은 경우
    • 최소 보장 리뷰 수 (m)를 통해, “전체 평균 (C)”으로 일정 부분 보정 → 소수의 극단적 평가에 의한 왜곡 방지.
  2. 리뷰(투표) 수가 충분히 많은 경우
    • (\frac{v}{v+m})이 점점 1에 가까워지면서, 영화(또는 음식점) 고유의 평균 평점 (R)이 더욱 반영됨.
  3. 맛집 찾기에도 동일 원리 적용 가능
    • 음식점마다 리뷰가 충분히 쌓이지 않았을 때엔 ‘리뷰 전체 평균’에 어느 정도 수렴시키고, 리뷰가 늘어나면 해당 음식점 고유의 평균(이때는 Combined Score 평균)을 더욱 강하게 반영할 수 있습니다.

결국, 단순 평균 혹은 합계가 아닌 ‘베이지안 평균’을 활용하는 것이, 리뷰 수가 너무 적거나 지나치게 많은 경우에도 균형 잡힌 맛집 점수를 산출하는 데에 큰 도움을 줍니다.

이를 보완하기 위해, 리뷰 수(N)가 적은 음식점은 사이트 전체 평균(μ)에 어느 정도 끌어당기는 방식을 활용합니다.

  • (x): 해당 음식점의 combined_score 평균
  • (N): 해당 음식점의 리뷰 수
  • (mu): 전체(리뷰 전역) combined_score 평균
  • (k): 최소 보장 리뷰 수(분석자가 정함, 5)

리뷰 수가 작을수록 전체 평균((mu))에 가까워지고, 리뷰 수가 많을수록 ({x}) 그대로 반영됩니다.

3-3. 기타 방법(윌슨 신뢰구간, 리뷰 수 기반 보정 등)

  • 윌슨 신뢰구간: 이진 데이터(민족 vs 불만족)에서 주로 사용하는 신뢰 구간 지표. 다중 평점에도 변형 적용 가능.
  • 리뷰 수 기반 보정: 리뷰 수가 너무 적은 음식점에 감점(-%), 일정 개수 이상이면 가점(+%) 부여. 다만 임의성이 높아 베이지안 평균보다 정교함이 떨어질 수 있음.

4. 분석 흐름 예시

1) 개별 리뷰

  • score_scaled, date_scaled, badge_scaled를 구해, 가중합해 combined_score 생성.
    2) 음식점 단위 집계
  • 음식점별 리뷰 수(N), combined_score 평균((\bar{x})) 계산.
  • 전체 평균(μ), 가중치(k) 등을 사용해 베이지안 조정평균 기법으로 점수 보정.
    3) 랭킹 산출 & 검증
  • 최종적으로 “베이지안 보정된 점수”를 기준으로 상위에 오른 곳들이 실제로도 명성이 높은 맛집인지, 현장 검증이나 다른 평판 데이터와 비교해 튜닝.

5. 정리 및 제안

  • 리뷰어의 주관적 성향이나 활동 지수, 시간 흐름에 따른 맛과 서비스 변화 등을 무시하는 단순 평점 집계는 왜곡 가능성이 큼.
  • 이를 보정하기 위해,
    1) 개별 리뷰:
    • 리뷰어 주관도(평균평점 대비 차이), 최신성, 리뷰어 레벨 등을 합산한 combined_score를 만든 뒤,
      2) 음식점 단위:
    • 베이지안 평균 등 통계 기법으로 리뷰 개수에 따른 편차를 보정해주는 방법을 추천.
  • 파라미터(가중치, k값 등)는 실제 사용자 설문이나 유명 맛집 리스트와 비교하여 반복 튜닝이 필요합니다.

결론

“맛집을 찾는” 것은 단순히 별점의 평균이나 합계가 아니라,
리뷰어 신뢰도, 최신성, 개인의 평균 평점 대비 차이 등을 활용해 정교한 점수(Combined Score)를 만든 뒤,
리뷰 수 보정(베이지안 평균)으로 음식점 단위 점수를 산출해야 ‘진짜 맛집’을 거른다는 점이 핵심입니다.