我得到了两个不同的数组,它们根据某些功能描述用户是否在站点上处于活动状态。第一个数组用于训练。数组的每一行是不同的用户,列是不同的特征。前 896 列描述了用户的使用模式,其余 28 列是标签(这 28 列代表 28 个不同的时间段,如果用户在该时间段内处于活动状态,则标记为 1,否则标记为 0。
第二个数组用于测试并且具有相同数量的列,但这里最后 28 行是空的。我的任务是预测用户在每个时间段内活跃的概率。我有点迷茫,正在寻找(最好是非常简单的)方法来解决这个问题。
我得到了两个不同的数组,它们根据某些功能描述用户是否在站点上处于活动状态。第一个数组用于训练。数组的每一行是不同的用户,列是不同的特征。前 896 列描述了用户的使用模式,其余 28 列是标签(这 28 列代表 28 个不同的时间段,如果用户在该时间段内处于活动状态,则标记为 1,否则标记为 0。
第二个数组用于测试并且具有相同数量的列,但这里最后 28 行是空的。我的任务是预测用户在每个时间段内活跃的概率。我有点迷茫,正在寻找(最好是非常简单的)方法来解决这个问题。
您正在寻找这样的模型:,其中是 28 个不同时间段中的一个或多个,是包含描述用户使用模式的 896 列的全部或部分的特征矩阵。由于是二进制的,因此您的问题是分类。
既然你说你在寻找一种简单的方法,我可以想象一个逻辑回归。这是R中的一个最小示例:
# Data
df = data.frame(c(12,32,23,13,45,31), c(657,456,265,263,475,354), c(8,5,9,4,6,3), c(1,1,0,0,1,0), c(0,1,1,0,0,1))
colnames(df) = c("f1", "f2", "f3", "t1", "t2")
df
# Logit
mylogit1 <- glm(t2 ~ t1+f1+f2+f3, data = df, family = "binomial")
summary(mylogit1)
# Predict outcome
preds = predict(mylogit1, newdata = df, type = "response")
# Look at AUC
library(Metrics)
auc(df$t2, preds)
# Look at the confusion matrix
library(caret)
preddf = data.frame(as.factor(round(preds)),as.factor(df$t2))
colnames(preddf)=c("pred", "truth")
confusionMatrix(preddf$pred, preddf$truth)
首先,我生成一些具有三个特征f和两个目标的假数据t。看起来像:
f1 f2 f3 t1 t2
1 12 657 8 1 0
2 32 456 5 1 1
3 23 265 9 0 1
4 13 263 4 0 0
5 45 475 6 1 0
6 31 354 3 0 1
其次,我运行逻辑回归,其中我使用t2作为(这是我预测的)和作为特征(我用来进行预测):f1,f2,f3
Call:
glm(formula = t2 ~ f1 + f2 + f3, family = "binomial", data = df)
Deviance Residuals:
1 2 3 4 5 6
-0.2496 1.3025 0.7380 -1.2315 -1.4095 0.9806
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.443719 4.298364 0.336 0.737
f1 0.071943 0.111565 0.645 0.519
f2 -0.009584 0.012244 -0.783 0.434
f3 0.066979 0.471445 0.142 0.887
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8.3178 on 5 degrees of freedom
Residual deviance: 6.7684 on 2 degrees of freedom
AIC: 14.768
Number of Fisher Scoring iterations: 5
毫不奇怪,考虑到假数据,回归没有太大意义。
但是,现在我们可以进行预测并测试我们的模型是否运行良好。通常,您会使用未用于模型训练的部分数据来检查模型的性能。为了方便起见,这里我只使用相同的数据。
例如,您可以查看混淆矩阵来检查您做出了多少正确的预测:
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1 1
1 2 2
好吧,在这种情况下不太好,只有 50% 正确。
因此,您可以使用这样的模型来预测数据中的每个目标(时间段)。
当然有更多的选择如何对此进行建模,例如“提升”,或者您也可以在多目标模型中一次预测所有目标。您还可以寻找特征的改进表示,例如在广义加法模型中。或者,您可以使用“套索”来缩小中对预测无用的特征。
只要确保您使用逻辑链接函数来预测二进制输出。
我会抛出一些提示/澄清。
这不是一个完整的列表,但希望对您有所帮助。