也许这是一个有点笼统的问题。我正在尝试解决各种回归任务,并为它们尝试各种算法。例如,多元线性回归或 SVR。我知道输出不能是负数,而且我的训练集中从来没有负输出值,尽管我可以有 0(例如,我预测“路上的汽车数量” - 它不能是负数但可以是 0)。我经常面临一个问题,即我能够训练出相对较好的算法(可能适合我的数据的良好回归线)并且我在训练集上的平均平方误差相对较小。但是,当我尝试针对新数据运行回归算法时,有时会得到负输出。显然,我不能接受负输出,因为它不是有效值。问题是 - 使用此类输出的正确方法是什么?我应该将负输出视为 0 输出吗?对这种情况有什么一般性建议吗?
与回归算法的负输出作斗争的正确方法,其中输出必须一直为正
数据挖掘
机器学习
回归
2021-10-09 08:28:14
2个回答
正如您似乎认识到的那样,问题在于您的模型选择。在线性回归的情况下,您的输出没有限制。当预测需要是非负的,只要它们离零足够远,这通常很好。但是,由于您的许多训练示例都是零值的,因此情况并非如此。
如果您的数据是非负的且离散的(例如道路上的汽车数量),您可以使用具有对数链接函数的广义线性模型 (GLM) 进行建模。这称为泊松回归,有助于对离散的非负计数进行建模,例如您描述的问题。泊松分布由单个值参数化,它描述了分布的期望值和方差。
这导致了一种类似于 Emre 描述的方法,因为您试图将线性模型拟合到您的观察日志。
一个标准技巧是估计所需数量的对数,然后取它的指数,它总是正的。缺点是误差针对日志进行了优化,它将数量级的差异视为相等。另一种选择是像往常一样进行回归,然后投影到可行集(使用输出的正数部分;)