선형 분리 성 테스트


20

높은 차원에서 2 클래스 데이터 세트의 선형 분리 성을 테스트하는 방법이 있습니까? 내 특징 벡터의 길이는 40입니다.

나는 항상 로지스틱 회귀 실험을 수행하고 두 클래스가 선형으로 분리 가능한지 여부를 결정하기 위해 적중률과 허위 경보 비율을 결정할 수 있지만 이미 표준 절차가 있는지 아는 것이 좋습니다.


2
봐 가지고 여기 :
user603

분리 성을 표시하는 것이 유용합니다. x = 잘못 분류 된 점 수직 대 분리 평면, y = 누적 손실 (x). (샘플 플롯의 경우, 태그 SVM 및 데이터 시각화와 새 질문을하려고합니다.)
데니스

3 수업 문제는 어떻습니까? 모든 3+ 클래스 문제가 비선형입니까?
Rosy

답변:


3

아마도 지원 벡터 머신 (SVM)이 아마도 당신이 찾고있는 것일 것입니다. 예를 들어 선형 RBF 커널이있는 SVM은 기능을 더 높은 차원의 공간에 매핑하고 선형 초평면으로 클래스를 분리하려고합니다. 이것은 아이디어를 보여주는 멋진 짧은 SVM 비디오 입니다.

기능 선택을위한 검색 방법 (래퍼 모델)으로 SVM을 래핑하고 기능 중 하나가 클래스를 선형으로 분산시킬 수 있는지 확인하십시오.

LIBSVM , MSVMPackScikit-learn SVM 등 SVM을 사용하는 데 유용한 도구가 많이 있습니다 .


1
+1. 마치 Nik이 SVM을 듣지 못한 채 SVM을 묘사 한 것처럼 보입니다. R에서는 (신비 명) 사용할 수있는 e1071패키지의 svmkernel="linear"실제 대 예측 봐.
Wayne

1
SVM에 대해 알고 있습니다. 실제로 각 샘플을 분류하지 않고 선형 분리 가능성 을 테스트 하는 데 사용할 수 있다는 것을 몰랐습니다 .
Nik

4
@ 웨인 : Nik은 실제로 SVM을 요구하지 않습니다. 나는 이것이 왜 그의 문제에 대한 해결책이 아닌지 설명합니다.
라파엘

2
" linear RBF kernel "이 존재하지 않습니다.
Marc Claesen

당연하지 ! 의미는 데이터를 선형으로 분리 가능한 공간으로 매핑하는 RBF 커널입니다.
soufanom

17

두 점 세트가 선형으로 분리 가능한지 여부를 결정하는 가장 효과적인 계산 방법은 선형 프로그래밍 을 적용하는 것 입니다. GLTK 는 그 목적에 완벽하며 거의 모든 고급 언어는 R , Python, Octave, Julia 등 의 인터페이스를 제공합니다 .

SVM 사용을 제안하는 답변과 관련하여 :

SVM 사용은 다음과 같은 두 가지 이유로 선형 분리 가능성을 확인하는 최적의 솔루션입니다.

  1. SVM은 소프트 마진 분류기입니다. 이것은 선형 커널 SVM이 실제로 가능하더라도 완벽하게 분리되지 않는 분리 평면에 정착 할 수 있음을 의미합니다. 그런 다음 오류율을 확인하면 0이 아니고 두 세트가 선형으로 분리 가능하지 않다고 잘못 결론을 내립니다. 이 문제는 매우 높은 비용 계수 C를 선택하면 완화 될 수 있지만 계산 비용이 매우 높습니다.

  2. SVM은 최대 마진 분류기입니다. 즉, 알고리즘은 두 클래스를 분리하고 가능한 한 멀리 떨어져 있으려고 시도하는 분리 평면을 찾으려고합니다. 다시 말하지만 이것은 선형 분리 성 문제에 대한 답변과 관련이없는 것을 계산할 때 불필요하게 계산 노력을 증가시키는 기능입니다.


점 A와 B가 있다고 가정 해 봅시다.

여기에 이미지 설명을 입력하십시오

그런 다음 다음 조건에서 0을 최소화해야합니다.

(아래의 A는 위의 점 세트가 아닌 행렬입니다)

여기에 이미지 설명을 입력하십시오

"최소화 0"은 집합이 선형으로 분리 가능한지 여부를 알 필요가 없기 때문에 실제로 목적 함수를 최적화 할 필요가 없음을 의미합니다.

결국 ( 여기에 이미지 설명을 입력하십시오)은 분리 평면을 정의합니다.


여기에 이미지 설명을 입력하십시오

R 또는 수학 세부 사항의 실제 예제에 관심이 있다면 이것을 확인 하십시오 .


3
SVM은 소프트 마진 분류기입니다 ... 하드 마진 SVM을 사용하는 경우를 제외하고. 즉, SVM을 사용하는 것은 대포로 비행하는 것과 같습니다.
Marc Claesen

맞습니다. 많은 SVM 라이브러리가이 선택을 제공하지는 않지만
Raffael

2
@Raffael 모든 SVM 라이브러리는 하드 마진 분류기로 사용할 수 있습니다. 당신은 단순히 매개 변수에 대한 높은 값을 선택기음.
iliasfl

0

Linear Perceptron은 솔루션이있는 경우 솔루션을 찾도록 보장합니다. 이 방법은 큰 치수에는 효율적이지 않습니다. 두 개의 점 세트가 선형으로 분리 가능한지 여부를 결정하는 가장 효과적인 방법은 @Raffael이 언급 한 선형 프로그래밍을 적용하는 것입니다.

빠른 해결책은 퍼셉트론을 해결하는 것입니다. Matlab에서 Perceptron을 사용하여 해결하는 예제가있는 코드는 다음과 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.