從選單運行的神經網路與從腳本運行的神經網路沒有得到相同的結果。我正在嘗試運行一個腳本,自動篩選神經網路中的八種不同的懲罰模式並將結果輸出到當前表中。 我一直在排查為什麼我沒有從腳本中的不同擬合中得到不同的結果。 這讓我查看了從神經選單與腳本設定模型時每個單獨懲罰模式的結果。 該腳本是透過將分析腳本儲存到資料表然後運行來製作的。 所以結果應該是相同的。
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 )
)
)