费希尔判别计算时间
Posted
技术标签:
【中文标题】费希尔判别计算时间【英文标题】:fisher discriminant computation time 【发布时间】:2012-11-20 20:07:47 【问题描述】:我最近在 Lisp 中实现了 Fisher 的线性判别 (FLD)。到目前为止,我一直在使用 dim(4 数量级的真实数据,该程序已经在我的 AMD Athlon(tm) II Dual-Core M320 上运行了几个小时× 2 笔记本电脑。以下是我正在使用的文件的大小:
$ wc output_sig.txt
13000 65000 627677 output_sig.txt
$ wc output_bkg.txt
13000 65000 644621 output_bkg.txt
综上所述,FLD的计算时间如何随着样本量和维度的变化而变化?这里需要几个小时的计算时间吗?
【问题讨论】:
谢谢,我将插入打印语句并创建一个日志文件。我可能需要一台专用电脑。 您可能希望安装一个分析器来检查每个函数所花费的时间百分比。时间宏也可能会有所帮助。 谢谢,我正在安装 SLIME-emacs 似乎有吸引人的分析器。 这个问题有点无效,因为它指的是一些代码的渐近性能,没有显示那个代码。可能有各种混杂因素会影响其性能。 我目前正在安装github,所以代码应该很快就会上传。另外,使用 slime,我编译了运行 50 分钟的代码,或者需要几分钟。但是让代码运行得更快会很好,尤其是对于更大的数据集。 【参考方案1】:在不知道代码的情况下:LDA 基本上是一个广义特征值问题,因此如果使用足够有效的线性代数例程,问题就可以解决。 LISP 中的手写例程通常效率不高,因此我建议使用 LAPACK 包装器,例如 Matlisp。
【讨论】:
谢谢,其实我自己写了一个小矩阵库,可以用ECL编译成C。 用原生 C 编码只是包的一部分,带有原始矩阵运算的 BLAS 库也应该针对处理器进行优化微调,以最大限度地减少缓存未命中。 ATLAS 系统试图实现这一点:math-atlas.sourceforge.net 除非您非常精通数值线性代数,否则我不会尝试从头开始编码。以上是关于费希尔判别计算时间的主要内容,如果未能解决你的问题,请参考以下文章