# AI開発システム（完成）— v1.0 / 2026-06-19

**役割**: AIモデル・システムを開発する側。教師データから後段スコアリングモデル（線形回帰）を
**学習**し、最終パイプラインを **5-fold OOF 交差検証** して報告用の精度値を出力する。
ここで作った学習済みモデルを「AI利用システム」へ引き渡す。

## 構成

```
AI開発システム_完成_20260619/
├─ core/soup_scoring.py    … 共有コア（特徴量生成・2段ゲート・学習・推論の全ロジック）
├─ train_model.py          … 学習: assessable=1 の行で線形回帰を学習 → models_output/
├─ validate.py             … 検証: 5-fold OOF で報告用検証値を算出 → validation_results/
├─ model_comparison.py     … 後段モデル比較（固定配点/線形/Ridge/RF/XGB/LGBM × 特徴量セット）
├─ models_output/          … 学習成果物（*.pkl + metadata.json）。利用システムへコピーする
└─ validation_results/     … 検証成果物（final_validation.csv / summary.md）
```

## 確定仕様

- **特徴量**: `visual_plus_brix_slot`（動画→LLM画像評価 ＋ 濃度brix ＋ 時間slot）
- **後段モデル**: 線形回帰（モデル間差は小さく、説明性・安定性で採用）
- **学習対象**: 2段ゲート通過後の `assessable=1` の行のみ（判断不能画像は学習に使わない）
- **グレード**: A≥80 / B60-79 / C21-59 / D<21

## 使い方

```powershell
$env:PYTHONIOENCODING="utf-8"; $env:PYTHONUTF8="1"
# 1) 学習（教師データCSVから）
& "C:\rmlenv\Scripts\python.exe" "AI開発システム_完成_20260619\train_model.py"
# 2) 検証（報告用検証値）
& "C:\rmlenv\Scripts\python.exe" "AI開発システム_完成_20260619\validate.py"
# 3) （任意）後段モデル比較
& "C:\rmlenv\Scripts\python.exe" "AI開発システム_完成_20260619\model_comparison.py"
```

入力の既定は `local_batch_api/output_full/training_dataset.csv`（`--input` で変更可）。

## 報告用 最終検証値（5-fold OOF / 線形回帰 / assessable=1 採点対象 346件）

| target | 条件 | n | MAE | 相関 | グレード一致% | ±15点以内% |
|---|---|---|---|---|---|---|
| total | 改修前(全件) | 519 | 9.43 | 0.589 | 75.3 | 84.8 |
| total | **改修後(採点対象)** | 346 | **8.35** | **0.597** | **88.7** | **91.6** |
| soup  | 改修前(全件) | 519 | 8.81 | 0.548 | 74.4 | 85.2 |
| soup  | **改修後(採点対象)** | 346 | **8.04** | 0.515 | **87.6** | **90.5** |

## 利用システムへの反映手順

学習後、`models_output/` の `*.pkl` と `metadata.json` を
`AI利用システム_完成_20260619/models/` へコピーする。
（`core/soup_scoring.py` と利用側 `scoring_engine.py` の特徴量・ゲート定義は一致させること）

## 教師データ→特徴量の上流

`training_dataset.csv` は本プロジェクトの上流（`local_batch_api/`：最良フレーム抽出→LLM画像評価→濃度確定）で生成される。
本開発システムはその出力（LLM評価＋濃度＋時間＋人間点数）を入力として学習・検証する。
