如何用数学方程表示Spline Transformer+线性回归拟合的高维模型
一、明确1阶样条的基函数定义
你使用的是1阶(分段线性)样条,5个节点的配置下,对每个原始特征 ( X_i )(( i=1,2,3,4,5 )),先确定5个节点 ( t_{i0} < t_{i1} < t_{i2} < t_{i3} < t_{i4} )(通常取特征的最小值、25%分位数、50%分位数、75%分位数、最大值)。
针对每个特征生成5个基函数:
- ( B_{i0}(X_i) = 1 )(常数项,所有特征的该值均为1,拟合时仅保留一个即可避免共线性)
- ( B_{i1}(X_i) = X_i )(原始特征本身)
- ( B_{i2}(X_i) = \max(X_i - t_{i1}, 0) )(仅当 ( X_i ) 超过第一个中间节点时非零)
- ( B_{i3}(X_i) = \max(X_i - t_{i2}, 0) )(仅当 ( X_i ) 超过第二个中间节点时非零)
- ( B_{i4}(X_i) = \max(X_i - t_{i3}, 0) )(仅当 ( X_i ) 超过第三个中间节点时非零)
每个原始特征通过上述基函数变换后,得到5个新特征(常数项单独提取),例如 ( X_1 ) 变换后得到 ( Z_{11}=X_1, Z_{12}=\max(X_1-t_{11},0), Z_{13}=\max(X_1-t_{12},0), Z_{14}=\max(X_1-t_{13},0) )。
二、无交互项的拟合模型方程
线性回归拟合后,预测值 ( \hat{y} ) 是所有变换后特征的线性组合:
[
\hat{y} = \beta_0 + \beta_{11}Z_{11} + \beta_{12}Z_{12} + \beta_{13}Z_{13} + \beta_{14}Z_{14} + \dots + \beta_{51}Z_{51} + \beta_{52}Z_{52} + \beta_{53}Z_{53} + \beta_{54}Z_{54}
]
将基函数代入后,每个特征的贡献为分段线性形式。以 ( X_1 ) 为例:
- 当 ( X_1 \leq t_{11} ): ( \beta_{11}X_1 )
- 当 ( t_{11} < X_1 \leq t_{12} ): ( (\beta_{11}+\beta_{12})X_1 - \beta_{12}t_{11} )
- 当 ( t_{12} < X_1 \leq t_{13} ): ( (\beta_{11}+\beta_{12}+\beta_{13})X_1 - (\beta_{12}t_{11}+\beta_{13}t_{12}) )
- 当 ( X_1 > t_{13} ): ( (\beta_{11}+\beta_{12}+\beta_{13}+\beta_{14})X_1 - (\beta_{12}t_{11}+\beta_{13}t_{12}+\beta_{14}t_{13}) )
其余4个特征的贡献形式与 ( X_1 ) 一致,仅系数和节点取值不同。
三、包含交互项的拟合模型方程
若需加入变换后特征的两两交互项,模型扩展为:
[
\hat{y} = \beta_0 + \sum_{i=1}^5 \sum_{j=1}^4 \beta_{ij}Z_{ij} + \sum_{1 \leq i < k \leq 5} \sum_{p=1}^4 \sum_{q=1}^4 \gamma_{ikpq}Z_{ip}Z_{kq}
]
其中 ( \gamma_{ikpq} ) 为交互项系数,( Z_{ip}Z_{kq} ) 代表第 ( i ) 个特征的第 ( p ) 个变换特征与第 ( k ) 个特征的第 ( q ) 个变换特征的乘积项,用于体现两个特征间的交互作用。
四、实际操作流程(Python)
- 样条变换:使用
sklearn.preprocessing.SplineTransformer,配置degree=1(1阶样条)、n_knots=5(5个节点),对原始5特征进行变换,得到变换后的特征矩阵。 - 生成交互项:若需交互项,使用
sklearn.preprocessing.PolynomialFeatures,设置interaction_only=True、include_bias=False,生成变换后特征的两两交互项。 - 拟合模型:用
sklearn.linear_model.LinearRegression拟合包含(或不包含)交互项的特征矩阵与目标变量。 - 导出方程:提取模型的截距和系数,替换上述数学表达式中的符号 ( \beta_0, \beta_{ij}, \gamma_{ikpq} ),即可得到具体的拟合方程。
内容的提问来源于stack exchange,提问作者Yash Pisat

