正在加载中...

展开本页目录
算法教程随机梯度线性模型(SGD)-SGDLinear

随机梯度线性模型(SGD)-SGDLinear

No.035 · 在线教程

随机梯度线性模型(Stochastic Gradient Descent Linear Model, SGDLinear)是一类基于随机梯度下降(SGD)优化的线性监督学习方法。本系统同时支持分类与回归两类任务:分类分支调用 SGDClassifier,回归分支调用 SGDRe…

35. 随机梯度线性模型(SGD)-SGDLinear

1. 方法概述

随机梯度线性模型(Stochastic Gradient Descent Linear Model, SGDLinear)是一类基于随机梯度下降(SGD)优化的线性监督学习方法。本系统同时支持分类回归两类任务:分类分支调用 SGDClassifier,回归分支调用 SGDRegressor。该方法适用于样本量较大、特征维度较高、需要快速训练与重复迭代的场景,也适合作为论文中的线性基准模型、量化研究中的因子基线模型,以及高维表格数据的快速试验模型。

设共有 \(n\) 个样本、\(d\) 个特征,数据集记为

$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^{d} \tag{1} $$

其中 \(x_i\) 表示第 \(i\) 个样本的特征向量,\(y_i\) 为类别标签或连续目标值。线性模型的一般形式为

$$ \hat{y}_i=f(x_i)=w^{\top}x_i+b \tag{2} $$

其中 \(w\in\mathbb{R}^{d}\) 为系数向量,\(b\) 为截距项。

结合代码实现,SGDLinear 模块并不是简单地训练一个线性模型,而是完整集成了数据预清洗、训练测试划分、特征工程、分类/回归指标体系、图表输出、Excel 多工作表导出、复现脚本导出,以及可选的模型导出与新数据预测模板。

2. 公共部分(预处理、优化目标与实现约束)

2.1 数据载入与预清洗

源码 core/critic_calculator.py 先读取 datafile_path,并检查目标列 target_column 是否存在。设原始表格为

$$ X=[x_{ij}]_{n\times d},\quad y=(y_1,y_2,\ldots,y_n)^{\top} \tag{3} $$

预清洗阶段的核心约束如下:

  1. 若目标列缺失,则该样本会被移除。
  2. 若未开启 One-Hot,则非数值特征最终会被丢弃,只保留数值列参与建模。
  3. 若任务为回归,则目标列必须能转为数值,否则直接报错。
  4. 若任务为分类,则类别数至少为 2,且每个类别样本数至少为 2。

若采用删除缺失样本的方式,则清洗后的样本集为

$$ \mathcal{D}'=\{(x_i,y_i)\in\mathcal{D}:x_i\text{ 与 }y_i\text{均有效}\} \tag{4} $$

该模块在实现上特别强调避免数据泄漏:训练测试划分之后,统计型预处理只在训练集上拟合,再作用于测试集与交叉验证验证集。

2.2 One-Hot 编码

对类别变量 \(x_j\),若其可能取值为 \(\{c_1,c_2,\ldots,c_K\}\),则 One-Hot 编码定义为

$$ z_{jk}= \begin{cases} 1,&x_j=c_k\\ 0,&x_j\ne c_k \end{cases},\quad k=1,2,\ldots,K \tag{5} $$

源码 core/fe_pipeline.py 使用 OneHotEncoder(handle_unknown='ignore'),这意味着测试集或后续新数据中即使出现训练阶段未见过的类别值,也不会直接报错。

2.3 标准化与归一化

由于 SGD 对特征量纲较敏感,因此缩放通常是必要步骤。Z-score 标准化为

$$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{6} $$

Min-Max 归一化为

$$ z_{ij}=\frac{x_{ij}-\min(x_j)}{\max(x_j)-\min(x_j)+\varepsilon} \tag{7} $$

其中 \(\mu_j\)、\(\sigma_j\)、\(\min(x_j)\)、\(\max(x_j)\) 均在训练集上估计。源码中通过 StandardScalerMinMaxScaler 实现。

2.4 方差过滤

低方差特征常常信息量有限,可通过方差阈值进行剔除。第 \(j\) 个特征的样本方差为

$$ \operatorname{Var}(x_j)=\frac{1}{n-1}\sum_{i=1}^{n}(x_{ij}-\bar{x}_j)^2 \tag{8} $$

若 \(\operatorname{Var}(x_j)\le \theta\),则可将该特征删除。代码中对应 VarianceThreshold(threshold=...)

2.5 互信息 KBest 特征选择

互信息衡量特征与目标变量间的依赖关系:

$$ I(X_j;Y)=\sum_{x,y}p(x,y)\log\frac{p(x,y)}{p(x)p(y)} \tag{9} $$

分类任务使用 mutual_info_classif,回归任务使用 mutual_info_regression,并通过 SelectKBest 保留得分最高的 \(k\) 个特征。

2.6 PCA 与 Kernel PCA

PCA 通过线性投影将高维特征映射到低维空间:

$$ z_i=W_m^{\top}(x_i-\mu) \tag{10} $$

其中 \(W_m\) 为前 \(m\) 个主成分方向。第 \(r\) 个主成分的解释方差比为

$$ \rho_r=\frac{\lambda_r}{\sum_{j=1}^{d}\lambda_j} \tag{11} $$

Kernel PCA 先借助核函数完成隐式高维映射:

$$ K(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\rangle \tag{12} $$

实现支持 rbfpolylinearsigmoid 等核函数,并允许设置 gammadegree

2.7 IQR 异常值截断

源码中自定义了 IQRClipper。对第 \(j\) 个特征,设第一四分位数与第三四分位数分别为 \(Q_{1j}\)、\(Q_{3j}\),则

$$ \operatorname{IQR}_j=Q_{3j}-Q_{1j} \tag{13} $$

给定截断倍数 \(k\),上下界为

$$ L_j=Q_{1j}-k\operatorname{IQR}_j,\quad U_j=Q_{3j}+k\operatorname{IQR}_j \tag{14} $$

截断后的特征值为

$$ \tilde{x}_{ij}=\min\{\max(x_{ij},L_j),U_j\} \tag{15} $$

这一步可以降低极端值对线性系数和梯度更新的影响。

2.8 经验风险最小化与 SGD 目标

SGDLinear 的总体优化目标为

$$ \min_{w,b}J(w,b)=\frac{1}{n}\sum_{i=1}^{n}L\big(y_i,f(x_i)\big)+\lambda\Omega(w) \tag{16} $$

其中 \(L\) 为损失函数,\(\Omega(w)\) 为正则项,\(\lambda\) 对应代码中的 alpha

2.9 L1、L2 与 ElasticNet 正则化

L2 正则项为

$$ \Omega_2(w)=\frac{1}{2}\|w\|_2^2 \tag{17} $$

L1 正则项为

$$ \Omega_1(w)=\|w\|_1=\sum_{j=1}^{d}|w_j| \tag{18} $$

ElasticNet 正则项为

$$ \Omega_{EN}(w)=\rho\|w\|_1+\frac{1-\rho}{2}\|w\|_2^2 \tag{19} $$

其中 \(\rho\) 对应代码参数 l1_ratio

2.10 随机梯度下降更新

在第 \(t\) 次迭代中,若使用小批量样本集合 \(B_t\),则参数更新可写为

$$ w_{t+1}=w_t-\eta_t\nabla_w\left[\frac{1}{|B_t|}\sum_{i\in B_t}L\big(y_i,f(x_i)\big)+\lambda\Omega(w_t)\right] \tag{20} $$

$$ b_{t+1}=b_t-\eta_t\nabla_b\left[\frac{1}{|B_t|}\sum_{i\in B_t}L\big(y_i,f(x_i)\big)\right] \tag{21} $$

其中 \(\eta_t\) 为学习率。SGD 的优势在于单轮只用部分样本更新,适合大样本、快速迭代与在线式训练。

2.11 收敛准则与参数约束

当目标函数变化足够小时,可认为模型收敛:

$$ |J_t-J_{t-1}|<\text{tol} \tag{22} $$

对应源码参数:

  • max_iter:最大迭代次数
  • tol:收敛阈值
  • fit_intercept:是否拟合截距
  • early_stopping:仅分类任务传给 SGDClassifier

需要注意的是,回归分支不会把 early_stopping 传给 SGDRegressor,因此论文中不宜写成“分类和回归都启用了早停”。

2.12 任务与损失函数的联动约束

根据源码,损失函数不是任意可组合,而是按任务严格区分:

  • 分类支持:log_losshingemodified_huberperceptron
  • 回归支持:squared_errorhuberepsilon_insensitivesquared_epsilon_insensitive

若用户输入与任务不匹配的损失函数,核心代码会自动回退为:

  • 分类默认 log_loss
  • 回归默认 squared_error

因此论文和用户文档中应写成“任务驱动的损失函数集合”,不能笼统写成“任意选择损失函数”。

2.13 特征重要性解释

源码中,特征重要性来自系数的绝对值或范数。

对于单输出线性模型,第 \(j\) 个特征的重要性可记为

$$ I_j=|w_j| \tag{23} $$

对于多分类模型,若第 \(c\) 类对应系数为 \(w_{cj}\),则系统采用各类别系数向量的二范数:

$$ I_j=\left\|\big(w_{1j},w_{2j},\ldots,w_{Cj}\big)\right\|_2 \tag{24} $$

源码会同步输出 特征重要性 工作表和 feature_importance_topN.png 图。因此论文解释变量贡献时,应说明“重要性来自线性系数大小,而非树模型分裂增益”。

2.14 符号说明

符号 含义
\(n\) 样本数量
\(d\) 特征维度
\(x_i\) 第 \(i\) 个样本的特征向量
\(y_i\) 第 \(i\) 个样本的真实标签或真实值
\(\hat{y}_i\) 第 \(i\) 个样本的预测值
\(w\) 线性模型系数向量
\(b\) 截距项
\(L\) 损失函数
\(\Omega(w)\) 正则项
\(\lambda\) 正则化强度,对应 alpha
\(\rho\) ElasticNet 混合比例,对应 l1_ratio
\(\eta_t\) 第 \(t\) 次迭代学习率
\(B_t\) 第 \(t\) 次迭代使用的小批量样本

3. 回归版(SGDRegressor)

3.1 回归模型

回归任务的预测函数为

$$ \hat{y}_i=w^{\top}x_i+b \tag{25} $$

代码支持的回归损失包括 squared_errorhuberepsilon_insensitivesquared_epsilon_insensitive

3.2 平方误差损失

平方误差损失可写为

$$ L(y_i,\hat{y}_i)=\frac{1}{2}(y_i-\hat{y}_i)^2 \tag{26} $$

3.3 Huber 损失

设残差 \(r_i=y_i-\hat{y}_i\),阈值为 \(\delta\),则 Huber 损失为

$$ L_{\delta}(r_i)= \begin{cases} \frac{1}{2}r_i^2,& |r_i|\le \delta\\ \delta\left(|r_i|-\frac{1}{2}\delta\right),& |r_i|>\delta \end{cases} \tag{27} $$

该损失在小误差区保持平方损失特性,在大误差区转为线性惩罚,能降低离群点影响。

3.4 Epsilon-insensitive 损失

Epsilon-insensitive 损失为

$$ L_{\varepsilon}(y_i,\hat{y}_i)=\max\left(0,|y_i-\hat{y}_i|-\varepsilon\right) \tag{28} $$

该损失允许预测误差在 \(\varepsilon\) 范围内不计罚。

3.5 回归评价指标

均方误差为

$$ \text{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \tag{29} $$

均方根误差为

$$ \text{RMSE}=\sqrt{\text{MSE}} \tag{30} $$

平均绝对误差为

$$ \text{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \tag{31} $$

决定系数为

$$ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} \tag{32} $$

3.6 回归结果说明模板

“本文采用 SGDRegressor 构建随机梯度线性回归模型,对目标变量进行预测。模型通过随机梯度下降最小化损失函数与正则项之和,并结合特征缩放与特征工程提高训练稳定性。采用 RMSE、MAE 与 \(R^2\) 衡量模型预测精度与拟合优度,同时结合预测值-真实值散点图、真实值与预测值对比图、残差直方图、残差-拟合值图及 Q-Q 图对误差分布和模型稳定性进行诊断。”

4. 分类版(SGDClassifier)

4.1 线性分类函数

分类任务的判别函数为

$$ f(x_i)=w^{\top}x_i+b \tag{33} $$

在二分类下,可写为

$$ \hat{y}_i= \begin{cases} 1,& f(x_i)\ge 0\\ 0,& f(x_i)<0 \end{cases} \tag{34} $$

4.2 Logistic 损失

当损失函数选择 log_loss 时,令

$$ p_i=P(y_i=1\mid x_i)=\sigma(f(x_i))=\frac{1}{1+\exp(-f(x_i))} \tag{35} $$

则二分类对数损失为

$$ L(y_i,p_i)=-\left[y_i\log p_i+(1-y_i)\log(1-p_i)\right] \tag{36} $$

该分支默认使用这一损失,因此可以输出 ROC、PR、阈值曲线与校准曲线。

4.3 Hinge 损失

若标签记为 \(y_i\in\{-1,1\}\),则 Hinge 损失为

$$ L(y_i,f(x_i))=\max\left(0,1-y_i f(x_i)\right) \tag{37} $$

该损失对应线性支持向量机风格的间隔最大化思想。

4.4 Modified Huber 损失

Modified Huber 损失为

$$ L(y_i,f_i)= \begin{cases} \max(0,1-y_i f_i)^2,& y_i f_i\ge -1\\ -4y_i f_i,& y_i f_i<-1 \end{cases} \tag{38} $$

其中 \(f_i=f(x_i)\)。该损失相比纯 Hinge 更平滑,对异常样本更稳健。

4.5 类别不平衡加权

若开启 class_weight_auto,则类别 \(c\) 的权重可表示为

$$ w_c=\frac{n}{C\cdot n_c} \tag{39} $$

其中 \(C\) 为类别数,\(n_c\) 为类别 \(c\) 的样本数。源码在分类分支中通过 class_weight='balanced' 实现这一逻辑。

4.6 分类评价指标

准确率为

$$ \text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \tag{40} $$

精确率为

$$ \text{Precision}=\frac{TP}{TP+FP} \tag{41} $$

召回率为

$$ \text{Recall}=\frac{TP}{TP+FN} \tag{42} $$

F1 值为

$$ F1=\frac{2\cdot\text{Precision}\cdot\text{Recall}}{\text{Precision}+\text{Recall}} \tag{43} $$

ROC 曲线中,横纵坐标分别为

$$ \text{FPR}=\frac{FP}{FP+TN},\quad \text{TPR}=\frac{TP}{TP+FN} \tag{44} $$

AUC 为 ROC 曲线下面积:

$$ \text{AUC}=\int_0^1 \text{TPR}(\text{FPR})\,d\text{FPR} \tag{45} $$

平均精度 AP 可由 Precision-Recall 曲线近似表示为

$$ \text{AP}=\sum_k (R_k-R_{k-1})P_k \tag{46} $$

4.7 分类结果说明模板

“本文采用 SGDClassifier 构建随机梯度线性分类模型,通过随机梯度下降优化线性判别边界。模型评价指标包括 Accuracy、F1、AUC 与 AP,并结合混淆矩阵、ROC 曲线、PR 曲线、阈值曲线与校准曲线,从分类准确性、阈值敏感性和概率可靠性三个角度综合评价模型表现。特征重要性由线性系数绝对值或多分类系数范数给出,可用于解释变量对分类边界的贡献程度。”

5. 训练测试划分、交叉验证与学习曲线

5.1 训练测试划分

设测试集比例为 \(t\in(0,1)\),则训练集和测试集样本量可写为

$$ n_{\text{test}}=\lceil nt\rceil,\quad n_{\text{train}}=n-n_{\text{test}} \tag{47} $$

源码中:

  • 分类任务采用 train_test_split(..., stratify=y),尽量保持类别比例一致。
  • 若测试集样本量或训练集样本量不足以覆盖全部类别,则直接报错,要求用户调整 test_size
  • 回归任务采用普通随机划分。

因此小样本分类实验不宜盲目设置过大的测试集比例。

5.2 K 折交叉验证

将样本划分为 \(K\) 折后,指标均值与标准差可写为

$$ \bar{M}=\frac{1}{K}\sum_{k=1}^{K}M_k \tag{48} $$

$$ s_M=\sqrt{\frac{1}{K-1}\sum_{k=1}^{K}(M_k-\bar{M})^2} \tag{49} $$

源码中:

  • 分类使用 StratifiedKFold
  • 回归使用 KFold
  • 若分类任务的最小类别样本数小于折数,则交叉验证被跳过,并在结果中写入说明

这意味着论文中若写“采用 5 折交叉验证”,必须与实际运行参数一致,不能泛化套用。

5.3 学习曲线

学习曲线反映训练样本数变化时训练得分和验证得分的变化:

$$ S_{\text{train}}(m),\quad S_{\text{valid}}(m),\quad m\in\{m_1,m_2,\ldots,m_q\} \tag{50} $$

源码还额外设置了 learning_curve_max_samples 上限。当全量样本太大时,会先随机抽样,再计算学习曲线,以控制运行时间并保持图形可读性。

6. 结果输出与交付结构

6.1 Excel 工作簿结构

根据 core/critic_calculator.py_save_excel(),系统会按结果目录输出 Excel 工作簿。常见工作表包括:

  • 原始数据
  • 处理后数据
  • 指标
  • 预测
  • 特征重要性
  • 学习曲线
  • 图表清单
  • 参数
  • 参数与配置(分组)
  • 报告摘要

分类任务会额外输出:

  • 混淆矩阵
  • 分类报告

若开启交叉验证预测导出,还会额外输出:

  • CV汇总
  • CV折1_预测CV折2_预测

6.2 图表输出结构

分类任务常见图表包括:

  • confusion_matrix.png
  • roc.png
  • pr.png
  • threshold_f1.png
  • threshold_tpr_fpr.png
  • calibration.png
  • class_distribution_full.png
  • class_distribution_triptych.png
  • learning_curve.png
  • feature_importance_topN.png

回归任务常见图表包括:

  • pred_vs_true.png
  • true_vs_pred_line.png
  • residuals_hist.png
  • residuals_vs_fitted.png
  • residuals_qq.png
  • learning_curve.png
  • feature_importance_topN.png

6.3 复现脚本与模型导出

模块提供两类脚本导出:

  1. repro_template_时间戳.py
    • ui/results_widget.py 导出
    • 用于复现一次分析结果
    • 会把输入副本复制到结果目录下的 repro_inputs/
    • 示例结果目录中分别引用分类 repro_inputs/sample_classification.xlsx 与回归 repro_inputs/sample_regression.xlsx
  2. predict_template.py
    • core/critic_calculator.py 在“导出模型”开启时生成
    • sgdlinear_model.pklsgdlinear_model_meta.json 配套
    • 用于对新数据做独立预测
    • 会生成 columns_report.txt,提示缺失列与额外列,方便检查列对齐问题

这两类脚本的作用不同。前者用于“复现一次完整分析”,后者用于“持久化模型后的新数据预测”。

7. 与代码实现的对应关系

本文档结合以下源码整理:

  • 具体的算法/随机梯度线性模型(SGD)-SGDLinear/core/critic_calculator.py
  • 具体的算法/随机梯度线性模型(SGD)-SGDLinear/core/fe_pipeline.py
  • 具体的算法/随机梯度线性模型(SGD)-SGDLinear/ui/upload_widget.py
  • 具体的算法/随机梯度线性模型(SGD)-SGDLinear/ui/results_widget.py

需要在文档中明确的实现细节如下:

  1. ui/upload_widget.py 中,任务类型先于参数设置,分类/回归会联动不同损失函数选项。
  2. core/fe_pipeline.py 中,特征工程统一封装为 Pipeline,避免在论文里误写成“手工逐步处理”。
  3. core/critic_calculator.py 中,分类与回归分别输出不同指标、图表、交叉验证与学习曲线。
  4. 特征重要性并非树模型意义上的 split importance,而是线性系数绝对值或多分类系数范数。
  5. ui/results_widget.py 的“导出复现代码”会把该次分析输入数据复制到 repro_inputs/,保证结果目录自包含。
  6. 若启用模型导出,predict_template.py 支持列对齐并生成 columns_report.txt,便于独立预测时检查字段一致性。
  7. 输出目录使用时间戳自动创建,主 Excel 文件也使用同一时间戳命名,便于一轮分析对应一组结果目录。

8. 论文写作模板

8.1 方法描述模板

“本文采用随机梯度线性模型(SGDLinear)进行监督学习分析。模型以线性函数刻画输入特征与目标变量之间的关系,并通过随机梯度下降最小化损失函数与正则项之和。根据研究任务分别构建分类器或回归器,同时引入缺失处理、One-Hot 编码、特征缩放、特征选择与降维等预处理步骤,以提升模型训练的稳定性与泛化能力。”

8.2 分类结果模板

“在分类任务中,本文使用 SGDClassifier 对样本类别进行预测,并采用 Accuracy、F1、AUC 与 AP 评价模型性能。通过混淆矩阵、ROC 曲线、PR 曲线、阈值曲线与校准曲线进一步分析模型的分类能力、阈值敏感性与概率可靠性。特征重要性由线性系数绝对值或多分类系数范数给出,用于解释各变量对分类边界的贡献程度。”

8.3 回归结果模板

“在回归任务中,本文使用 SGDRegressor 对目标变量进行预测,并采用 RMSE、MAE 与 \(R^2\) 评价模型精度与拟合优度。结合预测值-真实值散点图、真实值与预测值对比图、残差直方图、残差-拟合值图和 Q-Q 图,分析模型误差分布、稳定性和异常点影响。特征重要性由回归系数绝对值给出,用于解释各自变量对预测结果的相对影响强度。”

8.4 量化与业务应用模板

“在量化或业务预测场景中,可将技术指标、基本面变量、情绪指标或宏观因子作为输入特征,将收益率、风险指标、信用状态或类别标签作为预测目标。SGDLinear 具有训练速度快、参数可解释、适合高维稀疏特征等优点,适合作为线性基准模型、滚动训练模型或高维变量筛选模型。”

9. 示例结果说明

9.1 示例结果目录

可参考以下两组结果目录:

  • 分类:具体的算法/随机梯度线性模型(SGD)-SGDLinear/results/随机梯度线性模型(SGD)-SGDLinear分析结果_20260412_021448
  • 回归:具体的算法/随机梯度线性模型(SGD)-SGDLinear/results/随机梯度线性模型(SGD)-SGDLinear分析结果_20260412_021504

9.2 实际示例指标

结合上述两份结果工作簿中的 指标 工作表,可列出以下示例结果:

  • 分类结果:Accuracy = 0.8375,F1-macro = 0.8372711625723674,F1-weighted = 0.8372711625723674,AUC = 0.92375,AP = 0.9317220744623635
  • 回归结果:RMSE = 0.5698282765443351,MAE = 0.4431569857606469,\(R^2\) = 0.9686716606080308

从该示例结果看,分类分支具备较好的区分能力,回归分支具备较高的拟合优度。

9.3 实际工作表清单

分类工作簿实际包含:

  • 原始数据
  • 处理后数据
  • 指标
  • 预测
  • 混淆矩阵
  • 分类报告
  • 特征重要性
  • 学习曲线
  • 图表清单
  • 参数
  • 参数与配置(分组)
  • 报告摘要

回归工作簿实际包含:

  • 原始数据
  • 处理后数据
  • 指标
  • 预测
  • 特征重要性
  • 学习曲线
  • 图表清单
  • 参数
  • 参数与配置(分组)
  • 报告摘要

该示例目录未开启交叉验证预测明细导出,因此没有 CV汇总CV折i_预测。若后续运行时开启该选项,工作簿结构会相应增加。

9.4 图题与表题建议

  • 原始数据:表X SGDLinear 原始数据表
  • 处理后数据:表X SGDLinear 处理后特征数据表
  • 指标:表X SGDLinear 模型性能指标表
  • 预测:表X SGDLinear 逐样本预测结果表
  • 混淆矩阵:表X SGDLinear 分类混淆矩阵
  • 分类报告:表X SGDLinear 分类指标汇总表
  • 特征重要性:表X SGDLinear 特征系数重要性表
  • 学习曲线:表X SGDLinear 学习曲线数据表
  • 图表清单:表X SGDLinear 图表索引表
  • 参数:表X SGDLinear 参数设置表
  • 参数与配置(分组):表X SGDLinear 分组参数配置表
  • 报告摘要:表X SGDLinear 结果摘要表
  • feature_importance_topN.png:图X SGDLinear Top-N 特征系数重要性图
  • learning_curve.png:图X SGDLinear 学习曲线图
  • confusion_matrix.png:图X SGDLinear 混淆矩阵图
  • roc.png:图X SGDLinear ROC 曲线图
  • pr.png:图X SGDLinear PR 曲线图
  • threshold_f1.png:图X SGDLinear 阈值-F1 曲线图
  • threshold_tpr_fpr.png:图X SGDLinear 阈值-TPR/FPR 曲线图
  • calibration.png:图X SGDLinear 概率校准曲线图
  • class_distribution_full.png:图X SGDLinear 全量类别分布图
  • class_distribution_triptych.png:图X SGDLinear 训练集与测试集类别分布对比图
  • pred_vs_true.png:图X SGDLinear 预测值与真实值散点图
  • true_vs_pred_line.png:图X SGDLinear 真实值与预测值对比图
  • residuals_hist.png:图X SGDLinear 残差直方图
  • residuals_vs_fitted.png:图X SGDLinear 残差与拟合值关系图
  • residuals_qq.png:图X SGDLinear 残差 Q-Q 图

9.5 结果解释注意事项

  1. SGDLinear 属于线性模型,系数解释依赖特征量纲。若未标准化,不宜直接把不同变量的系数绝对值作强结论比较。
  2. 若开启 One-Hot、PCA 或 KPCA,处理后特征与原始变量不再一一对应,论文中要说明解释层级。
  3. 若分类损失不是 log_loss,则概率意义应谨慎解释,尤其是 hingeperceptron 更偏向判别边界而非概率建模。
  4. 回归中若残差图存在明显漏斗形、偏态或重尾,应在论文中说明可能存在异方差、非线性遗漏或异常值影响。
  5. 参数与配置(分组)报告摘要 两个工作表已经由代码自动汇总,写论文时可优先引用,不必手动重复整理所有运行参数。

9.6 软件实现核查补充(2026-07)

  • 当前最新结果目录 results/随机梯度线性模型(SGD)-SGDLinear分析结果_20260412_021639 把分类与回归图集一起落在根目录,说明同一壳体同时支持 SGDClassifierSGDRegressor 两条分支。
  • 这一批结果目录里没有看到单独的 repro 脚本;可复现入口在较早时间戳目录中,例如 repro_template_20260329_163828.pyrepro_template_20260412_021504.py
  • 如果正文谈分类,就应对应 confusion_matrix.pngroc.pngpr.pngthreshold_f1.pngthreshold_tpr_fpr.pngcalibration.pngclass_distribution_*;如果正文谈回归,就应对应 pred_vs_true.pngtrue_vs_pred_line.pngresiduals_*
  • 文档中的线性模型解释可以保留,但结果解释要按任务类型分开,不要把分类图和回归图混在一个结论段里。