从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。我正在尝试运行一个脚本,自动筛选神经网络中的八种不同的惩罚模式并将结果输出到当前表中。 我一直在排查为什么我没有从脚本中的不同拟合中得到不同的结果。 这让我查看了从神经菜单与脚本设置模型时每个单独惩罚模式的结果。 该脚本是通过将分析脚本保存到数据表然后运行来制作的。 所以结果应该是相同的。
Set up of model from Analyze>Predictive Modeling>NeuralSet up of model from Analyze>Predictive Modeling>Neural从“分析”>“预测建模”>“神经网络”建立模型
Initial run of modelInitial run of model模型的初始运行
Redo Analysis #1Redo Analysis #1重做分析 #1
Redo Analysis #2Redo Analysis #2重做分析 #2
如果我重新启动模型并选择所有相同的设置,我会得到与上面的初始结果相同的结果。 如果我从脚本运行,我会得到与重做分析相同的结果。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。拥有验证列并设置随机种子并不能解决问题。我制作了一个随机 KFold(5) 验证列 (ValidationCol) 并在下面的代码中使用它。 我还使用 Holdback 验证列进行了检查,行为是相同的。
首先,如果从上到下注释掉 Fit(),您会看到第二个 (Absolute)、第三个 (WeightDecay) 和第四个 (NoPenalty) 惩罚模式给出与第一个 (Squared) 相同的结果。 其次,如果您在拟合之间将随机种子重置为 999,则所有稳健模型的结果都相同,所有非稳健模型的结果也相同。 设置随机种子函数必须在运行时对模型参数执行某些操作(重置?)。
我担心的是,获得可重复性的唯一方法是使用种子,但这样做似乎可以“修复”惩罚模式。
Neural(
Y( :Target ),
X( :Name( "8-12_Mean" ), :Name( "12-16_Mean" ), :Name( "16-20_Mean" ) ),
Validation( :ValidationCol ),
Informative Missing( 0 ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 1 ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "Absolute" ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "Weight Decay" ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "NoPenalty" ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 0 ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 0 ), Penalty Method( "Absolute" ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 0 ), Penalty Method( "Weight Decay" ) ),
Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 0 ), Penalty Method( "NoPenalty" ) )
);
Robust SquaredRobust Squared鲁棒平方
Robust AbsoluteRobust Absolute绝对稳健
Robust Weight DecayRobust Weight Decay稳健的权重衰减
Robust No PenaltyRobust No Penalty稳健无惩罚
All Robust, reset seed for each fitAll Robust, reset seed for each fit所有稳健,每次拟合都会重置种子
All, non-robust, reset seed for each fitAll, non-robust, reset seed for each fit所有的、非鲁棒的、每次拟合都会重置种子
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。我很有可能完全误解了你正在做的事情和你的脚本;然而,就我而言,我能够得到不同的、可重复的结果。
Neural(
Y( :Target ),
X( :Name( "8-12_Mean" ), :Name( "12-16_Mean" ), :Name( "16-20_Mean" ) ),
//Validation Method( "KFold", 5 ),
Validation( :Validation ),
Informative Missing( 0 ),
//Set Random Seed( 999 ),
Fit( NTanH( 3 ), Robust Fit( 1 ) ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "Absolute" ) ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "Weight Decay" ) ),
Fit( NTanH( 3 ), Robust Fit( 1 ), Penalty Method( "NoPenalty" ) )
);
首先,您必须创建一个验证列。 分析/预测建模/制作验证列 (jmp pro v13,14) 使其在 :Target 上分层
当我按原样运行此脚本时,我对拟合之间和脚本运行之间的误差进行了不同的估计,尽管运行之间的误差非常接近。
取消注释随机种子行:我在拟合之间和 scipt 运行之间得到不同的估计,结果是相同的。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。实际上同一个问题有两个不同的方面。 一是如果我在脚本中重置 Fits 之间的种子但使用不同的惩罚方法,我不会得到不同的结果。 因此,我不能相信当我不重置种子时所看到的差异是真实的;它们可能只是使用相同的惩罚方法,但从不同的地方开始。 这就是我在上传的文件中说明的内容。
第二个(原始)问题是,运行相同模型但具有不同惩罚方法的两个不同实例给出相同的结果,因此我无法确定在任何地方实际使用哪种方法。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。我上传了一个带有脚本的小模型来说明我的意思。 当您运行脚本时,您将看到第一个 NN 拟合是唯一的;所有其他人都给出相同的结果。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。当我尝试运行 2 个 JMP 实例(每个实例运行一个包含 4 次 NN 运行的脚本)时,我的问题就开始了。 实例 1 使用平方、稳健平方、绝对和稳健绝对惩罚运行种子模型。 实例 2 运行完全相同的脚本(在不同名称的文件中),除了 4 个模型运行权重衰减、鲁棒权重衰减、无惩罚和鲁棒无惩罚神经网络。运行需要约 20 小时才能完成,脚本会保存公式到最后的数据表。 我发现两个实例返回的结果完全相同。 每个实例都有 4 个不同的结果,但它们完全相同。 我尝试了各种组合,试图找出发生了什么。 我使两个脚本之间的每个变量都是唯一的。 我使用文本框将数据表设置为每个实例中的变量。 无论我做什么,我都无法在两个实例之间产生不同的结果。
如果我从菜单中运行每个模型,我会得到八种不同的结果。 如果我在脚本中运行,我不会。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。我的问题是,当使用固定种子和不同的惩罚方法从脚本运行时,我没有得到不同的结果。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。在你的脚本中有这一行:
Validation Method( "Holdback", 0.3333 )
这就是你的问题。 每次运行此命令时,您都会获得不同的随机 Holback 集。
由于您使用的是 JMP Pro,因此请设置验证列并使用它。
1. 控制哪些行处于保留状态,就像创建分层子集时一样。
2. 对模型的每个版本使用相同的行作为保留。
回复:从菜单运行的神经网络与从脚本运行的神经网络没有得到相同的结果。此外,以下脚本都给出相同的结果:就好像从脚本运行的神经网络模型仅使用其中一种惩罚方法
Neural(
Y( :Target ),
X( :Name( "0-4_Mean" ), :Name( "4-8_Mean" ), :Name( "8-12_Mean" ) ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Set Random Seed( 999 ),
Fit(
NTanH( 3 ),
Robust Fit( 1 ),
Penalty Method("Squared"),
Number of Tours( 3 )
)
)Neural(
Y( :Target ),
X( :Name( "0-4_Mean" ), :Name( "4-8_Mean" ), :Name( "8-12_Mean" ) ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Set Random Seed( 999 ),
Fit(
NTanH( 3 ),
Robust Fit( 1 ),
Penalty Method("Absolute"),
Number of Tours( 3 )
)
)Neural(
Y( :Target ),
X( :Name( "0-4_Mean" ), :Name( "4-8_Mean" ), :Name( "8-12_Mean" ) ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Set Random Seed( 999 ),
Fit(
NTanH( 3 ),
Robust Fit( 1 ),
Penalty Method("Weight Decay"),
Number of Tours( 3 )
)
)
Neural(
Y( :Target ),
X( :Name( "0-4_Mean" ), :Name( "4-8_Mean" ), :Name( "8-12_Mean" ) ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Set Random Seed( 999 ),
Fit(
NTanH( 3 ),
Robust Fit( 1 ),
Penalty Method("NoPenalty"),
Number of Tours( 3 )
)
)