Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;系统在计算上是奇异的;brnn包_R_Neural Network_Singular - Fatal编程技术网

&引用;系统在计算上是奇异的;brnn包

&引用;系统在计算上是奇异的;brnn包,r,neural-network,singular,R,Neural Network,Singular,我正在使用brnn软件包将正则化神经网络拟合到我的数据中。在某些情况下,我会遇到一个错误: Error in solve.default(2 * beta * H + ii(2 * alpha, npar)) : system is computationally singular: reciprocal condition number = 2.29108e-20 我在stackoverflow上阅读了与本主题相关的所有问题,但解决方案并不直接适用于我的问题。到目前为止,我知道: 问

我正在使用
brnn
软件包将正则化神经网络拟合到我的数据中。在某些情况下,我会遇到一个错误:

 Error in solve.default(2 * beta * H + ii(2 * alpha, npar)) : 
  system is computationally singular: reciprocal condition number = 2.29108e-20
我在stackoverflow上阅读了与本主题相关的所有问题,但解决方案并不直接适用于我的问题。到目前为止,我知道:

  • 问题出在
    brnn()
    函数中,它依赖于
    solve()
    函数。解决方案是减少容差(
    tol
    包中的参数
    brnn
    package)。我确实减少了,但问题仍然存在
  • 预测因子的多重线性。这是不可能的,因为我只有一个独立变量
  • 我被卡住了
  • GitHub站点

    我的代码的一小部分,可用于再现错误: 1.创建数据

    temporal_df = structure(list(x = c(-0.553333333333333, -3.56, -2.36333333333333, 
                                       1.48666666666667, 1.15, 0.636666666666667, -0.593333333333333, 
                                       -1.52, -2.56, -0.156666666666667, -1.09666666666667, 0.96, 0.02, 
                                       1.73333333333333, 0.34, 1.25666666666667, -0.396666666666667, 
                                       -1.15, 2.95, -1.95333333333333, -0.293333333333333, 4.33333333333333, 
                                       0.35, 1.41666666666667, 3.36666666666667, -1.54333333333333, 
                                       1.1, 0.32, 2.42, 0.34, -1.82333333333333, 1.88333333333333, 2.07666666666667, 
                                       1.96, 2.25333333333333, 0.303333333333333, 2.81333333333333, 
                                       -3.14, 0.776666666666667, 4.93, -2.16666666666667, 2.41333333333333, 
                                       2.23333333333333, 1.71666666666667, 0.623333333333333, 4.85666666666667, 
                                       0.436666666666667, 2.56333333333333, 2.21666666666667, 0.0133333333333334, 
                                       3.38333333333333, 1.51666666666667), MVA = c(7.1856694, 5.598461, 
                                                                                    5.872606, 6.5031284, 5.6605362, 6.002758, 6.018826, 7.3664676, 
                                                                                    5.7172694, 5.9872138, 6.07253916666667, 5.87814966666667, 5.132916, 
                                                                                    6.26116966666667, 5.7409835, 5.75330233333333, 5.93054783333333, 
                                                                                    5.52767016666667, 5.5299795, 5.8777515, 5.501568, 5.696386, 5.74542866666667, 
                                                                                    5.45688033333333, 5.14158866666667, 6.22877433333333, 6.39709566666667, 
                                                                                    6.82969366666667, 6.709905, 6.06170333333333, 6.11582483333333, 
                                                                                    6.20273833333333, 6.709709, 6.40844766666667, 6.15858716666667, 
                                                                                    5.9047125, 6.1760875, 6.86213666666667, 6.45906283333334, 7.02090133333333, 
                                                                                    6.467793, 6.47158383333333, 6.76265383333333, 6.10339883333333, 
                                                                                    7.23381633333333, 6.75162833333333, 6.59454716666667, 6.50917566666667, 
                                                                                    6.66505483333333, 7.58141116666667, 7.15875233333333, 7.742872
                                       )), .Names = c("x", "MVA"), row.names = c(NA, -52L), class = "data.frame")
    
    现在适合brnn型号:

    #install.packages('brnn')    
    library(brnn)
    temporal_model <- brnn(x ~ ., data = temporal_df, neurons = 2, tol = 1e-30)
    

    1e-30的数量远小于1e-16的典型“基本等于零”数量。选择该数字的基础是,它接近2.2e-32的平方根,这是POSIX标准8字节浮点“double”表示法的精度极限。我从未见过任何一位R大师使用如此小的数字。参见CV.com上的解释:我如何强制L-BFGS-B不提前停止

    如果默认公差保持在1e-6,则调用
    brnn
    (有时)运行时不会出错,因此也不需要使用该选项:

    > temporal_model <- brnn(x ~ ., data = temporal_df, neurons = 2, tol = 1e-6)
    Number of parameters (weights and biases) to estimate: 6 
    Nguyen-Widrow method
    Scaling factor= 1.4 
    gamma= 0     alpha= 0    beta= 2.3753 
    

    时间模型您的数据中有任何字符串或因子吗?没有,有两个数值变量。Y~X.Y在所有迭代中都是固定的,而X在每个迭代中都是变化的。X以平均值计算。我编辑了我的问题并添加了一个代码示例。附言:有没有办法将这个问题复制到cross validted?谢谢@42-。然而,问题并没有完全解决。如果将代码重复几次,函数仍然返回错误。(有关详细信息,请参见我编辑的问题)。但好吧,我远不是数学家,有没有办法防止错误?我怀疑,如果你给它的数据有一点“趋势”,而不是一个基本上为空的关系,那么会有更少的错误抛出,因为计算上的奇异事件。真的。这里有一个陷阱:这个函数只是一个更大的函数的一部分,它遍历可能的预测值并试图找到最佳预测值。然而,一些预测值具有空关系(例如,问题中的示例),但我需要绕开这一点,否则会出现错误。因此,可能的解决方案也是抑制错误…您是否看过
    ?try
    ?tryCatch
    ?这不是抑制错误,而是忽略它。
    > temporal_model <- brnn(x ~ ., data = temporal_df, neurons = 2, tol = 1e-6)
    Number of parameters (weights and biases) to estimate: 6 
    Nguyen-Widrow method
    Scaling factor= 1.4 
    gamma= 0     alpha= 0    beta= 2.3753