对于线性分类器,更大的系数是否意味着更重要的特征?

机器算法验证 回归 机器学习 分类 特征选择 线性模型
2022-01-22 08:38:18

我是一名从事机器学习的软件工程师。据我了解,线性回归(如 OLS)和 线性分类(如逻辑回归和 SVM)基于训练系数 和特征变量之间的内积进行预测:wx

y^=f(wx)=f(iwixi)

我的问题是:在模型经过训练之后(即在计算出系数之后),对于模型更准确预测更重要的特征变量,系数是否会更大?wi

换句话说,我在问是否可以通过仅按系数值对变量进行排序然后选择具有最高系数的特征来将系数的相对大小用于特征选择?如果这种方法是有效的,那么为什么没有提到特征选择(以及包装器和过滤器方法等)。

我问这个的原因是因为我遇到了关于L1 与 L2 正则化的讨论。有一段话是这样说的:

内置特征选择经常被提及为 L1-norm 的一个有用属性,而 L2-norm 没有。这实际上是 L1 范数的结果,它往往会产生稀疏系数(解释如下)。假设模型有 100 个系数,但其中只有 10 个具有非零系数,这实际上是在说“其他 90 个预测变量在预测目标值时无用”。

从字里行间看,我猜如果一个系数接近 0,那么具有该系数的特征变量一定没有什么预测能力。

编辑:我还将 z 缩放应用于我的数值变量。

3个回答

一点也不。系数的大小直接取决于为变量选择的尺度,这是一个有点武断的建模决策。

为了看到这一点,考虑一个线性回归模型,在给定花瓣长度(以厘米为单位)的情况下预测虹膜的花瓣宽度(以厘米为单位):

summary(lm(Petal.Width~Petal.Length, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  -0.363076   0.039762  -9.131  4.7e-16 ***
# Petal.Length  0.415755   0.009582  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

我们的模型实现了调整后的 R^2 值 0.9266,并将系数值 0.415755 分配给 Petal.Length 变量。

然而,以厘米为单位定义 Petal.Length 的选择非常随意,我们可以改为以米为单位定义变量:

iris$Petal.Length.Meters <- iris$Petal.Length / 100
summary(lm(Petal.Width~Petal.Length.Meters, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length.Meters, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#                     Estimate Std. Error t value Pr(>|t|)    
# (Intercept)         -0.36308    0.03976  -9.131  4.7e-16 ***
# Petal.Length.Meters 41.57554    0.95824  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

当然,这并不会真正影响拟合模型——我们只是为 Petal.Length.Meters (41.57554) 分配了比 Petal.Length (0.415755) 大 100 倍的系数。模型的所有其他属性(调整后的 R^2、t 统计量、p 值等)都是相同的。

通常,在拟合正则化线性模型时,首先将变量归一化(例如,具有均值 0 和单位方差)以避免基于所选尺度偏爱某些变量。

假设归一化数据

即使您已经对所有变量进行了归一化,具有较高系数的变量在预测中可能仍然没有那么有用,因为很少设置自变量(具有低方差)。例如,考虑具有因变量 Z 和自变量 X 和 Y 取二进制值的数据集

set.seed(144)
dat <- data.frame(X=rep(c(0, 1), each=50000),
                  Y=rep(c(0, 1), c(1000, 99000)))
dat$Z <- dat$X + 2*dat$Y + rnorm(100000)

通过构造,当两者都用于通过线性回归预测 Z 时,Y 的系数大约是 X 的系数的两倍:

summary(lm(Z~X+Y, data=dat))
# Call:
# lm(formula = Z ~ X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.4991 -0.6749 -0.0056  0.6723  4.7342 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.094793   0.031598   -3.00   0.0027 ** 
# X            0.999435   0.006352  157.35   <2e-16 ***
# Y            2.099410   0.031919   65.77   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.9992 on 99997 degrees of freedom
# Multiple R-squared:  0.2394,  Adjusted R-squared:  0.2394 
# F-statistic: 1.574e+04 on 2 and 99997 DF,  p-value: < 2.2e-16

尽管如此,X 比 Y 解释了更多 Z 的方差(用 X 预测 Z 的线性回归模型的 R^2 值为 0.2065,而用 Y 预测 Z 的线性回归模型的 R^2 值为 0.0511):

summary(lm(Z~X, data=dat))
# Call:
# lm(formula = Z ~ X, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.2587 -0.6759  0.0038  0.6842  4.7342 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 1.962629   0.004564   430.0   <2e-16 ***
# X           1.041424   0.006455   161.3   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.021 on 99998 degrees of freedom
# Multiple R-squared:  0.2065,  Adjusted R-squared:  0.2065 
# F-statistic: 2.603e+04 on 1 and 99998 DF,  p-value: < 2.2e-16

相对:

summary(lm(Z~Y, data=dat))
# Call:
# lm(formula = Z ~ Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.0038 -0.7638 -0.0007  0.7610  5.2288 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.09479    0.03529  -2.686  0.00724 ** 
# Y            2.60418    0.03547  73.416  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.116 on 99998 degrees of freedom
# Multiple R-squared:  0.05114, Adjusted R-squared:  0.05113 
# F-statistic:  5390 on 1 and 99998 DF,  p-value: < 2.2e-16

多重共线性的情况

大系数值可能具有欺骗性的第三种情况是变量之间存在显着的多重共线性的情况。例如,考虑一个数据集,其中 X 和 Y 高度相关,但 W 与其他两个不高度相关;我们试图预测 Z:

set.seed(144)
dat <- data.frame(W=rnorm(100000),
                  X=rnorm(100000))
dat$Y <- dat$X + rnorm(100000, 0, 0.001)
dat$Z <- 2*dat$W+10*dat$X-11*dat$Y + rnorm(100000)
cor(dat)
#              W             X             Y          Z
# W 1.000000e+00  5.191809e-05  5.200434e-05  0.8161636
# X 5.191809e-05  1.000000e+00  9.999995e-01 -0.4079183
# Y 5.200434e-05  9.999995e-01  1.000000e+00 -0.4079246
# Z 8.161636e-01 -4.079183e-01 -4.079246e-01  1.0000000

这些变量几乎具有相同的均值 (0) 和方差 (~1),线性回归分配给 X(大约 15)和 Y(大约 -16)的系数值(绝对值)比分配给 W(大约2):

summary(lm(Z~W+X+Y, data=dat))
# Call:
# lm(formula = Z ~ W + X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.1886 -0.6760  0.0026  0.6679  4.2232 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  1.831e-04  3.170e-03   0.058    0.954    
# W            2.001e+00  3.172e-03 630.811  < 2e-16 ***
# X            1.509e+01  3.177e+00   4.748 2.05e-06 ***
# Y           -1.609e+01  3.177e+00  -5.063 4.13e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.002 on 99996 degrees of freedom
# Multiple R-squared:  0.8326,  Adjusted R-squared:  0.8326 
# F-statistic: 1.658e+05 on 3 and 99996 DF,  p-value: < 2.2e-16

尽管如此,在模型的三个变量中,W 是最重要的:如果从完整模型中删除 W,R^2 从 0.833 下降到 0.166,而如果删除 X 或 Y,R^2 几乎没有变化。

“特征重要性”是一个非常模糊的概念,即使所有预测变量都已调整到一个共同的尺度(在涉及分类变量或偏态分布的许多实际应用中,这本身就是一个不平凡的问题)。因此,如果您避免@josliber 的答案中指出的缩放问题或@dsaxton 提出的低预测变量问题,您仍然会遇到其他问题。

例如,更有用的特征重要性度量可能是其系数与其系数的估计误差之比。具有较大估计误差的高系数不一定有助于预测。因此,即使在预先缩放的情况下,单独的系数大小也不能很好地指导“重要性”。

然而,一个预测变量可能很重要,即使它的系数的幅度与误差之比很低(即,它不是“统计显着的”)。线性模型提供了同时考虑多个预测变量的能力,因此在模型中包含“非显着”预测变量可以提高预测变量组合集合提供的整体性能。

此外,选择“重要”预测变量的尝试往往高度依赖于特定的数据样本,并且通常不能很好地扩展到进一步的样本,特别是如果变量是相关的。您可以通过在同一数据集的多个引导样本上重复特征选择来亲眼看到这一点。Frank Harrell,在这个答案中展示了如何rms在 R 中使用他的包来对特征重要性进行排名,并在这个答案中说明如何使用引导程序来获得排名的置信区间。对于那些过于重视“特征重要性”的人来说,自举可以起到警示作用。

@amoeba 指出的近 3 年前的这个问题也详细介绍了多元回归模型中特征重要性的困难。

只是为了添加到前面的答案,系数本身也无法捕捉到预测变量表现出的可变性,这对它在预测中的有用程度有很大影响。考虑简单模型

E(Yi)=α+βXi

其中是伯努利随机变量。通过将,我们也可以将该预测器的有用性设为零,但系数将始终为Xi(p)p0β