matlab - 无监督过滤器特征选择 - 按相关性排名

标签 matlab machine-learning correlation ranking feature-selection

我有一组特征,我希望根据它们之间的相关系数进行排名,而不考虑真实的标签(这将通过监督特征选择,对吗?)。 我的目标是选择第一个特征作为与其他特征更相关的特征,将其删除等等。

问题是如何测试向量与矩阵(所有其他向量/特征)的相关性?是否可以这样做,或者我这样做是否正确。

PS:我使用的是 MATLAB 2013b

谢谢大家

最佳答案

假设您有一个 n-by-d矩阵X其中行是实例,列是特征/维度,那么您可以简单地使用 corr 计算相关系数矩阵或 corrcoeff 功能:

% Fisher Iris dataset, 150x4
>> load fisheriris
>> X = meas;

>> C = corr(X)
C =
    1.0000   -0.1176    0.8718    0.8179
   -0.1176    1.0000   -0.4284   -0.3661
    0.8718   -0.4284    1.0000    0.9629
    0.8179   -0.3661    0.9629    1.0000

结果是 d-by-d矩阵包含 correlation coefficients每个功能与其他功能的比较。因此,对角线全为 1(因为 corr(x,x) = 1 ),矩阵也是对称的(因为 corr(x,y) = corr(y,x) )。值范围为 -11 ,其中-1表示两个变量之间的逆相关,1表示正相关,0表示不存在线性相关性。

现在,因为您想要删除平均与其他特征最相关的特征,所以您必须将该矩阵总结为每个特征一个数字。一种方法是计算平均值:

% mean
>> mean_corr = mean(C)
mean_corr =
    0.6430    0.0220    0.6015    0.6037

% most correlated feature on average
>> [~,idx] = max(mean_corr)
idx =
     1

% drop that feature
>> X(:,idx) = [];
<小时/>

编辑:

我可能应该取 C绝对值的平均值在上面的代码中,因为我们不关心两个变量是正相关还是负相关,只关心相关性有多强。

关于matlab - 无监督过滤器特征选择 - 按相关性排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637125/

相关文章:

Matlab FIR 滤波器

matlab - 通过MATLAB中的fft进行卷积定理

matlab - 在特定位置查找索引的最简单/计算有效的方法是什么?

python - 进行类别不平衡正则化的正确位置(数据级别或批处理级别)

r - 数据表中的相关矩阵

python - 值错误 : object of too small depth for desired array

matlab - 在matlab中对颜色进行排序

machine-learning - 有人可以向我解释带有 tensorflow (手写数字)的卷积神经网络的设计吗? (输入图片: 28 x 28 | output : 10 (n_classes))

machine-learning - "Training Data Set"、 "Testing Data Set"和 "Validation Data set"的区别

python - 将垂直矩阵转换为相关矩阵。 Python