您的位置: 网界网 > 大数据 > 正文

想让机器学习与商业结合,最重要的是什么?

2019年07月23日 17:31:20 | 作者:佚名 | 来源: | 查看本文手机版

摘要:本文中将介绍成功创建端对端机器学习系统的七个必要步骤,包括数据收集、数据监管、数据探查、特征抽取、模型培养、估值和部署。

标签
人工智能
机器学习

纯学术性地建立机器学习模型与为企业提供端对端的数据科学解决方案(如生产制造、金融服务、零售、娱乐、医疗保健)之间存在着巨大差异。

在机器学习方面,企业最常面临的问题是什么呢?除了培养机器学习模型,我们还能做什么?如何准备数据?如何扩大数据[注]集?为什么特征工程如此关键?如何将模型运用到生产实践,成为完全可行的系统呢中?如果能从开源软件中获取所有的数据科学工具,数据科学平台还有存在的意义吗?

本文将回答以上部分问题,并揭示目前机器学习遇到的挑战和困难,进一步通过具体行业案例提出最佳解决方案。

  机器学习不仅仅是培养模型

不少数据科学家对机器学习还存在普遍误解。

“假设你拿到一组有某种特征的数据集,并需要推测其中某个变量,你会怎么做?”

很多数据科学家都会做如下回答:

“我会把数据集拆分成培养/测试两部分,运行LogisticRegression, Random Forest, SVM, Deep Learning, XGBoost程序……然后计算精确度、查全率、F1分数……最终挑选出最佳模型。”

但是,还有些问题被忽略了:

“这个过程中你有看过数据本身吗?要是你遗漏了一些数值怎么办?如果你拿到错误的数值或是不良数据呢?你怎么设置分类变量?你是怎么做特征工程的?”

本文中将介绍成功创建端对端机器学习系统的七个必要步骤,包括数据收集、数据监管、数据探查、特征抽取、模型培养、估值和部署。

  给我数据!

作为数据科学家,主要资源很明显是数据。但有时数据采集本身也有困难。一个数据科学团队可能会花费几周甚至几个月的时间来获取合适的数据集。其中的困难包括:

获取途径:大部门企业数据都很敏感,尤其是政府、医疗保健和金融领域的相关数据。要共享数据集,签署保密协议是常规流程。

数据分散:数据在组织内不同部门间散布是很常见的。要拿到整体数据,需要各部门的同意。

专业指导:能获取数据往往还不够。由于获取的数据太多,需要一位领域专家指导团队从庞大的数据库中挑选出合适的数据集。有时专家的缺席也会成为项目瓶颈,因为核心企业运营已使他们应接不暇。

隐私:模糊处理和匿名操作已经成为两项独立的研究领域,在处理敏感数据时这二者尤为重要。

标记:通常了解实际情况或标记会很有帮助,因为这让团队能够应用很多可监控的学习算法。然而,有时标记数据成本高昂,或由于法律限制团队无法得到标记。在这些情况下,可以应用数据聚类等不可监控的方案。

数据生成器:如无法获得数据或标记,可以去模拟它们。了解数据结构的相关信息会对使用数据生成器很有帮助,除此以外,还可以了解数值变数的可能性分布和名义变量的类别分布。如果数据结构比较散乱,可借助汤不热(Tumblr)平台,其上有许多标记图像。此外,推特(Twitter)可提供大量自由文本,卡歌网(Kaggle)则拥有特定领域和行业相关的数据集和解决方案。

  大数据并不大

近十年,大数据供应商卖力宣传,强调对大数据规模和功能的需求,掀起了一股大数据热潮。也因此,“大数据并不大”这一观点引发了更大的争议。然而,我们需要明确区分原始数据(包括对所有对当前问题无帮助的数据)和特征集(机器学习算法的输入矩阵)。将原始数据处理成特征集的过程称为数据处理,包含以下步骤:

丢弃无效/不完整/脏数据。根据我们的经验,此类数据可占所有数据的一半。

聚合一个或多个数据集,包括数据连接和组类聚合等操作。

特征选取/抽除。比如,除去唯一性标识等可能无关的特征,并应用其它降维技术,如主成分分析。

使用稀疏数据表示法或功能散列法,以减少存在许多零值数据集的内存占用。

完成数据准备后,不难发现最终的特征集——即机器学习模型的输入内容——比初始的小很多;另一种常见情况是R或scikit-learn等内存框架足以培养模型。若特征集规模仍十分庞大,可以使用ApacheSpark等大数据工具,尽管其算法选择有限。

  脏数据!

人们当然希望能学习一些尚不了解的东西,但这一点非常重要:脏数据很常见。在企业合作中,很多客户经常自豪于他们的数据湖泊建设,比如数据湖泊有多壮观、他们可从中得出多少洞见等。因此,作为数据科学家,以下就是我们脑海中的景象:

但是,当客户拿出实际数据时,情况更像是这样:

在这种情况下,Apache Spark等大规模框架就显得尤为重要,因为所有的数据监管转化过程都需要在全部原始数据上完成。以下是几个典型的监管案例:

异常检测:负数年龄、浮点邮编和零值信用评分等都是无效数据,不修正这些数值会在培养模型时产生深刻的偏见。

缺失/错误数值填充:显然,处理错误/缺失数值最常用的方法就是丢弃它们。另一个选择是填充。比如,用相应特征的平均数、中位数或众数来代替缺失/错误数值。还有一种方法是插值,如建构模型来预测缺失数值的情况下的特征。另外,填充中也可以运用领域知识。比方说处理病人数据时,有一项特征是推断病人是否患有癌症。如果缺失此类信息,可以参考其问诊数据,以确定此病人是否曾看过肿瘤科医生。

虚拟编码和功能散列:这两种方法能很有效地把类别数据转换成数值,尤其在基于系数的算法中。比方说,有一项特征是州名,显示美国的各州名称(如FL,CA,AZ)。将FL编码为1,CA编码为2,AZ编码为3,会显示出秩序感和重量级。这意味着AZ会比FL面积更大,而CA的面积是FL的两倍大。一位独热编码——也称虚拟编码——提供的解决方案是将类别栏映射到多个双栏中,其中一栏为类别数值。

归一化:若存在不同等级的特征,系数相关的算法就会产生偏见。比方说,特征年龄在[0,100]范围内用年表示,然而工资在[0,100,000]范围内用美元表示。优化算法可能仅仅因为工资的绝对数量级更大而更侧重工资。因此,更推荐常态化算法以及其他常用方法,如Z值推测