# ラーメンスープ評価AI 精度改善レポート

作成日: 2026-06-19

---

## 0. このレポートの流れ（先に結論）

### 結論
- BytePlusからの後段スコアリング方式の提案を受け、**同一データで複数モデルを比較**した。
- 結果、**BytePlusの提案（XGBoostベース）を参考にしつつ、比較対象だった別モデル（線形回帰／Ridge系）を採用**。提案値を全指標で上回った（MAE 11.7→8.72、相関 0.53→0.63、グレード一致 74→80.8%）。
- そこから**全体パイプラインを改善**し、最終精度は **グレード一致 約88〜89% / 誤差±15点以内 約92〜93%** に到達。
- さらに精度の天井を監査した結果、**現行の観測情報では人間スコア分散の約半分しか説明できない**ことが判明（§9.7）。後段モデルは既にほぼ天井で、伸びしろはモデルでなく**入力情報の解像度と教師ラベルの質**にある。

### このレポートの流れ
1. **BytePlus提案を踏まえ、比較することにした**（§1）
2. **比較内容**（データ・モデル・特徴量・指標）（§2）
3. **比較の結果 → BytePlus提案を参考に、別の比較対象（線形/Ridge）を採用**（§3〜§4）
4. **採用モデルから、さらに全体パイプラインを改善して精度向上**（§5〜§6、判断不能画像の分岐ほか）
5. **今後の改善点と精度の天井**（§7〜§9。アーキ確認・入力拡張・ゲート整理・教師ラベル監査）

---

## 1. BytePlus提案を踏まえた比較の狙い

BytePlusから後段スコアリングの方式提案（XGBoostベース、提案性能値: MAE 11.7 / 相関 0.53 / グレード一致率 74%）を受領した。

そこで、**同一データ・同一評価条件**で複数の後段モデルを横並び比較し、
「提案方式が最適か」「自社で内製した方式と比べてどうか」を客観的に検証した。

評価対象は最終評価に近い `human_total_score`（濃度込み総合点）を主軸とした。

---

## 2. やったこと（仕様の概要）

パイプラインは段階によって異なるため、3つに分けて示す。
- **2.1 BytePlus提案パイプライン**（比較の出発点）
- **2.2 検証段階のパイプライン**（今回の比較を実施した自社構成）
- **2.3 採用パイプライン**（検証結果を反映した最終構成）

### 2.1 BytePlus提案のパイプライン（比較の出発点）

BytePlusの提案は「VLMで4業務次元を独立採点 → 教師ありML（XGBoost）で合成」する2段構成。
4次元（濃度/水位/油/沸騰）は520件の人間コメントのキーワード分析から導出。

```text
入力: 動画(fps=1) ＋ Brix ＋ 時間帯
  │
  ▼
Stage1: 視覚理解  Seed 2.0 Pro（VLM）
        4次元を並列4回呼び出し（各: 動画 ＋ 3参照アンカー ＋ Brix ＋ 時間）
        Density 30 / Water 25 / Oil 25 / Boiling 20
  │
  ▼
Stage2: 合成  XGBoost 二系統ヘッド
        4次元スコア ＋ 派生特徴(計12) を投入
        回帰ヘッド → 連続スコア(0-100)
        分類ヘッド → 異常確率(attention_prob)
  │
  ▼
出力: ai_score / grade(A-D) / attention_needed / dim_scores / reasoning
```

提案性能（938動画・684件人間スコア・test137件）: **グレード一致 74% / MAE 11.7 / 相関 0.53 / 異常検出 44%**。

### 2.2 検証段階のパイプライン（今回の比較を実施した自社構成）

BytePlus提案を受け、同一データで自社構成を比較するために用いたパイプライン。
**画像評価AIは1フレームで全項目を1回出力**し、判断不能画像も含めて全件を後段に通している（＝この段階では分岐なし）。

```text
入力: 動画 ＋ 実測Brix ＋ 時間
  │
  ▼
Stage1: 前処理  DensityResolver（ルール＋学習）
        代表フレーム抽出（多フレーム→湯気除外→RF-DETR抽出→最良選択＋可読性判定）
        濃度確定（実測Brix優先 / なければ濃度推定AI）
  │
  ▼
Stage2: 視覚理解  Seed 2.0 Pro（LLM）
        最良1フレーム ＋ 濃度 ＋ 時間 → 全項目を1回で固定JSON出力
        visual_density / water_level / oil_emulsification / boiling_heat_state / photo_quality
  │
  ▼
Stage3: 後段モデル比較  6モデル（学習）
        特徴量生成 → 固定配点 / 線形 / Ridge / RF / XGBoost / LightGBM × 4特徴量セット
        ※この段階では判断不能画像も含め全件スコア（分岐なし）
  │
  ▼
出力: スコア / グレード
```

### 2.3 採用パイプライン（検証結果を反映した最終構成）

> **本番想定の入力（2026-06-19 後半で確定）**: ①濃度（実測 or 濃度推定AI）／②動画（→最良フレーム→LLM評価）／③時間（開店前・17時〜19時）。
> 後段モデルはこの3入力を使う（時間を特徴量に追加。詳細 §9.3）。

検証結果を反映し、**判定可否ゲート（2段）・入力拡張（濃度+動画+時間）・線形回帰採用**を加えた最終構成。
（種別）=その工程の技術タイプ（ルール/LLM/学習）。★=今回改修/恒久化した区間。

```text
入力: 動画 ＋ 濃度(実測 or 濃度推定AI) ＋ 時間(開店前/17-19時)
  │
  ▼
Stage1: 前処理・上流ゲート  DensityResolver（ルール＋学習）
        代表フレーム抽出（多フレーム→湯気除外→RF-DETR抽出→最良選択）
        濃度確定（実測Brix優先 / なければ濃度推定AI）
        判定可否① 可読性ゲート: RF-DETR readable=False → 「要確認」★
  │
  ▼
Stage2: 視覚理解・採点ゲート  Seed 2.0 Pro（LLM）
        画像評価: 最良1フレーム ＋ 濃度 ＋ 時間 → 表面状態を固定JSON
                 water / oil / boiling / photo（visual_densityは将来除外, §9.5）
        判定可否② 評価ゲート: assessable=0 → 「要確認」★
  │
  ▼
Stage3: 採点・合成  線形回帰（学習）★
        特徴量生成（濃度 ＋ 動画(LLM評価) ＋ 時間）
        スコア回帰 → グレード付与（A≥80 / B60-79 / C21-59 / D<21）
  │
  ▼
Stage4: 出力生成  LLM
        スコア・グレード・要確認理由を説明文化（スコアはLLMに決めさせない）
  │
  ▼
出力: スコア / グレード / 状態(scored・要確認) / 説明文
```

> 各工程の入出力・技術・データ仕様・実装状況の詳細は
> **`精度改善_20260619/pipeline/PIPELINE_DETAIL.md`** にまとめている。

### 2.4 BytePlus提案 vs 自社構成（要点の違い）

| 観点 | BytePlus提案（§2.1） | 自社・採用（§2.3） |
|---|---|---|
| LLM呼び出し | 4次元を**並列4回**＋各3アンカー | 全項目を**1回**で固定JSON出力 |
| フレーム | 動画 fps=1 | 最良1フレーム（RF-DETR選択） |
| 後段モデル | XGBoost 二系統ヘッド | 線形回帰（説明性・安定性重視） |
| 判定可否 | 将来課題（5th call構想） | **2段ゲートを実装（§9.4）** |
| 濃度 | Brixを参考入力（最重要特徴） | 同様＋濃度推定AIで将来代替 |

### 2.5 比較の設計

| 項目 | 内容 |
|---|---|
| データ | 完了済みLLM評価 519件（100点スケール外の異常値1件を除外） |
| 分割 | train 363 / validation 52 / test 104（固定）＋ 5-fold交差検証 |
| 比較モデル | 固定配点 / 線形回帰 / Ridge回帰 / Random Forest / XGBoost / LightGBM |
| 特徴量セット | visual_only / visual+Brix / visual+Brix+時間帯 / Brixのみ |
| 評価指標 | MAE（平均誤差）/ 相関 / グレード一致率（A/B/C/D） |

※ 人間コメントは運用時に得られないため特徴量に含めていない（実運用に即した条件）。

---

## 3. 比較結果

### 3.1 主結果（`human_total_score`, test）

| モデル | 特徴量 | MAE | 相関 | グレード一致率 |
|---|---|---:|---:|---:|
| Random Forest | visual+Brix+時間帯 | **8.72** | 0.620 | 80.8% |
| LightGBM | visual+Brix+時間帯 | 8.72 | **0.634** | 78.9% |
| 線形回帰 | visual+Brix | 8.75 | 0.622 | 80.8% |
| Ridge回帰 | visual+Brix+時間帯 | 8.82 | 0.633 | 80.8% |
| XGBoost | visual+Brix+時間帯 | 8.88 | 0.632 | 80.8% |
| 固定配点 | 固定式 | 26.67 | 0.462 | 64.4% |

### 3.2 BytePlus提案値との比較

| 指標 | BytePlus提案値 | 今回最良 | 差 |
|---|---:|---:|---:|
| MAE | 11.7 | **8.72** | −2.98（改善） |
| 相関 | 0.53 | **0.634** | +0.10 |
| グレード一致率 | 74% | **80.8%** | +6.8pt |

**学習モデルは固定配点を大きく上回り、かつBytePlus提案値も全指標で上回った。**
一方で学習モデル同士の差は小さく、XGBoostだけが突出しているわけではないことも分かった。

---

## 4. 採用方針（メイン／サブ）

学習モデル間の差が小さいため、「精度」だけでなく「説明しやすさ・運用安定性」を加味して選定した。

| 役割 | モデル | 理由 |
|---|---|---|
| **メイン** | 線形回帰 / Ridge回帰 | 上位帯の精度、説明しやすさ、交差検証で最も安定（標準偏差が最小） |
| サブ（継続比較） | Random Forest | `human_total_score` でMAE最良 |
| サブ（継続比較） | LightGBM | 相関が最良 |
| サブ（提案比較軸） | XGBoost | BytePlus提案方式との比較軸として継続 |
| 不採用 | 固定配点 | 学習モデルより大幅に劣る |

→ **メインを線形回帰系で確定**し、サブ3種を継続的な比較対象として並走させる。

---

## 5. 比較を受けたツール改善（打ち手1）

### 5.1 課題の発見

予測が大きく外れたサンプル上位50件を実画像で分析したところ、原因は3つに集約された。

| 原因 | 割合 | 内容 |
|---|---:|---|
| LLM評価ミス | 42% | 白泡・脂膜・浮いた具材の白さで濃度を過大評価 |
| **画像では判断不能** | **26%** | LLMが「評価不能」と申告した画像を、後段が無理にスコアしていた |
| その他（回帰の天井効果 等） | 32% | 人間=満点でも予測が頭打ち、など |

特に **②** は「精度」以前の**パイプライン設計の問題**だった。
湯気や白飛びでLLM自身が「撮り直して」と言っている画像にも、後段が一律で約77〜80点を付けており、
人間評価（40〜100点に分散）と大きくズレていた。

### 5.2 改修内容

```text
【改修前】 全画像 → 後段で一律スコア化（判断不能画像も無理にスコア）
                                  ↓ 大外しの約1/4が発生

【改修後】 画像 ─┬─ 評価不能(assessable=0) → 「要確認/撮り直し」（スコアしない）
                └─ 評価可能(assessable=1) → 後段でスコア化
```

この改修を、**既存ファイルを変更せず**自己完結したパイプライン（`精度改善_20260619/pipeline/`）として恒久化した。
※ LLMプロンプトは変更していないため、**LLMの再実行（追加コスト）は発生していない。**

---

## 6. 最終的な精度

改修後（評価可能画像のみをスコア＝実運用に即した条件、5-fold交差検証）の精度は以下。

| 指標 | total（総合スコア） | soup（スープスコア） |
|---|---:|---:|
| **グレード一致率（A/B/C/D）** | **89.0%** | **87.9%** |
| 誤差 ±10点以内 | 71.7% | 74.6% |
| 誤差 ±15点以内 | 93.1% | 92.2% |
| 平均誤差（MAE） | 8.56点 | 8.25点 |

### 改修前後の比較

| 指標 | 改修前 | 改修後 |
|---|---:|---:|
| グレード一致率（total） | 75.7% | **89.0%**（+13.3pt） |
| グレード一致率（soup） | 69.0% | **87.9%**（+18.9pt） |
| 誤差±15点以内（total） | 85.0% | **93.1%** |

**一言でいうと「評価ランク（A/B/C/D）が当たる率＝約88〜89%」**、
点数自体も「±15点以内に約9割が収まる」水準に到達した。

---

## 6.5 追加検証: 代表フレーム抽出の高度化（品質ゲート版）

> ⚠️ **訂正（後日判明・§9参照）**: 本節の品質ゲートは `ffmpeg_middle`（中央切り出し）フレームの指標で評価していたが、
> **LLMが実際に見ていた画像は別物**（リゾルバが選んだ best フレーム）だった。よって本節の数値は無効。
> 代表フレーム抽出の高度化は既存パイプライン（RF-DETRによる最良フレーム選択）で**既に実装済み**である。詳細は §9.1。
> 以下は記録として残す（実施した検証の経緯）。

代表フレーム抽出の改善を、**LLM再実行なし（追加コストゼロ）**で検証した。
現状フレームはすべて動画中央を1枚切り出す `ffmpeg_middle` 方式で品質選別されていない。
そこで既存の画質指標（湯気・ブレ・白飛び）で低品質フレームを「要確認」へ分岐するゲートを追加し、
打ち手1に上乗せした効果を5-fold交差検証で測定した。

ゲート: `steam_haze_score≥0.12 または sharpness<20 または blowout_ratio≥0.006` → 要確認
（assessable=1の346件中112件＝32%を追加で要確認へ、残234件をスコア）

| 条件 | target | n | MAE | グレード一致率 | ±10点以内 | ±15点以内 |
|---|---|---:|---:|---:|---:|---:|
| 打ち手1のみ | total | 346 | 8.56 | 89.0% | 71.7% | **93.1%** |
| 打ち手1＋フレームゲート | total | 234 | 8.60 | 89.7% | 76.1% | 89.3% |
| 打ち手1のみ | soup | 346 | 8.25 | 87.9% | 74.6% | 92.2% |
| 打ち手1＋フレームゲート | soup | 234 | **7.76** | **91.5%** | 78.6% | 91.9% |

**結論（正直な評価）**: 効果は限定的かつまちまち。
- soupは明確に改善（MAE 8.25→7.76、グレード一致 87.9→91.5%）。
- totalは±10点以内は改善するが、MAEはほぼ横ばい・±15点以内はむしろ低下と一貫しない。
- 除外フレームの誤差は残存フレームより明確に高く（9.51 vs 7.84）、ゲート自体は機能しているが、
  改善幅に対し**追加で32%を要確認に回す代償が大きい**（assessable=0と合わせると約半数が要確認）。

**示唆**: `ffmpeg_middle`の中央フレームのままでは品質ゲートの伸びしろは小さい。
本質的な改善には、**より良いフレームを選び直す（best_sample・複数枚統合）＋LLM再評価**が必要で、
これはLLM再実行コストを伴うため別途実施を判断する（次章 8 参照）。
詳細: `精度改善_20260619/06_frame_quality/`。

---

## 7. 今後の改善点

> **訂正注記（§9参照）**: 下表の「LLMの濃度判定の精緻化」は、その後の設計確認で**前提誤りと判明し撤回**した（§9.2）。
> 濃度はLLMでなく濃度推定AI/実測が担うのが設計。**最優先の改善点は §9.6 の「教師データの質（ラベル監査・工程段階判定）」に更新**された。
> 以下は当初の記録として残す。

| 優先 | 施策 | 狙い |
|---|---|---|
| ~~高~~（撤回§9.2） | ~~LLMの濃度判定（visual_density）の精緻化~~ | ~~大外しの42%…プロンプトで補強~~（→濃度はLLM対象外。撤回） |
| 高 | **低評価データの拡充＋「要注意判定」の別建て** | 60点未満が全体の2.3%しかなく、低評価を拾う力が弱い（要注意検出率ほぼ0） |
| 中 | 代表フレームの再抽出＋LLM再評価 | best_sample/複数枚統合でより良いフレームを選び直す（品質ゲートだけでは効果限定的＝§6.5） |
| 中 | 濃度推定AIの整備 | 将来、実測濃度が渡されなくなった場合に備える（裏側で推定濃度を併走測定） |

---

## 8. 今後の改善点で見込まれる精度向上（推定）

> 第7章の各改善点について、現時点の分析に基づく**見込み**を示す。実施・検証で確定する。

| 改善点 | 現状 | 見込み | 根拠・前提 |
|---|---|---|---|
| LLM濃度判定の精緻化 | scored対象 MAE 8.5 | **MAE 7点台 / グレード一致率 90%台前半** を見込む | 大外しの42%がこの原因。ただしLLM再実行（追加コスト）が必要 |
| 要注意判定の別建て | 要注意検出率 ≈0% | **検出率を実用域へ** | 低評価データ拡充が前提。MAEより「見逃さない」価値 |
| 代表フレーム再抽出＋LLM再評価 | ffmpeg中央1枚 | **より大きな改善を見込む（要実測）** | 品質ゲート単独は効果限定的（§6.5）。フレームを選び直すにはLLM再実行コストを伴う |
| 濃度推定AIの整備 | 実測濃度に依存 | 実測濃度がなくなっても劣化を最小化 | CVでは濃度なしの後段劣化は軽微（§参考）。事前の劣化測定が目的 |

次の山は **LLMの濃度判定の精緻化**で、大外しの最大要因（42%）に直接効く。
ここはLLM再実行コストとのバランスを見て実施タイミングを判断する。

---

## 9. 追補（2026-06-19 後半: アーキテクチャ確認・入力拡張・ゲート整理）

§1〜§8の後、設計の再確認といくつかの訂正・追加検証を行った。**過去の記録は残し、ここに修正と追記をまとめる。**
すべてLLM再実行なし（**追加課金ゼロ**）で実施。

### 9.1 訂正: 代表フレーム抽出の高度化は「既に実装済み」だった

- LLMが実際に評価した画像は、リゾルバ（`DensityResolver`）が **多フレーム→湯気除外→RF-DETRスープ抽出**で選んだ
  **最良フレーム**（`prepared_best_frames/*_best.jpg`）。LLM評価済み368件すべてが best フレームを使用していた。
- よって「代表フレーム抽出の高度化」は既存パイプラインで実現済み。**§6.5の品質ゲート検証は、LLMが見ていない中央フレームの指標で測っていたため無効**。撤回する。

### 9.2 訂正: 「打ち手2（LLMの濃度判定の精緻化）」は前提誤りのため撤回

- 当初「visual_density がBrixと96%一致＝アンカリングのバグ」と捉えたが、これは**設計の意図どおり**だった。
- アーキテクチャ確認結果（メモリ・`density_resolver.py`）: **濃度はLLMではなく濃度推定AI（ResNet18, 全520件でMAE0.27）またはCSV実測が判定**し、
  LLMには濃度を**参考入力として渡す（正しい設計・リークではない）**。LLMで濃度を出すことは非現実的という判断で濃度推定モデルを別途開発済み。
- したがって「Brixを切り離す」案は不適切。打ち手2は撤回（提案ファイルに撤回明記）。
- 805型の大外しは濃度の誤りではなく、**仕込み段階など画像に写らない要因・教師点数の事情**による（§9.5）。

### 9.3 入力拡張: 濃度＋動画＋時間（slot）

本番入力に**時間（開店前 / 17時〜19時）**を加えた効果（打ち手1ゲート・5-fold OOF・線形回帰）:

| target | 特徴量 | MAE | グレード一致 | ±15点 |
|---|---|---:|---:|---:|
| total | 濃度+動画（従来） | 8.56 | 89.0% | 93.1% |
| total | **濃度+動画+時間** | **8.35** | 88.7% | 91.6% |
| soup | 動画のみ（従来） | 8.25 | 87.9% | 92.2% |
| soup | **濃度+動画+時間** | **8.04** | 87.6% | 90.5% |

→ **時間追加でMAEが改善**（グレード/±15は<1ptの微減でCVノイズ範囲）。本番採用し、パイプラインを `visual_plus_brix_slot` に更新・再学習済み。

### 9.4 判定可否ゲートの整理（「判定できる画像か」の判定を重視）

ゲート候補を比較（5-fold OOF）。**結論: 採点ゲートは打ち手1（LLM_assessable）が最良の費用対効果**。

| ゲート | カバレッジ | total グレード一致 | total MAE |
|---|---:|---:|---:|
| baseline（全件） | 100% | 75.7% | 9.41 |
| **LLM_assessable（打ち手1・採用）** | **66.7%** | 89.0% | **8.56** |
| RF-DETR可読性（readable） | 71.3% | 87.0% | 8.93 |
| RF-DETR可読性（最厳 assessable） | 42.6% | 90.5% | 9.03 |
| both | 42.4% | 91.4% | 8.91 |

- 最厳ゲートはグレードを+1.5pt上げるためにカバレッジを半減させ、MAEはむしろ悪化。割に合わない。
- ただし**両者は競合せず別ステージ**。本番は2段で運用する:
  ① **上流（LLMを呼ぶ前）= RF-DETRスープ可読性**（撮影/抽出できない画像を弾く）
  ② **採点直前 = LLM_assessable**（LLM自身が評価不能とした画像を弾く）
- パイプラインを2段ゲート対応に更新（`readable` 入力に対応。どちらか不可で「要確認」）。

### 9.5 訂正: visual_density 廃止は「精度中立」だが設計上は正しい

- visual_density を後段特徴量から外しても精度はほぼ不変（total グレード一致 同等・soup ±15 改善/total ±15 微減のまちまち）。
- 「96%転記の4%は誤データ」という指摘は妥当だが、後段にはbrixが同じ情報を持つため実害は出ていなかった。
- 結論: **精度向上目的ではなく、設計整合（濃度はLLMで出さない）＋シンプル化として、LLM出力からvisual_densityを外すのが正しい**。
  （LLM出力の変更はLLM再実行を伴うため、適用は別タイミング。）

### 9.6 目標精度（グレード95% / ±15で98%）への現実的見立て

- 最も厳しくゲートしても（カバレッジ42%）グレード一致は **91.4%（total）/92.7%（soup）が天井**、±15点も最大93%程度。
- **95%/98%はゲート調整だけでは届かない。** 次の主戦場は**教師データの質**（→ §9.7で実測）。
- モデル・ゲート・プロンプトはほぼ絞り切っており、伸びしろはデータ側にある。

### 9.7 教師ラベル監査: 精度天井の正体（追加課金ゼロ）

「同じ観測状態（LLM評価＋濃度＋時間が同一＝モデルから区別不能）の群で人間スコアがどれだけ割れるか」を測定し、
モデルで原理的に当てられない**ノイズ床**を定量化した。対象 assessable=1（346件）。

| 指標 | total | soup |
|---|---:|---:|
| 説明可能上限（R²上限） | **50%** | **44%** |
| ノイズ床 MAE（群平均予測でも残る誤差） | **7.13** | **6.88** |
| ノイズ床 std | 9.2点 | 8.6点 |
| ユニーク観測状態数 / 346件 | 42 | 42 |
| 群内でグレードが割れる件数（/326） | 269 | 243 |

**判明したこと:**
- **人間スコア分散の約半分（total 50%/soup 44%）は、現在の観測情報では説明できない。** 観測状態が同じでもスコアは std 約9点ばらつく。
- 346件が**わずか42種類の観測状態**に圧縮（最大62件が同一状態）。LLM出力が粗く「引き分け」が多発し、人間が違う点を付けるスープを区別できていない。
- 現行モデル実MAE（total 8.56 / soup 8.04）は**ノイズ床(7.1/6.9)まで残り約1点**＝後段モデルはほぼ天井。
- 極端な矛盾例: brix=11・dens=11の群でスコア 0 / 90 / 90（sample 358=0点）。`suspected_label_outliers.csv` に要レビュー18件。

**結論（重要）:**
1. **目標95%/98%は、現在の観測特徴量では原理的に到達不能。** 同一観測状態が複数グレードに跨る以上、どんなモデルでも分離できない。
2. **後段モデルの改善余地はほぼ無い。** 伸びしろはモデルではなく**入力情報の解像度と教師ラベルの質**。
3. 精度を上げる現実的な道:
   - **(a) ラベル品質の改善**: 疑わしい18件の確認・補正（特に358）。追加課金ゼロ。
   - **(b) 観測情報の高解像度化**: LLM出力を細かく（連続スケール・評価軸追加・識別的プロンプト）。42状態への圧縮を緩和。※LLM再実行を伴う。
   - 非視覚要因（味・香り・工程段階）は単一フレームに写らず、一定のノイズ床は不可避。

---

## 10. 店舗別検証: 採点データの品質を後段モデルで測る（2026-06-19 追加・追加課金ゼロ）

> 「提出元店舗ごとに後段モデルを作り、採点データの正確度を確認したい。採点にブレがあれば、その店舗のモデル精度は下がるはず」という観点での検証。
> 詳細・全数値: `精度改善_20260619/10_store_validation/`（`summary.md`）。スクリプト: `精度改善_20260619/scripts/run_store_validation.py`。

### 10.1 店舗の特定
評価バッチ（`training_dataset.csv` 520件）の `提出者` は全件「嘉手川航太朗」（投入担当者）で店舗を持たない。
実店舗は元データ `data/raw_csv/base_export.csv` の `提出者` 列にあり、SQLiteのmetadata内 `添付ファイル` 名で突合して各件に店舗を付与した。
モデル学習に足る規模は **神保町(assessable=1で270件)・小田原(56件)** の2店舗（他は3〜10件で参考外）。

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

**小田原は神保町より大幅に精度が低い。** これは件数差ではない:
- **n揃え対照**（神保町をn=56にサブサンプル, 5seed平均）でも 神保町 total一致 90.7% vs 小田原 60.7% と差は残る。
- **グレード割れ率**（同一観測状態で人間グレードが割れる割合＝採点ブレの直接指標）: 神保町 total 43.5% / soup 35.5% に対し **小田原 total 70.0% / soup 65.0%（約2倍）**。

補足: 神保町は平均92.7点(std11.2)でA帯集中、小田原は平均78.0点(std14.2)でA/B境界(80点)上に分布。小田原の低一致は採点ブレ(割れ率2倍・n揃えでもMAE+1.4)に加え境界分布の構造要因も重なる。

### 10.3 結論
1. **仮説は支持された** — 採点ブレの大きい店舗は後段モデル精度が明確に低い。**モデル精度は採点データ品質の代理指標として機能する。**
2. **神保町(270件)は採点品質が高く**（一致 total93.3%/soup96.7%）プール精度を牽引、**小田原(56件)は採点品質が低く**プール精度を押し下げている。
3. 次アクション: 小田原の群内矛盾サンプル（同一観測状態で total幅35点 等）を抽出し採点者と照合。店舗横断で採点基準を統一すれば、§9.7の精度天井そのものを押し上げられる余地がある（後段モデル側ではなくラベル側の改善）。

---

## 付録: 関連ファイル

| 種類 | パス |
|---|---|
| BytePlus提案資料 | `docs/byteplus_proposal.md` |
| 後段比較スクリプト | `検証/scripts/run_downstream_model_comparison.py` |
| 後段比較レポート | `reports/後段モデル比較レポート_20260619.md` |
| 大外し分析・分類 | `精度改善_20260619/01_error_analysis/`（`findings_一次分類.md`） |
| 交差検証・濃度条件 | `精度改善_20260619/04_cross_validation/` |
| 打ち手1の効果検証 | `精度改善_20260619/05_branch_comparison/` |
| 代表フレーム品質ゲート検証（§6.5・無効） | `精度改善_20260619/06_frame_quality/` |
| 打ち手2 提案（撤回） | `精度改善_20260619/07_prompt_v2/`（`打ち手2_プロンプト改善案.md`） |
| ゲート比較・入力拡張・vd廃止検証（§9） | `精度改善_20260619/08_gate_comparison/` |
| 教師ラベル監査（§9.7） | `精度改善_20260619/09_label_audit/`（`label_audit_summary.md`） |
| 店舗別検証（§10） | `精度改善_20260619/10_store_validation/`（`summary.md`） |
| 恒久化パイプライン | `精度改善_20260619/pipeline/`（`README.md` / `PIPELINE_DETAIL.md`） |
