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

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


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


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


640?wx_fmt=jpeg

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


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


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


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


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


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


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


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


640?wx_fmt=jpeg

给我数据!


640?wx_fmt=png


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


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


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


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


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


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


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


640?wx_fmt=jpeg

大数据并不大


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


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


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


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


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


640?wx_fmt=png


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


640?wx_fmt=jpeg

脏数据!


640?wx_fmt=png

脏数据很常见


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


640?wx_fmt=png


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


640?wx_fmt=jpeg


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


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


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


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


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


分箱将实值栏映射到不同类别极为有效,如将一个回归问题转化为分类问题。比方说,你想推测航班进港延误的分钟数。一个选择是推测该航班是否会提前、准时抵达或延误,并确定各类别的数值范围。


640?wx_fmt=jpeg

特征工程无处不在


640?wx_fmt=png


总而言之,特征就是机器学习算法需要学习的特点。正如人们设想的那样,干扰或无关数据会影响模型的质量,因此掌握好的特征就十分关键。以下是几个特征工程中可使用的策略:


确定预测内容。每一个实例代表什么?顾客?交易?病人?还是票据?确保特征集的每一行都对应一个实例。


避免唯一性标识。它们不仅在大多数情况下不起作用,还有可能导致严重的过度拟合,尤其是在使用XGBoost等算法时。


运用领域知识来导出帮助衡量成功/失败的新特征。通过去医院的次数可以推断医患风险;上月跨国交易的总量可推断诈骗的可能性;申请贷款数额与年收入的比例可推断信用风险。


运用自然语言处理技术从散乱自由文本中导出特征。比如LDA,TF-IDF,word2vec和doc2vec。


若存在大量特征,可使用降维方法,如主成分分析和t-分布领域嵌入算法。


640?wx_fmt=jpeg

异常检测无处不在


640?wx_fmt=png

图片来源:feature. fm.


如果要在企业机器学习的应用案例中挑选出最常见的一个,那就是异常检测。无论是否研究诈骗侦查、生产测试、客户流失、医患风险、客户失信抑或是系统崩溃预测,面临的问题总是:我们能否大海捞针?这就引出了另一个与非平衡数据集有关的话题。


以下是几个用于异常检测的常见算法:


1. 自动编码器


2. 一类分类算法,如单类支持向量机


3. 信赖区间


4. 聚类


5. 运用过采样和欠采样法分类


6. 非平衡数据很常见


相关推荐


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值