【新智元导读】本文用一个机器学习评估客户风险水平的案例,从准备数据到测试模型,详解了如何随机森林模型实现目标。 机器学习模型可用于提高效率,识别风险或发现新的机会,直播,并在许多不同领域得到应用。它们可以预测一个确定的值(e.g.下周的销售额),或预测分组,例如在风险投资组合中,预测客户是高风险,中等风险还是低风险。 值得注意的是,机器学习不是在所有问题上都工作得非常好。如果模式是新的,模型以前没有见过很多次,或者没有足够的数据,机器学习模型的表现就不会很好。此外,机器学习虽然可以支持各种用例,但仍然需要人类的验证、感觉检查和专门领域知识。 话虽如此,我们可以通过解决上述用例之一来看看机器学习可以实现哪些目标。让我们通过机器学习技术的一个基本应用,看看将一组客户数据转变为风险水平评估这个预测涉及了哪些过程。 训练模型 我们可以使用分类模型——预测每个项分别属于哪个类或组。可以很好地实现这个任务的一类算法是随机森林。这种类型的模型是基于决策树,即一种使用不同的变量(有关客户的信息)来分割一组对象(在这个用例中是客户),并继续分割,直到每个对象都被放置到特定的类别。随机森林是这样的决策树的集合。使用多个树可以降低过拟合(模型对于第一组特定的训练数据集工作得非常好,但对后续数据集工作不好)的风险。 创造像这样复杂的模型似乎令人望而生畏。但好消息是,许多语言都有预构建这种类型的模型的库。在这个用例下,我使用的是python库scikit-learn(以及用于管理数据集的pandas和numpy库)。 在继续之前,请确保你已经安装了Python(我使用的是Python2),并且在上面提到的3个包装中加载。这个可以在终端做,用pip安装pandas(numpy和sklearn也是一样)。 下面的示例都使用 Jupyter Notebook,这是数据科学家很常用的工具。相同的代码段直接在Python控制台或其他任何Python IDE中工作。 导入的语句使库对当前的段可用。然后,继续将数据从csv文件加载到dataframe(这是pandas使用的特定格式的数据结构),然后添加标题名字。 现在,数据保存在 pandas 的 dataframe(df),如下图所示,选择前5行作为样本。 为了让模型进行预测,需要“训练”。也就是说,模型被显示一组已经具有相关分类的数据。从这些数据,模型可以了解有关数据主体(在这个case是客户)本身的信息与它的标签(高风险、中风险、低风险)之间的关系。 在随机森林模型的情况下,是通过数据集特征来对数据进行划分或分割,从而找到相关性。例如,根据“使用的设备数量”来进行划分,可以把使用一个设备的和使用两个设备的分成两组(根据数据集的基数,可能有两个以上的组)。进一步的分类要使用不同的信息,直到可以将所有记录划分到最终的类别(在这个case是风险级别)。 准备训练集和测试集 模型训练好之后,使用模型未遇见过的其他数据对其进行测试。新的数据已经没有原始标签,要求模型自己去预测值。 为了实现这一点,数据集需要分成两部分。一部分用于训练,另一部分用于测试。下面的代码段为每个观察值随机分配1到100之间的值,并将分配到低于70的随机数的那些行分到训练集,其余的作为测试集。因此,大约70%的数据用于训练。在每个数据集print一个值,可以显示这是有效的。 现在,应该为这个模型准备好训练集。创建一个变量来保存对特征(有助于确定最终类别的信息)的引用和另一个变量来保存类别本身。 首先,为类别创建变量。下面示例中的变量 train_labels 保存了数据集中的risk_label 列的内容。这些是风险级别的“高”,“中”或“低”,但是使用“因数分解”函数转变为数字(0, 1, 2)。 (责任编辑:本港台直播) |