├── README.md ├── MFS-MCDM.m └── Topsis.m /README.md: -------------------------------------------------------------------------------- 1 | # MFS-MCDM-Multi-label-feature-selection-using-multi-criteria-decision-making-2020 2 | https://doi.org/10.1016/j.knosys.2020.106365 3 | Published in Knowledge-Based Systems journal 4 | # https://www.sciencedirect.com/science/article/abs/pii/S0950705120305116 5 | -------------------------------------------------------------------------------- /MFS-MCDM.m: -------------------------------------------------------------------------------- 1 | 2 | % MFS-MCDM: Multi-label feature selection using multi-criteria decision making-2020 3 | 4 | function S1= MFS_MCDM(dataTrain,dataTrainLabels) 5 | 6 | [~, feature_num] = size( dataTrain); 7 | Lambda = 10; 8 | D = pinv(dataTrain'*dataTrain + Lambda*eye(feature_num)) * dataTrain'*dataTrainLabels; 9 | for t = 1:num_class 10 | w(t) = entropy(dataTrainLabels(:,t)); 11 | end 12 | W = w./sum(w); 13 | rCloseness = Topsis(D,ones(1,feature_num),W); 14 | [SW S1] = sort(-rCloseness); 15 | end 16 | -------------------------------------------------------------------------------- /Topsis.m: -------------------------------------------------------------------------------- 1 | function RC = Topsis(M,Redundancy,W) 2 | %%%%%%%% step 1:normalization %%%%%%%%%%%%%%%%%% 3 | % M1=M.^2; 4 | % M2=sqrt(sum(M1)); 5 | [row column]=size(M); 6 | % r=zeros(row,column); 7 | % for i=1:row 8 | % for j=1:column 9 | % r(i,j)=M(i,j)/M2(j);%normalized decision matrix 10 | % end 11 | % end 12 | r = M; 13 | %%%%%%%% step 2:Multiply Weighting %%%%%%%%%%%%%%%%%% 14 | w1=zeros(row,column); 15 | for i=1:row 16 | for j=1:column 17 | w1(i,j)=r(i,j)*W(j); 18 | end 19 | end 20 | %%%%%%%%%% 21 | for i=1:row 22 | for j=1:column 23 | w1(i,j)=r(i,j)*Redundancy(i); 24 | end 25 | end 26 | %%%%%%%% step 3:Find ideal & negative ideal %%%%%%%%%%%%%%%%%% 27 | ideal=max(w1); 28 | nideal=min(w1); 29 | 30 | %%%%%%%% step 4:Calculate seperation from ideal & negative ideal %%%%%%%%%%%%%%%%%% 31 | AP=zeros(row,column); 32 | for i=1:row 33 | for j=1:column 34 | AP(i,j)=(w1(i,j)-ideal(j))^2; 35 | end 36 | end 37 | A1=sqrt(sum(AP, 2)); 38 | AN=zeros(row,column); 39 | for i=1:row 40 | for j=1:column 41 | AN(i,j)=(w1(i,j)-nideal(j))^2; 42 | end 43 | end 44 | A2=sqrt(sum(AN, 2)); 45 | %%%%%%%% step 5:Calculate Relative Closness %%%%%%%%%%%%%%%%%% 46 | RC=zeros(1,row); 47 | for i=1:row 48 | RC(i)=A2(i)/(A1(i)+A2(i)); 49 | end 50 | 51 | end 52 | --------------------------------------------------------------------------------