你好,
我使用的是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>
提前致谢。