我正在实现LDA,并避免使用现成的库。我试过python / numpy。拥有100万条记录,词汇量约为2000,仅需1次连续的GibbsSampling,大约需要7分钟。使用具有8个进程的分布式LDA版本可将其加速至约5分钟。分布式LDA ::每个进程将在总矩阵的子集上执行顺序GibbsSampling,并且一旦完成,相应的输出矩阵将被累加。
有没有办法让它更快?一起用另一种语言替换实现?
添加更多记录〜线性增加所需时间。在我的用例中,我需要运行LDA超过2500万个文档,这可能意味着大约144分钟一次运行!然后至少100次运行LDA以确保模型几乎收敛!!!!
你可能想看一下微软的LightLDA。他们开发了一种能够分发的更高效的采样器。 underlying paper声称他们的方法快得多。
如果你想坚持使用python,你可以在这里找到一个端口:https://github.com/nzw0301/lightLDA。