具有高基数分类变量的逻辑回归

数据挖掘 逻辑回归
2021-10-04 02:00:04

我有一个逻辑回归模型,我只关心预测能力而不是可理解性。我对预测视频游戏中的胜率很感兴趣。

共有 133 个字符。每个团队选择其中的 5 个(不重复)。这些字符中的每一个都被分配到五个位置之一(同样没有重复)。

目前,我将这些字符中的每一个都作为虚拟变量。此外,我在每个变量之间都有一个交互变量。目前模型中不包含角色的位置。

我知道我可以通过排除低播放率角色来缩小模型的大小,但是我担心所需的样本量对于模型的复杂性来说仍然太小了。任何意见,将不胜感激。

  • 样本量:大约。两百万
2个回答

所以我相信你正在建立一个二元结果的模型 {lose, win}:= {0, 1},对吗?

我建议只使用单热编码或稀疏矩阵来存储这些输入,然后模型应该运行得很好。这在 R (sparse.model.matrix) 或 Python (pd.get_dummies(sparse=True)) 中非常简单。

这是一个快速演示,演示如何在 R 中从采样类别中构建稀疏矩阵,并选择其中至少有 5 个观察值的子集。

library(MASS)
require(glmnet)
n <- 1000
x1 <- sample(paste(letters,1), n, replace=T)
x2 <- sample(paste(letters,2), n, replace=T)
x3 <- paste(x1,x2,sep='-')
xdf <- data.frame(x1,x2,x3)
xs <- sparse.model.matrix(~.-1, data=xdf)
vars <- colnames(xs)
colsmry <- colSums(xs)
colsubset <- colsmry > 4
xs_ss <- xs[,vars[colsubset]]
dim(xs)
dim(xs_ss)

查看降维技术,例如 PCA。您可以在scikit-learn 文档中找到几种不同的方法。这将根据原始输入特征的转换缩小特征空间。