|
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 |
|