0

현재 Ethem Alpaydin의 "Introduction to machine learning"을 읽었으며 가장 가까운 중심 분류 장치를 발견하고 구현하려고했습니다. 나는 정확하게 분류자를 구현 한 것 같지만 68 %의 정확도를 얻고 있습니다. 따라서 가장 가까운 중심 분류기 자체가 비효율적입니까, 아니면 구현시 오류가 있습니까 (아래)?가장 가까운 중심 분류기는 실제로 비효율적입니까?

데이터 세트는 1,372 데이터 포인트 각각 4 개 기능을 가진 2 개 출력 클래스가 포함되어 내 MATLAB 구현 :

DATA = load("-ascii", "data.txt"); 

#DATA is 1372x5 matrix with 762 data points of class 0 and 610 data points of class 1 
#there are 4 features of each data point 
X = DATA(:,1:4); #matrix to store all features 

X0 = DATA(1:762,1:4); #matrix to store the features of class 0 
X1 = DATA(763:1372,1:4); #matrix to store the features of class 1 
X0 = X0(1:610,:); #to make sure both datasets have same size for prior probability to be equal 
Y = DATA(:,5); # to store outputs 

mean0 = sum(X0)/610; #mean of features of class 0 
mean1 = sum(X1)/610; #mean of featurs of class 1 

count = 0; 
for i = 1:1372 
    pre = 0; 
    cost1 = X(i,:)*(mean0'); #calculates the dot product of dataset with mean of features of both classes 
    cost2 = X(i,:)*(mean1'); 

    if (cost1<cost2) 
    pre = 1; 
    end 
    if pre == Y(i) 
    count = count+1; #counts the number of correctly predicted values 
    end 

end 

disp("accuracy"); #calculates the accuracy 
disp((count/1372)*100); 

답변

0

가 여기에 적어도 몇 가지 있습니다 :

  1. 당신에게 입력 공간에서 유사점을 할당하기 위해 내적을 사용하는 경우이 값은 이 아니며은 유효합니다. 내적 요소를 사용하는 유일한 이유는 모든 데이터 요소가 동일한 표준을 갖거나 규범이 중요하지 않다는 것입니다 (거의 사실이 아닙니다). 아주 순진로하더라도, 대신 유클리드 거리를 사용해보십시오 - 그것은이 비효율적 분류가

  2. 훨씬 더 나은해야 하는가? 효율성의 정의에 따라 다릅니다. 그것은 매우 간단하고 빠른 것이지만, 예측력 측면에서 보면 은 매우 불량한입니다. 사실, 이미 "장난감 모델"로 간주되는 Naive Bayes보다 나쁩니다.

  3. 코드에 문제가 있습니다 너무

    X0 = DATA(1:762,1:4); #matrix to store the features of class 0 
    X1 = DATA(763:1372,1:4); #matrix to store the features of class 1 
    X0 = X0(1:610,:); #to make sure both datasets have same size for prior probability to be equal 
    

    일단 부 표본 X0, 당신은 아직 나중에 "테스트"둘 다 훈련에 테스트하고 "X0의 요소가 없기"동안 1,220 훈련 샘플을 가지고, 이것은 확률 론적 관점에서 보면 이해가되지 않습니다. 무엇보다 먼저 훈련 세트의 정확성을 테스트해서는 안됩니다 (실제 정확도를 과대 평가 함). 두 번째로 훈련 데이터를 서브 샘플링하여 이 아니고 이퀄라이저가 사전입니다. 이 방법과는 달리 중심도 추정의 품질을 떨어 뜨리는 것일뿐입니다. 이러한 종류의 기술 (서브/오버 샘플링)은 모델 프라이어을 수행하는 모델에 대해 사전을 균등화합니다. 귀하의 방법은 (기본적으로 1/2 이전에 가정 된 생성 모델이므로) 좋은 결과가 발생하지 않습니다.