假设我有一个包含 10 个输入特征的输入特征向量,每个输入特征的数量级约为1E-7
。
当我使用log
这些输入特征运行线性回归时,我得到的R^2
值约为0.98
。
但是,如果我1E-2
在运行上述拟合之前添加到每个输入特征,我会R^2
得到0.5616
.
问题是我不会先验地知道添加到我的输入特征的常数是1E-2
,所以我不能每次都简单地减去那个数量。
有没有一种通用的方法来纠正添加到我的输入特征集中的大型未知常量?
这是一个示例输入文件: http ://stanford.edu/~hq6/13
这是一个相应的输出文件: http ://stanford.edu/~hq6/15
下面是一些用于训练的代码:
input_features = read.csv('InputFeatures.csv', header=F)
# Adding constant error term to all input features
input_features = input_features + 1E-2
# How can we correct for this constant if we do not know what the constant is beforehand?
input_features[input_features <= 0] = 1E-10
input_features = log(input_features)
output = read.csv('Output.csv', header=F)
full_data = data.frame(input_features, output)
summary(lm(V1.1 ~ ., data=full_data))
当这段代码在没有行的情况下运行时input_features = input_features + 1E-2
,我从输出R-squared
中得到一个近似值。0.98
summary
当这条线被放入时,则R-squared
小于0.5
。