随机梯度线性模型(SGD)-SGDLinear
随机梯度线性模型(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 先读取 data 或 file_path,并检查目标列 target_column 是否存在。设原始表格为
$$ X=[x_{ij}]_{n\times d},\quad y=(y_1,y_2,\ldots,y_n)^{\top} \tag{3} $$
预清洗阶段的核心约束如下:
- 若目标列缺失,则该样本会被移除。
- 若未开启 One-Hot,则非数值特征最终会被丢弃,只保留数值列参与建模。
- 若任务为回归,则目标列必须能转为数值,否则直接报错。
- 若任务为分类,则类别数至少为 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)\) 均在训练集上估计。源码中通过 StandardScaler 或 MinMaxScaler 实现。
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} $$
实现支持 rbf、poly、linear、sigmoid 等核函数,并允许设置 gamma 与 degree。
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_loss、hinge、modified_huber、perceptron - 回归支持:
squared_error、huber、epsilon_insensitive、squared_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_error、huber、epsilon_insensitive、squared_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.pngroc.pngpr.pngthreshold_f1.pngthreshold_tpr_fpr.pngcalibration.pngclass_distribution_full.pngclass_distribution_triptych.pnglearning_curve.pngfeature_importance_topN.png
回归任务常见图表包括:
pred_vs_true.pngtrue_vs_pred_line.pngresiduals_hist.pngresiduals_vs_fitted.pngresiduals_qq.pnglearning_curve.pngfeature_importance_topN.png
6.3 复现脚本与模型导出
模块提供两类脚本导出:
repro_template_时间戳.py- 由
ui/results_widget.py导出 - 用于复现一次分析结果
- 会把输入副本复制到结果目录下的
repro_inputs/ - 示例结果目录中分别引用分类
repro_inputs/sample_classification.xlsx与回归repro_inputs/sample_regression.xlsx
- 由
predict_template.py- 由
core/critic_calculator.py在“导出模型”开启时生成 - 与
sgdlinear_model.pkl、sgdlinear_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
需要在文档中明确的实现细节如下:
ui/upload_widget.py中,任务类型先于参数设置,分类/回归会联动不同损失函数选项。core/fe_pipeline.py中,特征工程统一封装为Pipeline,避免在论文里误写成“手工逐步处理”。core/critic_calculator.py中,分类与回归分别输出不同指标、图表、交叉验证与学习曲线。- 特征重要性并非树模型意义上的 split importance,而是线性系数绝对值或多分类系数范数。
ui/results_widget.py的“导出复现代码”会把该次分析输入数据复制到repro_inputs/,保证结果目录自包含。- 若启用模型导出,
predict_template.py支持列对齐并生成columns_report.txt,便于独立预测时检查字段一致性。 - 输出目录使用时间戳自动创建,主 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 结果解释注意事项
- SGDLinear 属于线性模型,系数解释依赖特征量纲。若未标准化,不宜直接把不同变量的系数绝对值作强结论比较。
- 若开启 One-Hot、PCA 或 KPCA,处理后特征与原始变量不再一一对应,论文中要说明解释层级。
- 若分类损失不是
log_loss,则概率意义应谨慎解释,尤其是hinge与perceptron更偏向判别边界而非概率建模。 - 回归中若残差图存在明显漏斗形、偏态或重尾,应在论文中说明可能存在异方差、非线性遗漏或异常值影响。
参数与配置(分组)和报告摘要两个工作表已经由代码自动汇总,写论文时可优先引用,不必手动重复整理所有运行参数。
9.6 软件实现核查补充(2026-07)
- 当前最新结果目录
results/随机梯度线性模型(SGD)-SGDLinear分析结果_20260412_021639把分类与回归图集一起落在根目录,说明同一壳体同时支持SGDClassifier和SGDRegressor两条分支。 - 这一批结果目录里没有看到单独的 repro 脚本;可复现入口在较早时间戳目录中,例如
repro_template_20260329_163828.py、repro_template_20260412_021504.py。 - 如果正文谈分类,就应对应
confusion_matrix.png、roc.png、pr.png、threshold_f1.png、threshold_tpr_fpr.png、calibration.png、class_distribution_*;如果正文谈回归,就应对应pred_vs_true.png、true_vs_pred_line.png、residuals_*。 - 文档中的线性模型解释可以保留,但结果解释要按任务类型分开,不要把分类图和回归图混在一个结论段里。