努力理解R

时间:2016-10-19 09:24:33

标签: r machine-learning random-forest

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

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

我现在有点困惑。我现在要做的是拿走所有现有客户并预测哪些客户会流失。我是否做错了,因为我需要预测很多当前客户是否会因为模型出现在培训集中而看到流失?

我是不是应该使用一个训练和测试集,它不会成为我需要预测的数据集的一部分?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在我看来,您有标准的培训测试验证设置问题。如果我理解正确,您希望测试模型(随机森林)对您拥有的所有数据的性能。

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

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

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

希望这有帮助!

答案 1 :(得分:0)

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