# 店舗別 後段モデル検証（採点ブレの定量化）

実施日: 2026-06-19 / 追加課金ゼロ（LLM再実行なし）
スクリプト: `精度改善_20260619/scripts/run_store_validation.py`

## 狙い
提出元店舗ごとに後段モデルを作成し、採点データの正確度を確認する。
**採点にブレ（同一観測状態でスコアが割れる）があれば、その店舗の後段モデル精度は下がるはず** という仮説を、
①店舗別モデル精度（5-fold OOF・線形回帰・visual_plus_brix_slot）と、②採点ブレの直接指標（グレード割れ率）で検証した。

## 店舗の特定方法
評価バッチ(`training_dataset.csv` 520件)の `提出者` は全件「嘉手川航太朗」（投入担当者）で店舗情報を持たない。
実店舗は元データ `data/raw_csv/base_export.csv` の `提出者` 列にある。
SQLite(`ramen_soup_evaluations.sqlite3`)のmetadata内 `添付ファイル` 名で両者を突合し、評価済み各件に店舗を付与した。

## 店舗分布（assessable=1 ＝最終精度と同条件）
| 店舗 | target整合 | assessable=1 |
|---|---:|---:|
| 豚山　神保町店 | 283 | **270** |
| 豚山　小田原店 | 185 | **56** |
| 豚山　武蔵村山店 | 18 | 10 |
| 豚山　静岡新川店 | 9 | 4 |
| 豚山　大宮店 | 18 | 3 |
| その他(個人/不明) | 8 | 3 |

→ モデル学習に足る規模は **神保町(270)・小田原(56)** の2店舗。以下はこの2店舗を主対象とする。

## 結果① 店舗別モデル精度（5-fold OOF・線形回帰）
| 店舗 | n | total MAE | total グレード一致 | total ±15点 | soup MAE | soup グレード一致 |
|---|---:|---:|---:|---:|---:|---:|
| 【プール】全店舗 | 346 | 8.35 | 88.7% | 91.6% | 8.04 | 87.6% |
| 豚山　神保町店 | 270 | **8.10** | **93.3%** | 89.3% | **7.48** | **96.7%** |
| 豚山　小田原店 | 56 | **9.67** | **60.7%** | 76.8% | **9.60** | **57.1%** |

**小田原は神保町より明確に精度が低い**（グレード一致 total 93.3% → 60.7%、soup 96.7% → 57.1%）。

## 結果② n差の交絡を排除（神保町を n=56 にサブサンプル, 5seed平均）
小田原(56)と神保町(270)の件数差が原因ではないことを確認するため、神保町を同じ n=56 に揃えて比較。
| target | n | 神保町(n揃え) MAE | 神保町(n揃え) 一致 | 小田原 MAE | 小田原 一致 |
|---|---:|---:|---:|---:|---:|
| total | 56 | 8.28 | 90.7% | 9.67 | 60.7% |
| soup | 56 | 8.28 | 93.2% | 9.60 | 57.1% |

→ **件数を揃えても小田原は大幅に劣る**。精度差は n の差ではなく採点データ自体の性質による。

## 結果③ 採点ブレの直接指標（グレード割れ率）
「同一観測状態（LLM評価＋濃度＋時間が同一＝モデルから区別不能）の群で、人間グレードが割れている件数の割合」。
モデルを介さず採点の一貫性そのものを測る指標（§9.7と同手法）。
| 店舗 | total グレード割れ率 | soup グレード割れ率 |
|---|---:|---:|
| 豚山　神保町店 | 43.5% | 35.5% |
| 豚山　小田原店 | **70.0%** | **65.0%** |

→ **小田原は同一観測状態でも約2倍の頻度でグレードが割れる**。採点のブレが大きい。
（※ノイズ床MAE/R²上限は小田原の群が小さく疎で群内分散が過小評価され交絡するため、ここでは割れ率を主指標とする。）

## 補足: スコア分布の違い
- 神保町: 平均 92.7点・std 11.2（大半がA帯に集中＝グレードが当たりやすい）
- 小田原: 平均 78.0点・std 14.2（**A/B境界の80点付近に分布**＝小さな誤差でもグレードが反転しやすい）

小田原の低グレード一致は (a) 採点ブレの大きさ（割れ率2倍・n揃えでもMAE悪化）に加え、(b) 分布がA/B境界上にある構造的要因の両方による。いずれも「小田原の採点ラベルは相対的に当てにくい＝品質が低い」ことを示す。

## 結論
1. **仮説は支持された。** 採点ブレの大きい店舗（小田原）は後段モデル精度が明確に低い。モデル精度は採点データ品質の代理指標として機能する。
2. **神保町(270件)の採点品質は高い**（グレード一致 total 93.3% / soup 96.7%、割れ率 35〜44%）。プール精度(88.7%)を押し上げている主因。
3. **小田原(56件)の採点品質は低い**（n揃えでもMAE+1.4、割れ率 65〜70%）。プール精度を引き下げており、ラベル監査・採点基準の擦り合わせの最優先対象。
4. 次アクション: 小田原の群内矛盾サンプル（同一状態で total幅35点など）を抽出し採点者と照合。店舗横断で採点基準を統一すれば、後段モデルの天井（§9.7）自体が押し上がる余地がある。

## 出力ファイル
- `store_distribution.csv` … 店舗分布（ゲート前後）
- `store_validation.csv` … 店舗別モデル精度＋ブレ指標
- `subsample_matched.csv` … n揃え対照
