Hello, i am using matlab cvx for classification, the input data is a random data of positive and negative numbers as the samples and the labels are -1 for negative numbers and +1 for positive numbers, first i train cvx with some training randomly generated data and then i test it. in the test i require cvx to predict the labels but for some reason it always predicts all the labels to be -1. i did that with two different equations for classifications from the same paper i am reading which is “interaction between financial risk measures and machine learning methods” jun-ya gotoh.
plus when i increase the number of samples (s) over 1000 the training code doesnt work
here is the code
clc close all clear all s=1000; %number of samples %randomly generated samples samplesneg1 = -1 +.07*rand(s,1); samples1 = 1+.07*rand(s,1); y = [ zeros(s/2,1) ; ones(s/2,1) ]; for i =1:length(y) if(y(i)<1) y(i)=-1; end end trainneg1 = samplesneg1(1:s/2 , :); train1 = samples1(1:s/2 , :); x = [ trainneg1 ; train1 ]; m=length(y); %generating test samples xt= [ samplesneg1((s/2 +1):s, :) ; samples1((s/2 +1):s , :) ]; xt = xt (randperm (length (xt))); n= size(x(1,:)); %size of one sample cvx_begin variables w(n) minimize ( ((1/2)* norm(w,2)^2)); subject to for i=1:m ( y(i)*((w*(x(i,:))') -1)) >= 0; end cvx_end disp('after') labelsT = ; for i=1:length(xt) if(xt(i)<0) labelsT(i)=-1; else if (xt(i)>0) labelsT(i)=1; end end end w1=w; u=length(xt); cvx_begin variables yf(s) minimize ( ((1/2)* norm(w1,2)^2) ); subject to for i=1:m (yf(i)* ((w1*(xt(i,:))') -1 )) >= 0; end cvx_end for i=1:length(yf) if(yf(i)<=0) yf(i)=-1; else yf(i)=1; end end c=0; L = labelsT; for i=1:length(L) if(L(i)~=yf(i)) c=c+1; end end error = (c/length(L))*100