Newer
Older
TIASJudgeModel / docs / 06_TEST / TEST_05_色特徴分類器の実験.md

色特徴分類器の実験 (Color Feature Classifier Experiments)

舌領域の画素から取った色の特徴量(107 次元.SPEC_02「色特徴分類器」)と古典的な分類器で舌色 5 分類を行い,CNN(TEST_03・TEST_04)と同じ分割・同じ評価で比べた結果.ラベルが舌の色そのものであり,データが 1085 枚と少ないため,手作りの色特徴のほうが強い可能性を確かめる目的で行った.表は uv run python scripts/summarize_cv.py runs で再生成できる.

項目内容
実行日時2026-09-28 10:54〜11:30 頃
実行場所Newton・Archimedes の CPU(GPU は使わない.tias-remote run --cpu.2 台に 9 本ずつ)
本数18 本(ロジスティック回帰・勾配ブースティング × ややあり込み/除外 × seed 42・43・44 = 12 本,ロジスティック回帰+重み inverse × 2 条件 × 3 seed = 6 本)
分類器logistic(標準化+多クラスのロジスティック回帰.C を 0.01〜100 の 5 候補から選ぶ)・hist_gb(HistGradientBoostingClassifier.学習率 2 × 深さ 2 の 4 候補から選ぶ)
候補の選び方fold ごとに,学習用データで各候補を学習し,内側の検証の macro F1 が最良の候補を採用する(CNN の最良エポックの選び方に対応)
コードc66b8bd-dirty(本ブランチの実装を実行時点で未コミットのまま使用.同じ seed で CNN と split.json が完全に一致することはテストで確認済み)

結果 (Results)

common(「あり」と淡紅)の macro F1・正解率と,all(ややあり込みの全体)の macro F1.15 fold の平均 ± 標準偏差.CNN は各モデルの最良の構成だけを抜粋した(全体は TEST_03・TEST_04).

モデル条件common macro F1common 正解率all macro F1mild→淡紅
色特徴+ロジスティック回帰込み0.630 ± 0.0520.721 ± 0.0350.556 ± 0.0430.33
色特徴+ロジスティック回帰除外0.644 ± 0.0400.754 ± 0.0310.520 ± 0.0340.55
色特徴+ロジスティック回帰(重み inverse)込み0.568 ± 0.0380.618 ± 0.0360.541 ± 0.0340.21
色特徴+ロジスティック回帰(重み inverse)除外0.599 ± 0.0400.672 ± 0.0290.533 ± 0.0360.38
色特徴+勾配ブースティング込み0.626 ± 0.0490.712 ± 0.0340.555 ± 0.0440.33
色特徴+勾配ブースティング除外0.627 ± 0.0640.747 ± 0.0370.512 ± 0.0420.54
ResNet-50(lr 1e-3・重み sqrt)込み0.590 ± 0.0570.666 ± 0.0700.554 ± 0.0430.25
ResNet-50(lr 1e-3)除外0.637 ± 0.0620.748 ± 0.0450.519 ± 0.0560.48
ConvNeXt-Tiny(重み inverse)除外0.632 ± 0.0600.745 ± 0.0300.528 ± 0.0430.47

common でのクラス別再現率(15 fold の平均):

モデル条件淡白淡紅紅暗赤紅紫
色特徴+ロジスティック回帰込み0.560.730.650.820.41
色特徴+ロジスティック回帰除外0.480.880.590.770.36
色特徴+ロジスティック回帰(重み inverse)込み0.810.560.790.630.60
色特徴+ロジスティック回帰(重み inverse)除外0.780.700.710.630.52
ResNet-50(lr 1e-3)除外0.590.830.610.790.39

CNN との対応比較 (Paired Comparison)

色特徴+ロジスティック回帰 − CNN の common macro F1(同じ条件・seed・fold どうし.15 fold).正の値は色特徴のほうが良いことを表す.

比べた CNN込み色特徴が上回った fold除外色特徴が上回った fold
ConvNeXt-Tiny(対策なし)+0.089 ± 0.06514 / 15+0.052 ± 0.06311 / 15
ConvNeXt-Tiny(重み inverse)+0.045 ± 0.06911 / 15+0.012 ± 0.0638 / 15
ResNet-50(lr 1e-3)+0.084 ± 0.09313 / 15+0.008 ± 0.0638 / 15
ResNet-50(lr 1e-3・重み sqrt)+0.041 ± 0.07612 / 15+0.011 ± 0.0699 / 15
ViT-Small+0.051 ± 0.08211 / 15+0.064 ± 0.07413 / 15
EfficientNet-B0(lr 1e-3)+0.102 ± 0.06214 / 15+0.067 ± 0.06113 / 15
色特徴+勾配ブースティング+0.005 ± 0.0457 / 15+0.018 ± 0.05710 / 15

重み inverse の効果(色特徴+ロジスティック回帰.対策あり − なし): common macro F1 は込み −0.062(0/15 fold),除外 −0.046(2/15 fold).淡白 +0.25〜0.30・紫 +0.16〜0.18 に対して淡紅 −0.17〜0.18・暗赤紅 −0.14〜0.20.

分かったこと (Findings)

  1. 色特徴+ロジスティック回帰は,これまでのどの CNN と比べても同等以上だった.除外では common macro F1 0.644 で CNN の最良(ResNet-50 lr 1e-3 の 0.637・ConvNeXt+inverse の 0.632)と並び(対応比較で +0.01 前後.8/15 fold),込みでは 0.630 で CNN の最良(0.590)を約 +0.04 上回った(11〜14/15 fold)
  2. fold 間のばらつきが CNN より小さい(標準偏差 0.040〜0.052.CNN は 0.045〜0.070).seed による揺れもほぼ無い(mild→淡紅 の割合の標準偏差 0.01)
  3. 「ややあり」の込み/除外による差が小さい(+0.014.9/15 fold).CNN は除外で大きく上がった(ResNet-50 で +0.09).CNN は境界例を入れると学習が乱れるが,単純な線形モデルは影響を受けにくいと考えられる
  4. 勾配ブースティングはロジスティック回帰と同程度か少し下(除外で −0.018).非線形な分類器にしても伸びない
  5. ロジスティック回帰で選ばれた正則化は強め(C = 0.1 が 30 fold 中 17,0.01 が 10)で,単純なモデルで十分なことを示す
  6. 重み inverse は macro F1 を下げたが,淡白 0.81・紫 0.60 と,少数クラスの再現率はこれまでで最も高い.淡紅・暗赤紅との入れ替わりが大きすぎて macro F1 では損になる.用途(見逃したくないクラスがあるか)によっては選択肢になる
  7. 計算コストは極めて小さい.1 本(5 fold)の所要の大半は画像の読み込みと特徴抽出(Archimedes で約 62 秒,Newton で約 115 秒)で,ロジスティック回帰の学習は 5 fold で約 1 秒.GPU が要らない

注意 (Caveats)

  • 差の多くは fold 間のばらつき(標準偏差 0.04〜0.07)と同程度で,確定的に言えるのは「色特徴+ロジスティック回帰は CNN に劣らない(込みでは上回る)」まで
  • 比較相手の CNN の学習率・対策は結果を見て選んだもの(TEST_03・TEST_04)で,CNN 側に有利な比較になっている.一方,色特徴側の候補(C など)は内側の検証だけで選んでおり,held_out は見ていない
  • 特徴の定義(ヒストグラムの範囲・ビン数)は TEST_02 の集計値(全データの平均色)を根拠に固定した.範囲を決めるのに全データの平均だけを使っており,ラベルごとの分布は使っていない
  • TIASjudge のルールベース(平均色による判定)との比較ではない(Step 6 は保留中).ただし「色の統計だけで CNN 並み」という結果は,ルールベースとの比較の土台になる

次の一手 (Next Steps)

  • CNN と色特徴の併用(CNN の予測確率と色特徴の分類器の予測確率の平均,または CNN の特徴と色特徴の連結).両者の誤り方が違えば上乗せが期待できる
  • どの特徴が効いているか(ロジスティック回帰の係数・特徴の絞り込み)を調べる.平均色だけで足りるのか,分布の形(分位点・ヒストグラム)が効いているのかが分かれば,TIASjudge のルールの改良にも使える
  • ルールベース(Step 6)との比較: 同じ色空間で「平均色だけ」の分類器を作れば,TIASjudge に近い条件で比べられる

実験 ID (Run IDs)

手元の runs/ に回収済み(.gitignore 対象).名前の color_logistic・color_hist_gb が分類器,末尾 _cwinv が重み inverse を表す.実験 ID の日時は 2026-09-28 10:54〜11:22.

ls -d runs/*_cv_color_*