libsvmのpythonバインディングを使用して、高次元出力(複数)でpythonでベクトル回帰をサポートする方法のアイデアまたは例を誰かが持っているかどうか尋ねたいですか?例を確認しましたが、それらはすべて出力が 1 次元であると想定しています。
2 に答える
libsvm は、このタスクに最適なツールではない可能性があります。
あなたが説明する問題は多変量回帰と呼ばれ、通常、回帰問題の場合、SVM は必ずしも最良の選択ではありません。
グループ投げ縄 (http://www.di.ens.fr/~fbach/grouplasso/index.htm - matlab) やスパース グループ投げ縄 (http://spams-devel.gforge.inria.fr/) などを試すことができます。 - さまざまなタイプの正則化で多変量回帰問題を解決する Python インターフェイスがあるようです)。
数学的フレームワークとしてのサポート ベクター マシンは、単一の予測変数に関して定式化されます。したがって、それらを実装するほとんどのライブラリは、API で 1 つのターゲット変数を使用するものとしてこれを反映します。
できることは、データ内のターゲット ディメンションごとに 1 つの SVM モデルをトレーニングすることです。
プラス面としては、各モデルが互いに独立しているため、 // クラスターでトレーニングできます
マイナス面では、サブモデルは何も共有せず、入力データの構造で個別に発見したものから恩恵を受けることはなく、共有の中間表現がないため、モデルを保存するために大量のメモリが必要になる可能性があります。
SVM のバリアントは、多次元ターゲットを予測するための再利用に適した一般的なカーネルベースの中間表現を学習するために、マルチタスク学習設定でおそらく考案できますが、これは libsvm AFAIK では実装されていません。詳細については、マルチタスク学習 SVMの Google を参照してください。
あるいは、多層パーセプトロン (一種のフィード フォワード ニューラル ネットワーク) は自然に多次元の結果を処理できるため、ターゲット間で再利用されるデータの中間表現を共有するのに適しているはずです。 -オートエンコーダーの目的関数を使用して、教師なしでトレーニングされます。
http://deeplearning.net/tutorial/を参照して、さまざまなニューラル ネットワーク アーキテクチャの紹介と、それらを効率的に実装するための実用的なツールと例を参照してください。