2016-05-03 9 views
2

私は、アクティブなラーニングプロトコルから大きな利益を得る問題に取り組んでいます(例えば、既存のモデルと比較してラベルなしのデータのセットが与えられた場合、ラベルされていないデータのサブセットは「オラクル」でラベル付けされます)。PythonのSVMのための能動的学習(例えばプールサンプリング)

SVM(好ましくはPython)に実装されているアクティブな学習(プールサンプリング、委員会によるクエリ、または他の方法を使用)の例はありますか?

+0

ここに私のすべてのデータは、2(多分3)の分類器システムを持つ連続した数値データです。 – DrTchocky

答えて

4

Pythonで能動的な学習を実装することは、かなり単純です。最も単純なケースでは、学習したSVM(単純な不確かさサンプリング)のdecision_functionの絶対値が最も小さい、新しいサンプルを選択するだけです。これは基本的には1行です! clfで訓練されたSVMとXでいくつかの非標識の例で、あなたがバイナリ分類を持っていると仮定すると、あなたは単にあなたが昨年のECMLからAL紙のための1つのように、あまりにもgithubの上の多くの異なる実装を見つけることができます

sample = X[np.argmin(np.abs(clf.decision_function(X)))] 

を選択します:https://github.com/gmum/mlls2015

+0

これは素晴らしいようです!ちょっとポーズした後、なぜこの1行のコードが3+分類問題でもうまくいかないのを見ることはできません。また、np.argmax(モデリングの洗練)をスワップすると、np.argmax(データセットの適用範囲が広がるドメイン)がスワップアウトされるように見えます。より多くのクラスのために – DrTchocky

+0

decision_functionは行列を返し、argminはそれを平坦化し、フラットベクタでインデックスを返します。ただし、行番号が必要です。したがって、2段階操作を行う必要があります。まず、2番目の軸を最大にして(最も可能性の高いクラスを取るために)、次に最小のものを選択するためにargminを実行します。 argminをargmaxにスワップすることは、あなたがすでに完全に分類しているサンプルを照会するので、積極的な学習にはあまり意味がありません。これは、あなたのモデルとは正反対です)。 – lejlot

0

プールベースのサンプリングの2つの一般的なクエリ方法は、不確実性サンプリングと委員会によるクエリです(詳細はpaperを参照してください)。以下のライブラリは3つの一般的な不確かさの戦略を実装しています。最小自信度、最大マージン、エントロピー、2つの委員会戦略:投票エントロピーと平均KLダイバージェンス:https://github.com/davefernig/alp

ライブラリはscikit-learnと互換性があり、 。これは、能動的学習の利点を測定するためのベースラインとしてランダムサブサンプリングを使用します。

関連する問題