打开黑匣——机器学习特征篇之从矩阵到向量到矩阵
对于连接组机器学习来说,其特征(也可理解为自变量)就是功能连接矩阵,例如最常见的相关矩阵。
通常,特征以向量形式存在于分析过程中,即一行或者一列数据即为一个特征向量。而相关矩阵显然不满足这个要求,因此我们需要对它进行转换。有时候我们需要计算overlapping的边用于展示或者验证,又需要将特征向量投射回原来的矩阵。
首先,功能链接矩阵是对称矩阵。这意味着它有一半的数据都是重复的。
这种重复对于模型毫无意义,如果不处理它,可能会对复杂模型产生损害,这一点可以通过模拟数据验证。但是对于一些简单模型,例如CPM的一元线性模型,这种重复没有影响。
因此,如果要使用复杂模型我们只取一半的数据,且不要对角线。
1 | feature_mat = tril(FC_mat,-1); % FC_mat为功能链接矩阵 |
或者
1 | feature_vct = FC_mat(tril(ones(size(FC_mat)),-1)>0) |
考虑到我们可能会有还原有效特征的需求,最好将特征的索引保存下来,一并输入到计算过程中
1 | feature_idx = find(tril(ones(size(FC_mat)),-1)) |
机器学习的过程中,通常还需要进行特征的稀疏化
例如,通过相关来筛选特征
1 | [r,p ] = corr(feature_vcts_train,behav_train) |
此时,想要将稀疏的特征还原回原矩阵,将筛选同时应用与特征的索引即可
1 | feature_idx_train_sparse = feature_idx_train(p<0.05); |
然后还原到原来的矩阵
1 | FC_mat_sparse = FC_mat*0; |
打开黑匣——机器学习特征篇之从矩阵到向量到矩阵