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 部分仍然提供一些区分能力。

4

1 回答 1

2

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

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

a) 用 NA 替换 -1000

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

c) 如果“无记录”是指“缺失记录”而不是“没有记录”,那么您可能会考虑以某种方式获取该记录,因为“无记录”案例占该列案例的 94%。这可能意味着将该变量简单地拆分为“无记录”和“记录存在”。

于 2015-08-07T23:39:53.950 回答