目前有很多讲解机器学习算法模型的文献资料,但本文不涉及复杂的数学公式,旨在从业务的视角出发深入浅出地解析机器学习的常用经典模型原理和使用场景,总结在不同业务场景中机器学习起到的作用和一些实际的思考。

回顾人工智能的发展历程,机器学习无疑是推动其从理论走向实践的一个重要里程碑,它不仅让机器学会了从数据中提取知识、让机器有了解决复杂问题的能力,更是重塑了各行各业的业务版图,极大地拓宽了人工智能的应用边界。

虽然与目前主流的神经网络等深度学习领域算法相比,机器学习在模型效果、所需人力和对复杂任务的处理上比较劣势,但其由于广泛的适用性、灵活性和可解释性,部分算法模型依然有着不可替代的作用。

一、机器学习经典五大模型和应用解析

机器学习模型包括无监督学习模型和有监督学习模型,本文讲五个比较经典的模型,分别为:树模型、聚类模型、集成模型、支持向量机和贝叶斯模型,其中树模型和支持向量机是有监督学习模型,聚类模型是无监督学习模型,而集成模型和贝叶斯模型根据具体业务应用而定。目前应用依然广泛的是树模型和集成(随机森林)模型。

1.1 树模型

如果说机器学习领域选一个模型代表的话,那就是树模型,由于深度学习的崛起,其他的模型已被神经网络所取代,但是树模型的应用至今还特别多,神经网络模型在大多数情况下的建模效果比较好,但也有很多不适用的场景,比如要在短视频平台加实时特效,第一步要找到人脸或者身体所在的位置,比如人的眼睛鼻子嘴巴、手等等,这叫关键点的定位,然后在对应的部位加效果,比如我想变成美国队长,那就需要先检测到手,然后加上盾牌。

如果用神经网络去实现它,在手机上跑起来会很慢,无法达到实时性的要求,但是大家使用过都知道,现在短视频平台的特效是随着人物一直在跟着动的,实时性很强,这就是使用树模型实现的效果。虽然树模型在泛化能力和处理复杂关系能力等方面不及神经网络,但它的速度非常快,这是树模型的第一个优势,也是它还能广泛应用的一个最大原因。

第二个优点是什么呢?当我们用神经网络做建模的时候,任务从前到后的整个流程不可解释,它就像一个黑盒子,我们只知道达到了一个结果,它里面有成百上千万个参数,我们不知道每个参数的实际意义,过程是怎么实现的不能去观测。但是在机器学习使用的场景当中,我们对每一个业务的逻辑和影响结果好坏的关键因素要分析,以便能更好地提升业务能力,所以神经网络就不适用于这种场合,但是树模型的每一个决策过程都是清晰的。举个例子,我们要从这五个人里面筛选出年龄小于15岁的女性,树模型会先做年龄判断,再通过性别做判断,每一步(或者叫每一个节点)的决策逻辑非常明显。

所以综合起来,树模型之所以没有被神经网络所取代最主要的两大优势就是:

速度快,适合实时性要求高的场景
模型的决策节点可解释

1.2 聚类模型

在上一篇我们讲过,机器学习的三大核心任务是分类、回归和聚类,聚类是对没有标签的数据进行切分,属于无监督学习。

用一个简单的demo来理解聚类,可以想象下我们身边的小团体,大家都把自己范围内的人拉进团体中,在这个范围当中我们并没有一个数据标签,如果把每一个人看作是一个点,最开始的那个点属于什么类别我们不知道,大家都是盲目地从众,那怎么判断类别呢?是通过密度的方式,在这个任务当中,我们随机找一个点为初始点,假如以1为半径画圈,但凡圈到的点都是初始点自己的团体,被圈到的下一个点再以1为半径画圈,圈到的点同样属于这个团体,直到实在找不到一个在半径1范围内的点了,那剩下的就是其他类别了。

在这个例子中,红色和蓝色部分都以1为半径圈完了自己的团体,剩下的上面部分是下一个需要被分类的点集:

这样聚完堆之后就把数据分成了三类,在这个demo中可以看出,聚类任务是没有标签,只有数据的时候也把数据做切分。

我刚才提到了半径,当半径设置得比较大的时候,比如设置成1.42,我们可以看出在这个任务当中只得到红色一个类别:

在半径比较小的时候,比如设置成0.6,就得到了很多类别:

以上演示的方法叫K均值聚类,K是我们需要把数据分成的类别数量。因为聚类模型只有数据,没有标签,模型不能通过输入和输出之间的关系来学习,所以选择半径一般只能凭经验或者不断去尝试。

在实际应用场景当中,不用人工打标签确实可以节省人力成本,但业务负责的人肯定想知道这么分类依据是什么,或者在任务当中怎么证明圈出来的点是异常的,聚类模型决策的过程很难展示,所以在处理一个任务时宁愿请人工来打标签再使用其他的算法模型,首选模型通常都不会是聚类,因为没有任何实用性的指导价值,它只是把数据做一个切分,至于为什么那样切分和切分的结果是不是合理都无从知晓,聚类模型只是得到一个结果而已。

所以从业务视角总结聚类模型的优势和劣势:

优势是比较简单高效,也不用打标签,节省人力成本
劣势是:1.对于初始聚类的中心点和半径需要不断试验才能得到满意的效果;2.模型决策过程不可解释,对业务调节没有指导价值

1.3 集成模型

集成模型通过把多个机器学习模型组合在一起,以提高预测的准确性和稳定性。通过结合多个模型的预测结果,集成学习可以减少单个模型的偏差和方差,并提供更可靠的预测结果。集成模型就是看不同模型组合成的整体的效果,就跟我们在玩游戏的时候,小A说要去打野,小B说要越塔,小C又说要猥琐一波,这时候集成模型就不会只听其中的一个,要兼顾他们的情况进行汇总,比如大家投票少数服从多数,或者在回归任务中三者的预测值求平均值来处理,这些组合成的模型有强有弱,但是多个比较弱的模型集成的效果就可以媲美一个强的模型效果,这就是集成模型的意义。

在集成模型中有一种到目前使用较多的模型,就是随机森林模型,它由多个树模型组成,其中的每一个树模型都是分类器,在上一篇机器学习的流程中写道每个机器学习任务都要经过特征提取,随机森林在每个决策树构建的过程中的”随机”体现在两个关键方面:一是在每个树模型的训练过程中,从原始训练数据中随机选择一部分数据点,即通过自助采样形成不同的数据子集;二是在每个树的每个分裂节点上,并不是考虑所有可能的特征,而是随机选择一部分特征进行预测。

正因为它依赖于多个树的预测结果,所以在系统面临不确定性和外部干扰时,仍然能保持比较好的预测效果,这个叫鲁棒性。当然,随机森林的另一个重要优势得益于树模型的可解释性。

1.4 支持向量机

支持向量机的特点是算法的思维方式非常有创造性,我们生活在三维空间中,科幻片中给我们展示更高维度的空间,在空间理论上有一句话:三维世界是四维世界的投影,支持向量机的算法机制就是类似的原理。假如我们现在有红色点和蓝色的点在一个平面上,需要想办法把红色点和蓝色点区分出来,为了区分这两者我做了一个决策边界,这个决策边界是一个非线性的函数,这是在二维平面当中,利用非线性函数做切分相对比较难,但我们可以找一个映射函数,把二维当中的点映射到三维空间当中,在三维空间中可以通过一个线性的方程区分出来,这样任务就变得非常简单了。所以支持向量机最核心的思想就是,我们的数据在一个低纬的环境当中,如果把数据映射到高维框架当中,我们就能得到一个更简单的特征方程,对于模型来说学习起来会更容易。

当年很多同学学完支持向量机都会被这个理论所折服。在2012和2013年左右,求职者在面试AI方向技术岗位的时候,基本上要把支持向量机从头到尾背下来,一般基础面试部分会要求推导出一个结论,或者把支持向量机给面试官讲明白。为什么面试要考核这方面的知识呢?第一是因为难,第二是因为支持向量机在当时是很先进的算法,它在当年效果非常好,直到后来神经网络的出现,支持向量机才永远地退出了历史的舞台。

1.5 贝叶斯模型

贝叶斯算法核心就是我们高数中的条件概率,咱们都玩过猜输赢的游戏,假如有一款剪刀石头布的游戏机,来了十个人都赢了,按照我们传统的思想,输赢是有一组参数来控制的,参数又是通过它观测到得数据来决定的,那如果观测到十个人都赢了,我们会认为我在玩的时候也是100%会赢,但如果让贝叶斯模型去做预测的话,它会想之前人们一直灌输的“十赌九输”这个概念,所以此时他不会认为他100%赢。

在贝叶斯算法当中,多了一个先验知识,就是还没往模型里传数据的时候就已经有的知识,比如我觉得今天大概十点多下班、明天太阳肯定会升起来的,这都是我的先验知识,这个先验条件通过人为加入或者贝叶斯模型提前去学习获得。

贝叶斯模型作为机器学习的经典模型之一,已经是几十年前流行的算法模型,他需要的计算成本低,通常来处理文本任务,但由于它的预测是在先验条件下完成的,一旦在模型中加入我们人为的先验条件,模型就只能在这个限制条件下去去完成任务,但换一个业务场景这个先验条件就不适用,这种局限性限制了它的应用范围。

二、机器学习的六大应用场景

过去几年,机器学习已经渗透在我们生活的方方面面,在衣食住行、娱乐、医疗、电商、金融和工程等等领域都发挥着巨大的作用,接下来我从数据分析、数据挖掘、特征工程、量化交易和工业制造领域解析机器学习的应用情况。

2.1 数据分析

数据分析估计是大家日常听过和用过最多的领域了,客观来讲,数据分析是指通过对数据的收集、清洗、处理和统计等,来提取数据中的有用的信息或有价值的见解,通过识别模式和趋势来评估假设,以此来支持决策和解决问题的过程。

我们传统的数据分析方法一般用excel、BI等任何擅长的工具,通过图表等可视化的指标,比如均值、中位数、最大值、最小值以及近期的表现、走势等等来解读反应的问题或起到的作用,所以传统数据分析方法比较偏统计多一些。在以上事件中大家不难发现,不管找数据,还是找到指标,或者分析走势等等,完成这一系列动作的主体都是人,强调的人的主观意愿,所以我们可以理解为,传统的数据分析更加强调怎么去做人为的规则和决策,这是传统的数据分析的特点。

机器学习对数据分析的作用包括数据预处理、模式识别、分类聚类、异常检测等等,它能够从数据中学习出模式和规律,并用于对数据进行预测和分类,决策主体从人变成更加理性的机器。

数据预处理是在收集到原始数据之后的第一个关键步骤,是在数据建模前必须要完成的一件事。数据预处理需要对数据做各种各样的变换和操作,包括:抽样、值替换、类型转换等等,在这里先不一一展开,在之后的文章可以详细讲解。从技术实现上来讲,数据预预处理的方法一般都有章可循,大多数时候的做法差不多,都有固定的模板,每个公司根据自己的业务选择合适的模板。

2.2 数据挖掘

如果我们需要处理的数据量非常大,数据指标很多,这时候靠我们人为的主观经验很难找到比较有价值的信息,咱们人的大脑的计算量是有限的,我们可以把要分析的数据交给计算机。一般给计算机哪些数据呢?有输入、输出,和输入输出之间的一个联系,比如我们参加一个聚会,实际签到的人数是输出,而聚会的主题风格、特邀嘉宾、时间是不是节假日等等,这些对于聚会性质的描述构成这次事件的输入,如果这次聚会的签到率非常低,我想知道到底是哪个因素导致了这个问题?但是在找这个因素的时候,我不再通过主观的经验或感受去分析,而是通过输入和输出的联系去看,建立联系的工具就是模型,建立好的这个联系就是我们需要的结果,我们通过建立好的模型发现签到率跟聚会的主题非常相关的,这是一个主要因素。这个因素是通过模型建立了关系之后发现的,并不是我们统计了均值方差中位数等各个指标去发现的,把数据输入和输出之间建立好联系,并找到对应的关系,就个过程叫做数据挖掘。

比起传统的数据分析,机器学习更偏重应用在数据挖掘领域,数据挖掘是从大量数据中提取有用信息和模式的过程,而算法是实现这一过程的核心工具,上面举例中从输入和输出建立联系的模型就是各个算法构建起来的。

我们在建立好模型后输出结果,做分类或回归任务,也就是由输入到输出的过程,但是更多时候,我们还需要建立好的模型来推导哪个因素起了关键作用,这就涉及到对模型的解释,这是数据挖掘很重要的一个作用。在工业领域,我们可以通过很多生产指标对一个流水线的产品或零件来检测合不合格,但是没办法找出不合格的主要原因,利用数据挖掘就可以推断出不合格是哪个环节导致的,以便接下来更好地对那个环节进行改善。

2.2 特征工程

为了解释什么叫特征工程,先给大家看一些实际的例子,我们一般都会在电脑上安装安全防护软件,当我们访问网页、下载东西或者看视频时都会发送HTTP请求,而当我们浏览的这个地址有安全隐患时,安全软件会提示我们。假如现在需要基于用户的HTTP请求来找出这个用户的异常行为,做异常流量的挖掘。在这个任务当中,我们首先需要建模,其次需要做分类任务,看用户的行为是正常还是异常。

以下是我们拿到的原始数据,想知道这些数据字段的含义,就需要网络安全的知识。

在这段数据中包含了访问时间、用户端和访问端的IP地址和端口号、发出请求中带的参数、DI解析等等,这些也是服务器上记录的日志数据,这些原始数据是无法通过计算得出具体的指标的,而特征工程就是把数据转化成可计算的指标,什么叫可计算的指标呢?比如日期有年月日,我们不能对日期做诸如矩阵乘法类似的数值计算,因为它是一个确定了的日期,但是不管拿到的原始数据多复杂和非结构化,我们都能够尽可能多地挖掘出有用的信息,比如我们能知道它属于春夏秋冬的哪个季节等等,这些特征都可以用离散的变量来表示,比如可以用1、2、3、4分别代表春夏秋冬,除此之外我们还能够根据日期得出是工作日还是休息日、是一个月的上旬还是下旬、是不是周五或者节假日前一天等等,以此得出哪个时间段发生异常的概率比较多,就可以推断出时间与用户异常行为的关系。

以上日期的例子中我们能选出一堆的特征,同样我们可以对其他的字段提取特征,比如对于IP地址,我们可以看这个IP地址在历史数据当中被访问了多少次?发出了多少个请求?这个IP跟多少个不同的IP有交互?其中交互最多的是哪个等等,端口号、url同理。

到这我们可以总结出特征工程的概念,它是一个将原始数据转换成更有利于表示潜在问题的特征的过程,从而提高机器学习模型在预测不可见数据时的准确性,当我们拿到了一个原始的输入数据之后,我们需要尽可能把数据特征做得更丰富一些。

在实际情况当中,提取特征需要很多成员一起去绞尽脑汁地想,最后再汇总,通常模型和算法大家都在几个固定的框架里面找,但当我们处理数据的时候就需要很多业务知识,就像上面的例子,当我们做网络安全有关的业务时,就需要深入了解网络安全的知识,我们首先要知道这些字段的含义才能提取特征,所以很多数据挖掘任务的难点并不是算法和模型,而是怎样在原始输入数据中找出需要的特征,接下来才能套用算法和模型。在实际应用当中,相较于改进算法和模型调参,多提取特征对于业务的帮助来说是性价比很高的方式,科学家们投入大量的时间精力去研究算法,最终使得模型的效果提升百分之零点几,但是项目成员多找出些特征就可以在短时间内取得很不错的效果,成本低见效快。

特征决定了结果的上限,算法只能决定如何逼近这个上限,无论后续做什么,特征工程都是最核心的一步,而且套路难固定,基本全靠业务分析。在2012年之前,计算机视觉、自然语言处理等方面的特征提取靠的是机器学习,但是效果差强人意,因为靠人为地提取特征太有限,在深度学习崛起后,图像文本语音的特征一般都靠深度学习来提取。

2.3 量化交易

量化交易是时间序列预测,它的预测跟数据挖掘不一样,比如接下来是涨还是跌?涨跌的可能性分别有多大?预测下一个点的实际值是什么等等,通常我们在预测序列的时候不仅预测下一个点,还需要预测未来连续一段时间的趋势,因为看走势的下一时刻是涨还是跌可能不太重要,要看它连续的一个时间段总体是涨还是跌,这个就涉及到时间序列。

但是时间序列比较难预测,如果有一个股票的走势图,现在只有1号到19号的真实数据,接下来要预测是20号,算法可以基于1号到19号的历史数据去预测20号的数据,但接下来要预测21号的数据跟20号的数据关系非常大,会基于前面1号到20号的数据序列来预测,那22号的是基于前面1到21号的来预测。大家会发现,预测20号的数据是根据实际值,但是预测21号的数据要计算之前包括20号的数据,但问题是,20号的数据准确性我们未知,21号的数据准确性也未知,我们预测未来时间的序列是否合格都未知。

所以机器学习在时间序列当中很难去应用,尤其是量化交易。而且涨跌有时候并不服从某一个规律,很多时候都是突发现象,比如国家突然发布一个政策,相关的股都会受到很大的波动,这就是一个突发事件,但是模型不可能预知国家什么时候发布哪个政策,所以在机器学习领域要基于现在预测未来,基于未来再预测未来是很难的事。

如果数据的分布是固定的,比如学生都是早上起床,晚上睡觉,形成这样的固定模式,机器学习就能找到并学习规律,但是如果未来在用这个模型的时候我们的数据分布变了,它效果就不行了,量化交易就是这样。同样,AI也不能解决跨域的问题啊,在一个场景中训练的模型效果如果换一个场景就不适用了。

2.4 工业制造等领域

大量的工业(制造业)企业现在面临数字化转型,机器学习早已赋能制造业,在新能源、汽车等领域都有应用。在新能源汽车领域,以前按照合作经验或者习惯来筛选电池原料等供应商,当输入各个供应商原材料,再让算法模型输出产品的合格率,用数据来衡量就可以节省很多人为因素。

除此之外在其他工业制造行业也有大量的应用,比如在汽车行业利用机器学习建模碰撞检测,从而寻找合适的车型设计指标;在化工企业利用机器学习建模进行安全识别,来实时监控安全问题;在车间流水线上进行智能识别、缺陷检测等,替代大量人工操作等。机器学习在风控领域一般对信用风险进行建模,比如互联网金融风险建模、利用大数据对个人信贷建模进行评分,还有对市场进行定价建模等,在这里不多赘述。

本文由 @AI产品薇薇 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于CC0协议。

Tags:

Categories:

No responses yet

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注