gpt4 book ai didi

r - R 中具有稀疏特征矩阵的大规模回归

转载 作者:行者123 更新时间:2023-12-02 06:22:00 25 4
gpt4 key购买 nike

我想在 R 中使用许多(例如 100k)特征进行大规模回归(线性/逻辑),其中每个示例在特征空间中相对稀疏——例如,每个示例约 1k 个非零特征示例。

看起来像SparseMslm 应该可以做到这一点,但我很难从 sparseMatrix 格式转换为 slm 友好格式。

我有一个由标签 y 组成的数字向量和一个由特征 X\in {0,1} 组成的 sparseMatrix 。当我尝试时

model <- slm(y ~ X)

我收到以下错误:

Error in model.frame.default(formula = y ~ X) : 
invalid type (S4) for variable 'X'

可能是因为 slm 想要一个 SparseM 对象而不是 sparseMatrix

有没有一种简单的方法可以 a) 直接填充 SparseM 对象或 b) 将 sparseMatrix 转换为 SparseM 对象?或者也许有更好/更简单的方法来做到这一点?

(我想我可以使用 Xy 显式编码线性回归的解决方案,但如果有 slm 工作那就太好了.)

最佳答案

不了解 SparseM,但 MatrixModels 包有一个未导出的 lm.fit.sparse 函数可供您使用。请参阅?MatrixModels:::lm.fit.sparse。这是一个例子:

创建数据:

y <- rnorm(30)
x <- factor(sample(letters, 30, replace=TRUE))
X <- as(x, "sparseMatrix")
class(X)
# [1] "dgCMatrix"
# attr(,"package")
# [1] "Matrix"
dim(X)
# [1] 18 30

运行回归:

MatrixModels:::lm.fit.sparse(t(X), y)
# [1] -0.17499968 -0.89293312 -0.43585172 0.17233007 -0.11899582 0.56610302
# [7] 1.19654666 -1.66783581 -0.28511569 -0.11859264 -0.04037503 0.04826549
# [13] -0.06039113 -0.46127034 -1.22106064 -0.48729092 -0.28524498 1.81681527

比较:

lm(y~x-1)

# Call:
# lm(formula = y ~ x - 1)
#
# Coefficients:
# xa xb xd xe xf xg xh xj
# -0.17500 -0.89293 -0.43585 0.17233 -0.11900 0.56610 1.19655 -1.66784
# xm xq xr xt xu xv xw xx
# -0.28512 -0.11859 -0.04038 0.04827 -0.06039 -0.46127 -1.22106 -0.48729
# xy xz
# -0.28524 1.81682

关于r - R 中具有稀疏特征矩阵的大规模回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com