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

Switch to unified view

a b/D-GSMLM/D-GSMLM.m
1
2
clear all
3
clc
4
5
tic
6
7
 load dataset.mat; %Partition Dataset for the 5 fold test
8
9
10
% rng('default');     % reset random generator.
11
opts.tFlag = 1;     % terminate after relative objective value does not changes much.
12
opts.tol = 10^-5;   % tolerance.  
13
opts.maxIter = 1000; % maximum iteration number of optimization.
14
15
16
for n=1:5
17
    test_VBM=Xt_VBM{1,n};
18
     test_CC=Xt_CC{1,n};
19
     test_Yt=Yt_SNP{1,n}(:,1); 
20
21
    task.DT{1}=X_VBM{1,n};
22
    task.DT{2}=X_CC{1,n};
23
    respons=Y_SNP{1,n}(:,1);
24
    task.target{1}=Y_SNP{1,n}(:,1); %1:rs429358
25
    task.target{2}=Y_SNP{1,n}(:,1); %2:rs429358
26
    task.lab{1}=Y{1,n};
27
    task.lab{2}=Y{1,n};
28
    gnd=task.lab{1};
29
30
    task.num=2;
31
32
 
33
34
35
 paraset=[0.0000001 0.0000003 0.000001 0.000003 0.00001];
36
37
38
39
40
41
    for j=1:length(paraset)
42
        opts.rho1=paraset(j);
43
        for k=1:length(paraset)
44
            opts.rho_L3=paraset(k);
45
            opts.init =2; % guess start point from data ZERO.
46
            kfold=5;
47
            kk=1;     
48
            % construct the index of cross_validation for each task.
49
            [tcv fcv]=f_myCV(gnd',kfold,kk); 
50
            %% begin to 5-fold.
51
            for cc=1:kfold 
52
                task.X = cell(task.num,1);
53
                task.Y = cell(task.num,1);
54
                for i=1:task.num                  
55
                    trLab=tcv{cc}';
56
                    % generate the task.              
57
                    task.X{i}=task.DT{i}(trLab,:);               
58
                    task.Y{i}=task.target{i}(trLab);
59
                    task.label{i}=task.lab{i}(trLab);
60
                end
61
                %----------Main Algorithm---------------        
62
63
                 
64
                  [S, D] = f_lapMatrix(task.Y{1});
65
                   [W, epsvalue] = f_MTM_APG(task.X,task.Y,opts,S, D);
66
                % find the selected features for each task. 
67
                trLab=tcv{cc}';
68
                teLab=fcv{cc}';
69
                pl=task.DT{1}(teLab,:)*W(:,1);
70
                pl2=task.DT{2}(teLab,:)*W(:,2);      
71
72
                et(cc)=sqrt(mean((pl-respons(teLab,1)).^2))+sqrt(mean((pl2-respons(teLab,1)).^2));                                    
73
                a=respons(teLab,1)-mean(respons(teLab,1));b=pl-mean(pl);
74
                a2=respons(teLab,1)-mean(respons(teLab,1));b2=pl2-mean(pl2);
75
              
76
                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)));
77
            end       
78
            res_kfold_CO(kk)=mean(co);
79
            res_kfold_RMSE(kk)=mean(et);  
80
            res_CO(j,k)=mean(res_kfold_CO);
81
            res_RMSE(j,k)=mean(res_kfold_RMSE);
82
        end
83
    end
84
    ndim=size(res_RMSE);
85
    tempRMSE=10;
86
    tempCO=0;
87
    for ii=1:ndim(1)
88
        for jj=1:ndim(2)
89
               if  res_CO(ii,jj)>tempCO
90
                 tempCO=res_CO(ii,jj);
91
                 paraSet=[ii,jj];
92
               end
93
        end
94
    end
95
    paraSet
96
97
    test_opts.rho1=paraset(paraSet(1));
98
    test_opts.rho_L3=paraset(paraSet(2));
99
    Final_para{n}=paraSet;
100
    test_opts.tFlag = 1;     % terminate after relative objective value does not changes much.
101
    test_opts.tol = 10^-5;   % tolerance. 
102
    test_opts.maxIter = 1000; % maximum iteration number of optimization.
103
    test_opts.init = 2;  % guess start point from data ZERO.
104
105
        [newtask.S, newtask.D] = f_lapMatrix(task.DT{1});
106
        [newW, epsvalue] = f_MTM_APG(task.DT,task.target,opts,newtask.S, newtask.D);
107
108
    trainpl=task.DT{1}*newW(:,1);
109
    trainpl2=task.DT{2}*newW(:,2);
110
111
    trainRMSE(n)=sqrt(mean((trainpl-task.target{1}).^2));
112
    trainRMSE2(n)=sqrt(mean((trainpl2-task.target{2}).^2));
113
114
    aa=task.target{1}-mean(task.target{1});bb=trainpl-mean(trainpl);
115
    aa2=task.target{2}-mean(task.target{2});bb2=trainpl2-mean(trainpl2);
116
117
    trainCO(n)=sum(aa.*bb)/sqrt(sum(aa.^2)*sum(bb.^2));
118
    trainCO2(n)=sum(aa2.*bb2)/sqrt(sum(aa2.^2)*sum(bb2.^2));
119
120
121
122
    testpl=test_VBM*newW(:,1);  
123
124
     testpl2=test_CC*newW(:,2);
125
126
    testRMSE(n)=sqrt(mean((testpl-test_Yt).^2));
127
    testRMSE2(n)=sqrt(mean((testpl2-test_Yt).^2)); 
128
129
130
    Weight{n}=newW;
131
132
    aa=test_Yt-mean(test_Yt);bb=testpl-mean(testpl);
133
    aa2=test_Yt-mean(test_Yt);bb2=testpl2-mean(testpl2);
134
135
    testCO(n)=sum(aa.*bb)/sqrt(sum(aa.^2)*sum(bb.^2));
136
    testCO2(n)=sum(aa2.*bb2)/sqrt(sum(aa2.^2)*sum(bb2.^2));
137
138
139
    p{n}=testpl;
140
    p2{n}=testpl2;
141
142
end
143
144
toc
145
RMSE_VBM1=[mean( trainRMSE) std( trainRMSE)]
146
RMSE_CC2=[mean( trainRMSE2) std( trainRMSE2)]
147
148
149
CC_VBM1=[mean( trainCO) std( trainCO)]
150
CC_CC2=[mean( trainCO2) std( trainCO2)]
151
152
153
RMSE_VBM11=[mean(testRMSE) std(testRMSE)]
154
RMSE_CC22=[mean(testRMSE2) std(testRMSE2)]
155
156
157
CC_VBM11=[mean(testCO) std(testCO)]
158
CC_CC22=[mean(testCO2) std(testCO2)]
159
160