#线性回归 #回归 #分段 #最优 #贪婪 #近似 #

plr

执行贪婪或最优误差有界分段线性回归(PLR)和样条回归

10个版本

0.3.1 2022年7月6日
0.3.0 2022年6月28日
0.2.0 2022年6月27日
0.1.6 2019年10月15日

#979 in 算法

GPL-3.0-or-later

340KB
5K SLoC

PLR (分段线性回归)

Rust crates.io

Rust实现的贪婪和最优误差有界分段线性回归(PLR)算法,这些算法在

Qing Xie, Chaoyi Pang, Xiaofang Zhou, Xiangliang Zhang, and Ke Deng. 2014. Maximum error-bounded Piecewise Linear Representation for online stream approximation. The VLDB Journal 23, 6 (December 2014), 915–937. DOI: https://doi.org/10.1007/s00778-014-0355-0

误差有界分段线性回归是给定一组数据点,找到一个分段线性函数,使得每个数据点在固定范围内近似的任务。有关更多信息,请参阅crate文档

PLR at various error levels


lib.rs:

此crate提供代码,使用贪婪算法(每点常数时间,常数空间)或最优算法(每点线性时间,线性空间)在线执行误差有界分段线性回归(PLR)。两种算法均按照所述实现。

Qing Xie, Chaoyi Pang, Xiaofang Zhou, Xiangliang Zhang, and Ke Deng. 2014. Maximum error-bounded Piecewise Linear Representation for online stream approximation. The VLDB Journal 23, 6 (December 2014), 915–937. DOI: https://doi.org/10.1007/s00778-014-0355-0

误差界限分段线性回归是这样一个任务:给定一组数据点,找到一个分段线性函数,使其在固定的误差范围内逼近每个数据点。换句话说,对于给定的数据集 (x, y) ∈ D,我们寻求一个分段线性函数 f,使得对于数据集中的每一个 (x, y) ∈ D,都有 |f(x) - y| < δ,其中 δ 是某个给定的值。这也可以被理解为最小化“L-infinity”损失。由于 f 可以通过具有 |D| 个段的分段线性函数简单地实现,因此我们还需要寻找具有最小段数的 f

在上面的例子中,我们展示了原始的1000个数据点(左),最大误差为0.05的PLR(中间),以及最大误差为0.005的PLR。所有显示的PLR都是最优的,这意味着它们包含尽可能少的段数以实现其误差界限。

该软件包可以使用两种在线算法之一执行PLR。

  • 贪婪PLR,它每个点使用恒定的时间并占用恒定的空间。贪婪PLR总是找到具有指定误差界限的PLR(例如,原始点中的任何一个都不会比其预测值远于 δ),但贪婪方法可能不会找到具有最小段数的PLR。
  • 最优PLR,它每个点使用线性时间并可能需要线性空间。在实践中,最优算法使用的空间量应该很小,但最坏情况下可能需要线性空间(参见该论文以获取更多详细信息)。最优算法将找到具有最小段数的解。

该软件包还可以执行样条回归而不是分段线性回归。请参阅greedy_splines或其在线版本GreedySpline

Ryan Marcus编写,许可协议为GPL v3。

依赖关系

约4MB
~73K SLoC