私は、アクティブなラーニングプロトコルから大きな利益を得る問題に取り組んでいます(例えば、既存のモデルと比較してラベルなしのデータのセットが与えられた場合、ラベルされていないデータのサブセットは「オラクル」でラベル付けされます)。PythonのSVMのための能動的学習(例えばプールサンプリング)
SVM(好ましくはPython)に実装されているアクティブな学習(プールサンプリング、委員会によるクエリ、または他の方法を使用)の例はありますか?
私は、アクティブなラーニングプロトコルから大きな利益を得る問題に取り組んでいます(例えば、既存のモデルと比較してラベルなしのデータのセットが与えられた場合、ラベルされていないデータのサブセットは「オラクル」でラベル付けされます)。PythonのSVMのための能動的学習(例えばプールサンプリング)
SVM(好ましくはPython)に実装されているアクティブな学習(プールサンプリング、委員会によるクエリ、または他の方法を使用)の例はありますか?
Pythonで能動的な学習を実装することは、かなり単純です。最も単純なケースでは、学習したSVM(単純な不確かさサンプリング)のdecision_functionの絶対値が最も小さい、新しいサンプルを選択するだけです。これは基本的には1行です! clf
で訓練されたSVMとX
でいくつかの非標識の例で、あなたがバイナリ分類を持っていると仮定すると、あなたは単にあなたが昨年のECMLからAL紙のための1つのように、あまりにもgithubの上の多くの異なる実装を見つけることができます
sample = X[np.argmin(np.abs(clf.decision_function(X)))]
これは素晴らしいようです!ちょっとポーズした後、なぜこの1行のコードが3+分類問題でもうまくいかないのを見ることはできません。また、np.argmax(モデリングの洗練)をスワップすると、np.argmax(データセットの適用範囲が広がるドメイン)がスワップアウトされるように見えます。より多くのクラスのために – DrTchocky
decision_functionは行列を返し、argminはそれを平坦化し、フラットベクタでインデックスを返します。ただし、行番号が必要です。したがって、2段階操作を行う必要があります。まず、2番目の軸を最大にして(最も可能性の高いクラスを取るために)、次に最小のものを選択するためにargminを実行します。 argminをargmaxにスワップすることは、あなたがすでに完全に分類しているサンプルを照会するので、積極的な学習にはあまり意味がありません。これは、あなたのモデルとは正反対です)。 – lejlot
プールベースのサンプリングの2つの一般的なクエリ方法は、不確実性サンプリングと委員会によるクエリです(詳細はpaperを参照してください)。以下のライブラリは3つの一般的な不確かさの戦略を実装しています。最小自信度、最大マージン、エントロピー、2つの委員会戦略:投票エントロピーと平均KLダイバージェンス:https://github.com/davefernig/alp
ライブラリはscikit-learnと互換性があり、 。これは、能動的学習の利点を測定するためのベースラインとしてランダムサブサンプリングを使用します。
ここに私のすべてのデータは、2(多分3)の分類器システムを持つ連続した数値データです。 – DrTchocky