You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多元线性回归:为何向特征矩阵添加全1数组(Python)

Hey there, great question—this is a common point of confusion when first diving into linear regression with matrices, so let’s unpack it clearly!

为什么多元线性回归要给特征矩阵X添加全1数组?

1. 全1数组的核心作用:统一矩阵形式的回归方程

多元线性回归的原始方程(以3个自变量为例)是:

$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \beta_3x_3 + \epsilon$

这里的$\beta_0$是截距项——也就是当所有自变量$x_1,x_2,x_3$都为0时的预测值。为了用矩阵乘法统一处理所有参数(包括$\beta_0$),我们需要把方程转化为更简洁的矩阵形式:

$Y = X\beta + \epsilon$

其中:

  • $Y$是(n,1)的目标变量向量
  • $\beta$是(4,1)的参数向量:$[\beta_0, \beta_1, \beta_2, \beta_3]^T$
  • $X$需要是(n,4)的特征矩阵——这时候就必须给原始的(n,3)特征矩阵添加一列全1,让$\beta_0$能和这一列相乘($\beta_0 * 1 = \beta_0$),完美匹配原始方程的结构。

在Python中,你可能会看到导师写这样的代码来实现这个操作:

import numpy as np
# 假设X是(n,3)的原始特征矩阵
X_with_intercept = np.hstack((np.ones((X.shape[0], 1)), X))

简单说:加全1列是为了把截距项$\beta_0$纳入到矩阵乘法的统一框架里,不用单独写逻辑处理它,代码实现和数学推导都更简洁。

2. 为什么选1,而不是其他数值?

1是乘法单位元,这是最关键的原因:

  • 如果用其他数(比如2),方程会变成$y = \beta_0*2 + \beta_1x_1 + ...$,这时候$\beta_0$的含义就不再是原始的截距了——它会变成截距的1/2,解释起来非常别扭。
  • 用1的话,$\beta_0$直接对应“所有自变量为0时的y值”,物理意义清晰,后续解读模型参数时不用额外转换。
  • 从计算角度,全1列不会引入额外的缩放或偏移,保持了参数求解的稳定性,也让梯度下降、最小二乘法等算法的实现更直观。

举个例子:如果真实截距是5,用全1列的话$\beta_0=5$;如果用全2列,$\beta_0$就变成2.5,虽然最终预测结果一样,但你解释参数时得说“这个2.5乘以2才是实际截距”,完全没必要给自己添麻烦。

3. 自变量数量会影响这个操作吗?

完全不会!
不管你有3个、10个还是100个自变量,只要你想在模型中包含截距项,就需要添加这一列全1。截距项是独立于所有自变量的常数项,和自变量的数量没有关系——它只负责捕捉“当所有x都为0时的基准预测值”。

比如:

  • 1个自变量:原始X是(n,1),加全1列后变成(n,2),对应$\beta=[\beta_0, \beta_1]$
  • 5个自变量:原始X是(n,5),加全1列后变成(n,6),对应$\beta=[\beta_0, \beta_1, ..., \beta_5]$

如果不加这一列,你的模型就变成了过原点的回归(强制所有x为0时y=0),这在大多数现实场景中都不符合数据规律,会导致预测偏差。


内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:47:49