时间序列振动数据异常检测:Auto-encoder训练数据比例咨询
给Auto-encoder新手的训练数据比例建议
作为搞过不少轴承振动异常检测的人,结合NASA这个经典数据集的特点,给你唠唠训练数据比例的事儿:
通用起步方案
如果你的正常(完好轴承)样本数量足够(比如NASA数据集里正常工况的1秒快照至少有几十条),70%-80%用于训练,10%-15%用于验证,剩下10%-15%用于测试是最稳妥的初始划分:
- 训练集:必须全是正常数据,让Auto-encoder彻底学会正常振动信号的模式。
- 验证集:用来调参(比如学习率、隐藏层节点数)和监控过拟合——要是训练集的重构误差一直降,但验证集误差开始往上飘,就得赶紧停训练。
- 测试集:一定要同时包含正常和故障数据,用来最终检验模型能不能准确揪出异常。
针对NASA数据集的特殊调整
NASA的轴承数据集里,正常状态的样本量其实是很充足的(比如每个正常工况下都有连续的快照),所以:
- 如果正常样本超过100条,甚至可以用80%训练,10%验证,10%测试,给模型更多学习正常模式的素材。
- 要是正常样本偏少(比如只有二三十条),别硬划固定比例了,改用5折或10折交叉验证,轮流用不同子集当训练和验证集,把有限的数据用透,避免过拟合。
划重点!绝对不能踩的坑
- 绝对绝对不要把故障数据放进训练集!Auto-encoder是靠“学不会异常模式,重构误差大”来检测异常的,要是训练里混了故障数据,模型会把异常当成正常来学,那后续检测直接废了。
- 验证集和测试集的分布要和训练集一致——比如训练集是某转速下的正常数据,那验证、测试集也得是同转速的,别跨工况乱选,不然模型评估结果不准。
内容的提问来源于stack exchange,提问作者opprud
相关产品推荐
相关产品推荐

