线性回归

最近更新时间:2026-06-02 16:56:46

我的收藏

算法介绍

TCHouse-X 采用随机梯度下降(SGD)算法,通过最小化正则化经验损失(Regularized Empirical Loss)来拟合线性模型。
SGD 的核心逻辑在于高效的迭代更新:
梯度估计:在处理每个样本时实时估计损失函数的梯度。
参数更新:模型权重随学习率的动态递减进行持续演进。
为了防止过拟合并提升泛化能力,系统引入了正则化惩罚项:
惩罚方式:支持 L1 范数(绝对值范数)、L2 范数(平方欧几里得范数)或两者的组合(Elastic Net)。
特征选择:正则化器通过将参数向零向量收缩来控制模型复杂度。
稀疏学习:当参数更新因正则化跨越零点时,系统会将其截断为 0。这一机制天然支持稀疏模型(Sparse Model)的学习,从而实现高效的在线特征选择。
SGD 的优劣势分析如下:
维度
评价
详解
优势
高效性
计算复杂度低,尤其适合处理大规模、高维度的在线数据集。
优势
易于调优
参数逻辑清晰,便于针对特定场景进行性能优化。
劣势
尺度敏感
SGD 对特征缩放高度敏感。在使用前,建议对数据进行标准化或归一化处理。

算法参数介绍

入参
类型
默认值
说明
loss
STRING
squared_error
损失函数配置,可选值如下:
squared_error:普通最小二乘损失。
huber:在误差超过 epsilon 后从平方损失切换为线性损失,以降低离群点影响。
epsilon_insensitive:忽略小于 epsilon 的误差,超过部分为线性(SVR 常用)。
squared_epsilon_insensitive:类似epsilon_insensitive,但超过容忍区间后使用平方损失。
penalty
STRING | None
l2
正则项(惩罚项)配置, 可选值如下:
l2: 默认项,权重的二范数惩罚。
l1: 权重的一范数惩罚,适用于需要特征稀疏化或模型压缩的场景。
elasticnet: l1/l2 混合正则,兼顾特征选择与数值稳定性。
None: 禁用正则化。
alpha
FLOAT
0.0001
正则项系数。值越大正则越强;当 learning_rate='optimal' 时也用于计算学习率。取值范围 [0.0, +inf)。
l1_ratio
FLOAT | None
0.15
Elastic Net 混合参数,0<=l1_ratio<=1:0 相当于 L2,1 相当于 L1。仅当 penalty='elasticnet' 时生效。若penalty 不是 'elasticnet',可为 None。范围 [0.0,1.0] 或 None。
fit_intercept
BOOLEAN
TRUE
是否拟合截距项。若为 FALSE,假设数据已做中心化(均值为 0)。
max_iter
INT
1000
训练数据最大遍历次数(epochs)。只影响 fit,不影响 partial_fit。范围 [1, +∞)。
tol
FLOAT
1e-3
停止准则阈值。若不为 None,当连续 n_iter_no_change 个 epoch 满足停止条件(基于训练损失或验证损失,取决于 early_stopping)则停止。范围 [0.0, +∞)。
shuffle
BOOLEAN
TRUE
每个 epoch 后是否打乱训练数据。
epsilon
FLOAT
1e-4
ε-不敏感损失相关参数;仅当 loss 为 huber、epsilon_insensitive、squared_epsilon_insensitive 时生效。对 huber:决定从 L2 切换到 L1 的阈值;对 ε-不敏感:预测与真实差异小于该阈值则忽略。范围 [0.0, +∞)。
random_state
INT
42
当 shuffle 为 True 时用于打乱数据的随机种子;传入非负整数可复现结果。
learning_rate
STRING
invscaling
学习率调度策略:
1. constant:eta=eta0;
2. optimal:eta=1/(alpha*(t+t0))(t0 为启发式);
3. invscaling:eta=eta0/pow(t,power_t);
4. adaptive:只要训练损失持续下降就保持 eta0,若连续 n_iter_no_change 未按 tol 改善(或 early_stopping=True 时验证分数未提升)则将学习率除以 5;
5. pa1/pa2:passive-aggressive 算法(仅 loss='epsilon_insensitive')。
eta0
FLOAT
0.01
constant/invscaling/adaptive 的初始学习率为0.01,学习率设置范围为 (0.0, +inf);
对 pa1/pa2 表示“passive-aggressive”参数(文献中常称 C):
PA-I 为最大步长;
PA-II 对步长做正则(eta0 越小正则越强)。
对于 PA 方法的一般经验法则,当数据噪声大时,eta0 应该较小。
early_stopping
BOOLEAN
FALSE
是否启用提前停止:若为 TRUE,会自动划分一部分训练数据作为验证集,当 score 的提升不超过阈值并持续 n_iter_no_change 个 epoch 时停止。
validation_fraction
FLOAT
0.1
提前停止时划分为验证集的训练数据比例(0~1)。仅 early_stopping=True 生效。范围 (0.0,1.0)。
n_iter_no_change
INT
5
连续多少次迭代无改进则停止。收敛检查基于训练损失或验证损失(取决于 early_stopping)。范围 [1, max_iter)。
average
BOOLEAN | INT
FALSE
是否对 SGD 权重做平均并存入 coef_。若为 True:从头开始平均;若为大于 1 的整数:当累计见到样本数达到该值后开始平均(如 average=10 表示看到 10 个样本后开始平均)。