在R中的GAM模型中处理具有特殊(非物理)值的数值变量

在R中的GAM模型中处理具有特殊(非物理)值的数值变量,r,machine-learning,gam,R,Machine Learning,Gam,我正在使用mgcv构建GAM模型,我有如下功能: value: -1000 0 1 2 3 4 5 6 7 8 count: 42943 978 1069 402 145 43 7 1 1 1 此功能有一个特殊值-1000,表示没有记录。只有>0的值具有物理意义 对整个范围使用平滑样条线没有意义,因为-1000到>0之间的距离没有意义 有时,将该变量转换为分类因子变

我正在使用mgcv构建GAM模型,我有如下功能:

value:  -1000     0     1     2     3     4     5     6     7     8 
count:  42943   978  1069   402   145    43     7     1     1     1
此功能有一个特殊值-1000,表示没有记录。只有>0的值具有物理意义

对整个范围使用平滑样条线没有意义,因为-1000到>0之间的距离没有意义

有时,将该变量转换为分类因子变量并使用分段常数函数也不是很方便,因为如果存在如此多的离散值,训练(测试)集很容易错过因子级别


有什么好方法可以处理这种类型的功能吗?我不想简单地删除它们,因为>0部分仍然提供一些辨别能力

让我们从一个事实开始,正如你所说,“-1000意味着没有记录”,所以你不能把这个变量当作一个比例变量,因为-1000更像一个符号而不是一个数字(即使你有负值)

因此,你要做的改变/转变必须有一个目标,因为你可以尝试各种事情。 我想这里的目标是提高模型的预测能力。 这意味着尝试各种转换,看看会发生什么。 您可以尝试:

a) 将-1000替换为NAs

b) 通过将此变量分组为范围(可能基于分位数),创建一个分类变量,但要获得合理数量的范围。类似“无记录”、“0”、“1”、“2+”之类的内容。也许可以创建一个决策树或回归树(取决于结果变量),并让它将变量分成若干组


如果“没有记录”是“缺失记录”而不是“没有记录”,那么你可以考虑如何获取该记录,因为“无记录”的情况是该列的94%个案例。这可能意味着将该变量简单拆分为“无记录”和“记录存在”。

如果将它们替换为NA会发生什么?谢谢!我认为你的建议对我有意义。