新闻快讯
< >

上手教程:15分钟掌握机器学习

E安全6月23日文 在本篇指南中,我们将共同了解关于决策树的各项关键。

自从谷歌旗下的Alpha Go横扫人类围棋高手之后,人工智能和机器学习成了街头巷尾人尽皆知的名词。同时,机器学习也迅速成为了众人渴望的必备技能之一。

上手教程:15分钟掌握机器学习-E安全

如果大家对于机器学习技术抱有兴趣,但又不太清楚如何将其与您的业务相匹配,那么最好的办法当然是撸起袖子,亲自动手尝试。

什么是机器学习?

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,主要使用归纳、综合而不是演绎。

机器学习模型可用于多种不同的领域内以提升生产效率、识别风险或者发现新的商业机遇。机器学习模型的预测主要分为两大方向:

一、为确切值预测,例如下周的销售额;
   

二、为分类预测,即通过预测在风险组合中将某一客户划分为高风险、中等风险抑或低风险类别。

需要注意的是,机器学习并不能用于解决一切问题。如果模型相对较新且此前并没有进行过反复实践,或者不具备充足的训练用数据,那么机器学习模型的表现将很难令人满意。尽管已经存在可用于支持各类用例的技术手段,但机器学习仍然需要配合人类验证、识别检查以及相关领域的知识方可奏效。话虽如此,我们仍然可以通过之前提到的各类案例尝试解决并体验各类可实现目标。

以下请跟E安全一起尝试机器学习技术的一种基本应用:将一组客户数据转化为风险水平预测流程。

从分类起步

为了实现分类,我们需要使用一套分类模型,用于预测特定条目属于哪种类别或者组。此类方案中的典型代表正是随机森林算法。

E安全百科:“随机森林算法”就是用随机的方式建立一个森林,森林里面由很多的决策树组成,每一棵决策树之间互不关联。得到森林之后,每当有一个新的样本输入,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),最终得出被选择最多的那一类。

这类模型基于决策树方法,即通过不同变量(客户相关信息)对一组包含主题(在本示例中为客户)的条目进行不断划分,直到各条目皆被放置入特定的类别。随机森林正是决策树的大规模集合。使用大量决策树能够降低过度拟合风险(是指模型在利用第一组特定数据进行训练后能够实现理想的结果,但继续处理后续数据集时效果却有所下降的状况)。

操作步骤

要创造这样复杂的方案似乎会给我们带来一系列严峻挑战。但目前多种程序语言都包含有用于构建此类模型的库。在本示例当中,我们将使用Python的scikitlearn库(外加pandasnumpy两套库,二者负责对数据集进行管理,E安全注:本文相关工具均可在文末下载)。

在继续之前,请大家确保已经正确安装了Python(这里我们演示使用的为Python 2),并顺利加载了以上提到的三款软件包。要安装这三套库,可在终端中运行pip install sklearn命令(pands与numpy也按照这个方式安装)。

本示例全部通过Jupyter记事本展示,其同时也是数据科学家在开发过程中经常接触到的界面。大家可以直接将这里使用的代码片段运行于Python控制台或者任何其它Python IDE当中。

以下import语句使得各库可用于你的当前会话。此后,继续将来自csv文件的数据加载至一个数据帧(即pandas所使用的特定数据网格样式)之内,接下来添加您的标题名称。

上手教程:15分钟掌握机器学习-E安全

现在,数据已经被添加到pandas dataframe(简称df)之内,下图所示为该数据帧内的前五行。

上手教程:15分钟掌握机器学习-E安全

为了让模型具备准确的预测能力,我们需要对其进行“训练”。到这里,模型已经展示出一组存在相互关联的分类数据。可以看到,该模型能够了解数据主体(本示例中为客户)所给出的信息以及相关各标签间的联系(即客户属于高、中抑或低风险状态)。

在使用随机森林模型的情况下,其会通过数据集的特征对数据进行划分或者分区,进而找出其关联。举例来说,通过所使用设备的数量进行划分,并将其中双设备结果记录与单一设备的结果进行区分(根据数据集的基数,可能存在两个甚至更多分组)。更进一步的划分则通过使用其它信息来完成,直至模型能够判断各条记录所归属的最终类别(在本示例中为风险级别)。

初入森林

在模型训练完成之后,我们可以利用其尚未接触过的其它数据进行测试。新数据中不存在原始标签,这意味着模型需要自行对其值进行预测。

为了实现这一点,我们需要将数据集划分为两个部分。其中一部分数据集用于训练,另一部分则用于测试。以下代码片段为每个观察值随机分配1到100间的某个值,其中被分配于低于70的随机数的行将作为训练集存在,而其余部分则属于测试集。这意味着全部数据中将有约70%被用于训练。我们可以输出各数据集的分配值以证明这一点。

上手教程:15分钟掌握机器学习-E安全

接下来的任务是为模型准备好对应的训练集。我们将创建一个变量以保存对各特征的推理(这部分信息可帮助确定最终分类信息),而另一变量则用于保存类别本身。

首先,为各类别创建变量。通过以下示例可以看到,该变量负责训练标签,同时存放来自该数据集之风险标签列的具体内容。目前各风险级别被划分为“高”、“中”与“低”,但我们将利用“因子分解”函数将三者以数字形式表达(0、1和2)。

上手教程:15分钟掌握机器学习-E安全

下面,各特征的名称会被捕捉至另一独立变更当中,即以下所示的columns_for_features。与此同时,随机森林分类器将被创建并存储在classifier变量之内。

现在模型训练的准备工作已经全部就绪。该分类器具备一条fit函数,其被传递至数据集中的训练部分(train_df),但会向模型强调其应当关注的具体列。同样也会被传递至训练标签,或者说现已可用的类别当中。

上手教程:15分钟掌握机器学习-E安全

现在,模型需要正式接受训练。在这一过程中,模型将了解“特征”与“标签”之间的关联,并学习如何在各特征可用时判断未知数据的正确标签。

反复测试

利用数据集中的测试性数据,我们可以了解自己的这套模型拥有怎样的实际预测表现。分类器中存在一条名为predict的函数,其负责将特征数据由此前准备好的test_df数据集当中提取出来。由此输出的结果则为一套整数集(分为0、1和2),其分别拥有与之对应的标签(即‘高’、‘中’、‘低’)。而这些正是我们模型所要预测的类别结论。

上手教程:15分钟掌握机器学习-E安全

虽然目前的成果已经相当令人兴奋,但仍不具备现实意义。我们需要通过几个快速步骤将各值解码为其文本标签,而后将模型所提供的类别结论与测试数据集中的原始标签进行比较,借以判断其预测准确度。

上手教程:15分钟掌握机器学习-E安全

以下网格所示为各个实际分组中的具体数字,且需要与预测分组进行比较。可以看到,对于10个高风险观察值,该模型将其中9个成功预测为“高风险”,而其中1个则被误判为“中等风险”。而在18个低风险观察值中,该模型带来了完全准确的预测结果。最后,10项中等风险内有7个得到正确预测,而另外3项则被错误预测为“高风险”。这样的结果基本令人满意。

上手教程:15分钟掌握机器学习-E安全

接下来,只需要通过简单的几个步骤,我们即可创建一套模型,并训练其以识别数据当中存在的模式。基于这种训练,该模型还可成功预测此前从未接触过的客户数据。利用这些预测模式,企业工作人员将不再需要手动审查客户详细信息,而这种对高风险客户的简化分析流程还可帮助我们将注意力集中在更具意义的价值生成工作身上。

在本示例当中,分类器负责预测风险级别。但同样的技术还可用于预测客户流失、设备故障以及其它多种实际业务问题

在实际操作当中,大家会发现这一流程所耗费的时间可能比想象中更长,但总体来讲,本文已经展示了其基本原理,并探讨了其中作为在机器学习领域迈出第一步的关键性举措。

另外,我们也体会到了使用预先准备的数据集所带来的助益。在大多数情况下,机器学习必须拥有经过正确归纳的数据集方可完成建模并真正处理实践工作而这种归纳任务可能包括数据清理、特征选择(即首先选择需要哪些数据)、转换与格式调整

这些工作中的每一项都完全可以作为单独的主题进行分析,但在今天的这篇快速上手教程中,我们只是顺带一提即可。总之——欢迎来到机器学习的时代!

相关下载地址:

Python:https://www.python.org/downloads/    

Scikitlearn:http://scikit-learn.org/stable/    

pandas:http://pandas.pydata.org/    

numpy:http://www.numpy.org/
   

E安全注:本文系E安全独家编译报道,转载请联系授权,并保留出处与链接,不得删减内容。联系方式:① 微信号zhu-geliang ②邮箱eapp@easyaq.com
@E安全,最专业的前沿网络安全媒体和产业服务平台,每日提供优质全球网络安全资讯与深度思考,欢迎关注微信公众号「E安全」(EAQapp),或登E安全门户网站www.easyaq.com , 查看更多精彩内容。