我的狗展预测工具的神经网络出现了一些问题。概括地说,我从几个因素开始——年龄、体重、身高、品种(这是一组虚拟变量)、主观可爱分数——并预测动物是否会在节目中获胜(二元变量) . 我有几百个节目,所以有几万行。我坚持使用 nnet 包而不是神经网络,但我可以很容易地创建一个像样的神经网络
model <- nnet(Win ~ ., x=X_training, y=Y_training, size=30, maxit=500)
效果很好。我已经根据保留测试数据对其进行了测试,AUC 和混淆矩阵看起来不错,我可以用它来预测未来的赢家。问题是,我如何确定哪个变量在预测每个新狗展的结果时最重要?当我对未来的获胜者进行预测时,我使用以下代码
winpred = predict(model, x, type='raw')
它提供了获胜可能性的 0 到 1 之间的分数。我还希望通过某种方式为每一行确定哪些变量——年龄、体重、身高、品种假人和可爱——对我的预测得分贡献最大和最小。如果我是为一只狗做这个,我会根据这篇文章使用 LIME 或其他东西,但不幸的是,我想一次在几百只狗上运行这个。
基本上,我希望能够对狗主人说他们的小狗因为 x 而表现良好,但最阻碍它的是 y(当然,如果它是品种,则不是很有帮助)。似乎没有办法用神经网络来做到这一点。现在还有其他机器学习技术可以做到这一点吗?如果没有,对其他可行的模型有什么建议吗?
我正在考虑将 OLS 用作线性概率模型或 logit/probit,可能与 LASSO 或 Ridge 一起使用。我可以使用我的机器学习模型对狗进行评分,但在后台从回归中提取来确定哪些变量对分数的贡献最大、积极和消极。从统计的角度来看,Logit/probit 更好,但是在 R/RStudio 中是否有任何简单的方法来解释一次数百只狗,哪个属性对它们的得分贡献最大?