疑似ラベル(pseudo-labeling)・半教師あり
テスト予測を仮の正解として学習に加える疑似ラベルの手順と、リークを避ける注意点を学びます。
疑似ラベルとは#
疑似ラベリングは、学習済みモデルがテストデータに付けた予測を「仮の正解」として 訓練データに加え、再学習する半教師あり的なテクニックです。ラベルなしデータを活用できます。
基本の手順#
1. 訓練データでモデルを学習し、テストを予測
2. 自信の高い予測(確率が極端に高い/低い)だけを疑似ラベルとして採用
3. 訓練データ + 疑似ラベルで再学習
4. 必要なら 1〜3 を数回繰り返すproba = model.predict_proba(X_test)[:, 1]
confident = (proba > 0.95) | (proba < 0.05) # 自信の高いものだけ
pseudo_X = X_test[confident]
pseudo_y = (proba[confident] > 0.5).astype(int)
X_aug = np.vstack([X_train, pseudo_X])
y_aug = np.concatenate([y_train, pseudo_y])
model.fit(X_aug, y_aug)リークと過学習に注意#
注意
- 自信の高い予測だけを使う(閾値を厳しめに)
- 交差検証で「疑似ラベルあり/なし」を比較し、効いたときだけ採用
- fold ごとに疑似ラベルを作り直す実装にすると、よりリークを避けられる
ヒント
疑似ラベルは、ラベルが少ない/テストが大きいコンペで効きやすい一方、効かないことも多い手法です。 「まず試す」より「ベースラインが固まってから慎重に試す」のが安全です。
理解度チェック#
次のステップ#
次は、評価指標に合わせた後処理(閾値・順位最適化)を学びます。