【问题标题】:slow logistic regression performance in accord.net在accord.net中缓慢的逻辑回归性能
【发布时间】:2014-08-03 09:25:47
【问题描述】:

使用 Accord.net (http://accord-framework.net/docs/html/T_Accord_Statistics_Analysis_LogisticRegressionAnalysis.htm) 的逻辑回归需要大约 5 分钟的计算时间。 SAS 在几秒钟内完成(也使用单 CPU 内核)。

数据集大约有 40000 行和 30 个输入。

为什么会有这样的差异? SAS 是否使用复杂度更高的算法?据我所知,逻辑回归是非常简单的算法。

有没有其他库会做得更好(最好是免费的)?

【问题讨论】:

  • SAS 可能不是免费的 - 但你得到你所支付的!
  • 我需要轻量级的 .net 库,而不是 SAS、Matlab 等
  • 请问,您能说出您从 SAS 获得哪些输出吗?我猜想是后处理部分(提取一些特定的统计数据)占用了大部分处理时间。如果是这种情况,我们可以尝试关闭信息提取部分中您不感兴趣的部分。
  • 这是我在雅阁中使用的:var regression = new LogisticRegressionAnalysis(inputs, outputs, titles.ToArray(), targetField.Title); regression.Compute(); foreach (var c in regression.Coefficients) { DS.Regressions.AddRegressionsRow(reg_id, groupKey, int.Parse(periodValRules), c.Name, c.OddsRatio, c.StandardError, c.ConfidenceLower, c.ConfidenceUpper, c.Value, c.Wald.Statistic * c.Wald.Statistic, c.Wald.PValue, targetField.Title); }
  • 我将在几天内对 R、SAS、Accord.NET 和 Extreme Optimization 进行比较...

标签: sas logistic-regression accord.net


【解决方案1】:

解决办法是注释掉这一行:

https://github.com/accord-net/framework/blob/development/Sources/Accord.Statistics/Analysis/LogisticRegressionAnalysis.cs#L504

它会计算一些我不需要的非常昂贵的统计数据。

有一个类可以和标准的Accord包一起使用:https://gist.github.com/eugenem/e1dd2ef2149e8c21c37d

【讨论】:

    【解决方案2】:

    我在多项逻辑回归中也有同样的过期时间。我对 Accord、R、SPSS 和 Python 的 Scikit 进行了比较。我有 30 个输入、10 个输出和 1600 多个训练示例。 Accord 耗时 8 分钟,其余耗时 2-8 sek。 Accord 看起来很漂亮,但对于多项逻辑回归来说,它的速度会变慢。我的解决方案是我做了一个小的 python web 服务来计算回归并将结果保存在数据库中。

    【讨论】:

      猜你喜欢
      • 2018-11-18
      • 2014-06-05
      • 2019-12-22
      • 2020-11-28
      • 2021-11-23
      • 2015-08-06
      • 1970-01-01
      • 2020-01-31
      • 2018-05-04
      相关资源
      最近更新 更多