-
Notifications
You must be signed in to change notification settings - Fork 27
/
define_approach_SSVEP.m
166 lines (166 loc) · 7.3 KB
/
define_approach_SSVEP.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
%% SSVEP paradigm evaluation
% 03-21-2018
% Okba Bekhelifi, <[email protected]>
tic
% set.title = 'SSVEP_EXOSKELETON';
% set.title = 'SSVEP_DEMO';
set.title = 'SSVEP_TSINGHUA_JFPM';
% set.title = 'SSVEP_SANDIEGO';
% set.title = 'SSVEP_LARESI';
set.mode = 'SM';
report = 0;
%% vanilla CCA
% approach.classifier.learner = 'CCA';
% approach.classifier.options.harmonics = 3;
% approach.classifier.options.mode = 'sync';
%% L1 Multiway CCA
approach.classifier.learner = 'L1MCCA';
approach.classifier.options.harmonics = 2;
approach.classifier.options.max_iter = 200; % the maximal number of iteration for running L1MCCA
approach.classifier.options.n_comp = 1; % number of projection components for learning the reference signals
approach.classifier.options.lambda = 0.02; % regularization parameter for the 3rd-way (i.e., trial-way), which can be more precisely decided by cross-validation
approach.classifier.options.lambda = [0, 0.2];
approach.classifier.options.mode = 'sync';
%% Mset CCA
% approach.classifier.learner = 'MSETCCA';
% approach.classifier.options.n_comp = 1;
% approach.classifier.options.mode = 'sync';
%% MLR-SVM
% approach.features.alg = 'MLR';
% approach.features.options = [];
% approach.classifier.normalization = 'ZSCORE';
% approach.classifier.learner = 'SVM';
% approach.classifier.options.kernel.type = 'LIN';
%% MLR-HKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'HKL';
% % approach.classifier.options.lambda = 10.^[1:-.5:-8];
% approach.classifier.options.lambda = 0.02;
% approach.classifier.options.kernel.type = 'hermite';
% approach.classifier.options.kernel.params = [0.5,3,0.1,4];
% approach.classifier.options.memcache = 2e8;
% approach.classifier.options.maxactive = 400;
%% MLR-RBMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'RBMKL';
% approach.classifier.options.parameters = rbmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'g0.5'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.rul = 'mean';
%%
%% MLR-RBMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'ABMKL';
% approach.classifier.options.parameters = abmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'p2'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.com = 'ratio'; % convex | ratio
%%
%% MKL : CABMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'CABMKL';
% approach.classifier.options.parameters = cabmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'g1'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.com = 'convex'; % linear | convex
%%
%% MKL : SIMPLEMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'SIMPLEMKL';
% approach.classifier.options.parameters = smksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'g1'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
%% MKL : GMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'GMKL';
% approach.classifier.options.parameters = gmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'p2'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.sig = 1;
%%
%% MKL : GLMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'GLMKL';
% approach.classifier.options.parameters = glmksvm_parameter();
% approach.classifier.options.parameters.C = 1;
% approach.classifier.options.parameters.ker = {'l', 'g0.1'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.p = 2;
%% MKL : NLMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'NLMKL';
% approach.classifier.options.parameters = nlmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'g10'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.p = 1;
% approach.classifier.options.parameters.lam = 1;
%% MKL : LMKL
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'LMKL';
% approach.classifier.options.parameters = lmksvm_parameter();
% approach.classifier.options.parameters.C = 10;
% approach.classifier.options.parameters.ker = {'l', 'g10'};
% approach.classifier.options.parameters.nor.dat = {'true', 'true'};
% approach.classifier.options.parameters.nor.ker = {'true', 'true'};
% approach.classifier.options.parameters.opt = 'libsvm';
% approach.classifier.options.parameters.gat.typ = 'linear_sigmoid'; % gating model function [linear_softmax, linear_sigmoid, rbf_softmax]
% approach.classifier.options.parameters.loc.typ = 'linear'; % gating model complexity [linear, quadratic]
% approach.classifier.options.parameters.nor.loc = 'true';
% approach.classifier.options.parameters.see = 7332; % seed
%% TRCA
% approach.classifier.learner = 'TRCA';
% approach.classifier.options.num_fbs = 5;
% approach.classifier.options.is_ensemble = 0;
%% FBCCA
% approach.classifier.learner = 'FBCCA';
% approach.classifier.options.harmonics = 5;
% approach.classifier.options.nrFbs = 5;
% approach.classifier.options.a = 1.8;
% approach.classifier.options.b = 0.4;
% approach.classifier.options.mode = 'sync';
% approach.classifier.options.a = [0, 2.5];
% approach.classifier.options.b = [0, 1.5];
%% ITCCA
% approach.classifier.learner = 'ITCCA';
%% Gaussian Process
% approach.features.alg = 'MLR';
% approach.classifier.learner = 'GP';
% approach.classifier.options.mean = 'Const';
% approach.classifier.options.cov = 'SEiso'; % kernel
% approach.classifier.options.hyp.mean = 0;
% approach.classifier.options.hyp.cov = log([0.5 0.5]);
% approach.classifier.options.inference = 'Laplace';
% approach.classifier.options.likelihood = 'Logistic';
% approach.classifier.options.nfunc = 10;
%%
approach.cv.method = 'KFOLD';
approach.cv.nfolds = 0;
% approach.cv.nfolds = 5;
approach.cv.parallel.isWorker = 1;
approach.cv.parallel.nWorkers = 3;
%%
[results, output, model] = run_analysis_SSVEP(set, approach, report);
utils_get_time(toc);
%% Report analysis
% data sets, approach,
% subject method