【问题标题】:Simple Regression Prediction Algorithm in JavaScriptJavaScript 中的简单回归预测算法
【发布时间】:2017-10-23 02:50:34
【问题描述】:

我正在尝试使用回归根据过去的记录对组织的未来利润进行简单的预测。我关注this link。出于测试目的,我更改了样本数据并产生了以下结果:

我的实际数据将是日期和利润,它们会上下波动,而不是连续递增。我意识到上述方法适用于随着预测非常准确而不断增加的样本数据。但是,当我将数据更改为截图中疯狂上下的数据时,预测不再那么准确了。

只是想知道是否有任何方法可以提高回归的准确性,因为我的数据会上下波动。

谢谢!

【问题讨论】:

    标签: javascript algorithm prediction non-linear-regression math.js


    【解决方案1】:

    当您进行回归时,您正在为数据拟合 模型。换句话说,您是在说“这是一个大致描述数据行为方式的方程式”。在线性回归情况下,模型/方程为:

    y = a * x + b
    

    x 是输入,y 是输出。通过进行线性回归,您是在说“我的数据遵循一条直线,这是我的数据,最适合数据的参数 a 和 b 是什么?”。

    很明显,如果您的数据沿着一条直线,这将很糟糕。例如,看看我在 Google 图片上找到的 this image

    很明显,您可以看到数据具有某种复杂的波浪形状 - 它会上下波动,然后再上升。线性模型不够复杂,无法表达这种形状(只能做直线)。所以不太合适。

    由于您需要一个更复杂的模型,因此您必须选择一个。标准的有几十种,你可以自己编。所有的模型都是一个带有一些固定参数的方程,可以调整这些参数以使方程适合您的数据。

    我建议您使用 Excel 或 Google 表格中的趋势线选项来感受一下。一些常见模型请参阅趋势线类型位here

    请注意,这些都不适用于月度利润,因为它们都不是真正的周期性。您可能需要一个模型,该模型由一些重复乘数组合来捕获逐月变化,然后是一个线性或多项式组件来捕获年度利润随时间增加或减少的事实。

    但是,您不想要一个过于表达能力的模型,否则您将过度拟合数据(基本上它会在噪声中看到模式)。

    【讨论】:

    • 嘿,您认为三次回归是否能够预测波浪模式?我参考了这个帖子:stackoverflow.com/questions/22319605/…我放了一些上下波动的测试数据,然后打印出来的预测数据与实际数据非常接近(所以我认为它是正确的?)。我不确定这种情况下的预测是否准确,因为我不确定预测实际上是如何工作的。 :(
    • 另外,三次回归的公式是y = ax^3 + bx^2 + cx + d,对吗?我意识到一个问题,当我使用三次回归时,预测数据完全以“半弧”的形状增长。无论如何要让预测值上下波动?
    • 没有三次回归是行不通的。它只能上升和下降一次——您的数据每年都会上升和下降。我认为您需要了解自己在做什么。
    猜你喜欢
    • 2018-04-02
    • 2021-02-27
    • 2014-01-31
    • 2013-02-19
    • 2016-05-24
    • 2015-06-19
    • 2018-10-09
    • 2018-10-08
    • 2021-01-19
    相关资源
    最近更新 更多