ソウル東南圏に、Kakaoの星4.2の刺身店がある。見た目には悪くなさそうだ。ところがこの店のレビュアーの64%が識別力のない評価者だった。訪れる店ごとに4.5点以上を付ける人たちだ。重み付けを適用するとScoreは3.38まで下がる。

同じ地域にKakao 4.2の洋食店がある。こちらはGoldレビュアーが64人、識別力のないレビュー比率は23%。加重Scoreは4.2。Kakaoの星評価と正確に一致する。

2つの店はKakaoマップでは同じ4.2点だ。加重分析はこの2店を0.8点差として分離した。#1で星評価の正確さがレビュアーの質に左右されることを確認したなら、今回の記事ではその「質」をどう数値化するのか — 重み付けの設計原理、ノイズ除去の方法、現地検証まで、その全過程を扱う。

1

信頼度は2つの軸で決まる

すべてのレビュアーの信頼度(credibility)は、Volume × Discrimination、この2要素の積で計算する。各要素のスケールと基準点は、レビュー・データの分布を分析したうえで意図的に設定した値だ。

Volumeには対数スケールを適用し、上限を100件に設定した。10件なら0.52、50件なら0.85、100件で1.0に達し、それ以上は上がらない。300件書いたレビュアーでも1,000件書いたレビュアーでも、Volumeの寄与分は同じだ。レビュー数が増えるほど信頼度は高くなるが、一定水準を超えると「より多く書いた」ことがそのまま「より信頼できる」ことにはならないと判断したためである。

Discriminationは、レビュアーが良い店とそうでない店を見分ける能力の推定値だ。理想的にはレビュアーごとのスコア分布(標準偏差)を直接測定すべきだが、KakaoマップAPIが提供するのはレビュアーの平均星評価とレビュー数だけだ。個々のレビュアーの全体スコア分布にはアクセスできない。そこで平均星評価を識別力の近似値として使うことにした。曲線の中心値は3.2に設定し、両極端に行くほど0に収束するよう設計した。

Chart 1 — 核心
Discrimination曲線:レビュアー平均星評価と識別力
平均3.2を中心に左右対称で減少 · Gold領域(2.5~4.2)を表示
Goldレビュアー領域 0 0.5 1.0 1.0 2.0 3.0 3.2 4.0 5.0 1.0 2.5 4.2 識別力 0 識別力 低
平均星評価が3.2付近のレビュアーは、店ごとに異なる点数を付ける可能性が高い。平均値を識別力の近似値として使う理由である。Goldレビュアー領域(2.5~4.2)は、Discrimination 0.65以上の区間とほぼ一致する。

なぜ3.2なのか。5点満点の尺度で平均3.2を維持するということは、良い店には4〜5点を付け、普通の店には2〜3点を付けるという意味だ。点数に分散があってこそ情報になる。

すべての店に5点を付けるレビュアーの5点には情報がない。その人はこの店が特別かどうかを見分けていない。

もちろん平均星評価は完璧な指標ではない。平均4.2のレビュアーの中にも、実際には1〜5点を幅広く使う人がいるかもしれない。しかしレビュアーごとの全体スコア分布を確認できない状況では、平均星評価は識別力を推定する最も現実的な近似値だ。3.0〜3.5区間のレビュアーが店間の点数差を最も大きく示すという観察を根拠に、中心値を3.2に決めた。

この曲線で識別力が0.5以上の区間は、おおよそ平均2.0〜4.4だ。Goldレビュアーは、この中でもレビュー50件以上、平均2.5〜4.2のレビュアーを指す。Volume 0.85以上、Discrimination 0.65以上 — 両軸とも上位圏の評価者たちだ。この基準線は、「公式上自然に高い重みを受ける区間」と「手動検証で判別品質が確認された区間」の交差部分として設定した。175万件のレビューのうち、この条件を満たすレビュアーは12,911人だ。

最終重みには基本値(eps) 0.05が加えられる。どれほど履歴が乏しい、あるいは極端なレビュアーでも完全には無視しないという設計原則だ。ただし、その発言力はGoldレビュアーの1/15水準にとどまる。

2

同じ5点でも、重みは15倍違う

この公式が実際にどんな差を生むのか見てみよう。2人のレビュアーが同じ店に5点を付けた。1人はレビュー経験1件、平均5.0。もう1人は200店を回りながら平均3.3を維持してきたレビュアーだ。

Volume × Discriminationを適用すると、最初のレビュアーの重みは0.07、2人目は1.04だ。15倍の差

Chart 2
レビュアータイプ別の信頼度重み
レビュー数と平均星評価によるcredibility · 最大1.05
0 0.5 1.0 1件 / 平均 5.0 初レビュー 0.07 50件 / 平均 4.8 レビュー 多、識別力 低 0.29 50件 / 平均 3.5 バランスの取れたレビュアー 0.85 100件 / 平均 3.0 Gold 1.02 200件 / 平均 3.3 Gold 1.04 15倍の差
同じ5点でも、レビュー履歴と平均星評価によって重みは0.07から1.04まで変わる。50件書いていても平均が極端なら0.29にとどまる — レビュー数だけでは信頼度は決まらない。

レビュー1件で平均5.0のレビュアーは、2つの弱点を同時に抱えている。Volumeが極めて低く(レビュー履歴不足)、Discriminationも極めて低い(平均が極端)からだ。両軸とも底にあるケースである。

注目すべきは50件/平均4.8のレビュアーだ。レビュー数は少なくないが、重みは0.29にすぎない。Volumeは0.85と高いが、Discriminationが低いため最終重みが削られる。50店を回っていても、ほとんど4〜5点しか付けないレビュアーからは、「この店は特別か」という問いへの答えを得にくい。

3

ノイズをふるい落とす — 識別力のないレビュアー

重みを与えるだけでは十分ではない。システム固有のノイズ源が存在するからだ。

識別力のないレビュアーとは、訪れる店ごとに高得点ばかり付けるパターンを示す評価者だ。Section 1のDiscrimination曲線ですでに低い重みを受けるが、その比率自体が店のデータ信頼度を下げる指標にもなる。

検出基準はレビュー数に応じて3段階で設計した。

基準 平均星評価 最小レビュー数 ロジック
第1段階 4.9以上 3件 事実上いつも5点
第2段階 4.7以上 7件 高い平均、7件以上維持
第3段階 4.5以上 25件 25件でも極端な高評価

レビュー数が増えるほど高い平均を維持するのは難しくなる。基準を累進的に設計した理由だ。3件で4.9を維持することと、25件で4.5を維持することは、データ上では似た水準の偏りパターンを示しており、各段階の閾値はこの観察から導き出した。

Chart 3
店舗別・識別力のないレビュー比率の分布
81,679店舗の分析対象基準
25,000 0 20%未満 正常 48,147 20–40% 境界 26,025 40%以上 注意 7,507
81,679店舗のうち7,507店舗(9.2%)で、識別力のないレビューが全体の40%を超えた。これらの店は星評価が実際より水増しされている可能性が高く、「バブル注意」等級を受ける。

81,679店舗のうち7,507店舗(9.2%)で、識別力のないレビューが全体の40%を超えることが分かった。星評価のおよそ10%が、このような偏りによって膨らんでいる計算になる。

4

1つの数字ではなく、3つの軸

このシステムは単一スコアを出さない。3つの独立した軸で店を評価する。

第一に、加重ポジティブ率。星4点以上レビューの重み合計を、全体の重み合計で割った比率だ。単純な4点以上比率ではなく、信頼度の高いレビュアーによる4点以上が占める割合を見る。判定境界は75% / 50% / 30%に設定した — 75%以上なら「グルメ店」、50%以上なら「悪くない」、30%以上なら「普通」、それ未満なら「注意」だ。

Chart 4
加重ポジティブ率ベースの判定分布
81,679店舗の分析対象 · 判別不可を除く
75%+ グルメ店 36,595 50–75% 悪くない 26,649 30–50% 普通 12,151 <30% 注意 6,284
グルメ店の比率は44.8%。普通+注意を合算すると18,435店舗(22.6%)で、分析対象のおよそ5店舗に1店舗は期待に届かない可能性があることを意味する。

第二に、バブル指数。識別力のないレビュー比率が40%を超えるか、Kakaoの星評価と加重Scoreの差が0.5点を超えれば「注意」だ。Kakaoの星評価は高いが、レビュアー構成が偏っている店を検知する軸である。

第三に、データ信頼度。有効標本サイズ(Neff)とGoldレビュアー数を基準に判断する。レビュー50件以上の店の平均収集レビュー数は103件だが、重み付けを適用した有効標本は76.2件に圧縮される。圧縮率は74.4%。103件のレビューのうち、独立した情報を実質的に含んでいるのは76件ということだ。

74.4%
有効標本圧縮率
平均103件レビュー → 有効76.2件

3軸が同時に良好な店 — 加重ポジティブ率75%+、バブル「クリーン」、データ信頼度「高い」 — が最も信頼できるグルメ店だ。1つの軸でも警告が出れば、その理由が併せて表示される。単一スコアではなく、文脈が判定を構成する方式である。

5

現場で検証する — 송파구 (ソンパグ) 336か所

数式が現場と一致するかを確認するため、송파구 (ソンパグ)所在の店舗のうち、レビュー50件以上の336か所の分析結果を点検した。Kakaoマップから、レビュアーのレビュー数、平均星評価、星評価分布を含む元データを抽出し、同じ重み付け公式を適用した結果である。

Kakaoの星評価と加重Scoreは、一貫して異なっていた。

業種・地域 Kakao Score ギャップ Gold バブル
コプチャン・송파 (ソンパ) 4.3 3.23 +1.07 24人 注意
刺身・잠실 (チャムシル) 3.5 2.50 +1.00 17人 注意
刺身店・잠실 (チャムシル) 4.2 3.38 +0.82 9人 注意
中華・송파 (ソンパ) 4.2 4.04 +0.16 76人 クリーン
冷麺・방이 (パンイ) 3.9 3.85 +0.05 100人 クリーン
洋食・송파 (ソンパ) 4.2 4.20 0.00 64人 クリーン
寿司・송파 (ソンパ) 4.8 4.82 −0.02 9人 クリーン
しゃぶしゃぶ・방이 (パンイ) 4.5 4.42 +0.08 90人 クリーン

336か所のうち最も劇的な差は、コプチャン・송파 (ソンパ)で現れた。Kakaoの星評価は4.3だが、加重Scoreは3.23。ギャップは+1.07。識別力のないレビュー比率は32%、バブル等級は「注意」だ。Kakaoの星評価が実際の味評価を1点以上水増ししていた。

刺身店・잠실 (チャムシル)はKakao 4.2だが、識別力のないレビュー比率が64%に達した。レビュアー3人に2人が、どこへ行っても高得点ばかり付けるパターンだった。加重Scoreは3.38。

一方、同じKakao 4.2の洋食・송파 (ソンパ)は、Goldレビュアー64人、バブル等級「クリーン」、加重Scoreは4.20でKakaoと正確に一致した。しゃぶしゃぶ・방이 (パンイ)はGoldレビュアーが90人で336か所中もっとも多く、Kakao 4.5に対してScore 4.42と安定していた。

Kakaoの星評価だけでは、コプチャン・송파 (ソンパ)(4.3)と洋食・송파 (ソンパ)(4.2)は似て見える。加重システムはこの2店を0.97点差として分離する。

判定基準の核心3つ

レビュアー信頼度重み付け
Volume × Discriminationで0.07~1.05範囲の重みを付与する。12,911人のGoldレビュアーが判定を主導する。
識別力のないレビュアーの検出
常に高得点ばかり付けるパターンを3段階で検出する。比率が40%を超えるとバブル警告を発令する。
3軸評価
加重ポジティブ率、バブル指数、データ信頼度 — 1つの数字ではなく文脈で判定する。

「誰がこの店に星評価を付けたのか」 — そのレビュアーの履歴とパターンを追跡すると、Kakaoマップで同じ星評価だった店どうしの間に、有意な差が現れる。175万件のレビューを同じ重さで読まないこと。93,515店舗に適用されたこの原則が、グルメ店判定の出発点である。