特征选择
1皮尔逊系数1.1介绍:1.2试用范围:2.RFE递归特征消除2.1介绍2.2 python实现1皮尔逊系数
1.1介绍:
皮尔逊相关也称为积差相关(或者积矩相关)。我们假设有两个变量X,Y,那么两变量间的皮尔逊相关系数计算如下:
其中E为数学期望,cov表示协方差,N表示变量取值的个数
相关系数的绝对值越大,相关性越强,相关系数越接近于1或-1,相关系数越接近于0,相关度越弱。
通向情况下通过一下取值范围判断变量的相关强度:
相关系数绝对值: 0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关
1.2试用范围:
当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:
(1)、两个变量之间是线性关系,都是连续数据。
(2)、两个变量的总体是正态分布,或接近正态的单峰分布。
(3)、两个变量的观测值是成对的,每对观测值之间相互独立。
3.matlab实现
皮尔逊相关系数的Matlab实现(依据公式四实现):
function coeff = myPearson(X , Y)
% 本函数实现了皮尔逊相关系数的计算操作
%
% 输入:
% X:输入的数值序列
% Y:输入的数值序列
%
% 输出:
% coeff:两个输入数值序列X,Y的相关系数
%
if length(X) ~= length(Y)
error(‘两个数值数列的维数不相等’);
return;
end
fenzi = sum(X .* Y) - (sum(X) * sum(Y)) / length(X);
fenmu = sqrt((sum(X .^2) - sum(X)^2 / length(X)) * (sum(Y .^2) - sum(Y)^2 / length(X)));
coeff = fenzi / fenmu;
end %函数myPearson结束
2.RFE递归特征消除
2.1介绍
递归特征消除的主要思想是反复构建模型,然后选出最好的(或者最差的)特征(根据系数来选),把选出来的特征放到一边,然后在剩余的特征上重复这个过程,直到遍历了所有的特征。在这个过程中被消除的次序就是特征的排序。
RFE的稳定性很大程度上取决于迭代时,底层用的哪种模型。比如RFE采用的是普通的回归(LR),没有经过正则化的回归是不稳定的,那么RFE就是不稳定的。假如采用的是Lasso/Ridge,正则化的回归是稳定的,那么RFE就是稳定的。
2.2 python实现
"""使用RFE进行特征选择:RFE是常见的特征选择方法,也叫递归特征消除。它的工作原理是递归删除特征,并在剩余的特征上构建模型。它使用模型准确率来判断哪些特征(或特征组合)对预测结果贡献较大。"""from sklearn import datasetsfrom sklearn.feature_selection import RFEfrom sklearn.linear_model import LogisticRegressiontestdataset = datasets.load_iris()x = testdataset.datay = testdataset.targetmodel = LogisticRegression()rfe = RFE(model, 2)##rfe(estimator,n_features_to_select,step) estimator参数指明基模型,n_features_to_select指定最终要保留的特征数量,step为整数时设置每次要删除的特征数量,当小于1时,每次去除权重最小的特征。rfe = rfe.fit(x, y)print(rfe.support_)print(rfe.ranking_)