非线性模型的拟合优度

机器算法验证 拟合优度 非线性
2022-03-15 14:21:21

我们已经为观察到的数据拟合了一个非线性函数。下一步应该是评估此函数的拟合优度(如)。R2

衡量这一点的常用方法是什么?

编辑1:

拟合如下进行:

  1. 使用自变量AB执行线性回归
  2. 从回归参数计算分布的参数。(分布是非线性的,并且以变量C作为输入。)
  3. 通过将估计数据与观测数据进行比较来评估非线性分布的拟合优度。

编辑2:

上述步骤的示例:

  1. 回归模型:log(y)=β0+β1log(a)+β2log(b)
  2. ρ=β0β1对于以下非线性分布:θ=β2f(a)=ρaθ
  3. 用一组给定的观察的拟合优度。f(a)(a,f(a))
2个回答

可能还有更多,但对我来说,您似乎只想确定适合特定数据集 (a, f(a)) 的函数 f(a) 的拟合优度 (GoF )。因此,以下仅回答您的第三个子问题(我认为第一个和第二个与第三个没有直接关系)。

通常,GoF可以通过参数(如果您知道分布的函数参数)或非参数(如果您不知道它们)来确定。虽然您可能能够找出函数的参数,因为它似乎是指数或伽马/威布尔(假设数据是连续的)。不过,我会继续,就好像你不知道参数一样。在这种情况下,这是一个两步过程首先,您需要确定数据集的分布参数其次,您对定义的分布执行 GoF 测试为了避免重复自己,在这一点上,我将向您推荐我之前的答案到一个相关问题,其中包含一些有用的细节。显然,这个答案可以很容易地应用于除其中提到的分布之外的分布。

除了那里提到的 GoF 测试之外,您还可以考虑另一种测试 -卡方 GoF 测试仅适用于连续分布的KSAD检验不同,卡方 GoF 检验适用于离散 连续分布卡方 GoF 测试可以通过使用以下几个包之一在 R 中执行:stats内置包(函数chisq.test())和vcd包(函数goodfit()- 仅用于离散数据)。本文档提供了更多详细信息

好吧,在机器学习中,通常会出于模型测试的目的执行称为交叉验证的事情(测试具有这些超参数的模型类型 - 例如自由度数或其他 - 是否适合您的问题) - 你拆分你的数据多次进入训练和测试数据集,然后在训练集上运行优化并计算测试数据的任何质量。最保密的方法是运行所谓的“QxT-fold 交叉验证”。伪代码可能喜欢:

cv_values = []
for t in range(T):
    split = randomsplit(data, number_of_parst = Q)
    for test_id in range(Q):
        model.fit(split[:test_id] + split[test_id + 1:] # test on everything excepting test_id
        cv_values.append(model.test(split[test_id]))

cv_values.mean() # whatever