为什么 glmnet 中泊松套索回归模型的预测不是整数?

Why are the predictions from poisson lasso regression model in glmnet not integers?

我正在对 glmnet 中的计数结果进行套索回归建模预测。

我想知道该模型的预测结果如何。

这是一些玩具数据。它不是很好,因为我不知道如何模拟多变量数据,但我主要对语法是否正确感兴趣。

set.seed(123)
df <- data.frame(count = rpois(500, lambda = 3),
                 pred1 = rnorm(500),
                 pred2 = rnorm(500),
                 pred3 = rnorm(500),
                 pred4 = rnorm(500),
                 pred5 = rnorm(500),
                 pred6 = rnorm(500),
                 pred7 = rnorm(500),
                 pred8 = rnorm(500),
                 pred9 = rnorm(500),
                 pred10 = rnorm(500))

现在运行模特

x <- model.matrix(count ~ ., df)[,-1]
y <- df$count
cvg <- cv.glmnet(x,y,family = "poisson")

现在当我生成预测结果时

yTest <- predict(cvg, newx = x, family = "poisson", type = "link")

这是输出

# 1   1.094604
# 2   1.094604
# 3   1.094604
# 4   1.094604
# 5   1.094604
# 6   1.094604
# ... ........

现在显然模型预测都是一样的,而且都很糟糕(考虑到预测变量和结果之间没有任何关联,这不足为奇),但我想知道的是为什么它们不是整数(用我的真实数据我有同样的问题)。

我有几个问题。

所以我的问题是:

我在 glmnet.predict() 函数中指定了正确的参数吗?predict 函数的帮助中它指出指定 type = "link"给出泊松模型的“线性预测变量”,而指定 type = "response" 给出泊松模型的“拟合均值”(在我的愚蠢示例中,它生成 500 个值 2.988)。

预测结果不应该与数据本身的形式相匹配,即是整数吗?

如果我在 predict() 函数中指定了正确的参数,我该如何使用非整数预测我是将它们四舍五入到最接近的整数,还是直接保留他们一个人?

Shouldn't the predicted outcomes match the form of the data itself, i.e. be integers?

当您使用回归模型时,您正在将(条件)概率分布与每个预测变量配置相关联,该概率分布由参数(在泊松情况下,lambda 参数,代表均值)索引。响应的预测最小化了一些以预测值为条件的预期损失函数,因此它取决于您使用的损失函数。

如果您考虑 0-1 损失,那么是的,预测值应该是一个整数:分布的模式,它的最可能值,在 Possion 分布的情况下是 lambda 如果它不是整数 (https://en.wikipedia.org/wiki/Poisson_distribution)。

如果您考虑平方损失 (y - y_prediction)^2 那么您的预测就是条件期望(参见 https://en.wikipedia.org/wiki/Minimum_mean_square_error#Properties),它不一定是整数,就像您得到的结果一样。

glmnet 使用平方损失,但您可以通过将 floor() 函数应用于 glmnet.