缺少验证行的神经网络错误消息-建议解决方法?大家好,
我正在 JMP 16 中测试几个模型作为 JSL 循环的一部分,使用不同的验证列来确定 R2 值如何根据使用的数据而变化。每个验证列都包含数据的一个子集,列的开头和/或结尾处有一些缺失数据。
其他模型,例如 Bootstrap,只需忽略缺失值就能运行良好,但神经网络却不断抛出错误消息(在 JMP 示例数据集 CrimeData 上重现)。


我可以通过添加一个过滤列、将所有缺失值设置为 0 并且不运行它们来解决这个问题。但这将需要每个验证列都有一个过滤列(或每次迭代动态创建/删除一个列)。

Neural(
Y( :Murder Rate ),
X(
:Robbery Rate, :"Agg-Aslt Rate"n, :Burglary Rate, :Larceny Rate,
:MVTheft Rate
),
Validation( :Validation ),
Informative Missing( 0 ),
Fit( NTanH( 3 ) ),
Where( :Filter == 1 )
)
还有其他人遇到过这个问题并找到解决方案吗?谢谢!
数据混合和清理预测模型和机器学习回复:缺少验证行的神经网络的错误消息 - 建议解决方法?你好@c_blanken ,
您的验证列似乎没有填满所有行,因为您将验证列分层到其他一些缺少数据的列上。 我的猜测是 JMP 不知道如何处理验证列中的那些行,因为缺少数据。
您是否计划在缺少数据的情况下对结果进行建模? 如果不是,那么您可以考虑排除那些缺少数据的行——这实际上是您对过滤列所做的,但是通过排除这些行,您不需要为您测试的每个验证列创建一个新的过滤列. 您还可以在 JSL 中轻松地将行状态设置为 Exclude,以便它是自动的,您不必手动执行。
如果您仍然需要对缺少数据的数据建模,那么您可能会考虑不对任何列进行分层,而只是随机生成训练/验证列。 即使存在缺失数据,JMP 也会将每一行分配给正确的数据集。
希望这可以帮助!,
DS
回复:缺少验证行的神经网络的错误消息 - 建议解决方法?你好@c_blanken ,
只是为来自的出色答案添加一些评论/评论@SDF1 .
- 为什么有些行的验证列缺少值? 它们是在创建列之后添加的吗?
- 看到“Bootstrap Forest”平台能够处理验证列中的缺失值,我并不感到惊讶,因为该模型使用训练数据的引导样本来拟合许多决策树。 神经网络和其他方法“按原样”使用数据,因此您可能会遇到收到的警告消息。
与其创建多个验证列来评估训练集可变性对模型性能的影响,可能(至少)有 2 个其他有趣的选项供您使用:
1. 创建一个“公式”验证列 (jmp.com)而不是“固定”验证列:

这种方法有两个好处:
- 即使在分层/分组验证的情况下,它也可以在验证列中为添加的新行自动添加训练/验证或测试标签,具体取决于分层/分组方法以及您使用的这些集合之间的比率。
- 在建模中,您还可以更轻松地尝试训练集和验证集之间的不同重采样,方法是右键单击您想要使用各种训练集和验证集评估的性能指标,单击“模拟”,您将在此处选择切换进出验证列:

通过这样做,您将获得一个数据表,其中包含在各种训练和验证集上完成的所有模拟,并且您可以绘制通过这些模拟获得的性能可变性(此处为玩具数据集“Boston Housing”和随机森林中的 R²):

2. 使用模型筛选平台 (jmp.com)仅包含您想要选择的模型和您想要的验证方法(K 折、嵌套 K 折,以及重复它们的选项或验证列)的平台,然后启动它。 您将可以访问结果摘要,还可以访问单个折叠结果:

例如,选择一个折叠以运行模型(在这里我使用fold3尝试)时,还将在您的数据表中出现一个新列,以便知道该折叠中的哪个行被用作培训或验证(0:训练,1:1::验证) :

我认为这些方法可能对您有用,手动工作更少,灵活性更大。