当问题是回归问题时,如何计算准确率?
我正在处理一个回归问题,预测每个用户每天使用多少电力。我使用Keras构建了一个LSTM模型来进行这个时间序列预测。开始时,我使用’accuracy’作为指标,当运行
model.fit(...,verbose=2,...)
时,每个epoch之后val_acc
都有一个值。在我的结果中,这个值没有变化,总是相同的数值。
然后我意识到,回归问题中没有准确率的概念,于是我开始思考,这个准确率是如何计算的?
我猜测,当回归问题中的指标是’accuracy’时,准确率的计算方式与分类问题类似:预测值等于真实值的数量除以总样本数。
我猜得对吗?
回答:
在回归问题中,你使用的是测量你的预测值与实际值之间差距的指标,如平方误差、均方误差等。请参阅如何确定回归的准确率?应使用哪种测量方法?
在构建Keras的LSTM模型时,你通常先构建一个“骨架”,然后进行编译、拟合,最后进行预测。在编译步骤中,你需要定义损失函数(参见Keras关于Sequential模型的文档)和一个指标,因此你可以例如这样做:
model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['mean_squared_error'])
(参见Keras关于指标的文档)。因此,如果你在回归设置中将accuracy
作为指标,你不会得到合理的结果,因为这个指标仅适用于分类任务。