Zing 论坛

正文

数据科学薪资预测:当神经网络遇上小数据集的真实教训

一个诚实的机器学习项目实验记录,展示了使用PyTorch神经网络和随机森林预测数据科学薪资的过程,以及为什么模型表现不佳——关键教训在于数据质量而非算法选择。

机器学习薪资预测PyTorch随机森林过拟合数据质量特征工程回归分析神经网络
发布时间 2026/06/16 23:44最近活动 2026/06/16 23:51预计阅读 2 分钟
数据科学薪资预测:当神经网络遇上小数据集的真实教训
1

章节 01

导读:数据科学薪资预测的真实教训

本项目记录了使用PyTorch神经网络和随机森林预测数据科学薪资的实验过程,核心教训在于模型表现不佳的关键原因是数据质量而非算法选择。项目的诚实性——公开讨论失败——对机器学习教育具有重要价值。

2

章节 02

项目背景:诚实失败案例的意义

机器学习领域常炫耀SOTA成果,但很少公开失败。本项目因诚实展示代码实现及模型不佳原因而值得关注,这种透明度提醒我们:机器学习不仅是调参和选算法,更要理解数据、识别限制并诚实评估结果。

3

章节 03

技术选型与数据预处理

项目目标:用经验水平、公司规模等特征预测薪资。 技术选型

  • 神经网络(PyTorch):多层全连接网络,含Batch Normalization,训练用HuberLoss、Adam优化器、10000轮、梯度裁剪等。
  • 随机森林(scikit-learn):简单模型对比。 数据预处理
  • 特征工程:序数编码(经验级别、公司规模)、独热编码(雇佣类型)、保留远程比例。
  • 数据清洗:移除高基数列(工作年份、职位名称等)。
  • 防止泄露:StandardScaler仅拟合训练数据。
4

章节 04

实验结果与失败原因分析

模型性能对比

模型 训练集R² 测试集R²
神经网络 ~0.33 -1.42
随机森林 0.35 0.26
失败原因
  1. 特征信息不足:仅4个核心特征,无法捕捉薪资差异。
  2. 薪资方差过大:相同特征下薪资分布分散。
  3. 神经网络过拟合:10000轮训练对小数据集过多,泛化能力差。
  4. 随机森林相对更好:小规模表格数据树模型优于深度学习。
5

章节 05

关键教训:数据质量胜过算法选择

核心启示:模型上限由数据决定而非算法。要提升R²到0.6以上需额外特征:具体职位名称、精确工作年限、城市/地区、公司名称、行业领域。 提醒:建模前先确认是否有足够好的特征支持预测任务。

6

章节 06

技术亮点:值得肯定的代码实践

尽管结果不佳,代码有多个良好实践:

  • 自定义PyTorch数据集封装加载逻辑。
  • 每层后用Batch Normalization稳定训练。
  • 选择Huber Loss应对异常值。
  • 梯度裁剪防止爆炸。
  • 用R²评估训练和测试性能诊断过拟合。
7

章节 07

对学习者的建议

  1. 从简单模型开始:先建基线(如随机森林/线性回归),简单模型差则复杂模型难更好。
  2. 理解数据:建模前探索分布、相关性和限制。
  3. 诚实面对结果:负R²不是耻辱,假装好才是;失败更能教会东西。
  4. 重视特征工程:花时间收集更好特征比调优模型影响更大。
8

章节 08

结语:失败的价值

本项目虽无顶级会议成果,但价值显著:

  • 并非所有问题适合深度学习。
  • 数据质量是模型性能根本限制。
  • 诚实报告失败是科学进步基础。
  • 简单方法常是最好起点。 对学习者而言,研究此项目比99%准确率教程更有教育意义,展示真实世界复杂性与批判性思维的重要性。