用r²评估回归模型

时间:2016-06-03 13:06:19

标签: python machine-learning nlp scikit-learn regression

使用一袋单词模型我计算每个文档的单词出现次数(这是来自委员会的帖子)并为每个帖子创建向量。例如:

X = [[0,0,0,1,0,3,0,0]
     [0,0,1,0,0,0,1,0]
     [1,0,1,0,2,0,0,0]]

y = [22,35,87]

y是X中每个向量的标签/目标(y =作者的年龄)。

在训练回归模型(线性回归,Logistic回归,...)后,我使用MAE(平均绝对误差) 将预测的年龄与真实年龄进行比较,得到了令人满意的结果。

但是我不太明白如何使用r²:

输入

我必须使用Predicted标签和真正的标签是否正确 (在我的情况下使用14-65岁之间的年龄)

r2_score(y_true, y_pred) 

不是MAE的用途吗?

低r²

在本例中,预测非常正确:

y_predicted = [49, 30, 31, 46, 28, 30]
y_true =      [46, 28, 30, 49, 30, 57]

除了一个预测之外的所有预测都接近真实年龄。 MAE是6。3年,但scikit-learnnsr²scorer显示-0.008

为什么这么糟糕?仅仅因为一个错误的预测?

Pearson r

此外,还有Pearson Correlation“r”: Pearson r平方是否等于r²?

1 个答案:

答案 0 :(得分:0)

确定系数R²描述了由回归模型解释的因变量的方差比例。 MAE只给出了所有测试数据的平均误差。因此,它们是衡量模型性能的两种不同方法,因为每种方法都有自己的陷阱。

R平方并不表示回归模型是否足够。对于良好的模型,您可以使用较低的R平方值,对于不适合数据的模型,可以使用较高的R平方值。

另一个可疑的是,你的值低于0,因为通常输出介于0和1之间,具体取决于它的实现。

也许你可以自己实现这个功能,它很容易实现(例如wiki

是的,您应该使用预测标签和实际测试数据。