Questions tagged «predictive-models»

预测模型是统计模型,其主要目的是为了最佳地预测系统的其他观察结果,而不是其目的是测试特定假设或以机械方式解释现象的模型。因此,预测模型不太强调可解释性,而更强调绩效。

1
健壮的方法真的更好吗?
我有两组主题,A和B,每组的大小大约为400,预测变量大约为300。我的目标是为二进制响应变量建立预测模型。我的客户希望看到从A到B应用从A构建的模型的结果。(在他的书《回归建模策略》中,@ FrankHarrell提​​到最好将两个数据集结合起来并以此为基础构建模型,因为这样做会增加强大和精确---参见第90页,外部验证,考虑到收集我拥有的数据类型非常昂贵且耗时,我倾向于同意他的看法,但是我无法选择客户想要的东西。)我的许多预测变量都是高度相关的,而且也很偏斜。我正在使用逻辑回归来建立预测模型。 我的预测指标主要来自力学。例如,总时间的主题是一个应力比阈值高的下为时间段[ 吨1,吨2 ]中,出于各种值α &gt; 0和。显然,仅从它们的定义来看,这些总时间中有许多是代数相关的。许多与代数无关的预测变量由于其性质而相互关联:在时间段中处于高压力下的对象在时间段[ t 3,t 4趋于高压力下αα\alpha[ Ť1个,Ť2][Ť1个,Ť2][t_1, t_2]α &gt; 0α&gt;0\alpha > 0 [ 吨1,吨2 ]0 ≤ 吨1个&lt; 吨20≤Ť1个&lt;Ť20 \leq t_1 < t_2[ Ť1个,Ť2][Ť1个,Ť2][t_1, t_2],即使 [ 吨1,吨2 ] ∩ [ 吨3,吨4 ] = ∅。为了减少数据量,我将相关的预测变量聚在一起(例如,所有总应力时间都聚在一起),并使用主成分分析来表示每个聚类。由于变量存在偏差,因此我尝试了两种替代方法:[ Ť3,Ť4][Ť3,Ť4][t_3,t_4][ Ť1个,Ť2] ∩ [ t3,Ť4] = ∅[Ť1个,Ť2]∩[Ť3,Ť4]=∅[t_1,t_2] \cap [t_3,t_4] = \emptyset 在进行PCA之前,我使用了对数转换来减少变量的偏斜。 我使用了Mia …

2
预测流失的生存模型-时变预测因子?
我正在寻找一个用于预测客户流失的预测模型,并希望使用一个适合于个人期间训练数据集的离散时间生存模型(每个客户一行,他们处于危险状态的离散时期,带有事件指标–等于1如果流失发生在那个时期,则为0)。 我使用Singer和Willet的技术使用普通逻辑回归拟合模型。 客户流失可以在一个月内的任何地方发生,但是直到月底我们才知道(例如,他们离开该月的某个时间)。24个月用于培训。 使用的时间变量是样本的原始时间-截至2008年12月31日,所有活跃的客户-截至2009年1月,他们都收到t = 0(这不是经典的实现方式,但我相信构建时的方式预测模型与传统统计模型的对比)。使用的协变量是客户在该时间点的任期。 构造了一系列协变量-有些协变量在数据集的行中(对于给定的客户)不会改变,而有些则会。 这些时变协变量是问题所在,也是使我质疑生存率预测的生存模型的原因(与常规分类器相比,该分类器根据当前快照数据预测未来x个月的波动)。时不变的描述了前一个月的活动,预计将是重要的触发因素。 至少基于我当前的想法,这种预测模型的实现是在每个月底为客户群打分,计算下个月某个时间流失的可能性/风险。然后在接下来的1,2或3个月内再次使用。然后用于接下来的1,2,3,4,5,6个月。对于3个月和6个月的客户流失率,我将使用估计的生存曲线。 问题: 在考虑评分时,我该如何纳入时变预测变量?似乎我只能对时不变的预测变量评分,或者包括那些时不变的预测变量,您必须使它们成为时不变的-设置为“现在”值。 有人对这种生存模型的使用有经验或想法吗? 基于@JVM的更新: 问题不在于估计模型,解释系数,使用训练数据绘制有趣的协变量值的危险/生存图等。问题在于使用模型来预测给定客户的风险。说在本月底,我想给仍然是该模型活跃客户的每个人评分。我想预测该风险估计x个周期(下个月月底关闭帐户的风险。从现在起两个月末关闭帐户的风险,等等)。如果存在随时间变化的协变量,则它们的值在以后的任何时期都是未知的,那么如何利用该模型? 最终更新: 人员时间段数据集将为每个人以及每个处于风险期间的时间段都有一个条目。假设有J个时间段(可能是J = 1 ... 24,为24个月),我建立了一个离散的时间生存模型,为简单起见,我们将时间T视为线性,并且有两个协变量X和Z,其中X是时间-不变,这意味着第一个人在每个周期中都是恒定的,并且Z是随时间变化的,这意味着第一个人的每个记录都可以采用不同的值。例如,X可能是客户性别,Z可能是上个月他们对公司的价值。第j个时间段中第i个人的危害的logit模型为: logit(h(tij))=α0+α1Tj+β1Xi+β2Zijlogit(h(tij))=α0+α1Tj+β1Xi+β2Zijlogit(h(t_{ij}))=\alpha_{0}+\alpha_{1}T_{j}+\beta_{1}X_{i}+\beta_{2}Z_{ij} 因此,问题在于,当使用时变协变量并使用新数据进行预测(到尚未看到的未来)时,是未知的。ZjZjZ_{j} 我能想到的唯一解决方案是: 不要使用像Z这样的时变协变量。这会大大削弱模型来预测搅动事件,尽管例如,因为看到Z的减少会告诉我们客户正在脱离并可能准备离开。 使用随时间变化的协变量但滞后(如Z在上方),这使我们能够预测出我们滞后了变量的多个周期(再次考虑对新的当前数据进行评分的模型)。 使用随时间变化的协变量,但在预测中将其保留为常数(因此,该模型适合于变化的数据,但对于预测,我们将其保留为常数,并模拟这些值的变化(如果稍后实际观察到的话)将如何影响搅动风险。 使用时变协变量,但根据已知数据的预测来估算其未来值。例如,预测每个客户的。ZjZjZ_{j}

1
如何解释predict.coxph的输出?
拟合coxmodel之后,可以进行预测并检索新数据的相对风险。我不了解的是如何计算一个人的相对风险,以及相对风险是什么(即人口的平均值)?有什么建议可以帮助您理解(我在生存分析方面不是很先进,所以越简单越好)?

4
关于乔治·博克斯(George Box),加利特·斯穆利(Galit Shmueli)和科学方法?
(这个问题似乎更适合于哲学SE。我希望统计学家可以澄清我对Box和Shmueli陈述的误解,因此我将其张贴在这里)。 ARIMA名望的George Box说: “所有模型都是错误的,但有些是有用的。” Galit Shmueli在她著名的论文“ To Explain or Predict”中指出(并引用了其他同意她的观点): 解释和预测并不相同,尽管某些模型在预测方面做得不好,但有些模型在解释方面做得很好。 我觉得这些与原则有些矛盾。 如果模型预测不好,是否有用? 更重要的是,如果模型能够很好地解释(但不一定能很好地预测),那么它在某种程度上必须是正确的(即没有错)。那么,这与Box的“所有模型都错了”又有什么关系呢? 最后,如果一个模型能够很好地解释但不能很好地预测,那么它如何科学?大多数科学标界标准(验证论,证伪论等)都暗示科学陈述必须具有预测能力,或者口语化:只有经过实证检验(或证伪)的理论或模型才是正确的。必须预测未来的结果。 我的问题: Box的陈述与Shmueli的观点是否确实矛盾,或者我是否缺少某些东西,例如,一种没有预测能力的模型仍然有用吗? 如果Box和Shmueli的陈述不矛盾,那么对一个模型错误并不能很好地预测却仍然具有解释力意味着什么?换句话说:如果一个人既丧失了正确性又缺乏预测能力,那么模型还剩下什么? 当模型具有解释力但没有预测力时,可以进行哪些经验验证?Shmueli提到了类似的事情:使用AIC进行解释,使用BIC进行预测,等等,但是我不知道这是如何解决问题的。对于预测模型,您可以使用AIC,BIC或R2R2R^2或L1L1L1正则化等,但是最终出于样本测试和生产性能的决定因素决定了模型的质量。但是对于解释得很好的模型,我看不到任何损失函数如何能够真正评估模型。在科学哲学中,存在不确定性的概念对于任何给定的数据集,总可以明智地选择某种分布(或分布的混合)和损失函数LLL,使其适合数据(因此可以声称可以解释它)。此外,对于有人声称模型足以解释数据的情况,LLL应当处于的阈值是任意的(类似p值,为什么p&lt;0.05p&lt;0.05p < 0.05而不是p&lt;0.1p&lt;0.1p < 0.1或p&lt;0.01p&lt;0.01p < 0.01?)。 基于以上所述,由于不可能进行样本外测试,因此如何客观地验证可以很好地解释但不能很好地预测的模型?

6
最快的SVM实施
更多的是一个一般性的问题。我正在运行rbf SVM进行预测建模。我认为我当前的程序肯定需要加快速度。我使用scikit learning进行粗略到精细的网格搜索+交叉验证。 每次SVM运行大约需要一分钟,但是在所有迭代中,我仍然发现它太慢了。假设我最终在多个内核上对交叉验证部分进行了多线程处理,那么关于提高程序速度的建议是什么?是否有更快的SVM实现?我听说过一些GPU SVM,但并没有对其进行深入研究。任何用户,速度更快吗?


5
根据平均绝对误差的箱线图删除异常值以改进回归模型是否作弊
我有一个用四种方法测试的预测模型,如下面的箱线图所示。模型预测的属性在0到8的范围内。 您可能会注意到,所有方法都指示一个上界离群值和三个下界离群值。我想知道从数据中删除这些实例是否合适?还是这是一种欺骗,以改善预测模型?

2
如何使用Cox比例风险模型进行交叉验证?
假设我已经针对一个数据集(模型构建数据集)中特定疾病的发生构建了一个预测模型,现在想检查该模型在新数据集(验证数据集)中的运行情况。对于使用Logistic回归构建的模型,我将根据从模型构建数据集获得的模型系数计算验证数据集中每个人的预测概率,然后在将某些概率按临界值二等分后,可以构建一个2x2的表格这样我就可以计算出真实的阳性率(敏感性)和真实的阴性率(特异性)。此外,我可以通过更改截止值来构建整个ROC曲线,然后获得ROC图的AUC。 现在假设我实际上有生存数据。因此,我在模型构建数据集中使用了Cox比例风险模型,现在想检查模型在验证数据集中的运行情况。由于基准风险不是Cox模型中的参数函数,因此我看不到如何基于在模型构建数据集中获得的模型系数来获得验证数据集中每个人的预测生存概率。那么,我该如何检查模型在验证数据集中的表现呢?有确定的方法可以做到这一点吗?如果是,它们是否在任何软件中实现?在此先感谢您的任何建议!

1
最小化解释模型中的偏见,为什么?(Galit Shmueli的“解释或预测”)
这个问题参考了Galit Shmueli的论文“解释或预测”。 具体而言,Shmueli教授在1.5节“解释和预测不同”中写道: 在解释性建模中,重点是最小化偏差以获得最准确的基础理论表示。 每当我读这篇论文时,这都会使我感到困惑。从什么意义上说,最小化估计偏差可以最准确地表示基础理论吗? 我还在这里观看了Shmueli教授在2017年JMP探索峰会上的演讲,她说: ...像收缩模型,集合体之类的东西,您将永远不会看到它们。因为这些模型通过设计引入了偏差,以减少总体偏差/方差。这就是为什么他们不在那里的原因,这样做没有任何理论意义。您为什么要使模型有目的地偏见? 这并不能真正阐明我的问题,只是重申我不理解的说法。 如果理论有很多参数,而我们没有足够的数据来估计它们,那么估计误差将由方差决定。为什么在这种情况下使用像岭回归这样的有偏估计程序(导致较低方差的有偏估计)是不合适的?

2
为什么对时间序列的这种预测“非常糟糕”?
我正在尝试学习如何使用神经网络。我正在阅读本教程。 使用时间的值拟合神经网络以预测时间的值后,作者获得以下曲线图,其中蓝线是时间序列,绿色是对火车数据的预测,红色是对测试数据进行预测(他使用了测试序列拆分)ŤŤtt + 1Ť+1个t+1 并将其称为“我们可以看到该模型在拟合训练数据和测试数据集方面做得很差。它基本上预测出与输出相同的输入值。” 然后,作者决定使用,和来预测处的值。这样做获得ŤŤtt − 1Ť-1个t-1t − 2Ť-2t-2t + 1Ť+1个t+1 并说:“看图表,我们可以在预测中看到更多的结构。” 我的问题 为什么第一个“可怜”?在我看来,它几乎是完美的,它可以完美地预测每个变化! 同样,为什么第二个更好?“结构”在哪里?在我看来,这比第一个要差得多。 通常,对时间序列的预测什么时候好,什么时候不好?

4
预测模型:统计数据可能无法击败机器学习吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我目前正在关注一个专注于统计/计量经济学的硕士课程。在我的主人看来,所有学生都必须进行3个月的研究。上周,所有小组都必须向其余的硕士生介绍他们的研究。 几乎每个小组都针对他们的研究主题进行了一些统计建模和一些机器学习建模,并且每一次样本外预测都谈到了简单的机器学习模型击败了非常复杂的统计模型,在过去的3个研究中,每个人都非常努力几个月。无论每个人的统计模型多么出色,一个简单的随机森林几乎总是会得到较低的样本外误差。 我想知道这是否是一个普遍接受的观察?那如果要进行样本外预测,就没有办法击败简单的随机森林或极端梯度增强模型吗?这两种方法使用R包实现起来非常简单,而每个人都想出的所有统计模型都需要大量的技能,知识和精力来进行估算。 您对此有何看法?统计/计量经济学模型的唯一好处是您可以获得解释吗?还是我们的模型不够好,以至于它们不能明显胜过简单的随机森林预测?有没有解决这个问题的论文?

4
可以将随机森林方法论应用于线性回归吗?
随机森林通过创建决策树的集合来工作,其中每棵树都是使用原始训练数据的引导样本(输入变量和观察值的样本)创建的。 可以将类似的过程应用于线性回归吗?使用随机引导样本为k个回归中的每一个创建k个线性回归模型 不创建类似模型的“随机回归”的原因是什么? 谢谢。如果有什么我只是从根本上误会了,请告诉我。

2
分位数建模中的模型性能
我正在使用分位数回归(例如,通过gbm或quantreg在R中)-不关注中位数,而是关注较高的分位数(例如,第75位)。来自预测建模的背景,我想衡量模型在测试集上的拟合程度,并能够向业务用户进行描述。我的问题是?在具有连续目标的典型设置中,我可以执行以下操作: 计算总体RMSE 根据预测值对数据集进行十进制分析,然后将实际平均值与每个十分位数中预测的平均值进行比较。 等等。 在这种情况下,如果确实没有实际值(至少我不认为)可以与预测进行比较,该怎么办? 这是示例代码: install.packages("quantreg") library(quantreg) install.packages("gbm") library(gbm) data("barro") trainIndx&lt;-sample(1:nrow(barro),size=round(nrow(barro)*0.7),replace=FALSE) train&lt;-barro[trainIndx,] valid&lt;-barro[-trainIndx,] modGBM&lt;-gbm(y.net~., # formula data=train, # dataset distribution=list(name="quantile",alpha=0.75), # see the help for other choices n.trees=5000, # number of trees shrinkage=0.005, # shrinkage or learning rate, # 0.001 to 0.1 usually work interaction.depth=5, # 1: additive model, …

1
预测性能更多地取决于数据分析师的专业知识,而不是方法?
我曾经谣传过一些研究表明,预测模型的性能更多地取决于使用所选方法的数据分析师的专业知识,而不是方法的选择。 换句话说,声称从更理论的角度来看,数据分析人员熟悉所选方法比该方法对问题的“合适性”显得更为重要。 这是在化学计量学的背景下提到的,它通常涉及许多变量(100s-1000s),多重共线性,当然样品太少的问题。预测可能是分类或回归。 我的个人经验表明,这是有道理的,但是有人提到了一项研究(我通过快速但不成功的搜索通过电子邮件问到提到这一点的人,但从未收到任何答复)。但是,通过更精细的搜索,我也无法找到任何论文。 有人知道这样的发现吗?如果没有,这里的大佬们的亲身经历怎么说?

1
插入符glmnet与cv.glmnet
在glmnet内部caret使用搜索最佳lambda和cv.glmnet执行相同任务的比较中似乎有很多困惑。 提出了许多问题,例如: 分类模型train.glmnet与cv.glmnet? 在插入符号中使用glmnet的正确方法是什么? 使用`caret`交叉验证`glmnet` 但是没有给出答案,这可能是由于问题的可重复性。在第一个问题之后,我给出了一个非常相似的示例,但确实存在相同的问题:为什么估计的lambda如此不同? library(caret) library(glmnet) set.seed(849) training &lt;- twoClassSim(50, linearVars = 2) set.seed(849) testing &lt;- twoClassSim(500, linearVars = 2) trainX &lt;- training[, -ncol(training)] testX &lt;- testing[, -ncol(testing)] trainY &lt;- training$Class # Using glmnet to directly perform CV set.seed(849) cvob1=cv.glmnet(x=as.matrix(trainX),y=trainY,family="binomial",alpha=1, type.measure="auc", nfolds = 3,lambda = seq(0.001,0.1,by = 0.001),standardize=FALSE) …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.