什么是机器学习?有哪些分类?怎样上手开发?终于有人讲明白了

2020-03-10 16:22:20 浏览数 (1)

导读:本文首先介绍何谓机器学习,以及与机器学习相关的基本概念,这是学习和理解机器学习的基础。按照学习方式的不同,机器学习可以分为不同类型,如监督学习、无监督学习、强化学习等,本文会详细介绍它们各自的特点和使用场景。

其次,借助本文对机器学习应用开发步骤的详细说明,读者能够清晰地了解机器学习应用的开发流程。

最后,大家可以回顾一下我们此前的一篇文章《腾讯阿里都在用!机器学习最热研究方向入门,附学习路线图》,了解一下目前机器学习领域最热门的研究方向之一——集成学习,以及XGBoost如何被提出并在业界广泛应用。

作者:何龙

来源:大数据DT(ID:hzdashuju)

01 何谓机器学习

近几年,机器学习可谓是业界最热门的领域之一,AlphaGo以4 : 1的比分击败李世石,人工智能和机器学习一夜火遍世界各地。机器学习离我们并不遥远,甚至可以说已经渗透到我们生活的方方面面。例如:

  • 网上购物时,电商网站根据用户偏好为用户推荐商品;
  • Siri手机语音助手可查询天气、播放音乐;
  • 打车时,打车软件帮我们预估行程时间、规划行程路线;
  • 点外卖时,外卖App将订单分配给附近空闲的骑手等。

这些无一不是通过机器学习技术来实现的。

机器学习领域知名学者Tom M.Mitchell曾给机器学习做如下定义:

如果计算机程序针对某类任务T的性能(用P来衡量)能通过经验E来自我改善,则认为关于T和P,程序对E进行了学习。

通俗来讲,机器学习是计算机针对某一任务,从经验中学习,并且能越做越好的过程。一般情况下,“经验”都是以数据的方式存在的,计算机程序从这些数据中学习。学习的关键是模型算法,它可以学习已有的经验数据,用以预测未知数据。

在很多领域,仅仅靠人很难从诸多信息中将有效信息提取出来的。例如,我们想知道一个人是否会去购买某个电影的电影票。想要知道这个答案,最直接、有效的方法就是去问他本人,因为他本人的回答是与结果最接近的,也就是相关性最强的一个特征。

假如我们并不认识这个人,或并没有条件直接与他本人沟通,那么还有另外一种思路—问他的朋友,他的朋友可能对他比较了解,知道他喜欢哪种类型的影片。但往往这个条件也不一定能达到,因为对于这样的需求场景,更多的可能是影院想知道他的顾客会不会购买某个电影的电影票。

而影院所拥有的顾客信息通常是用户的性别、年龄、以往观影记录、消费记录等基本信息。对于普通人来说,通过这些原始数据预测该顾客未来的行为,很难给出一个比较准确的答案。此时便需要机器学习把无序的数据转换成有用的信息,从而解决相关问题。

机器学习横跨了多个学科,包括计算机科学、统计学等,而从事机器学习的人不仅需要扎实的计算机知识和数学知识,还需要对机器学习应用场景下的业务知识非常了解。因此,很多人觉得机器学习门槛很高,还没有开始学习就望而却步了。

其实机器学习的入门并没有想象中那么难,当然也不意味着机器学习的技术含量低。机器学习的特点是:入门门槛低,学习曲线陡。很多人入门之后容易陷入一种瓶颈状态,很难有更高的突破,所以学习机器学习一定要有耐心和毅力。

学习机器学习所需的基础知识有以下几类:

  1. 数学:线性代数(矩阵变换)、高等数学;
  2. 概率分布、回归分析等统计学基础知识;
  3. Python、NumPy、Pandas等数据处理工具;
  4. Hadoop、Spark等分布式计算平台。

读者不要被上面所罗列的知识吓到,因为即使你不具备这些知识,也可以学习机器学习,在学习的过程中随用随查即可。当然,如果已经事先具备了这些知识,那你学习起来一定事半功倍。下面介绍机器学习相关的基本概念。

02 机器学习常用基本概念

假如我们有一批房屋特征数据,其中包括卧室数量、房屋面积等信息,如表1-1所示。

其中,每一条记录称为样本,样本的集合称为一个数据集(data set)。类似卧室数量、房屋面积等列(不包括房价列)称为特征(feature)。房价是比较特殊的一列,它是我们需要预测的目标列。在已知的数据集中,目标列称为标签(label),它可以在模型学习过程中进行指导。

并非所有的数据集均包含标签,是否包含标签决定了采用何种类型的机器学习方法(后续会对不同类型的机器学习方法进行介绍)。数据集一般可以分为训练集、验证集和测试集,三者是相互独立的。

  • 训练集用于训练和确定模型参数;
  • 验证集用于模型选择,帮助选出最好的模型;
  • 测试集用于评估模型,测试模型用于新样本的能力(即泛化能力)。

如果机器学习任务的预测目标值是离散值,则称此类任务为分类任务。比如比较常见的垃圾邮件分类系统,类别只有垃圾邮件、非垃圾邮件两类,这是一个分类任务,并且是一个二分类任务(类别只有2种)。

若类别有多种,则称这类任务为多分类任务。例如预测电影所属类型,其包括动作片、爱情片、喜剧片等多个类别。如果预测值是连续值,则称为回归任务,如表1-1中的预测房价。

另外,还可以对数据进行聚类,即找到数据的内在结构,发现其中隐藏的规律。例如我们以前看过的电影,即使没有人告诉我们每部电影的类型,我们也可以自己归纳出哪些影片属于喜剧片、哪些属于动作片。

03 机器学习类型

按照学习方式的不同,可以将机器学习划分为几种类型:监督学习(supervised learning)、无监督学习(unsupervised learing)、半监督学习(semi-supervised learning)、强化学习(rein-forcement learning)。

1. 监督学习

顾名思义,即有“监督”的学习,这里的“监督”指的是输入的数据样本均包含一个明确的标签或输出结果(label),如前述购票预测系统中的“购票”与“未购票”,即监督学习知道需要预测的目标是什么。

监督学习如同有一个监督员,监督员知道每个输入值对应的输出值是什么,在模型学习的过程中,监督员会时刻进行正确的指导。

监督学习输入的数据称为训练数据。训练数据中的每个样本都由一个输入对象(特征)和一个期望的输出值(目标值)组成,监督学习的主要任务是寻找输入值与输出值之间的规律,例如预测房屋价格系统,输入值是房屋的面积、房间数量等,输出值是房屋价格。

监督学习通过当前数据找出房屋面积、房间数量等输入值与房屋价格之间的内在规律,从而根据新的房屋样本的输入值预测房屋价格。

2. 无监督学习

与监督学习相反,即无监督学习输入的数据样本不包含标签,只能在输入数据中找到其内在结构,发现数据中的隐藏模式。在实际应用中,并非所有的数据都是可标注的,有可能因为各种原因无法实现人工标注或标注成本太高,此时便可采用无监督学习。无监督学习最典型的例子是聚类。

3. 半监督学习

半监督学习是一种介于监督学习和无监督学习之间的学习方式。半监督学习是训练数据中有少部分样本是被标记的,其他大部分样本并未被标记。半监督学习可以用来进行预测,模型需要先学习数据的内在结构,以便得到更好的预测效果。

4. 强化学习

强化学习是智能体(agent)采取不同的动作(action),通过与环境的交互不断获得奖励指导,从而最终获得最大的奖励。

监督学习中数据标记的标签用于检验模型的对错,并不足以在交互的环境中学习。而在强化学习下,交互数据可以直接反馈到模型,模型可以根据需要立即做出调整。强化学习不同于无监督学习,因为无监督学习旨在学习未标记数据间的内在结构,而强化学习的目标是最大化奖励。

04 机器学习应用开发步骤

开发机器学习应用时,读者可以尝试不同的模型算法,采用不同的方法对数据进行处理,这个过程十分灵活,但也并非无章可循。本节会对机器学习应用开发中的经典步骤进行逐一介绍。

1. 定义问题

在开发机器学习应用之前,先要明确需要解决的是什么问题。在实际应用中,很多时候我们得到的并非是一个明确的机器学习任务,而只是一个需要解决的问题。

首先要将实际问题转化为机器学习问题,例如解决公司员工不断收到垃圾邮件的问题,可以先对邮件进行分类,通过机器学习算法将垃圾邮件识别出来,然后对其进行过滤。由此,我们将一个过滤垃圾邮件的现实问题转化为了机器学习的二分类问题(判断是否是垃圾邮件)。

2. 数据采集

数据对于机器学习是至关重要的,数据采集是机器学习应用开发的基础。数据采集有很多种方法,最简单的就是人工收集数据,例如预测房屋价格,可以从和房屋相关的网站上获取数据、提取特征并进行标记(如果需要)。人工收集数据耗时较长且非常容易出错,所以通常是其他方法都无法实现时才会采用。

除人工收集数据外,还可以通过网络爬虫从相关网站收集数据,从传感器收集实测数据(如压力传感器的压力数据),从某些API获取数据(如交易所的交易数据),从App或Web端收集数据等。对于某些领域,也可直接采用业界的公开数据集,从而节省时间和精力。

3. 数据清洗

通过数据采集得到的原始数据可能并不规范,需对数据进行清洗才能满足使用需求。例如,去掉数据集中的重复数据、噪声数据,修正错误数据等,最后将数据转换为需要的格式,以方便后续处理。

4. 特征选择与处理

特征选择是在原始特征中选出对模型有用的特征,去除数据集中与模型预测无太大关系的特征。通过分析数据,可以人工选择贡献较大的特征,也可以采用类似PCA等算法进行选择。此外,还要对特征进行相应处理,如对数值型特征进行标准化,对类别型特征进行one-hot编码等。

5. 训练模型

特征数据准备完成后,即可根据具体任务选择合适的模型并进行训练。对于监督学习,一般会将数据集分为训练集和测试集,通过训练集训练模型参数,然后通过测试集测试模型精度。而无监督学习则不需对算法进行训练,而只需通过算法发现数据的内在结构,发现其中的隐藏模式即可。

6. 模型评估与调优

不管是监督学习还是无监督学习,模型训练完毕后都需要对模型结果进行评估。监督学习可采用测试集数据对模型算法精度进行评估。无监督学习也需采用相应的评估方法检验模型的准确性。若模型不满足要求,则需要对模型进行调整、训练、再评估,直至模型达到标准。

7. 模型使用

调优之后得到的最优模型一般会以文件的形式保存起来,以待应用时可直接加载使用。机器学习应用加载模型文件,将新样本的特征数据输入模型,由模型进行预测,得到最终预测结果。

关于作者:何龙,现就职于滴滴出行,XGBoost开源社区贡献者,专注于人工智能和机器学习领域,从底层算法原理到上层应用实践都有广泛的兴趣和研究。较早接触XGBoost,熟悉XGBoost应用开发,深入阅读源码,具有丰富的项目开发经验。

本文摘编自《深入理解XGBoost:高效机器学习算法与进阶》,经出版方授权发布。

延伸阅读《深入理解XGBoost》

点击上方链接了解及购买

转载请联系微信:DoctorData

推荐语:知名互联网公司资深工程师撰写,打通高效机器学习脉络,掌握竞赛神器XGBoost。以机器学习基础知识做铺垫,深入剖析XGBoost原理、分布式实现、模型优化、深度应用等。

有话要说?

Q: 你开发了哪些机器学习应用?

欢迎留言与大家分享

0 人点赞