对于没有截距的线性模型,为什么 one-hot 编码中的冗余项起到截距的作用?

数据挖掘 线性回归
2022-01-25 11:22:54

这个问题中,Elias Strehle 指出,如果我们在没有截距的线性模型上保持一次热编码期间的所有级别,冗余特征将起到截距的作用。为什么会这样?

这不是在线性模型中,截距项(,而不是)将始终具有值 1 吗?假设要编码的特征是性别,那么冗余项的某些行将是 0,而其他行将是 1。x0β0

1个回答

让我们看看假人是如何工作的:

示例:

# Some data
df = data.frame(y=c(30,32,28,10,11,9),gender=c(1,1,1,0,0,0), gender2=c(0,0,0,1,1,1))

# 1) Regression with constant and dummy
summary(lm(y~gender,data=df))

# 2) Regression without constant and dummy
summary(lm(y~gender-1,data=df))

# 3) Regression without constant and two dummies
summary(lm(y~gender+gender2-1,data=df))

结果:

案例 1: 由于假人通常作为某些基本类别的“对比”(1 与 0 /“开”与“关”),并且由于基本类别的平均值为 10,截距项等于 10,对于gender = 1,确定了与基本类别的差异(此处为 20),因为类别的平均值gender = 1为 30。(请记住,只有截距或虚拟变量的回归只是给出算术平均值)。

            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  10.0000     0.9129   10.95 0.000394 ***
gender       20.0000     1.2910   15.49 0.000101 ***

情况 2: 只考虑没有常数gender = 1,因为gender = 0我们有,所以它被删除了。现在的系数是 的平均值0+0βgender = 0gender = 1

Coefficients:
       Estimate Std. Error t value Pr(>|t|)   
gender   30.000      4.546   6.599   0.0012 **

案例 3:在不添加截距的情况下 为两组都包括一个虚拟变量(gender = 0从上面表示为),现在直接给出每个组的平均值。gender2请注意,与案例 1 相比,此处对系数的解释不同。

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
gender   30.0000     0.9129   32.86 5.11e-06 ***
gender2  10.0000     0.9129   10.95 0.000394 ***

有趣的是当您添加一些额外的时:x

一些新数据,现在包括x

df = data.frame(y=c(30,32,28,10,11,9),gender=c(1,1,1,0,0,0), gender2=c(0,0,0,1,1,1), x=c(20,22,25,28,30,29))

两个假人的回归,没有截距:

summary(lm(y~gender2+gender-1+x,data=df))

Coefficients:
        Estimate Std. Error t value Pr(>|t|)  
gender2  19.8864    12.6285   1.575   0.2134  
gender   37.6136     9.7446   3.860   0.0307 *
x        -0.3409     0.4342  -0.785   0.4897  

是相同的...

一个假人和截距的回归(除了上面讨论的假人解释):

summary(lm(y~gender+x,data=df))

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  19.8864    12.6285   1.575   0.2134  
gender       17.7273     3.1973   5.544   0.0116 *
x            -0.3409     0.4342  -0.785   0.4897

...所以的边际效应是相同的。这与...形成鲜明对比x

带有一个假人的回归,没有截距:

summary(lm(y~gender+x-1,data=df))

Coefficients:
       Estimate Std. Error t value Pr(>|t|)    
gender 22.38736    1.41677  15.802 9.37e-05 ***
x       0.34086    0.03864   8.822 0.000911 ***

的边际效应完全不同。x

为什么是这样?

当您拟合一些新数据时,您会看到拟合线x通过(0,0)“模型中没有截距”。

newdata = data.frame(gender=c(0,0,0,0,0,0), x=c(-1,0,1,2,3,4))
predict(lm(y~gender+x-1,data=df), newdata=newdata)

         1          2          3          4          5          6 
-0.3408643  0.0000000  0.3408643  0.6817286  1.0225929  1.3634572 

发生这种情况是因为在某些情况下您有0+βx(这是 0 为x=0)。或者作为x-matrix(第一行是截距,用于说明 = 0):

(01x101x200x300x4)

但是,当您包含两个假人时,您有:

(01x101x210x310x4)

所以没有你强迫的情况βx为零。

有关没有常数项的回归的进一步讨论,请参见这篇文章。