栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

不同库的结果和性能不同

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不同库的结果和性能不同

在Felipe Mello的信息丰富的答案之上的一些其他信息(免责声明:此处是DTAIDistance的作者)。

对于距离结果:

  • DTAIDistance仅使用欧几里得距离(或L2范数),这是硬编码的。做出此选择是为了加快C代码的执行速度(不调用函数)。“快速”是指使用基于C的实现而不是纯Python版本,因此这两种方法给出的结果完全相同。
  • FastDTW是与DTW不同的算法。这是线性近似。“快速”是指较低的复杂性。
  • cDTW。我对这个工具箱不是很熟悉,但是它似乎实现了L1规范。

对于速度结果:

通常,基于纯C的算法比纯Python的算法快100倍(在DTAIDistance中,这是distance()和distance_fast()之间的差异)。对于基于C的方法,差异主要是由于方法的灵活性。例如,传递自定义规范会减慢该方法的速度(更多函数调用)。同样,不同的方法具有不同的选项,这会导致算法中或多或少的switch语句。例如,DTAIDistance提供了许多方法来调整该方法,因为它更喜欢提早停止计算而不是进一步的优化(也由Felipe
Mello观察到)。此外,不同的方法存储不同数量的数据。DTAIDistance距离方法不存储整个矩阵,也不提供线性空间复杂度(使用具有二次空间复杂度的warping_paths方法获得完整的矩阵)。通常,对于DTW,建议使用一个窗口来稍微降低时间复杂度。

对于DTAIDistance,所有设计选择都考虑了时间序列聚类应用程序(distance_matrix_fast方法)。这是不允许自定义规范的另一个原因。DTW代码必须是纯C语言,才能在C代码级别上支持并行化,并且具有最小的开销(它使用OpenMP)来计算序列之间的所有成对距离。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号