是否有用于计算“运行”线性或逻辑回归参数的算法?

机器算法验证 回归 物流 在线算法
2022-02-05 19:15:11

http://www.johndcook.com/standard_deviation.html上的一篇论文“准确计算运行方差” 展示了如何计算运行均值、方差和标准差。

是否有算法可以在提供每个新训练记录时类似地“动态”更新线性或逻辑回归模型的参数?

4个回答

的线性回归系数y=ax+ba=cov(x,y)/var(x)b=mean(y)amean(x)

因此,您真正需要的是一种增量方法来计算根据这个值和的平均值,您可以计算参数正如您将在下面给出的伪代码中看到的那样,的增量计算非常相似这应该不足为奇,因为cov(x,y)xyxabcov(x,y)var(x)var(x)=cov(x,x)

这是您可能正在寻找的伪代码:

init(): meanX = 0, meanY = 0, varX = 0, covXY = 0, n = 0

update(x,y):
n += 1
dx = x - meanX
dy = y - meanY
varX += (((n-1)/n)*dx*dx - varX)/n
covXY += (((n-1)/n)*dx*dy - covXY)/n
meanX += dx/n
meanY += dy/n

getA(): return covXY/varX
getB(): return meanY - getA()*meanX

我在搜索等效算法时发现了这个问题,该算法将多元回归增量计算为以便R=(XX)1XYXR=Y+ϵ

对于您的两个具体示例:

线性回归Alexander Strehl 和 Michael Littman 的论文“在线线性回归及其在基于模型的强化学习中的应用”描述了一种称为“KWIK 线性回归”的算法(参见算法 1),该算法使用增量更新提供了线性回归解决方案的近似值. 请注意,这不是正则化的(即它不是岭回归)。我很确定 Strehl & Littman 的方法不能扩展到该设置。

逻辑回归

该线程对此事有所启发。报价:

即使没有正则化约束,逻辑回归也是一个非线性优化问题。这已经没有分析解决方案,这通常是派生更新解决方案的先决条件。有了正则化约束,它就变成了一个有约束的优化问题。这在无约束问题已经存在的问题之上引入了一组全新的非分析复杂性。

但是,您可能希望查看其他在线(或增量)回归方法,例如局部加权投影回归 (LWPR)

作为一般原则:

0)你保留了足够的统计数据和当前的 ML 估计

1)当你得到新数据时,更新足够的统计数据和估计

2)当您没有足够的统计数据时,您需要使用所有数据。

3)通常你没有封闭形式的解决方案;以以前的 MLE 为起点,使用一些方便的优化方法从那里找到新的最优值。您可能需要进行一些试验,以找出哪些方法可以为您的特定类型的问题实例做出最佳权衡。

如果您的问题具有特殊结构,您可能可以利用它。

一些可能有价值或可能没有价值的潜在参考资料:

McMahan, HB 和 M. Streeter (2012),
开放问题:在线逻辑回归的更好界限
JMLR:研讨会和会议论文集,第 23 卷,44.1–44.3

一分钱,WD 和 SJ 罗伯茨(1999 年),
动态逻辑回归
诉讼 IJCNN '99

添加到 tdc 的答案中,没有已知的方法可以计算任何时间点的系数的精确估计,每次迭代只需恒定时间。但是,有一些替代方案是合理且有趣的。

首先要看的模型是在线学习设置。在这种情况下,世界首先宣布 x 的值,您的算法预测 y 的值,世界宣布真实值 y',您的算法遭受损失 l(y,y')。对于这种设置,已知简单的算法(梯度下降和指数梯度等)会实现亚线性遗憾。这意味着当您看到更多示例时,您的算法所犯的额外错误数量(与可能的最佳线性预测器相比)不会随着示例数量的增加而增加。这甚至在对抗性环境中也有效。有一篇很好的论文解释了证明这些遗憾界限的一种流行策略。Shai Shalev-Schwartz 的讲义也很有用。

在线学习设置有一个扩展,称为强盗设置,您的算法仅给出一个数字,表示它的错误程度(并且没有指向正确答案的指针)。令人印象深刻的是,在线学习的许多结果都延续到了这种环境中,除了这里一个人被迫探索和利用,这导致了各种有趣的挑战。