説明
半教師あり学習は、トレーニングデータセットにラベル付きサンプルとラベルなしサンプルの両方が含まれる状況に対処します。Scikit-learn の `sklearn.semi_supervised` モジュールは、これらのラベルなしデータを活用するように設計された推定器を提供し、それによってデータ分布をより良く理解し、新しい未知のサンプルへの汎化を改善します。これらの手法は、ラベル付きデータが少ないがラベルなしデータが豊富にある場合に特に効果的です。
半教師ありアルゴリズムは、パフォーマンス向上のためにデータ分布に関する仮定に依存することに注意することが重要です。このモジュールは、自己学習とラベル伝播の 2 つの主要なアプローチを提供します。
Yarowsky のアルゴリズムに基づいた自己学習は、`predict_proba` をサポートする任意の教師あり分類器を半教師あり方式で機能させることができます。`SelfTrainingClassifier` は、ラベルなしサンプルのラベルを反復的に予測し、これらのサブセットをラベル付きデータセットに追加します。これらのサンプルの選択は、しきい値を使用するか、k 個の最適なサンプルを選択して、予測確率に基づいて行うことができます。このプロセスは、すべてのサンプルにラベルが付くまで、または反復で新しいサンプルが選択されなくなるまで続行され、最大反復回数は `max_iter` で制御できます。
ラベル伝播は、`LabelPropagation` および `LabelSpreading` を含む、いくつかの半教師ありグラフ推論アルゴリズムを網羅しています。これらのモデルは、すべての入力データポイント間に類似性グラフを構築します。中心的な考え方は、ラベルなしデータの構造がクラス構造と一致しており、クラスラベルがラベルなし観測に伝播できるということです。`LabelPropagation` は入力ラベルのハードクランプを実行しますが、`LabelSpreading` は正則化プロパティを持つ損失関数を最小化することで、より堅牢なアプローチを提供し、ノイズに対する耐性を高めます。どちらのモデルも、RBF および KNN のような組み込みカーネルメソッドをサポートしており、スケーラビリティとパフォーマンスに影響を与えます。RBF カーネルはメモリ集約的になる可能性のある密なグラフを作成しますが、KNN カーネルは疎なグラフを生成し、メモリ効率を向上させ、実行時間を短縮します。
これらの手法は、手動でのラベリングが高価または時間のかかるタスクに役立ち、利用可能な豊富なラベルなしデータを活用することで、より堅牢で正確なモデルの作成を可能にします。自己学習とラベル伝播のどちらを選択するかは、特定のデータセットの特性と、ラベルなし情報を活用するための望ましいアプローチによって異なります。
Scikit-learn 半教師あり学習のハイライト
半教師あり分類をサポート
汎化性能向上のためにラベルなしデータを活用
自己学習アルゴリズムを含む
ラベル伝播およびラベル広がりをサポート
ラベル伝播のための類似性グラフを構築
RBF および KNN カーネルメソッドを提供
伝播におけるラベルクランプの制御を許可
自己学習のための反復学習プロセス
自己学習のためのさまざまな教師あり分類器に適応可能
ラベル付きデータが限られているシナリオを処理
根本的なデータ分布の理解を向上
Scikit-learn 半教師あり学習をはじめる
モデルへのアクセス: `sklearn.semi_supervised` から関連する推定器をインポートします。
データの準備: ラベル付きサンプルとラベルなしサンプルを整理します。
推定器の設定: 希望するパラメータで `SelfTrainingClassifier` または `LabelPropagation`/`LabelSpreading` をインスタンス化します。
モデルのトレーニング: 準備されたデータセットに選択した推定器を適合させます。
ラベルの予測: トレーニング済みのモデルを使用して、新しいデータのラベルを予測します。
パフォーマンスの評価: モデルの精度と汎化能力を評価します。
Scikit-learn 半教師あり学習の使用例
- テキスト分類
- 画像認識
- 不正検出
- 顧客セグメンテーション
- 医療診断
- 音声認識




