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


15

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

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

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

换句话说,我想问的是,仅通过按系数值对变量排序,然后选择系数最高的特征,是否可以将系数的相对大小用于特征选择?如果此方法有效,那么为什么不选择功能(以及包装器和过滤器方法等)。

我之所以这样问,是因为我遇到了关于L1与L2正则化的讨论。有一个说明说:

经常提到内置特征选择是L1规范的有用属性,而L2规范则没有。这实际上是L1范数的结果,它倾向于产生稀疏系数(如下所述)。假设该模型有100个系数,但其中只有10个具有非零系数,这实际上是在说“其他90个预测变量对预测目标值无用”。

在两行之间阅读时,我猜想如果系数接近0,则具有该系数的特征变量的预测力必须很小。

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


1
请注意,即使代码随后将系数转换回原始变量标度,LASSO(L1-norm)和岭回归(L2-norm)分析基础的代码也应在分析之前预先缩放预测变量。那些使用未预先扩展的代码的人最终会遇到@josliber答案中指出的问题,无论他们是在做OLS,LASSO还是ridge。
EdM

3
我认为值得一提的是,当您反思一下试图用“那么具有那个系数的特征变量必须具有很小的预测能力”这一短语来表达什么时,您能准确地说明一下这到底意味着什么吗?尽管有经验,但我发现多元模型中单个变量的“预测能力”概念在概念基础上并没有达成共识。
马修·德鲁里

4
我认为这种想法的错误在于,您可能不仅仅局限于生成一个变量模型。如果您是,并且想要提供最准确的模型,那么他们肯定会这样做。如果不是这样,即如果要生成一个多元模型,那么正如@EdM回答的那样,变量重要性的概念非常非常滑,缺乏牢固的概念基础。显然,单变量模型中的预测能力与多变量设置无关。
马修·德鲁里

1
@MatthewDrury:我不确定为什么您要通过多功能来做很多事情。存在着“功能选择”(例如包装器方法)的整个领域。您是否建议该领域缺乏牢固的概念基础?
stackoverflowuser2010年

1
@ stackoverflowuser2010是的,在我看来,我可能是一个离群值,但这将是我的观点的某种准确描述。
马修·德鲁里

Answers:


24

一点也不。系数的大小直接取决于为变量选择的比例,这在某种程度上是建模的决定。

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

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解释了Z中的方差比Y多(线性回归模型预测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

与(大约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几乎不变。


1
(+1)我认为这是一个很好的答案,必须指出这一点。另一方面,我确实相信即使变量已经标准化(因此是无单位的),也有很多话要说,因此还有更多的答案空间。
马修·德鲁里

感谢您的回答。虽然您的文章很长,但并不是很全面,因为您是从小的综合数据中得出结论的。同样,R ^ 2特定于线性回归。我相信对于分类问题,更合适的错误度量是RMSE或准确性/ F1。
stackoverflowuser2010年

1
但是,如果在上一个示例中缩放数据,则唯一的有效变量是W
marcodena

11

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

例如,特征重要性的更有用度量可以是其系数与其系数的估计误差之比。具有较大估计误差的高系数不一定会对预测有所帮助。因此,即使在预先缩放的情况下,仅系数大小也不是“重要性”的良好指南。

但是,即使预测器的系数的大小与误差之比很低(即,它不是“统计上有意义的”),它也可能很重要。线性模型提供了同时考虑多个预测变量的能力,因此在模型中包含“非重要”预测变量可以改善组合的预测变量集合所提供的整体性能。

此外,选择“重要”预测变量的尝试往往高度依赖于特定数据样本,并且通常不能很好地扩展到其他样本,尤其是在变量相关的情况下。您可以通过在同一数据集的多个引导程序样本上重复功能选择来亲自查看。弗兰克·哈雷尔(Frank Harrell)在此答案中展示了如何rms在R中使用他的软件包对要素重要性进行排名,并在此答案中指出了如何使用引导程序来获得秩的置信区间。对于那些过于重视“功能重要性”的人们,引导程序可以作为一种警告。

@amoeba指出,将近3年前的这个问题也深入探讨了多元回归模型中具有特征重要性的困难。


估计误差的比率。这就是所谓的“标准化系数”吗?
HelloWorld

学生:“自定义系数 ”是当自变量和因变量都已按比例缩放为具有单位方差时的回归系数。这不包括有关系数估计误差的信息。我描述的比率是Harrell在我的第一个链接中用作变量重要性度量的Wald统计量的平方根。
EdM

6

仅添加到先前的答案中,系数本身也无法捕获预测变量表现出的可变性,这对预测变量的实用性产生很大影响。考虑简单的模型

Ëÿ一世=α+βX一世

哪里 X一世 是伯努利p随机变量。通过服用p0 我们也可以将该预测变量的有用性设为零,但系数始终为 β

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.