housing-regression Cloud ML示例预测值与实际值不符的技术问询
我之前在运行这个housing-regression Cloud ML示例时,也碰到过类似的离谱预测结果问题,给你几个实用的排查方向:
核对数据预处理逻辑的一致性
训练模型时对输入特征做的标准化、归一化等预处理操作,预测阶段必须完全复用到new-data.json的输入数据上。比如训练时用StandardScaler把所有特征缩放到均值为0、方差为1的范围,但预测时直接用原始数据输入,模型就会因为特征量级不匹配输出错误结果。你可以去训练代码里找预处理相关的代码块,确认预测输入是否应用了相同的变换规则。确认部署的模型版本是否正确
检查你指定的${MODEL_VERSION}对应的模型,是不是用包含train-data-01.csv的数据集训练出来的有效模型。有时候可能误部署了未训练完成的模型(比如迭代次数太少),或者之前训练的旧模型。建议重新执行一次训练流程,观察训练过程中损失函数是否持续下降到合理范围,然后重新部署新版本再测试预测。验证输入JSON的特征格式与顺序
确保new-data.json里的特征字段名、顺序和训练时使用的完全一致。比如训练时特征顺序是CRIM, ZN, INDUS, CHAS, NOX, RM, AGE, DIS, RAD, TAX, PTRATIO, B, LSTAT,如果JSON里的特征顺序打乱或者字段名拼写错误,模型会接收到错误的特征值,自然输出错误预测。你可以把train-data-01.csv第一行的数据转换成JSON时,逐一对照训练代码里的特征列表核对。检查是否需要对预测结果做反变换
如果训练阶段对目标变量MEDV也做了缩放处理(比如取对数、标准化),那预测得到的数值需要做逆变换才能还原为真实的MEDV值。比如训练时把MEDV做了对数变换,那预测结果需要用指数函数反算回去;如果做了MinMax缩放,就要用训练时的最小值和最大值逆变换。去训练代码里找目标变量的处理逻辑,确认是否需要对预测结果做逆处理。
内容的提问来源于stack exchange,提问作者djaax

