机器学习概述
随着大数据的发展和计算机运算能力的不断提升,人工智能在最近几年取得了令人瞩目的成就。目前在很多行业中,都有企业开始应用机器学习技术,从而获取更深刻的洞察,为企业经营或日常生活提供帮助,提升产品服务水平。机器学习已经广泛应用于数据挖掘、搜索引擎、电子商务、自动驾驶、图像识别、量化投资、自然语言处理、计算机视觉、医学诊断、信用卡欺诈检测、证券金融市场分析、游戏和机器人等领域,机器学习相关技术的进步促进了人工智能在各个领域的发展。
机器学习简介
机器学习(Machine Learning)是计算机科学的子领域,也是人工智能的一个分支和实现方式。汤姆·米切尔(Tom Mitchell)在1997年出版的Machine Learning 一书中指出,机器学习这门学科所关注的是计算机程序如何随着经验积累,自动提高性能。他同时给出了形式化的描述:对于某类任务T 和性能度量P ,如果一个计算机程序在T 上以P 衡量的性能随着经验E 而自我完善,那么就称这个计算机程序在从经验E 学习。
机器学习主要的理论基础涉及概率论、数理统计、线性代数、数学分析、数值逼近、最优化理论和计算复杂理论等,其核心要素是数据、算法和模型。
机器学习简史
机器学习是一门不断发展的学科,虽然只是在最近几年才成为一个独立学科,但机器学习的起源可以追溯到20世纪50年代以来人工智能的符号演算、逻辑推理、自动机模型、启发式搜索、模糊数学、专家系统以及神经网络的反向传播BP算法等。虽然这些技术在当时并没有被冠以机器学习之名,但时至今日它们依然是机器学习的理论基石。从学科发展过程的角度思考机器学习,有助于理解目前层出不穷的各类机器学习算法。
机器学习的发展分为知识推理期、知识工程期、浅层学习(Shallow Learning)和深度学习(Deep Learning)几个阶段。知识推理期起始于20世纪50年代中期,这时候的人工智能主要通过专家系统赋予计算机逻辑推理能力,赫伯特·西蒙(Herbert Simon)和艾伦·纽厄尔(Allen Newell)实现的自动定理证明系统Logic Theorist证明了逻辑学家拉赛尔(Russell)和怀特黑德(Whitehead)编写的《数学原理》中的52条定理,并且其中一条定理比原作者所写更加巧妙。20世纪70年代开始,人工智能进入知识工程期,费根鲍姆(E.A. Feigenbaum)作为知识工程之父在1994年获得了图灵奖。由于人工无法将所有知识都总结出来教给计算机系统,所以这一阶段的人工智能面临知识获取的瓶颈。实际上,在20世纪50年代,就已经有机器学习的相关研究,代表性工作主要是罗森布拉特(F. Rosenblatt)基于神经感知科学提出的计算机神经网络,即感知器,在随后的十年中浅层学习的神经网络曾经风靡一时,特别是马文·明斯基提出了著名的XOR问题和感知器线性不可分的问题。由于计算机的运算能力有限,多层网络训练困难,通常都是只有一层隐含层的浅层模型,虽然各种各样的浅层机器学习模型相继被提出,对理论分析和应用方面都产生了较大的影响,但是理论分析的难度和训练方法需要很多经验和技巧,随着最近邻等算法的相继提出,浅层模型在模型理解、准确率、模型训练等方面被超越,机器学习的发展几乎处于停滞状态。
2006年,希尔顿(Hinton)发表了深度信念网络论文,本戈欧(Bengio)等人发表了“Greedy Layer-Wise Training of Deep Networks”论文,乐康(LeCun)团队发表了“Efficient Learning of Sparse Representations with an Energy-Based Model”论文,这些事件标志着人工智能正式进入了深层网络的实践阶段,同时,云计算和GPU并行计算为深度学习的发展提供了基础保障,特别是最近几年,机器学习在各个领域都取得了突飞猛进的发展。
新的机器学习算法面临的主要问题更加复杂,机器学习的应用领域从广度向深度发展,这对模型训练和应用都提出了更高的要求。随着人工智能的发展,冯·诺依曼式的有限状态机的理论基础越来越难以应对目前神经网络中层数的要求,这些都对机器学习提出了挑战。
机器学习主要流派
在人工智能的发展过程中,随着人们对智能的理解和现实问题的解决方法演变,机器学习大致出现了符号主义、贝叶斯、联结主义、进化主义、行为类推主义五大流派。
符号主义
符号主义起源于逻辑学、哲学,实现方法是用符号表示知识,并用规则进行逻辑推理,其中专家系统和知识工程是这一学说的代表性成果。符号主义流派认为知识是信息符号的表示,是人工智能的基础,将这些符号输入到计算机中进行模拟推理,从而实现人工智能。
贝叶斯派
贝叶斯定理是概率论中的一个定理,其中P (A|B )是在事件B 发生的情况下事件A 发生的可能性(条件概率)。贝叶斯学习已经被应用于许多领域。例如,自然语言中的情感分类、自动驾驶和垃圾邮件过滤等。
联结主义
联结主义起源于神经科学,主要算法是神经网络,由大量神经元以一定的结构组成。神经元是一种看起来像树状的细胞,它由细胞体和细胞突起构成,在长的轴突上套有一层鞘,组成神经纤维,它的末端的细小分支叫作神经末梢。每个神经元可以有一或多个树突,可以接受刺激并将兴奋传入细胞体。每个神经元只有一个轴突,可以把兴奋从胞体传送到另一个神经元或其他组织,神经元之间是互相连接的,这样形成了一个大的神经网络,人类所学会的知识几乎都存在其中 在神经网络中,将n 个相连接的神经元的输出作为当前神经元的输入,进行加权计算,并加一个偏置值(Bias)之后通过激活函数来实现变换,激活函数的作用是将输出控制在一定的范围以内。以Sigmoid函数为例,输入从负无穷到正无穷,经过激活之后映射到(0,1)区间。 人工神经网络是以层(Layer)形式组织起来的,每一层中包含多个神经元,层与层之间通过一定的结构连接起来,对神经网络的训练目的就是要找到网络中各个突触连接的权重和偏置值。作为一种监督学习算法,神经网络的训练过程是通过不断反馈当前网络计算结果与训练数据之间的误差来修正网络权重,使误差足够小,这就是反向传播算法。
进化主义
1850年,达尔文发现进化论。在微观上,DNA是线性串联编码,进化过程是基因交叉、突变的过程。宏观上,进化过程是生物个体适应环境的优胜劣汰过程。智能要适应不断变化的环境,通过对进化的过程进行建模,产生智能行为。进化算法(Evolutionary Algorithm,EA)是在计算机上模拟进化过程,基于“物竞天择,适者生存”的原则,不断迭代优化,直到找到最佳的结果。进化算法包括基因编码、种群初始化、交叉变异算子等基本操作,是一种比较成熟的具有广泛适用性的全局优化方法,具有自组织、自适应、自学习的特性,能够有效地处理传统优化算法难以解决的复杂问题(例如NP难优化问题)。
遗传算法的优化要视具体情况进行算法选择,也可以与其他算法相结合,对其进行补充。对于动态数据,用遗传算法求最优解可能会比较困难,种群可能会过早收敛。本书第9章将对遗传算法进行详细介绍。
行为类推主义
根据约束条件来优化函数,行为类推主义者倾向于通过类比推理获得知识和理论,将未知情况与已知情况建立对应关系,在实际应用中,就是计算它们之间的相似度,然后定义关联关系。
机器学习、人工智能和数据挖掘
目前人工智能很热门,但是很多人容易将人工智能与机器学习混淆。此外,数据挖掘、人工智能和机器学习之间的关系也容易被混淆。从本质上看,数据科学的目标是通过处理各种数据促进人们的决策,机器学习的主要任务是使机器模仿人类的学习,从而获得知识。而人工智能借助机器学习和推理最终是形成具体的智能行为。
什么是人工智能
人工智能是让机器的行为看起来像人所表现出的智能行为一样,这是由麻省理工学院的约翰·麦卡锡在1956年的达特茅斯会议上提出的,字面上的意思是为机器赋予人的智能。人工智能的先驱们希望机器具有与人类似的能力:感知、语言、思考、学习、行动等。最近几年人工智能风靡全球的主要原因就是,随着机器学习的发展,人们发现机器具有了一定的感知(图像识别)和学习等方面的能力,很容易认为目前已经达到了人工智能发展过程中的奇点。实际上,人工智能包括计算智能、感知智能和认知智能等层次,目前人工智能还介于前两者之间。
由于目前人工智能与人类智能相比较,二者实现的原理并不相同,特别是人脑对于信息的存储和加工过程尚未被研究清楚,与目前主流的深度学习理论存在较大的基础差异。因此,目前人工智能所处的阶段还在“弱人工智能”(Narrow AI)阶段,距离“强人工智能”(General AI)阶段还有较长的路要走。例如,目前人类对于知识的获取和推理并不需要大量的数据进行反复迭代学习,只需要看一眼自行车的照片就能大致区分出各式各样的自行车。因此,要达到强人工智能的阶段可能要在计算机基础理论方面进行创新,实现类人脑的结构设计。
通常来说,人工智能是使机器具备类似人类的智能性,人工智能的典型系统包括以下几个方面。
- 博弈游戏(如深蓝、Alpha Go、Alpha Zero等)。
- 机器人相关控制理论(运动规划、控制机器人行走等)。
- 机器翻译。
- 语音识别。
- 计算机视觉系统。
- 自然语言处理(自动程序)。
什么是数据挖掘
数据挖掘使用机器学习、统计学和数据库等方法在相对大量的数据集中发现模式和知识,它涉及数据预处理、模型与推断、可视化等。数据挖掘包括以下几类常见任务。
异常检测
异常检测(anomaly detection)是对不符合预期模式的样本、事件进行识别。异常也被称为离群值、偏差和例外等。异常检测常用于入侵检测、银行欺诈、疾病检测、故障检测等。
关联分析
关联规则学习(Association rule learning)是在数据库中发现变量之间的关系(强规则)。例如,在购物篮分析中,发现规则{面包,牛奶}→{酸奶},表明如果顾客同时购买了面包和牛奶,很有可能也会买酸奶,利用这些规则可以进行营销。
聚类
聚类是一种探索性分析,在未知数据结构的情况下,根据相似性把样本分为不同的簇或子集,不同簇的样本具有很大的差异性,从而发现数据的类别与结构。
分类
分类是根据已知样本的某些特征,判断一个新样本属于哪种类别。通过特征选择和学习,建立判别函数以对样本进行分类。
回归
回归是一种统计分析方法,用于了解两个或多个变量之间的相关关系,回归的目标是找出误差最小的拟合函数作为模型,用特定的自变量来预测因变量的值。
数据挖掘在大数据相关技术的支持下,随着数据存储(非关系型NoSQL数据库)、分布式数据计算(Hadoop/Spark等)、数据可视化等技术的发展,数据挖掘对事务的理解能力越来越强,如此多的数据堆积在一起,增加了对算法的要求,所以数据挖掘一方面要尽可能获取更多、更有价值、更全面的数据,并从这些数据中提取价值。
数据挖掘在商务智能方面的应用较多,特别是在决策辅助、流程优化、精准营销等方面。广告公司可以使用用户的浏览历史、访问记录、点击记录和购买信息等数据,对广告进行精准推广。利用舆情分析,特别是情感分析可以提取公众意见来驱动市场决策。例如,在电影推广时对社交评论进行监控,寻找与目标观众产生共鸣的元素,然后调整媒体宣传策略迎合观众口味,吸引更多人群。
机器学习、人工智能与数据挖掘的关系
机器学习是人工智能的一个分支,作为人工智能的核心技术和实现手段,通过机器学习的方法解决人工智能面对的问题。机器学习是通过一些让计算机可以自动“学习”的算法,从数据中分析获得规律,然后利用规律对新样本进行预测。
机器学习是人工智能的重要支撑技术,其中深度学习就是一个典型例子。深度学习的典型应用是选择数据训练模型,然后用模型做出预测。例如,博弈游戏系统(Deep Blue)重于探索和优化未来的解空间(Solution Space),而深度学习则是在博弈游戏算法(例如Alpha Go)的开发上付诸努力,取得了世人瞩目的成就。
下面以自动驾驶汽车研发为例,说明机器学习和人工智能的关系。要实现自动驾驶,就需要对交通标志进行识别。首先,应用机器学习算法对交通标志进行学习,数据集中包括数百万张交通标志图片,使用卷积神经网络进行训练并生成模型。然后,自动驾驶系统使用摄像头,让模型实时识别交通标志,并不断进行验证、测试和调优,最终达到较高的识别精度。
当汽车识别出交通标志时,针对不同的标志进行不同的操作。例如,遇到停车标志时,自动驾驶系统需要综合车速和车距来决定何时刹车,过早或过晚都会危及行车安全。除此之外,人工智能技术还需要应用控制理论处理不同的道路状况下刹车策略,通过综合这些机器学习模型来产生自动化的行为。
数据挖掘和机器学习的关系越来越密切。例如,通过分析企业的经营数据,发现某一类客户在消费行为上与其他用户存在明显区别,并通过可视化图表显示,这是数据挖掘和机器学习的工作,它输出的是某种信息和知识。企业决策人员可根据这些输出人为改变经营策略,而人工智能是用机器自动决策来代替人工行为,从而实现机器智能。
数据挖掘是从大量的业务数据中挖掘隐藏的、有用的、正确的知识,促进决策的执行。数据挖掘的很多算法都来自机器学习和统计学,其中统计学关注理论研究并用于数据分析实践形成独立的学科,机器学习中有些算法借鉴了统计学理论,并在实际应用中进行优化,实现数据挖掘目标。机器学习的演化计算深度学习等方法近年来也逐渐跳出实验室,从实际的数据中学习模式,解决实际问题。数据挖掘和机器学习的交集越来越大,机器学习成为数据挖掘的重要支撑技术。
典型机器学习应用领域
机器学习能够显著提高企业的智能水平,增强企业的竞争力。人工智能对于各行业的影响越来越大,机器学习应用的典型领域有网络安全、搜索引擎、产品推荐、自动驾驶、图像识别、语音识别、量化投资、自然语言处理等。随着海量数据的累积和硬件运算能力的提升,机器学习的应用领域还在快速地延展。
艺术创作
图像处理方面的应用较多,特别是卷积神经网络(CNN)等对图像进行处理具有天然的优势,通过模拟人类视觉处理过程,辅以计算机视觉处理技术,机器学习在图像处理领域应用广泛,除了图像识别、照片分类、图像隐藏等,最近几年图像处理方面的创新应用已经涉及了图片生成、美化、修复和图片场景描述等。
脸书(Facebook)公司在2015年开发了一款可以描述图片内容的应用,通过对图片中背景、人物、物品以及场景的描述来帮助视觉障碍人士了解图中的内容。其中主要应用的技术是图像识别,基于Facebook现有图片库中已经标记过的图片作为模型的训练集,经过学习,逐渐实现对图片中对象的识别,但是其对内容的描述主要以列表方式返回,而非以故事的方式返回,所以这类应用的另一难点是自然语言生成,是目前人工智能领域中的难点之一。
信手涂鸦一直是很多人的梦想,得益于深度神经网络,人们可以通过合成的方式绘制一幅充满艺术气息的画。其原理是使用卷积神经网络提取模板图片中的绘画特征,并应用马尔可夫随机场(MRF)对输入的涂鸦图片进行处理,最后合成一张新的图画。图1-3所示为Neural Doodle项目的应用效果,其中左图为油画模板,中间图片是用户涂鸦的作品,右图是合成之后的新作品。
除了在上述项目应用中生成一个全新的图片外,神经网络还可以用于图像修复,将对抗神经网络(GAN)和卷积神经网络进行结合,并应用MRF理论对现有图片中的缺失部分进行修复。此外,使用已经训练好的VGG Net作为纹理生成网络,可以对现有图片中的干扰物体进行移除。这类技术应用范围较广,除了照片美化外,还可集成于图片处理软件用于智能修图,或者对现有的图片进行扩展绘制等,在某些训练集中,已标记图片数量较少时,可以使用GAN生成大量伪图片,用于模型训练,不仅可以极大地减少人工标记的工作量,而且可以动态迭代优化模型。
谷歌(Google)公司的PlaNet神经网络模型可以识别照片中的地理位置(并非使用照片的Extif位置数据)。在模型的训练过程中,使用了大约1.26亿张网络图片,使用照片的Extif位置信息作为标记,将地球上除南北极和海洋之外的地区进行网格化,使图片对应于某一网格单元,然后使用其中大约9100万张图片进行训练,用约3400万张图片进行验证,并用Flickr中大约2300万张带位置的照片进行测试,大约有3.6%的照片可以准确识别到街道级别,28%的照片可准确识别位于哪一国家,48%的照片可以准确识别位于哪一个大陆板块。识别的误差距离大约为1131千米,而同等情况下,人类对于图片位置的定位误差距离为2320千米。虽然训练样本数量很大,但最终的神经网络模型的大小只有377MB。
金融领域
金融与人们衣食住行等生活息息相关。与人类相比,机器学习在处理金融行业的业务方面更加高效,可同时对数千只股票进行精确分析,在短时间内给出结论;没有人性的缺点,在处理财务问题时更加可靠和稳定;通过建立欺诈或异常检测模型提高金融安全,有效检测出细微模式差别,结果更加精确。
在信用评分方面,应用评分模型评估信贷过程中的各类风险,并对其进行监督,基于客户的职业、薪酬、所处行业、历史信用记录等信息确定客户的信用评分,不仅可以降低风险还可以加快放贷过程,减少尽职调查的工作量,提高效率。
在欺诈检测方面,基于收集到的历史数据训练得到机器学习模型,用来预测欺诈发生的概率。与传统检测相比,这种方法用时更少,且能检测出更复杂的欺诈行为。在训练过程中需要注意样本类别不均衡的问题,防止出现过拟合情况。
在股票市场的趋势预测方面,通过机器学习算法分析上市公司的资产负债表、现金流量表等财务数据和企业经营数据,提取与股价或指数相关的特征进行预测。另外,利用与企业相关的第三方资讯,如政策法规、新闻或社交网络中的信息,通过自然语言处理技术分析舆情观点或情感指向,为股票价格预测提供支持,从而使预测结果更准确。应用监督学习方法建立两个数据集之间的关系,从而使用一个数据集来预测另一个数据集结果,如用回归来分析通货膨胀对股市的影响等;无监督学习方法可以用于股票市场的影响因素分析,发现其背后的主要规则;深度学习适合非结构化大数据集的处理,提取不易于显式表达的特征;强化学习的目标是通过算法探索来找到最大化收益的策略。应用LSTM等深度学习方法,可以基于股票价格波动特征以及可量化的市场数据对股票价格进行实时预测,可用于股票市场的高频交易等领域中。
在客户关系管理(CRM)方面,从银行等金融机构现有的海量数据中挖掘信息,通过机器学习模型对客户进行细分,从而支持业务部门的销售、宣传和市场推广活动。此外,应用聊天机器人等综合人工智能技术可以全天候服务客户,提供私人财务助理服务,例如个人财务指南、跟踪开支等。在处理各种客户请求,如客户通知、转账、存款、查询、常见问题解答和客户支持方面,经过长期积累用户的历史记录,可以向客户提供合适的理财方案。
医疗领域
机器学习可以用于预测患者的诊断结果、制定最佳疗程甚至评估风险等级。此外,还可以减少人为失误。在2016年JAMA 杂志报道的一项研究中,人工智能通过学习大量历史病理图片,经过验证,其准确度达到了96%,这一数字表明,人工智能在对糖尿病视网膜病变进行诊断方面已经与医生水平相当。此外,对超过13万张皮肤癌的临床图片进行深度学习后,机器学习系统在检测皮肤癌方面超过了皮肤科医生。
对脑外科医生而言,术中病理分析往往是诊断脑肿瘤的最佳方式之一,而这一过程耗时较长,容易延误正在进行的脑部手术。科学家开发出机器学习系统,能够将未经处理的大脑样本进行“染色”,提供非常精准的信息,效果与病理分析的一样,通过它诊断脑瘤的准确率和使用常规组织切片的准确率几乎相同,对身处手术中的脑瘤患者来说至关重要,因为它极大地缩减了诊断的时间。
在临床试验方面,每次临床试验都需要大量的数据,如患者的历史病历信息、卫生日志、App数据和医疗检查数据等。机器学习通过汇总挖掘这些数据,从而获得有价值的信息。例如,生物制药公司根据个体患者的生物特征进行建模,并根据患者的药物反应,对试验人群分类,对患者生物体征和反应进行全程监控。一家英国公司利用机器学习技术分析大量图像资料,通过分析建立模型,辨别和预测早期癌症,还为患者提供个性化的治疗过程。研究人员从大量心脏病患者的电子病历库调取了患者的医疗信息,如疾病史、手术史、个人生活习惯等,将这些信息在机器学习算法下进行分析建模,预测患者的心脏病风险因素,在预测心脏病患者人数以及预测是否会患心脏病方面上均优于现在的预测模型。
自然语言处理
自然语言处理属于文本挖掘的范畴,融合了计算机科学、语言学、统计学等基础学科。自然语言处理涉及的范畴包括自然语言理解和自然语言生成,其中前者包括文本分类、自动摘要、机器翻译、自动问答、阅读理解等,目前在这些方面均取得了较大的成就,但是自然语言生成方面成果不多,具备一定智能且能商用的产品很少。自然语言处理涉及的内容具体说明如下。
(1)分词
分词(Word Segmentation)主要是基于词典对词语识别,最基本的方法是最大匹配法(MM),效果取决于词典的覆盖度。此外,常用基于统计的分词方法,利用语料库中的词频和共现概率等统计信息对文本进行分词。对切分歧义的消解方法包括句法统计和基于记忆的模型,前者将自动分词和基于马尔可夫链词性自动标注结合起来,利用从人工标注语料库中提取出的词性二元统计规律来消解切分歧义;而基于记忆的模型,对机器认为有歧义的常见交集型歧义切分,如“辛勤劳动”切分为“辛勤”“勤劳”“劳动”,并把它们的唯一正确切分形式预先记录在一张表中,其歧义消解通过直接查表实现。
(2)词性标注
词性标注(Part-of-speech Tagging)是对句子中的词标记词性,如动词、名词等。词性标注本质上是对序列中各词的词性进行分类判断,所以早期用隐马尔科夫模型进行标注,以及后来出现的最大熵、条件随机场、支持向量机等模型。随着深度学习技术的发展,出现了很多基于深层神经网络的词性标注方法。
(3)句法分析
在句法分析时,人工定义规则费时费力,且维护成本较高。近年来,自动学习规则的方法成为句法分析的主流方法,目前主要是应用数据驱动的方法进行分析。通过在文法规则中加入概率值等统计信息(如词共现概率),从而实现对原有的上下文无关文法分析方法进行扩展,最终实现概率上下文无关文法(Probabilistic Context Free Grammar,PCFG)分析方法,在实践中取得较好效果。句法分析主要分为依存句法分析、短语结构句法分析、深层文法句法分析和基于深度学习的句法分析等。
(4)自然语言生成
自然语言生成(Natural Language Generation,NLG)的主要难点在于,在知识库或逻辑形式等方面需要进行大量基础工作,人类语言系统中又存在较多的背景知识,而机器表述系统中一方面较难将背景知识集成(信息量太大),另一方面,语言在机器中难以合理表示,所以目前自然语言生成的相关成果较少。
现在的自然语言生成方法大多是用模板,模板来源于人工定义、知识库,或从语料库中进行抽取,这种方式生成的文章容易出现僵硬的问题。目前也可以用神经网络生成序列,如Seq2Seq、GAN等深度学习模型等,但由于训练语料的质量各异,容易出现结果随机且不可控等问题。
自然语言生成的步骤包括内容规划、结构规划、聚集语句、选择字词、指涉语生成、文本生成等几步,目前比较成熟的应用主要还是一些从数据库或资料集中通过摘录生成文章的系统,例如一些天气预报生成、财经新闻或体育新闻的写作、百科写作、诗歌写作等,这些文章本身具有一定的范式,类似八股文一样具有某些固定的文章结构,语言的风格变化较少。此外,此类文章重点在于其中的内容,读者对文章风格和措辞等要求较低。综合来看,目前人工智能领域中,自然语言生成的难题还未真正解决,可谓“得语言者得天下”,毕竟语言也代表着较高级的人类智能。
(5)文本分类
文本分类(Text categorization)是将文本内容归为某一类别的过程,目前对其研究成果层出不穷,特别是随着深度学习的发展,深度学习模型在文本分类任务方面取得了巨大进展。文本分类的算法可以划分为以下几类:基于规则的分类模型、基于机器学习的分类模型、基于神经网络的方法、卷积神经网络(CNN)、循环神经网络(RNN)。文本分类技术有着广泛的应用。例如,社交网站每天都会产生大量信息,如果由人工对这些文本进行整理将会费时费力,且分类结果的稳定性较差;应用自动化分类技术可以避免上述问题,从而实现文本内容的自动化标记,为后续用户兴趣建模和特征提取提供基础支持。除此之外,文本分类还作为基础组件用于信息检索、情感分析、机器翻译、自动文摘和垃圾邮件检测等。
(6)信息检索
信息检索(Information Retrieval)是从信息资源集合中提取需求信息的行为,可以基于全文或内容的索引。目前在自然语言处理方面,信息检索用到的技术包括向量空间模型、权重计算、TF-IDF(词频-逆向文档频率)词项权重计算、文本相似度计算、文本聚类等,具体应用于搜索引擎、推荐系统、信息过滤等方面。
(7)信息抽取
在信息抽取(Information Extraction)方面,从非结构化文本中提取指定的信息,并通过信息归并、冗余消除和冲突消解等手段,将非结构化文本转换为结构化信息。其应用方向很多,例如从相关新闻报道中抽取出事件信息:时间、地点、施事人、受事人、结果等;从体育新闻中抽取体育赛事信息:主队、客队、赛场、比分等;从医疗文献中抽取疾病信息(病因、病原、症状、药物等)。它还广泛应用于舆情监控、网络搜索、智能问答等领域。与此同时,信息抽取技术是中文信息处理和人工智能的基础核心技术。
(8)文本校对
文本校对(Text-proofing)应用的领域主要是对自然语言生成的内容进行修复或对OCR识别的结果进行检测和修复,采用的技术包括应用词典和语言模型等,其中词典是将常用词以词典的方式对词频进行记录。如果某些词在词典中不存在,则需要对其进行修改,选择最相近的词语进行替换,这种方式对词典要求高,并且在实际操作中,由于语言的变化较多且存在较多组词方式,导致误判较多,在实际应用中准确性不佳。而语言模型是基于词汇之间搭配的可能性(概率)来对词汇进行正确性判断,一般是以句子为单位对整个句子进行检测,目前常见的语言模型有SRILM和RNNLM等几种。
(9)问答系统
自动问答(Question Answering)系统在回答用户问题之前,第一步需要能正确理解用户用自然语言提出的问题,这涉及分词、命名实体识别、句法分析、语义分析等自然语言理解相关技术。然后针对提问类、事实类、交互类等不同形式的提问分别应答,例如用户提问类问题,可从知识库或问答库中检索、匹配获得答案,除此之外还涉及对话上下文处理、逻辑推理、知识工程和语言生成等多项关键技术。因此可以说,问答系统代表了自然语言处理的智能处理水平。
(10)机器翻译
机器翻译(Machine Translation)是由机器实现不同自然语言之间的翻译,涉及语言学、机器学习、认知语言学等多个学科。目前基于规则的机器翻译方法需要人工设计和编纂翻译规则,而基于统计的机器翻译方法能够自动获取翻译规则,最近几年流行的端到端的神经网络机器翻译方法可以直接通过编码网络和解码网络自动学习语言之间的转换算法。
(11)自动摘要
自动摘要(Automatic Summarization)主要是为了解决信息过载的问题,用户阅读文摘即可了解文章大意。目前常用抽取式和生成式两种摘要方法。抽取式方法是通过对句子或段落等进行权重评价,按照重要性进行选择并组成摘要。而生成式方法除了利用自然语言理解技术对文本内容分析外,还利用句子规划和模板等自然语言生成技术产生新句子。传统的自然语言生成技术在不同领域中的泛化能力较差,随着深度学习的发展,生成式摘要应用逐渐增多。目前主流还是采用基于抽取式的方法,因为这一方法易于实现,能保证摘要中的每个句子具有良好的可读性,并且不需要大量的训练语料,可跨领域应用。
网络安全
网络安全包括反垃圾邮件、反网络钓鱼、上网内容过滤、反诈骗、防范攻击和活动监视等,随着机器学习算法逐渐应用于企业安全中,各种新型安全解决方案如雨后春笋般涌现,这些模型在分析网络、监控网络、发现异常情况等方面效果显著,从而保护企业免受威胁。
在密码学方面,机器学习主要用于密码的破解,例如通过分析通用符号密码的特征,以及目前常见密码的各种缺点,利用神经网络算法破解密码。近几年,谷歌大脑将生成对抗网络(GAN)引入密码加密和解密中,随着迭代训练次数不断增加,加密模型和解密模型的性能同步提升,最终在没有提供密码学知识的情况下,获得性能很强的加密模型。在网络安全加固方面,利用机器学习探测网络安全的优势和劣势,并给出一些改进的建议。由于恶意请求通常都进行伪装,所以在网络入侵检测方面存在较大难度,并且攻击行为实例较少,需要处理样本不平衡问题,在模型评价时采用查全率(Recall)作为性能度量标准。
在垃圾邮件过滤系统中,如何提升过滤的准确性一直是一个难题。传统的机器学习算法包括贝叶斯分类器、支持向量机等分类算法,对正常和垃圾邮件中文本内容应用自然语言处理技术提取特征,并训练分类器判断垃圾邮件。
机器学习方法在实际应用过程中还有较多挑战,主要是数据收集难、样本标记分类工作量大、数据不平衡以及数据噪声等。此外,目前两种主要的机器学习类型是监督与非监督型学习,通过在训练的数据集中找到模式,目前仍然需要数据分析人员参与。
工业领域
机器学习在工业领域的应用主要在质量管理、灾害预测、缺陷预测、工业分拣、故障感知等方面。通过采用人工智能技术,实现制造和检测的智能化和无人化,利用深度学习算法判断的准确率和人工判断相差无几。
将深度学习算法应用到工业机器人上,可大幅提升作业性能,并实现制造流程的自动化和无人化。例如,用于商品或者零件分拣,使用分类算法对商品进行识别,同时可以采用加强学习(Reinforcement Learning)算法来实现商品的定位和拣起动作。
在机器故障检测和预警方面,应用机器学习对物联网中各传感器提取的数据进行分析,并结合历史故障记录、硬件状态指标等信息建立预测模型,提前预知异常。或者从故障定位的角度,建立决策树等分类模型对故障原因进行判断,快速定位并提供维修建议,减少故障的平均修复时间(MTTR),从而减少停机带来的损失。
机器学习在工业领域中也存在瓶颈,主要有以下几个方面。
(1)数据质量
有监督方式训练效果好,但是需要很多标注数据,其中数据的质量、归一化方法、分布等对模型的效果影响较大。例如,如果数据量太多时,那么需要较高的计算能力和计算成本;如果数据量太少时,模型的预测能力一般较差。
(2)工程师经验
机器学习的相关算法和方法具有一定的门槛,在对原理不清楚的情况下进行实验,很难取得较理想的效果,所以要求工程师不仅具有工程实现的能力,还需具备线性代数、统计学等数学基础,并理解数据科学和机器学习的常见算法。
(3)计算能力
由于在深度学习训练过程中需要不断调参,甚至重新设计网络结构,所以训练周期一般要几周甚至数月,并且随着模型复杂度增加,对计算资源(GPU)要求更高,一般模型越大应用时效率越低。
(4)机器学习的不可解释性
在机器学习中,深度学习模型在解释模型中参数方面较差,如果在工业应用中除了对结果看重外还要求解释学习过程,这比较难实现。此外,深度学习对于数据的质量要求较高,如果存在缺失值等问题,会有较大误差。
机器学习在娱乐行业的应用
美国波士顿的Pilot Movies公司使用算法来预测票房,把要预测的电影拿来和1990年以来的每一部电影进行比较,预测准确度可以超过80%。另外,把AI与大数据应用到分析娱乐行业的其他方面,例如,分析观众愿意为哪些内容付费等。
芬兰的一家创业公司Valossa研发了一种AI平台,可以在视频中检测识别人物、视频上下文、话题、命名实体、主题以及敏感内容,使用计算机视觉、机器学习以及自然语言处理等技术,为每一秒视频都创建元数据。
IRIS.TV公司通过一个叫作广告计划管理器(Campaign Manager)的工具使观众在视频内容上的停留时间更长,还可以插播品牌视频广告,而视频浏览留存率平均提升了70%。其主要原理是在客户观看视频时收集各种相关数据,将其输入到机器学习模块中推荐更多的相关视频。通过大数据创建的智能视频分发模型,帮助视频平台实现其视频内容精准分发,并且提升内容展现次数。
机器学习算法
机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的方法,可以分成下面几种类别:监督学习、无监督学习、强化学习。
- 监督学习是从有标记的训练数据中学习一个模型,然后根据这个模型对未知样本进行预测。其中,模型的输入是某一样本的特征,函数的输出是这一样本对应的标签。常见的监督学习算法包括回归分析和统计分类。监督学习包括分类和数字预测两大类别,前者包括逻辑回归、决策树、KNN、随机森林、支持向量机、朴素贝叶斯等,后者包括线性回归、KNN、Gradient Boosting和AdaBoost等。
- 无监督学习又称为非监督式学习,它的输入样本并不需要标记,而是自动从样本中学习特征实现预测。常见的无监督学习算法有聚类和关联分析等,在人工神经网络中,自组织映射(SOM)和适应性共振理论(ART)是最常用的无监督学习。
- 强化学习是通过观察来学习做成什么样的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。强化学习强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。
根据机器学习的任务分类,可以分为回归、分类、聚类三大常见机器学习任务。某些机器学习算法可能同时属于不同的分类,如深度学习算法可能存在于监督学习,也可能用于强化学习,在实践过程中可依据实际需要进行选择。
熟悉各类分析方法的特性是分析方法选择的基础,不仅需要了解如何使用各类分析算法,还要了解其实现的原理,这样在参数优化和模型改进时可减少无效的调整。在选择模型之前要对数据进行探索性分析,了解数据类型和数据特点,发现各自变量之间的关系以及自变量与因变量的关系,特别注意在维度较多时容易出现变量的多重共线性问题,可应用箱图、直方图、散点图查找其中的规律性信息。
模型选择过程中先选出多个可能的模型,然后对其进行详细分析,并选择其中可用于分析的模型,在自变量选择时,大多数情况下需要结合业务来手动选择自变量。在选择模型后,比较不同模型的拟合程度,可统计显著性参数、R 2 、调整R 2 、最小信息标准、BIC和误差准则、Mallow’s Cp准则等。在单个模型中可将数据分为训练集和测试集,用来做交叉验证并分析结果的稳定性。反复调整参数使模型趋于稳定和高效。
分类算法
分类算法是应用分类规则对记录进行目标映射,将其划分到不同的分类中,构建具有泛化能力的算法模型,即构建映射规则来预测未知样本的类别。分类算法包括预测和描述两种,经过训练集学习的预测模型在遇到未知记录时,应用规则对其进行类别划分,而描述型的分类主要是对现有数据集中特征进行解释并进行区分,例如对动植物的各项特征进行描述,并进行标记分类,由这些特征来决定其属于哪一类目。
主要的分类算法包括决策树、支持向量机(Support Vector Machine,SVM)、最近邻(K-Nearest Neighbor,KNN)算法、贝叶斯网络(Bayes Network)和神经网络等。
决策树
顾名思义,决策树是一棵用于决策的树,目标类别作为叶子节点,特征属性的验证作为非叶子节点,而每个分支是特征属性的输出结果。决策树擅长对人物、位置、事物的不同特征、品质、特性进行评估,可应用于基于规则的信用评估、比赛结果预测等。决策过程是从根节点出发,测试不同的特征属性,按照结果的不同选择分支,最终落到某一叶子节点,获得分类结果。主要的决策树算法有ID3、C4.5、C5.0、CART、CHAID、SLIQ、SPRINT等。
决策树的构建过程是按照属性的优先级或重要性来逐渐确定树的层次结构,使其叶子节点尽可能属于同一类别,一般采用局部最优的贪心(贪婪)策略来构建决策树。
决策树算法将在第3章中详细介绍。
支持向量机
支持向量机(Support Vector Machine,SVM)是由瓦普尼克(Vapnik)等人设计的一种分类器,其主要思想是将低维特征空间中的线性不可分进行非线性映射,转化为高维空间的线性可分。此外,应用结构风险最小理论在特征空间优化分割超平面,可以找到尽可能宽的分类边界,特别适合两分类的问题,例如,在二维平面图中某些点是杂乱排布的,无法用一条直线分为两类,但是在三维空间中,可能通过一个平面将其划分。
为了避免在低维空间向高维空间的转化过程中增加计算复杂性和“维数灾难”,支持向量机应用核函数,不需要关心非线性映射的显式表达式,直接在高维空间建立线性分类器,优化了计算复杂度。支持向量机常见的核函数有线性核函数、多项式核函数、径向基函数和二层神经网络核函数等。
支持向量机的目标变量以二分类最佳,虽然可以用于多分类,但效果不好。与其他分类算法相比,支持向量机对小样本数据集的分类效果更好。
支持向量机算法将在第8章中详细介绍。
最近邻算法
对样本应用向量空间模型表示,将相似度高的样本分为一类,对新样本计算与之距离最近(最相似)的样本的类别,那么新样本就属于这些样本中类别最多的那一类。可见,影响分类结果的因素分别为距离计算方法、近邻的样本数量等。
最近邻算法支持多种相似度距离计算方法:欧氏距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离(Chebyshew Distance)、闵可夫斯基距离(Minkowski Distance)、标准化欧氏距离(Standardized Euclidean distance)、马氏距离(Mahalanobis Distance)、巴氏距离(Bhattacharyya Distance)、汉明距离(Hamming distance)、夹角余弦(Cosine)、杰卡德相似系数(Jaccard similarity coefficient)、皮尔逊系数(Pearson Correlation Coefficient)。
最近邻算法的主要缺点有:①在各分类样本数量不平衡时误差较大;②由于每次比较要遍历整个训练样本集来计算相似度,所以分类的效率较低,时间和空间复杂度较高;③近邻的数量选择不合理可能会导致结果的误差较大;④在原始近邻算法中没有权重的概念,所有特征采用相同的权重参数,这样计算出来的相似度易产生误差。
贝叶斯网络
贝叶斯网络又称为置信网络(Belief Network),是基于贝叶斯定理绘制的具有概率分布的有向弧段图形化网络,其理论基础是贝叶斯公式,网络中的每个点表示变量,有向弧段表示两者间的概率关系。
与神经网络相比,贝叶斯网络中的节点都具有实际的含义,节点之间的关系比较明确,可以从贝叶斯网络中直观看到变量之间的条件独立和依赖关系,可以进行结果和原因的双向推理。在贝叶斯网络中,随着网络中节点数量增加,概率求解的过程非常复杂并难以计算,所以在节点数较多时,为减少推理过程和降低复杂性,一般选择朴素贝叶斯算法或推理的方式实现以减少模型复杂度。
贝叶斯网络将在本书第7章中详细介绍。
神经网络
神经网络包括输入层、隐藏层、输出层,每一个节点代表一个神经元,节点之间的连线对应权重值,输入变量经过神经元时会运行激活函数,对输入值赋予权重并加上偏置,将输出结果传递到下一层中的神经元,而权重值和偏置在神经网络训练过程中不断修正。
神经网络的训练过程主要包括前向传输和逆向反馈,将输入变量逐层向前传递最后得到输出结果,并对比实际结果,逐层逆向反馈误差,同时对神经元中权重值和偏置进行修正,然后重新进行前向传输,依此反复迭代直到最终预测结果与实际结果一致或在一定的误差范围内。
与神经网络相关的基础概念有感知器、反向传播算法、Hopfield神经网络、自组织映射(SOM)、学习矢量量化(LVQ)等,这些概念将在神经网络一章中详细说明。
BP神经网络的结果准确性与训练集的样本数量和质量有关,如果样本数量过少可能会出现过拟合的问题,无法泛化新样本;而且BP神经网络对训练集中的异常点比较敏感,需要分析人员对数据做好预处理,例如数据标准化、去除重复数据、移除异常数据,从而提高BP神经网络的性能。
由于神经网络是基于历史数据构建的模型,因此,随着新的数据不断产生,需要进行动态优化,例如随着时间变化,应用新的数据对模型重新训练,调整网络的结构和参数值。
神经网络相关内容将在本书第6章中详细介绍。
聚类算法
聚类是基于无监督学习的分析模型,不需要对原始数据进行标记,按照数据的内在结构特征进行聚集形成簇群,从而实现数据的分离。聚类与分类的主要区别是其并不关心数据是什么类别,而是把相似的数据聚集起来形成某一类簇。
在聚类的过程中,首先选择有效特征构成向量,然后按照欧氏距离或其他距离函数进行相似度计算,并划分聚类,通过对聚类结果进行评估,逐渐迭代生成新的聚类。
聚类应用领域广泛,可以用于发现不同的企业客户群体特征、消费者行为分析、市场细分、交易数据分析、动植物种群分类、医疗领域的疾病诊断、环境质量检测等,还可用于互联网和电商领域的客户分析、行为特征分类等。在数据分析过程中,可以先用聚类对数据进行探索,发现其中蕴含的类别特点,然后再用分类等方法分析每一类的特征。
聚类方法可分为基于层次的聚类(Hierarchical Method)、基于划分的聚类(Partitioning Method,PAM)、基于密度的聚类、基于约束的聚类、基于网络的聚类等。
基于层次的聚类是将数据集分为不同的层次,并采用分解或合并的操作进行聚类,主要包括BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)、CURE(Clustering Using Representatives)等。
基于划分的聚类是将数据集划分为k 个簇,并对其中的样本计算距离以获得假设簇中心点,然后以簇的中心点重新迭代计算新的中心点,直到k 个簇的中心点收敛为止。基于划分的聚类有k -均值等。
基于密度的聚类是根据样本的密度不断增长聚类,最终形成一组“密集连接”的点集,其核心思想是只要数据的密度大于阈值就将其合并成一个簇,可以过滤噪声,聚类结果可以是任意形状,不必为凸形。基于密度的聚类方法主要包括DBSCAN(Density-Based Spatial Clustering of Application with Noise)、OPTICS(Ordering Points To Identify the Clustering Structure)等。
BIRCH算法
BIRCH算法是指利用层次方法来平衡迭代规则和聚类,它只需要扫描数据集一次便可实现聚类,它利用了类似B+树的结构对样本集进行划分,叶子节点之间用双向链表进行连接,逐渐对树的结构进行优化获得聚类。
BIRCH算法的主要优点是空间复杂度低,内存占用少,效率较高,能够对噪声点进行滤除。缺点是其树中节点的聚类特征树有个数限制,可能会产生与实际类别个数不一致的情况;而且对样本有一定的限制,要求数据集的样本是超球体,否则聚类的效果不佳。
CURE算法
传统的基于划分聚类的方法得到的是凸形的聚类,对异常数据较敏感,而CURE算法是使用多个代表点来替换聚类中的单个点,算法更加稳健。另外,在处理大数据时采用分区和随机取样,使其处理大数据量的样本集时效率更高,且不会降低聚类质量。
k -均值算法
传统的k -均值算法的聚类过程是在样本集中随机选择k 个聚类中心点,对每个样本计算候选中心的距离进行分组,在得到分组之后重新计算类簇的中心,循环迭代直到聚类中心不变或收敛。k -均值存在较多改进算法,如初始化优化k -均值算法、距离优化Elkan k -Means算法、k -Prototype算法等。
k -均值算法的主要优点是可以简单快速处理大数据集,并且是可伸缩的,当数据集中类之间区分明显(凸形分布)时,聚类效果最好。这种算法的缺点是需要用户给出k 值,即聚类的数目,而聚类数目事先很难确定一个合理的值。此外,k -均值算法对k 值较敏感,如果k 值不合理可能会导致结果局部最优。
DBSCAN算法
DBSCAN算法是基于样本之间的密度实现空间聚类,基于核心点、边界点和噪声点等因素对空间中任意形状的样本进行聚类。与传统的k -均值相比,DBSCAN通过邻域半径和密度阈值自动生成聚类,不需要指定聚类个数,支持过滤噪声点。但是当数据量增大时,算法的空间复杂度较高,DBSCAN不适用于样本间的密度不均匀的情况,否则聚类的质量较差。对于高维的数据,一方面密度定义比较难,另一方面会导致计算量较大,聚类效率较低。
OPTICS算法
在DBSCAN算法中,用户需要指定ε (邻域半径)和minPts(ε 邻域最小点数)两个初始参数,用户手动设置这两个参数会对聚类结果产生比较关键的影响。而OPTICS解决了上述问题,为聚类分析生成一个增广的簇排序,代表了各样本点基于密度的聚类结构。
聚类算法将在本书第4章中详细介绍。
关联分析
关联分析(Associative Analysis)是通过对数据集中某些项目同时出现的概率来发现它们之间的关联关系,其典型的应用是购物篮分析,通过分析购物篮中不同商品之间的关联,分析消费者的购买行为习惯,从而制定相应的营销策略,为商品促销、产品定价、位置摆放等提供支持,并且可用于对不同消费者群体的划分。关联分析主要包括Apriori算法和FP-growth算法。
Apriori算法
Apriori算法主要实现过程是首先生成所有频繁项集,然后由频繁项集构造出满足最小置信度的规则。由于Apriori算法要多次扫描样本集,需要由候选频繁项集生成频繁项集,在处理大数据量数据时效率较低。
FP-growth算法
为了改进Apriori算法的低效问题,韩家炜等人提出基于FP树生成频繁项集的FP-growth算法,该算法只进行两次数据集扫描且不使用候选项集,直接按照支持度来构造一个频繁模式树,用这棵树生成关联规则,在处理比较大的数据集时效率比Apriori算法大约快一个数量级,对于海量数据,可以通过数据划分、样本采样等方法进行再次改进和优化。
Apriori算法和FP-growth算法将在本书第13章中详细介绍。
Eclat算法
Eclat算法是一种深度优先算法,采用垂直数据表示形式,基于前缀的等价关系将搜索空间划分为较小的子空间,可以快速挖掘频繁项集。与FP-growth 和Apriori算法不同,Eclat算法的核心思想是倒排,将事务数据中的事务主键与项目(item)进行转换,用项目作为主键,这样就可以直观看到每个项目对应的事务ID有哪些,方便计算项目的频次,从而快速获得频繁项集。
在Eclat算法中,通过计算项集的交集,并对结果进行裁剪,可快速得到候选集的支持度。但是,因为求交集的操作耗时较长,所以这一过程的时间复杂度较高,效率较低。此外,这一算法的空间复杂度也比较高,会消耗大量的内存空间。
回归分析
回归分析是一种研究自变量和因变量之间关系的预测模型,用于分析当自变量发生变化时因变量的变化值,要求自变量相互独立。回归分析的分类如下。
线性回归
应用线性回归进行分析时要求自变量是连续型,线性回归用直线(回归线)建立因变量和一个或多个自变量之间的关系。
线性回归主要的特点如下。
① 自变量与因变量之间呈现线性关系。
② 多重共线性、自相关和异方差对多元线性回归的影响很大。
③ 线性回归对异常值非常敏感,其能影响预测值。
④ 在处理多个自变量时,需要用逐步回归的方法来自动选择显著性变量,不需要人工干预,其思想是将自变量逐个引入模型中,并进行F 检验、t 检验等来筛选变量,当新引入的变量对模型结果没有改进时,将其剔除,直到模型结果稳定。
逐步回归的目的是选择重要的自变量。用最少的变量去最大化模型的预测能力,它也是一种降维技术,主要的方法有前进法和后退法,前者是以最显著的变量开始,逐渐增加次显著变量;后者是逐渐剔除不显著的变量。
逻辑回归
逻辑(Logistic)回归是数据分析中的常用算法,其输出的是概率估算值,将此值用Sigmoid函数进行映射到[0,1]区间,即可用来实现样本分类。逻辑回归对样本量有一定要求,在样本量较少时,概率估计的误差较大。
线性回归和逻辑回归将在本书第2章中详细介绍。
多项式回归
在回归分析中有时会遇到线性回归的直线拟合效果不佳,如果发现散点图中数据点呈多项式曲线时,可以考虑使用多项式回归来分析。使用多项式回归可以降低模型的误差,但是如果处理不当易造成模型过拟合,在回归分析完成之后需要对结果进行分析,并将结果可视化以查看其拟合程度。
岭回归
岭回归在共线性数据分析中应用较多,也称为脊回归,它是一种有偏估计的回归方法,是在最小二乘估计法的基础上做了改进,通过舍弃最小二乘法的无偏性,使回归系数更加稳定和稳健。其中R方值会稍低于普通回归分析方法,但回归系数更加显著,主要用于变量间存在共线性和数据点较少时。
LASSO回归
LASSO回归的特点与岭回归类似,在拟合模型的同时进行变量筛选和复杂度调整。变量筛选是逐渐把变量放入模型从而得到更好的自变量组合。复杂度调整是通过参数调整来控制模型的复杂度,例如减少自变量的数量等,从而避免过拟合。LASSO回归也是擅长处理多重共线性或存在一定噪声和冗余的数据,可以支持连续型因变量、二元、多元离散变量的分析。
深度学习
深度学习方法是通过使用多个隐藏层和大量数据来学习特征,从而提升分类或预测的准确性,与传统的神经网络相比,不仅在层数上较多,而且采用了逐层训练的机制来训练整个网络,以防出现梯度扩散。深度学习包括受限玻尔兹曼机(RBM)、深度信念网(DBN)、卷积神经网络(CNN)、层叠自动编码器(SAE)、深度神经网络(DNN)、循环神经网络(RNN)、对抗神经网络(GAN)以及各种变种网络结构。这些深度神经网络都可以对训练集数据进行特征提取和模式识别,然后应用于样本的分类。
受限玻尔兹曼机(RBM)主要解决概率分布问题,是一种玻尔兹曼机的变体,基于物理学中的能量函数实现建模,“受限”是指层间存在连接,但层内的单元间不存在连接。RBM应用随机神经网络来解释概率图模型(Probabilistic Graphical Model),所谓“随机”是指网络中的神经元是随机神经元,输出状态只有未激活和激活两种,处于哪种状态是根据概率统计来决定的。
深度信念网络(DBN)是杰弗里·希尔顿(Geoffrey Hinton)在2006年提出的,作为早期深度生成式模型的代表,目标是建立一个样本数据和标签之间的联合分布。DBN由多个RBM层组成,RBM的层神经元分为可见神经元和隐性神经元,其中,接受输入的是可见神经元,隐神经元用于提取特征。通过训练神经元之间的权重,不仅可以用来识别特征、分类数据,还可以让整个神经网络按照最大概率来生成训练数据。
长短期记忆(Long Short-term Memory,LSTM)神经网络是循环神经网络的一种,尽管这个早期循环神经网络只允许留存少量的信息,但其形式会存在损耗,而LSTM有长期与短期的记忆,拥有更好的控制记忆的能力,避免梯度衰减或逐层传递的值的最终退化。LSTM使用被称为“门(gate)”的记忆模块或结构来控制记忆,这种门可以在合适的时候传递或重置其值。LSTM的优点是不仅具备其他循环神经网络的优点,同时具有更好的记忆能力,所以更常被使用于自然语言处理、语言翻译等。
在卷积神经网络(Convolutional Neural Network)中,卷积是指将源数据与滤波矩阵进行内积操作,从而实现特征权重的融合,通过设置不同的滤波矩阵实现提取不同特征。将大量复杂特征进行抽象和提取,并且极大减少模型计算量,目前在图像识别、文本分类等领域应用较广。
目前深度学习的方法在图像和音视频的识别、分类和模式检测等领域已经非常成熟,此外还可以衍生成新的训练数据以构建对抗网络(GAN),从而利用两个模型之间互相对抗以提高模型的性能。
在数据量较多时可考虑采用这一算法。应用深度学习的方法进行分析时,需注意训练集(用于训练模型)、验证集(用于在建模过程中调参和验证)、测试集的样本分配,一般以6:2:2的比例进行分配。此外,采用深度学习进行分析时对数据量有一定的要求,如果数据量只有几千或几百条,极易出现过拟合的情况,其效果不如使用支持向量机等分类算法。
深度学习将在本书第11章和第12章中详细介绍。
机器学习的一般流程
机器学习的一般流程包括确定分析目标、收集数据、整理数据、预处理数据、训练模型、评估模型、优化模型、上线部署等步骤。首先要从业务的角度分析,然后提取相关的数据进行探查,发现其中的问题,再依据各算法的特点选择合适的模型进行实验验证,评估各模型的结果,最终选择合适的模型进行应用。
定义分析目标
应用机器学习解决实际问题,首先要明确目标任务,这是机器学习算法选择的关键。明确要解决的问题和业务需求,才可能基于现有数据设计或选择算法。例如,在监督式学习中对定性问题可用分类算法,对定量分析可用回归方法。在无监督式学习中,如果有样本细分则可应用聚类算法,如需找出各数据项之间的内在联系,可应用关联分析。
收集数据
数据要有代表性并尽量覆盖领域,否则容易出现过拟合或欠拟合。对于分类问题,如果样本数据不平衡,不同类别的样本数量比例过大,都会影响模型的准确性。还要对数据的量级进行评估,包括样本量和特征数,可以估算出数据以及分析对内存的消耗,判断训练过程中内存是否过大,否则需要改进算法或使用一些降维技术,或者使用分布式机器学习技术。
整理预处理
获得数据以后,不必急于创建模型,可先对数据进行一些探索,了解数据的大致结构、数据的统计信息、数据噪声以及数据分布等。在此过程中,为了更好地查看数据情况,可使用数据可视化方法或数据质量评价对数据质量进行评估。
通过数据探索后,可能发现不少问题,如缺失数据、数据不规范、数据分布不均衡、数据异常、数据冗余等。这些问题都会影响数据质量。为此,需要对数据进行预处理,这部分工作在机器学习中非常重要,特别是在生产环境中的机器学习,数据往往是原始、未加工和处理过的,数据预处理常常占据整个机器学习过程的大部分时间。归一化、离散化、缺失值处理、去除共线性等,是机器学习的常用预处理方法。
数据建模
应用特征选择方法,可以从数据中提取出合适的特征,并将其应用于模型中得到较好的结果。筛选出显著特征需要理解业务,并对数据进行分析。特征选择是否合适,往往会直接影响模型的结果,对于好的特征,使用简单的算法也能得出良好、稳定的结果。特征选择时可应用特征有效性分析技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率和逻辑回归权重等方法。
训练模型前,一般会把数据集分为训练集和测试集,或对训练集再细分为训练集和验证集,从而对模型的泛化能力进行评估。
模型本身并没有优劣。在模型选择时,一般不存在对任何情况都表现很好的算法,这又称为“没有免费的午餐”原则。因此在实际选择时,一般会用几种不同方法来进行模型训练,然后比较它们的性能,从中选择最优的一个。不同的模型使用不同的性能衡量指标。
模型训练
在模型训练过程中,需要对模型超参进行调优,如果对算法原理理解不够透彻,往往无法快速定位能决定模型优劣的模型参数,所以在训练过程中,对机器学习算法原理的要求较高,理解越深入,就越容易发现问题的原因,从而确定合理的调优方案。
模型评估
使用训练数据构建模型后,需使用测试数据对模型进行测试和评估,测试模型对新数据的泛化能力。如果测试结果不理想,则分析原因并进行模型优化,如采用手工调节参数等方法。如果出现过拟合,特别是在回归类问题中,则可以考虑正则化方法来降低模型的泛化误差。可以对模型进行诊断以确定模型调优的方向与思路,过拟合、欠拟合判断是模型诊断中重要的一步。常见的方法有交叉验证、绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
误差分析是通过观察产生误差的样本,分析误差产生的原因,一般的分析流程是依次验证数据质量、算法选择、特征选择、参数设置等,其中对数据质量的检查最容易忽视,常常在反复调参很久后才发现数据预处理没有做好。一般情况下,模型调整后,需要重新训练和评估,所以机器学习的模型建立过程就是不断地尝试,并最终达到最优状态,从这一点看,机器学习具有一定的艺术性。
在工程实现上,提升算法准确度可以通过特征清洗和预处理等方式,也可以通过模型集成的方式。一般情况下,直接调参的工作不会很多。毕竟大量数据训练起来很慢,而且效果难以保证。
这部分内容将在本书第2章中详细介绍。
模型应用
模型应用主要与工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的好坏,不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受等方面。