技術ドキュメント

ガチスコ算出アルゴリズム(技術詳細)

ガチスコの計算方法を、数式・パラメータまで隠さず公開します。 考え方の概要はサイトコンセプト、 店舗ページの読み方は使い方ガイドをご覧ください。

0. 設計方針

ガチスコは、Googleマップのクチコミ評価から信頼できないものの影響を打ち消し、 実力に近い評価へ組み直した独自スコアです。設計上の前提は次の3点です。

  • Googleが表示する星別ヒストグラムのうち、水増しが乗る★4・★5はそのまま使わない(★1〜3は実数として使います)。
  • 正当な良店のスコアは下げず、水増しされた店だけを実力位置まで沈める
  • 全店舗を同一アルゴリズムで自動算出し、人手の調整・重み付けは一切加えない。

1. レビュー1件ごとの採用判定(非対称フィルタ)

各レビューが「スコアの根拠に使えるか」を、次の規則で判定します。 ★1〜3の低評価だけ本文要件を免除する非対称ルールが要点です。

  • ①除外:投稿者が本文つきで書いたクチコミの件数が2件以下のアカウントは、内容によらず常に除外します。
  • ②低評価は無条件採用:★1〜3であれば、本文が空でもそのまま採用します。
  • ③高評価は本文必須:★4〜5は、定型の付随句を除いた実質10文字以上の本文があり、 かつ返信・定型文パターンに該当しない場合のみ採用します。本文が空または「テキストなし」の場合は除外します。

なぜ非対称か:無言の★1〜3(黙って付けた低評価)まで切り捨てると、 ネガティブな声が過小評価され、スコアが実態より高く出ます。 水増しは高評価側で起きるため、本文要件は★4〜5にのみ課します。 ここで数えるのは、Googleがクチコミカードに表示する「◯件のクチコミ」=そのアカウントが本文つきで投稿した件数です。星だけ付けた評価は 「◯件の評価」という別の数字に入り、カードには描画されないため参照できません。 量産アカウントはこの件数が極端に少ない傾向があります。

2. 層化推定によるスコア算出

通過したレビューを単純平均するのではなく、星ごとの実数と通過率を分けて推定し、 掛け合わせてから平均します。中心となる式は次のとおりです。

星1つあたり「実数 × 通過率」を重みにして、星の値(1〜5)の加重平均を取ります。

ガチスコ = (★1×n₁×t₁ + ★2×n₂×t₂ + … + ★5×n₅×t₅) ÷ (n₁×t₁ + n₂×t₂ + … + n₅×t₅)

n_k は各星の「実数」(推定を含む)、t_k は各星のフィルタ通過率(0〜1)です。

2-1. 通過率 t_k の実測

DBに保有するその店舗のレビューを星ごとに束ね、各バケットでセクション1の採用判定を通る割合を実測します。

通過率 t_k =(星kのうち採用判定を通った件数)÷(星kの全件数)

水増し打ち消しの核:水増し店は★5の実数 n₅ が膨らみますが、 同じ★5バケットに低品質な投稿が混ざるぶん通過率 t₅ が比例して下がります。 積 n₅·t₅ が真の信頼件数へ戻るため、 水増し分が自動的に打ち消されます。正当な高評価が多い店は t₅ が高いままなので沈みません。

2-2. 星別実数 n_k の求め方

  • n₁・n₂・n₃(低評価)=Googleの星別件数:Googleが公開している 星別の内訳から、★1・★2・★3の件数をそのまま実数として使います。 水増しは高評価側で起きるため、低評価側の内訳は素直に信用できます。
  • n₄・n₅(高評価)=「残り」を実測比で分ける: 高評価の総数(残り)を先に確定させ、その内訳だけを直近200件のフィルタ後の比で決めます。Googleの星別内訳の★4・★5は使いません (水増しが乗るのはここだからです)。

まず高評価の総数を、Googleの総クチコミ数から★1〜3の実数を引いて求めます。

高評価の総数(残り) = 総クチコミ数 −(n₁+n₂+n₃)

次に、直近200件のうち★4・★5だったものを数え(c₄・c₅)、その比で残りを配分します。

n₄ = 残り × c₄ ÷ (c₄+c₅)  /  n₅ = 残り × c₅ ÷ (c₄+c₅)

★4・★5の通過率も同じ窓から取り、t₄ = p₄÷c₄t₅ = p₅÷c₅ とします (p は各星のうち採用判定を通った件数)。こうすると n₄·t₄ : n₅·t₅ が窓の実測比と一致します。

窓に決めさせるのは内訳の比だけで、大きさ(残り)は総クチコミ数で固定します。そのため星の合計は常に総クチコミ数と一致し、辻褄合わせの切り詰めは発生しません。Googleの表示平均(★4.2 などの平均点)は、算出に一切使いません。

3. パラメータ・境界条件

  • アカウント除外閾値:本文つきクチコミが2件以下のアカウントは除外。
  • 本文の最小長:付随句を除いた実質10文字未満の★4〜5を除外。
  • 層化の適用下限:総クチコミ数が200件以下の店は層化を行わず単純平均へ。全件を取得できておりフィルタが水増しを直接除けるため、推定を挟む必要がないからです。
  • 窓の最小サンプル:直近200件のうち★4・★5が合わせて5件未満なら、内訳の比を決められないため単純平均へフォールバック。
  • 星別内訳の健全性:Googleの星別件数の合計が総クチコミ数と2件(または2%)を超えてずれる店は、取得時期のズレとみなして層化せず単純平均へ。
  • ★1〜3の空バケット:サンプル0の星は低評価併合の通過率、それも無ければ通過率を1.0とみなす。
  • N/A判定:分母(Σ n_k×t_k、フィルタ後の推定信頼件数)が10未満ならサンプル不足として「N/A」。評価が低い意味ではありません。

層化に必要な材料(Googleの星別件数・総クチコミ数)が揃わない店舗(新規・少数レビュー等)は、 この層化を行わず、通過したレビューの単純平均をガチスコとします。 この場合レビュー数が少ないほど高めに出やすく、件数が増えるにつれ本来値へ収束します。

4. 全体フロー

  1. その店舗のDB保有レビュー全件と、Googleの星別件数・総クチコミ数を取得します。
  2. 総クチコミ数が200件以下なら、全件取得済みでフィルタが直接効くため、層化を行わず通過レビューの単純平均を返します。
  3. 星ごとの通過率 t_k を実測します。★1〜3の実数 n₁〜n₃ はGoogleの星別件数から取ります。
  4. 高評価の総数(残り)=総クチコミ数 −(n₁+n₂+n₃)を求め、直近200件の★4:★5の比で n₄・n₅ に分けます。窓の★4・★5が合わせて5件未満なら単純平均へ切り替えます。
  5. 星別実数 n₁〜n₅ と通過率 t₁〜t₅ から、分母(Σ n_k×t_k)と分子(Σ k×n_k×t_k)を計算します。
  6. 分母が10未満なら「N/A」(サンプル不足)を返します。それ以外は分子÷分母を小数点2桁で丸めて返します。

この仕組みでも巧妙なステマを完全には見抜けませんが、 水増しの影響を機械的に打ち消す一つの目安として機能します。 各店舗ページでは、素のGoogle評価と並べて採用/除外の内訳も公開しています。

補足

  • 本ページはアルゴリズムの完全な開示を目的としています。実装の細部は予告なく改善されることがあります。
  • ガチスコはアルゴリズムによる自動算出であり、掲載店舗の品質を保証するものではありません。
  • ガチスコはGoogleマップの非公式サービスです。Googleとの提携・認定関係はありません。