Diff of /D-GSMLM/D-GSMLM.m [000000] .. [edb3de]

Switch to side-by-side view

--- a
+++ b/D-GSMLM/D-GSMLM.m
@@ -0,0 +1,160 @@
+
+clear all
+clc
+
+tic
+
+ load dataset.mat; %Partition Dataset for the 5 fold test
+
+
+% rng('default');     % reset random generator.
+opts.tFlag = 1;     % terminate after relative objective value does not changes much.
+opts.tol = 10^-5;   % tolerance.  
+opts.maxIter = 1000; % maximum iteration number of optimization.
+
+
+for n=1:5
+    test_VBM=Xt_VBM{1,n};
+     test_CC=Xt_CC{1,n};
+     test_Yt=Yt_SNP{1,n}(:,1); 
+
+    task.DT{1}=X_VBM{1,n};
+    task.DT{2}=X_CC{1,n};
+    respons=Y_SNP{1,n}(:,1);
+    task.target{1}=Y_SNP{1,n}(:,1); %1:rs429358
+    task.target{2}=Y_SNP{1,n}(:,1); %2:rs429358
+    task.lab{1}=Y{1,n};
+    task.lab{2}=Y{1,n};
+    gnd=task.lab{1};
+
+    task.num=2;
+
+ 
+
+
+ paraset=[0.0000001 0.0000003 0.000001 0.000003 0.00001];
+
+
+
+
+
+    for j=1:length(paraset)
+        opts.rho1=paraset(j);
+        for k=1:length(paraset)
+            opts.rho_L3=paraset(k);
+            opts.init =2; % guess start point from data ZERO.
+            kfold=5;
+            kk=1;     
+            % construct the index of cross_validation for each task.
+            [tcv fcv]=f_myCV(gnd',kfold,kk); 
+            %% begin to 5-fold.
+            for cc=1:kfold 
+                task.X = cell(task.num,1);
+                task.Y = cell(task.num,1);
+                for i=1:task.num                  
+                    trLab=tcv{cc}';
+                    % generate the task.              
+                    task.X{i}=task.DT{i}(trLab,:);               
+                    task.Y{i}=task.target{i}(trLab);
+                    task.label{i}=task.lab{i}(trLab);
+                end
+                %----------Main Algorithm---------------        
+
+                 
+                  [S, D] = f_lapMatrix(task.Y{1});
+                   [W, epsvalue] = f_MTM_APG(task.X,task.Y,opts,S, D);
+                % find the selected features for each task. 
+                trLab=tcv{cc}';
+                teLab=fcv{cc}';
+                pl=task.DT{1}(teLab,:)*W(:,1);
+                pl2=task.DT{2}(teLab,:)*W(:,2);      
+
+                et(cc)=sqrt(mean((pl-respons(teLab,1)).^2))+sqrt(mean((pl2-respons(teLab,1)).^2));                                    
+                a=respons(teLab,1)-mean(respons(teLab,1));b=pl-mean(pl);
+                a2=respons(teLab,1)-mean(respons(teLab,1));b2=pl2-mean(pl2);
+              
+                co(cc)=abs(sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)))+abs(sum(a2.*b2)/sqrt(sum(a2.^2)*sum(b2.^2)));%+abs(sum(a3.*b3)/sqrt(sum(a3.^2)*sum(b3.^2)))+abs(sum(a4.*b4)/sqrt(sum(a4.^2)*sum(b4.^2)));
+            end       
+            res_kfold_CO(kk)=mean(co);
+            res_kfold_RMSE(kk)=mean(et);  
+            res_CO(j,k)=mean(res_kfold_CO);
+            res_RMSE(j,k)=mean(res_kfold_RMSE);
+        end
+    end
+    ndim=size(res_RMSE);
+    tempRMSE=10;
+    tempCO=0;
+    for ii=1:ndim(1)
+        for jj=1:ndim(2)
+               if  res_CO(ii,jj)>tempCO
+                 tempCO=res_CO(ii,jj);
+                 paraSet=[ii,jj];
+               end
+        end
+    end
+    paraSet
+
+    test_opts.rho1=paraset(paraSet(1));
+    test_opts.rho_L3=paraset(paraSet(2));
+    Final_para{n}=paraSet;
+    test_opts.tFlag = 1;     % terminate after relative objective value does not changes much.
+    test_opts.tol = 10^-5;   % tolerance. 
+    test_opts.maxIter = 1000; % maximum iteration number of optimization.
+    test_opts.init = 2;  % guess start point from data ZERO.
+
+        [newtask.S, newtask.D] = f_lapMatrix(task.DT{1});
+        [newW, epsvalue] = f_MTM_APG(task.DT,task.target,opts,newtask.S, newtask.D);
+
+    trainpl=task.DT{1}*newW(:,1);
+    trainpl2=task.DT{2}*newW(:,2);
+
+    trainRMSE(n)=sqrt(mean((trainpl-task.target{1}).^2));
+    trainRMSE2(n)=sqrt(mean((trainpl2-task.target{2}).^2));
+
+    aa=task.target{1}-mean(task.target{1});bb=trainpl-mean(trainpl);
+    aa2=task.target{2}-mean(task.target{2});bb2=trainpl2-mean(trainpl2);
+
+    trainCO(n)=sum(aa.*bb)/sqrt(sum(aa.^2)*sum(bb.^2));
+    trainCO2(n)=sum(aa2.*bb2)/sqrt(sum(aa2.^2)*sum(bb2.^2));
+
+
+
+    testpl=test_VBM*newW(:,1);  
+
+     testpl2=test_CC*newW(:,2);
+
+    testRMSE(n)=sqrt(mean((testpl-test_Yt).^2));
+    testRMSE2(n)=sqrt(mean((testpl2-test_Yt).^2)); 
+
+
+    Weight{n}=newW;
+
+    aa=test_Yt-mean(test_Yt);bb=testpl-mean(testpl);
+    aa2=test_Yt-mean(test_Yt);bb2=testpl2-mean(testpl2);
+
+    testCO(n)=sum(aa.*bb)/sqrt(sum(aa.^2)*sum(bb.^2));
+    testCO2(n)=sum(aa2.*bb2)/sqrt(sum(aa2.^2)*sum(bb2.^2));
+
+
+    p{n}=testpl;
+    p2{n}=testpl2;
+
+end
+
+toc
+RMSE_VBM1=[mean( trainRMSE) std( trainRMSE)]
+RMSE_CC2=[mean( trainRMSE2) std( trainRMSE2)]
+
+
+CC_VBM1=[mean( trainCO) std( trainCO)]
+CC_CC2=[mean( trainCO2) std( trainCO2)]
+
+
+RMSE_VBM11=[mean(testRMSE) std(testRMSE)]
+RMSE_CC22=[mean(testRMSE2) std(testRMSE2)]
+
+
+CC_VBM11=[mean(testCO) std(testCO)]
+CC_CC22=[mean(testCO2) std(testCO2)]
+
+