高次元で2クラスデータセットの線形分離性をテストする方法はありますか?私の特徴ベクトルの長さは40です。
ロジスティック回帰実験を常に実行し、ヒット率と誤警報率を決定して、2つのクラスが線形に分離可能かどうかを判断できることはわかっていますが、それを行うための標準的な手順が既に存在するかどうかを知ることは有益です。
高次元で2クラスデータセットの線形分離性をテストする方法はありますか?私の特徴ベクトルの長さは40です。
ロジスティック回帰実験を常に実行し、ヒット率と誤警報率を決定して、2つのクラスが線形に分離可能かどうかを判断できることはわかっていますが、それを行うための標準的な手順が既に存在するかどうかを知ることは有益です。
回答:
おそらく、サポートベクターマシン(SVM)がおそらく探しているものです。たとえば、線形RBFカーネルを備えたSVMは、フィーチャをより高次元の空間にマップし、線形超平面によってクラスを分離しようとします。これは、アイデアを示す素敵な短いSVMビデオです。
SVMを機能選択用の検索方法(ラッパーモデル)でラップし、機能のいずれかがクラスを線形に分散できるかどうかを確認することができます。
LIBSVM、MSVMPack、およびScikit-learn SVMなど、SVMを使用するための興味深いツールが多数あります。
e1071
、パッケージのsvm
とkernel="linear"
実際対予測を見て。
計算上、2セットの点が線形分離可能かどうかを判断する最も効果的な方法は、線形計画法を適用することです。GLTKはその目的に最適であり、ほとんどすべての高級言語がR、Python、Octave、Juliaなどのインターフェースを提供しています。
SVMの使用を示唆する回答に関して:
SVMの使用は、次の2つの理由で線形分離性を検証するための次善のソリューションです。
SVMはソフトマージン分類子です。つまり、実際には可能であっても、完全に分離していない分離平面に線形カーネルSVMが落ち着く可能性があります。その後、エラー率をチェックすると0にならず、2つのセットが線形分離可能ではないと誤って結論付けられます。この問題は、非常に高いコスト係数Cを選択することで軽減できますが、計算コストが非常に高くなります。
SVMは最大マージン分類子です。つまり、アルゴリズムは、2つのクラスを可能な限り離して、2つのクラスを分離している分離平面を見つけようとします。繰り返しますが、これは線形分離可能性の問題への回答に関係のない何かを計算するため、不必要に計算作業を増加させる機能です。
ポイントAとBのセットがあるとしましょう:
次に、次の条件で0を最小化する必要があります。
(以下のAはマトリックスであり、上からのポイントのセットではありません)
「0を最小化する」とは、セットが線形分離可能かどうかを調べる必要がないため、実際に目的関数を最適化する必要がないことを意味します。
最後に()は分離面を定義しています。
Rの実際の例や数学の詳細に興味がある場合は、これをチェックしてください。