메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.신경망에서 8가지 페널티 모드를 자동으로 선별하고 결과를 현재 테이블에 출력하는 스크립트를 실행하려고 합니다. 스크립트의 다른 Fits에서 다른 결과를 얻지 못하는 이유를 해결하고 있습니다. 이로 인해 모델이 신경 메뉴와 스크립트에서 설정되었을 때 각 개별 페널티 모드에 대한 결과를 살펴보게 되었습니다. 분석 스크립트를 Data Table에 저장한 후 실행하여 스크립트를 작성했습니다. 따라서 결과는 동일해야 합니다.
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
모델을 다시 시작하고 동일한 설정을 모두 선택하면 위의 초기 결과와 동일한 결과를 얻습니다. 스크립트에서 실행하면 Redo Analysis와 동일한 결과를 얻습니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.유효성 검사 열이 있고 임의 시드를 설정해도 문제가 해결되지 않습니다.Random KFold(5) 유효성 검사 열(ValidationCol)을 만들어 아래 코드에서 사용했습니다. 또한 Holdback 유효성 검사 열을 사용하여 확인했는데 동작은 동일합니다.
먼저 Fit()을 위에서 아래로 주석 처리하면 두 번째(Absolute), 세 번째(WeightDecay), 네 번째(NoPenalty) 페널티 모드가 첫 번째(Squared)와 동일한 결과를 제공하는 것을 알 수 있습니다. 둘째, Fits 사이에 Random Seed를 999로 재설정하면 결과는 모든 Robust 모델에 대해 동일하고 모든 Non-robust 모델에 대해 동일합니다. Set Random Seed 함수는 런타임 시 모델 매개변수에 대해 뭔가(재설정?) 작업을 수행해야 합니다.
내 우려는 재현성을 얻는 유일한 방법은 시드를 사용하는 것이지만 그렇게 하면 페널티 모드를 '수정'하는 것 같습니다.
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견고하지 않은 모든 피팅에 대한 시드 재설정
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.내가 당신이 하고 있는 일과 당신의 대본을 완전히 오해하고 있을 가능성이 높습니다. 그러나 결국에는 다르고 재현 가능한 결과를 얻을 수 있습니다.
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 실행 사이에서 다른 추정치를 얻습니다. 결과는 동일합니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.실제로 동일한 문제에는 두 가지 다른 측면이 있습니다. 하나는 스크립트에서 Fits 사이의 시드를 재설정하고 다른 페널티 방법을 사용하면 다른 결과를 얻지 못한다는 것입니다. 이 때문에 시드를 재설정하지 않았을 때 나타나는 차이점이 실제인지 믿을 수 없습니다. 그들은 동일한 페널티 방법을 사용하지만 다른 곳에서 시작할 수도 있습니다. 업로드한 파일에 제가 그린 내용입니다.
두 번째(원래) 문제는 동일한 모델을 실행하지만 서로 다른 페널티 방법을 사용하는 두 개의 서로 다른 인스턴스가 동일한 결과를 제공하므로 어떤 방법이 실제로 어디에서 사용되고 있는지 확신할 수 없다는 것입니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.제가 의미하는 바를 설명하기 위해 스크립트가 포함된 작은 모델을 업로드했습니다. 스크립트를 실행하면 첫 번째 NN 피팅이 고유하다는 것을 알 수 있습니다. 다른 모든 항목은 동일한 결과를 제공합니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.내 문제는 JMP 인스턴스 2개를 실행하려고 할 때 시작되었습니다. 각 인스턴스는 4번의 NN 실행이 포함된 스크립트를 실행했습니다. 인스턴스 1은 Squared, Robust Squared, Absolute 및 Robust Absolute 페널티를 사용하여 시드 모델을 실행했습니다. 인스턴스 2는 4개 모델이 Weight Decay, Robust Weight Decay, No Penaly 및 Robust No Penalty NN을 실행하는 것을 제외하고는 정확히 동일한 스크립트(다른 이름의 파일)를 실행했습니다. 실행을 완료하는 데 약 20시간이 걸리며 스크립트는 수식을 저장합니다. 마지막에 데이터 테이블에. 내가 찾은 것은 두 인스턴스 모두 정확히 동일한 결과를 반환했다는 것입니다. 각 사례에는 4가지 다른 결과가 있었지만 정확히 동일했습니다. 나는 무슨 일이 일어나고 있는지 알아보기 위해 다양한 조합을 시도했습니다. 두 스크립트 간에 모든 변수를 고유하게 만들었습니다. 텍스트 상자를 사용하여 각 인스턴스의 데이터 테이블을 변수로 설정했습니다. 내가 무엇을 하든 두 인스턴스 간에 서로 다른 결과를 생성할 수 없었습니다.
메뉴에서 각 모델을 실행하면 8가지 다른 결과가 나타납니다. 스크립트에서 실행하면 그렇지 않습니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.내 문제는 고정 시드와 다른 페널티 방법을 사용하여 스크립트에서 실행할 때 다른 결과를 얻지 못한다는 것입니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.스크립트에는 다음 줄이 있습니다.
Validation Method( "Holdback", 0.3333 )
그리고 그것은 당신의 문제입니다. 이것을 실행할 때마다 다른 무작위 홀백 세트를 얻게 됩니다.
JMP Pro를 사용하고 있으므로 검증 열을 설정하여 사용하세요.
1. 계층화된 하위 집합을 만들 때와 같이 홀드백에 있는 행을 제어합니다.
2. 모델의 각 버전에 대한 보류에 대해 동일한 행을 사용합니다.
Re: 메뉴에서 실행하는 신경망과 스크립트에서 실행하는 신경망에서 동일한 결과를 얻지 못합니다.또한 다음 스크립트는 모두 동일한 결과를 제공합니다. 마치 스크립트에서 실행되는 신경망 모델이 페널티 방법 중 하나만 사용하는 것과 같습니다.
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 )
)
)