여보세요,
나는 JMP pro 12를 사용한다.
신경 네트워크 분석에서 어떻게 AIC 또는 BIC를 얻을 수 있습니까?
문안 인사,
안젤로
미안하지만, 신경망을 위해이 작업을 수행했음을 확신했지만 사실은 비선형 플랫폼이었습니다. 코드는 다음과 같습니다.
dt = Open("$SAMPLE_DATA/Nonlinear Examples/Chemical Kinetics.jmp");
fit = dt << Nonlinear(
Y( :Name( "Velocity (y)" ) ),
X( :Name( "Model (x)" ) ),
Newton,
Finish
);
rep = fit << Report;
matRmse = rep[NumberColBox(5)] << Get As Matrix;
/***************************************************
/ calculate AICc /
***************************************************/
// AIC = N.ln(SS/N) + 2k
// where N = # data points
// k = # parameters + 1
// SS = sum of squares for the residuals
// AICc = AIC + [ 2k(k+1) / (N-k-1) ]
N = NRows(dt);
nParameters = 2;
k = nParameters + 1;
rmse = matRmse[1];
dfSS = N - nParameters;
MS = rmse^2;
SS = dfSS * MS; // this is correct compared to fit model
LL = N*Log(2*Pi()*e()*SS/N);
AIC = LL + 2*k;
AICc = AIC + ( (2*k*(k+1))/(N-k-1) );
/***************************************************
/ calculate BIC /
***************************************************/
BIC = LL + k*Log(N);
이 코드에서는 로그 가능성 값을 결정해야했지만 신경망은 이것을 제공하므로 더 쉬워야합니다. 나는 당신이 단지 k의 가치가 무엇인지 생각할 필요가 있다고 생각합니다. 나는 그것이 추측되고있는 가중치의 수에 1을 더한 것으로 가정합니다 (단일 계층 네트워크는 #factors x # nodes가 될 것입니다).
나는 당신과 공유 할 수있는 몇 가지 코드를 가지고 있습니다 - 불행히도 나는 현재 여행 중입니다 - 다른 사람으로부터 답장을받지 못하면 월요일에 게시 할 수 있습니다.
신경에 대한 빠른 열 공식에서 k를 얻는 방법이 있습니까? 아니면 모델이 어떻게 만들어 졌는지 알아야합니까? 예를 들어
Names default to here(1);
dt = open("$SAMPLE_DATA/Boston Housing.jmp");
nn = dt << Neural(
Y( :mvalue ),
X(
:crim,
:zn,
:indus,
:chas,
:nox,
:rooms,
:age,
:distance,
:radial,
:tax,
:pt,
:b,
:lstat
),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ), NLinear( 2 ), NLinear2( 1 ), NGaussian2( 1 ) )
);
nn << (Fit[1] << Save Fast Formulas);
pred = Column(dt, ncols(dt));
pred << Get Formula();
보고:
T#1 = Matrix(
{{:crim, :zn, :indus, Design Nom( :chas, [0 1], <<ELSE missing=""></ELSE>
미리 감사드립니다.