【问题标题】:Strugling to understand complete predictive model process in R努力理解 R 中的完整预测模型过程
【发布时间】:2017-02-28 20:26:57
【问题描述】:

我对这一切都很陌生,我对这个过程的逻辑有一点心理障碍。我正在尝试使用当前和已经流失客户的数据库来预测客户流失。到目前为止我有

1) 获取当前客户和已流失客户的完整客户数据库以及客户服务变量等用于预测。 2) 将数据集随机 70/30 分成训练和测试 3) 使用 R,我训练了一个随机森林模型来预测做出预测,然后使用混淆矩阵与实际状态进行比较。
4) 我已经使用测试数据运行了该模型,以检查识别流失者的准确性

我现在有点困惑。我现在想做的是获取我们所有当前的客户并预测哪些客户会流失。我是否做错了这一切,因为我需要预测的很多当前客户是否会在模型出现在训练集中时已经被模型看到?

我是否应该使用不属于我需要对其进行预测的数据集的一部分的训练和测试集?

非常感谢您的帮助。

【问题讨论】:

    标签: r machine-learning random-forest


    【解决方案1】:

    在我看来,您遇到了标准的训练-测试-验证集问题。如果我理解正确,您想测试您的模型(随机森林)对您拥有的所有数据的性能。

    执行此操作的标准课堂方式确实是您已经做过的:拆分数据集,例如 70% 的训练集和 30% 的测试/验证集,使用训练集训练模型并使用测试集进行测试。

    测试(和预测所有数据)的更好方法是使用交叉验证来执行分析 (https://en.wikipedia.org/wiki/Cross-validation_(statistics))。交叉验证的一个示例是 10 折交叉验证:您将数据拆分为 10 个相同大小的块,循环遍历所有块,每次迭代使用剩余的 9 个块来训练您的模型并在特定条件下测试模型块。

    交叉验证最终得到的是对模型性能以及数据库中所有客户的结果的更全面的了解。交叉验证减少了由于随机选择测试集而导致的分析错误。

    希望这会有所帮助!

    【讨论】:

    • 非常感谢您抽出宝贵的时间。我将查看您提供的链接,以了解交叉验证。但是,我仍然不明白这里的东西。如果我的总客户集是 10 万条记录,并且包括流失客户和当前客户,我将如何遵循您的方法。目前我已经使用其中的 70k 进行训练,然后使用 30k 进行测试。我想我现在遇到的问题是因为我已经使用了所有记录来测试或训练,我现在不能只通过相同的模型运行当前客户?如果我说不通,我可以再试一次,因为我真的需要理解
    • 您好,很遗憾,由于您已经用 70k 客户训练了您的模型,因此您不能使用 那个 特定模型进行交叉验证。如果您使用交叉验证,则意味着您将不得不为每个不同的训练数据集块一遍又一遍地训练您的模型(即 10 倍交叉验证 -> 10 个不同的模型)。对于大量数据,它可以得到相当繁重的计算。如果您运行相同的 70k(用于训练模型的),您会得到过于乐观的结果(因为您的模型是与那些特定客户一起训练的),因此交叉验证更好。
    • 感谢您的电话回复。我没有接受 50% 的流失客户和 50% 的现有客户的培训,并且只使用 10k 的数据集。这样我就可以使用其余的当前客户来运行模型以进行预测。这有意义吗? R中是否有关于交叉验证的指南?发现它在原则上以及如何在 R 中运行令人困惑。非常感谢
    【解决方案2】:

    据我所知,我觉得你想知道你是否在训练和测试集中使用重叠的例子完成了正确的事情。您首先需要了解您需要将训练集与测试集分开。由于您的模型参数基于您的培训集来计算,对于测试集中的类似示例,模型将为您提供正确的预测,因此您的准确性肯定会对这些常见的培训和测试设置示例产生积极影响,但不是正确的做法。您的测试集应始终包含以前的未经看法,以便正确评估算法的性能。 如果您当前的客户(您想要测试您的模型)已经存在培训集中,您希望将它们留在测试过程中。我建议您根据客户ID等一些唯一标识符(如果存在)在培训设置客户和当前客户之间进行检查,并将普通客户留出您的新鲜批次检测示例。 p >

    【讨论】:

    • 我认为您可以将数据拆分为3套:培训,交叉验证和测试集,您可以在确保这些客户不在培训之后保留当前客户的测试集放。虽然如果将数据集随机分割为3个子集,但您仍然可以继续这一点,只要当前客户的行为中没有特定模式,即,他​​们的行为应该是随机的。 span>
    • 如果目前的客户只是另一组客户,那么对它们没有任何非凡的客户,那么就没有这样需要将它们放在训练集中。您可以将它们视为您的算法将预测的新一批看不见的示例。
    • 好的,所以你是正确的,你需要在培训集中提供两种客户的代表:仍然具有公司和留下的客户的客户。我建议您保留一些尚未在培训集中腾出的客户,并将其余部分保留在测试集中,以测试哪些客户更有可能的景点。 span>
    • 你的意思是相似数量的“当前”客户?在100K中,你在训练中放置了17.5k的灌木者吧?你投入了多少目前的客户? 42.5k?如果你已经完成了那么那么似乎没关系。 span>
    • 因此当您在测试集上测试预测的准确性时,您基本上是测试,看看算法提供的预测值是否与实际值匹配(如果客户已证明,则为1如果不)。如果有匹配项,那么您只需计算匹配的数量并通过测试集中的观察总数划分。这是你的准确性。但最好还是看看准确率和召回率。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2011-12-30
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多