来源:人民邮电出版社
与人们普遍认为的不同,机器学习技术其实存在已久,并直接或间接地广泛运用于我们使用的多种服务和商品。比如,保护我们不受垃圾邮件侵扰的垃圾邮件过滤技术、电商网站上推荐合适商品的服务、苹果的 Siri 等识别人声的服务等,许多应用正在融入我们的生活。
维基百科将机器学习定义如下:
“机器学习是从人工智能的范式识别和计算学习理论中发展而成的计算机科学领域之一。机器学习先训练数据,然后研究可预测的算法。这些算法并不使用静态编程,而是通过输入的数据创建模型,从而进行预测或给出决策。”
由此可知,机器学习定义中重要的部分是,使用给定数据独立训练并创建合适的模型。一般来说,想要使用计算机做某件事情,需要在计算机上详细定义什么是数据(输入)、这些数据进入之后应该怎样处理(程序)、应该怎样表示结果(输出)等。
1.1 浅识机器学习
程序员开发程序的过程是使计算机理解定义,通过指令编码,指示应当如何处理输入、程序、输出。计算机没有智能,只有将输入、程序、输出相关的详细内容编写为没有逻辑矛盾的程序,才能获得想要的结果。
但是机器学习使用的处理方法完全不同。人们只进行输入和输出,机器学习会自行创建程序。准备好合适的数据后,用现有的处理方法编写程序则需要投入很多的时间和精力,但是机器学习的处理方法却不用这么麻烦。在机器学习中,将想要的结果指定为输出,余下的工作则依靠机器学习独立编写程序。因此,我们只需要提供足量的、已经整理好的数据,以及使用机器学习时所需的计算能力即可。
图 1-1 明确展示了机器学习处理方法和现有处理方法的不同。
机器学习以数据为基础,所以与计算统计有诸多关联。从机器学习的观点看,“从数据中学习”是指,使用既有数据算出概率并给出特定数据时,借助过去的数据计算得出结果值的概率。
这种特征充分体现了数据在机器学习中的重要性。如果提供的数据量不合适或质量低下,那么即使使用优质的机器算法,也不可能得出好的结果。的“无用输入,无用输出”(GIGO,garbage in,garbage out)原则自然也适用于机器学习。
数据对机器学习的结果影响巨大,因此在机器学习中,挖掘并整理数据的数据挖掘十分重要。通过数据挖掘选择将要用作输入数据的合适的输入变量,补充该输入变量缺失的数据或清除离群值,然后选择适量数据,这其实是机器学习中重要的过程,而且是重中之重。
1.2 机器学习的优缺点
如果你次接触机器学习相关的概念或各种成功案例,可能会觉得它像尚方宝剑,能够解决任何问题。再试着运行示例代码,会更吃惊地发现,几行简短的代码竟然可以轻松地从图像中识别文字、分辨 Iris 花的种类等,这些都是用现有编程方法很难做到的事情。
但是,你不久之后就会意识到,机器学习并非挥舞一次便能压制所有敌人,也会明白示例只是示例。那些所谓的“成功案例”可能是使用的数据有误、算法不相符,或问题与机器学习不适合才“意外实现”的。
想要正确使用机器学习,需要把握机器学习的优缺点,要考虑待解决的问题是否适合机器学习,如果不适合应该怎样重新定义问题,应该使用哪些数据等。换言之,只有理解机器学习的优缺点,才能用它取得好的结果。
1.2.1 机器学习的优点
● 不需要训练所需的知识表达。计算机理解知识时,所需的表达是很难的。
● 如果数据充分,算法合适,呈现的结果将优于人工构建的模型。
● 不要求专业的数学知识或编程能力。仅靠基本概念即可充分使用机器学习。
● 支持自动化。可以用程序自动进行机器学习、寻找优参数、对结果进行评估。
● 成本低廉且灵活。除数据之外的其他过程均可自动化。
● 可以通过程序随心使用。
1.2.2 机器学习的缺点
● 准备数据时需要付出大量努力。如果是监督学习,需要给出所有单一数据的结果值。
● 容易报错。通常很难创建准确度高的模型。
● 生成的模型是黑箱,所以很难对其进行解释。想要提高准确度,应当修改或者改善模型,但是大部分机器学习算法很难用训练结果理解生成的模型,而且不能对模型本身进行改善。
● 经常发生过拟合问题。虽然优化了既有数据,使得训练中使用的数据拥有较高的预测能力,但是其他数据的预测能力并不突出。
1.3 机器学习的种类
如图 1-2 所示,根据学习方法的不同,机器学习可以分为三大类:人工提供输入和输出的监督学习、只提供输入的无监督学习、在某个环境内为了达成特定目标而进行独立学习的强化学习。从当前的使用频率看,监督学习多,其次是无监督学习,后是强化学习。
1.3.1 监督学习
监督学习是常用的机器学习类型,包括垃圾邮件过滤、OCR 字符识别等。监督学习通过提供输入和输出进行学习,可以视为一种优化问题,因为它会对监督学习算法现有的输入值进行分析,然后创建得出输出值时所需的优模型。以开发能够区分小猫图像的机器学习程序为例。因为监督学习需要提供输入和输出,所以要提供小猫的图片和“小猫”这个词。也就是说,提供小猫照片的同时,也要提供“小猫”这一输出,如图1-3 所示。
因此,在监督学习中,数据以输入和输出捆绑在一起的“元组”形态构成。
1.3.2 无监督学习
监督学习是分析输入以得出输出的优化问题,无监督学习则是把握输入数据的结构或者分析关系的方法。无监督学习也称“知识发现”(knowledge discovery),因为它能够用训练结果发现意想不到的知识,或者发现输入数据之间的组合和特征等。
无监督学习的另一个特征是,它很难对训练结果进行评价。因为训练结果没有明确的目的,即没有输出,所以无法制定评价标准。监督学习提供数据的时候,每个数据的输入和输出都是元组形式;但是无监督学习中没有输出,只提供输入。
前文监督学习示例提供了小猫的照片和名字,但无监督学习中没有名字,只用小猫的照片完成学习,如图 1-4 所示。
1.4 机器学习能做的事情
近,机器学习通过无人汽车、小猫照片识别、图像描述(image captioning)等呈现出优越的成果,我们有理由相信,用专业的数学背景和精巧的算法武装机器学习后,能够解决很多问题。但是目前,使用机器学习这一“魔法”解决的问题并不多,甚至连这一点点成就都耗费了诸多辛劳和奉献。
通过机器学习达成某件事情耗费的时间比想象中要长。想要获得一个完整的结果,需要经过数十次、数百次的重复,逐步改善,还要根据情况重新构建模型,或者从完全不同的角度推进。尤其是想要使用机器学习解决特定问题时,只有将这个特定问题转化为适合机器学习的形态,才能获得想要的结果。因此,正确使用机器学习前,必须知道机器学习能做什么、不能做什么。
看到机器学习能够过滤垃圾邮件、识别文字和语音,你可能会觉得它可以处理各种事务,但其实它只能处理三类事情:回归(把握变量间关系)、分类(分类数据)、聚类(将有关的数据联结在一起)。
机器学习通过这三种方式解决各类问题。回归和分类是所有机器学习算法的根本,是非常重要的概念,大家必须理解。
1.4.1 回归
回归的主要目的在于把握连续数字变量间的相互关系,特别是分析因变量和自变量之间的联系。为了帮助大家理解回归,下面以房价为例进行说明。假设我们打算卖掉正在居住的房子,想知道到底能够得到多少钱。但是因为没有和这所房子大小相同的房屋作为参考,所以很难决定房价。此时可以通过其他房屋面积的房价数据和回归分析,计算合理的房价。
开始回归分析时,首先要画出因变量和自变量的散点图,这样能够直观把握数据的关联程度,如图 1-5 所示。
由图 1-5 可知,房价和面积之间存在线性关系。想要解决的问题是根据面积计算房价,那么从散点图中可看出,房屋面积越大,价格越高。因此,可以想到如下模型(公式)成立:
Y = aX + b
Y 是房价,为“因变量”;X 是面积,为“自变量”。假设的模型是一次函数,所以a 指斜率,b 指截距。如果利用既有数据得出 a 和 b 的值,那么就能完成决定房价时所需的模型。在该模型中,X 处输入要卖的房子面积,就能算出房价。利用程序,a 值为0.65、b 值为 0.89 时,能够表现图 1-5,这就可以说“房价 = 0.65×面积 + 0.89”的关系成立,如图 1-6 所示。
我们现在已经知道了房价和面积之间的关系,那么只要得知面积,将其代入前面的公式,就能计算出正确的房价。
像这样,把握既有变量之间的关系就是回归。回归问题的应用如下所示:
● 用过去的温度数据预测明天的温度
● 用股票行情信息预测未来的股票价格
● 用流动人口、天气、价格信息等预测饭店的生意
● 用买家的年纪和年收入预测特定商品的销量
1.4.2 分类
顾名思义,分类就是对数据进行分别归类。为了帮助大家理解分类,下面以Iris数据为例。
假设要利用花瓣的宽和高数据, 判断给定的Iris 花属于Setosa、Virginica 和Versicolor 中的哪个品种。这个问题与前面的回归问题不同,并不是要预测某个值,而是判断其属于哪个种类。但是与回归问题一样,分类也需要用散点图判断不同种类的花瓣的宽和高之间存在什么关系。
由图1-7 可知,Setosa 品种在图中为正方形,位于左下角;Virginica 是圆形,位于右上角;中间的三角形则是Versicolor。想要解决的问题是利用给定花瓣的宽和高来判断花的品种,因此需要区分这三个品种的方法。如果存在某个模型,该模型可以根据花瓣的宽和高区分品种,那么只需将新的宽和高作为数据输入,就能得到想要的结果。
①出处:http://blog.datacamp.com/machine-learning-in-r/
如图1-8 所示,利用两条线分出Setosa、Virginica 和Versicolor 区域之后,只要知道新给的数据在三个领域中的位置,就能顺利分类品种。因此,这里的“分类”就是利用给定数据,求出能够区分Iris 花的两个Y=aX+b。
分类通过以上过程区分数据,广泛应用于机器学习。回归能够用于连续数据(continuous data),而分类则能用于分类数据(categorical data)。
分类问题的应用如下所示:
● 垃圾邮件分类
● 图像识别
● 语音识别
● 判断是否罹患疾病
1.4.3 聚类
聚类将数据集合成拥有相似特征的簇。聚类用于无监督学习,不需要输出数据,仅靠输入数据完成,主要用于把握或理解数据的特征。
例如,假设我们要展开营销活动,现在想知道会响应营销活动的人群拥有什么特征。如果是次进行营销活动,拥有相关的数据,但不知道应以什么样的标准选定对象,那么聚类可以有效解决这类问题。
聚类通过计算给定数据之间的相似程度,将拥有相似特征的数据分为一类,能够有效完成操作。收集响应营销活动的人群数据后进行聚类,就能知道拥有相似特征的人可以分为几类。如果掌握了每类人群的共同点,就能发现问题中响应营销活动的人群类型及其特征。进行聚类之后,如果得到图1-9 所示结果,就可以将响应营销活动的人群定为两类,然后对这两类人群拥有的特征进行分析即可。
聚类问题的应用如下所示:
● 聚集音乐喜好相似的用户
● 使用天文学数据寻找拥有相似特征的星体
● 推荐电商用户可能喜欢的商品
《利用机器学习开发算法交易系统 》
本书介绍了机器学习必要的统计与概率方面的数学理论,以及适用机器学习的领域相关的领域知识,同时收录了实现代码。利用机器学习编写程序时,机器学习算法所占的比重并不大,重要的是理解数据并掌握特性。在此过程中,如果具备统计与概率相关的数学知识和机器学习应用领域的专业知识,则能大大节约时间,并简化问题。经过这些过程的机器学习才能获得良好的应用效果。