我正在尝试使用当前和已经流失的客户的数据库来预测客户流失。 到目前为止我已经
我现在想做的是收集所有现有客户并预测哪些客户会流失。 我是否做错了这一切,因为我需要预测模型是否已经看到了模型在训练集中出现的许多当前客户的流失情况?
我是否应该使用不属于我需要进行预测的数据集的一部分的训练和测试集?
据我理解你的问题,我觉得你想知道你在训练和测试集中使用重叠的例子是否做了正确的事情。您首先需要了解需要将训练集与测试集分开。由于您的模型参数是根据您的训练集计算的,因此对于测试集中的类似示例,模型将为您提供正确的预测,因此对于那些常见的训练和测试集示例,您的准确性肯定会受到积极影响,但事实并非如此正确的做法。您的测试集应始终包含以前未见过的示例,以便正确评估算法的性能。 如果您当前的客户(您想要测试您的模型)已经存在于训练集中,您可能希望将他们排除在测试过程中。我建议您根据一些唯一标识符(如果存在)(例如客户 ID)在训练集客户和当前客户集之间进行检查,并将普通客户排除在新一批未见过的测试示例之外。
在我看来,您遇到了标准的训练-测试-验证集问题。如果我理解正确的话,您想测试模型(随机森林)对您拥有的所有数据的性能。
执行此操作的标准课堂方法确实是您已经做过的:分割数据集,例如 70% 的训练集和 30% 的测试/验证集,使用训练集训练模型并使用测试集进行测试。
更好的测试(和预测所有数据)方法是使用交叉验证来执行分析(https://en.wikipedia.org/wiki/Cross-validation_(statistics))。交叉验证的一个示例是 10 倍交叉验证:您将数据拆分为 10 个大小相等的块,循环遍历所有块,并且对于每次迭代,使用剩余的 9 个块来训练您的模型并在特定的数据集上测试模型。块。
通过交叉验证,您最终可以更全面地了解模型的性能以及数据库中所有客户的结果。交叉验证可以减少由于随机选择测试集而导致的分析错误。
希望这有帮助!