本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
商品基本信息 | |
商品名称: | Python数据挖掘与机器学习实战 |
作者: | 方巍 |
市场价: | 79.00 |
ISBN号: | 9787111626817 |
版次: | 1-1 |
出版日期: | 1900-01 |
页数: | 263 |
字数: | 500 |
出版社: | 机械工业出版社 |
人工智能(Artificial Intelligence,AI)是智能机器,如计算机所执行的与人类智能有关的功能,如识别、判断、证明、学习和问题求解等思维活动。这反映了人工智能学科的基本思想和内容,即人工智能是研究人类智能活动规律的一门学科。1956年在Dartmouth学会上*次提出了“人工智能”这一概念,而人工智能开始迅速发展是在计算机出现后,因为人们真正有了可以模拟人类思维的工具。现如今,人工智能已经不再是一个小众化的研究课题了,全世界几乎所有的理工科类大学都在研究这门学科,甚到为此设立了专门的研究机构。越来越多的学习计算机、自动化控制和软件工程专业的本科生或研究生,将人工智能作为自己的研究方向。在科学家的不懈努力下,如今的计算机与原来相比已经变得十分“聪明”了,某些时候计算机已经可以完成原来只属于人类的工作,并且其高速性和准确性是人类远不可及的。
机器学习(Machine Learning,ML)是人工智能研究领域中*重要的分支之一。它是一门涉及多领域的交叉学科,其包含高等数学、统计学、概率论、凸分析和逼近论等多门学科。该学科专门研究计算机应如何模拟并实现人类的学习行为,以获取人类所不了解的新知识,并使计算机能够使用已有的知识或经验,不断改善自身的性能以得到更加*确的知识。它是人工智能的核心,是使计算机具有智能的根本途径。其应用遍及人工智能的各个领域。它主要使用归纳、综合而不是演绎。
数据挖掘(Data Mining)是从海量数据中获取有效的、新颖的、潜在有用的、*终可理解模式的非平凡过程。数据挖掘中用到了大量的机器学习界所提供的数据分析技术和数据库界所提供的数据管理技术。从数据分析的角度来看,数据挖掘与机器学习有很多相似之处,但不同之处也十分明显。例如,数据挖掘并没有机器学习探索人的学习机制这一科学发现任务,数据挖掘中的数据分析是针对海量数据进行的。从某种意义上说,机器学习的科学成分更重一些,而数据挖掘的技术成分更重一些。数据挖掘中用到了大量的机器学习界所提供的数据分析技术和数据库界所提供的数据管理技术。简单地说,机器学习和数据库是数据挖掘的基石。
本章要点:
q 机器学习概述;
q 机器学习的发展历程;
q 机器学习分类及其应用;
q Python语言的优势;
qPython常用开发工具。
机器学习,通俗地讲就是让机器来实现学习的过程,让机器拥有学习的能力,从而改善系统自身的性能。对于机器而言,这里的“学习”指的是从数据中学习,从数据中产生“模型”的算法,即“学习算法”。有了学习算法,只要把经验数据提供给它,它就能够基于这些数据产生模型,在面对新的情况时,模型能够提供相应的判断,进行预测,如图1-1所示。机器学习实质是基于数据集的,通过对数据集的研究,找出数据集中数据之间的联系和数据的真实含义。
图1-1 什么是机器学习
机器学习属于人工智能中一个较为“年轻”的分支,大致可以分为以下3个发展阶段。
*一阶段:20世纪50年代中期到60年代中期,这一时期处于萌芽时期。人们试图通过软件编程来操控计算机完成一系列的逻辑推理功能,进而使计算机具有一定程度上类似于人类的智能思考能力。然而这一时期计算机所推理的结果远远没有达到人们对机器学习的期望。通过进一步研究发现,只具有逻辑推理能力并不能使机器智能。研究者们认为,使机器拥有人工智能的前提,必须是拥有大量的先验知识。
*二阶段:20世纪60年代中期到80年代中期,这一时期处于发展时期。人们试图利用自身思维提取出来的规则教会计算机执行决策行为,主流之力便是各式各样的“专家系统”。然而这些系统总会面临“知识稀疏”的问题,即面对无穷无尽的知识与信息,人们无法总结出万无一失的规律。因此,让机器自主学习的设想自然地浮出水面。基于20世纪50年代对于神经网络的研究,人们开始研究如何让机器自主学习。
第三阶段:20世纪80年代到今,机器学习达到了一个繁荣时期。由于这一时期互联网大数据及硬件GPU的出现,使得机器学习突破了瓶颈期。机器学习开始呈现“爆炸”式发展趋势,逐渐成为了一门独立的热门学科,并且被应用到各个领域中。各种机器学习算法不断涌现,而利用深层次神经网络的深度学习也得到了进一步发展。同时,机器学习的蓬勃发展还促进了其他分支的出现,如模式识别、数据挖掘、生物信息学和自动驾驶等。
机器学习的思想并不复杂,它仅仅是对人类生活、学习过程的一个模拟。而在这整个过程中,*关键的是数据。任何通过数据训练的学习算法的相关研究都属于机器学习,包括很多已经发展多年的技术,比如线性回归(Linear Regression)、K均值(K-Means,基于原型的目标函数聚类方法)、决策树(Decision Trees,运用概率分析的一种图解法)、随机森林(Random Forest,运用概率分析的一种图解法)、PCA(Principal Component Analysis,主成分分析)、SVM(Support Vector Machine,支持向量机)和ANN(Artificial Neural Networks,人工神经网络)。可见,机器学习的算法非常多,本节将介绍一些*常用的机器学习分类方法,详细的机器学习算法将在后续的章节中进行介绍。
监督学习(Supervised Learning)表示机器学习的数据是带标记的,这些标记可以包括数据类别、数据属性及特征点位置等。这些标记作为预期效果,不断修正机器的预测结果。具体实现过程是:通过大量带有标记的数据来训练机器,机器将预测结果与期望结果进行比对;之后根据比对结果来修改模型中的参数,再一次输出预测结果;然后将预测结果与期望结果进行比对,重复多次直到收敛,*终生成具有一定鲁棒性的模型来达到智能决策的能力。常见的监督学习有分类和回归。分类(Classification)是将一些实例数据分到合适的类别中,它的预测结果是离散的。回归(Regression)是将数据归到一条“线”上,即为离散数据生产拟合曲线,因此其预测结果是连续的。
无监督学习(Unsupervised Learning)表示机器学习的数据是没有标记的。机器从无标记的数据中探索并推断出潜在的联系。常见的无监督学习有聚类和降维。在聚类(Clustering)工作中,由于事先不知道数据类别,因此只能通过分析数据样本在特征空间中的分布,例如基于密度或基于统计学概率模型等,从而将不同数据分开,把相似数据聚为一类。降维(Dimensionality Reduction)是将数据的维度降低。例如描述一个西瓜,若只考虑外皮颜色、根蒂、敲声、纹理、大小及含糖率这6个属性,则这6个属性代表了西瓜数据的维度为6。进一步考虑降维的工作,由于数据本身具有庞大的数量和各种属性特征,若对全部数据信息进行分析,将会增加训练的负担和存储空间。因此可以通过主成分分析等其他方法,考虑主要影响因素,舍弃次要因素,从而平衡准确度与效率。
强化学习(Reinforcement Learning)是带有激励机制的,具体来说,如果机器行动正确,将施予一定的“正激励”;如果行动错误,同样会给出一个惩罚(也可称为“负激励”)。因此在这种情况下,机器将会考虑如何在一个环境中行动才能达到激励的*大化,具有一定的动态规划思想。例如在贪吃蛇游戏中,贪吃蛇需要通过不断吃到“食物”来加分。为了不断提高分数,贪吃蛇需要考虑在自身位置上如何转向才能吃到“食物”,这种学习过程便可理解为一种强化学习。强化学习*为火热的一个应用就是谷歌AlphaGo的升级品——AlphaGo Zero。相较于AlphaGo,AlphaGo Zero舍弃了先验知识,不再需要人为设计特征,直接将棋盘上黑、白棋子的摆放情况作为原始数据输入到模型中,机器使用强化学习来自我博弈,不断提升自己从而*终出色完成下棋任务。AlphaGo Zero的成功,证明了在没有人类的经验和指导下,深度强化学习依然能够出色地完成指定任务。
我们要想具有更强的智慧,除了拥有大量的数据以外还要有好的经验总结方法。深度学习就是一种实现这种机器学习的*秀技术。深度学习本身是神经网络算法的衍生。作为深度学习父类的机器学习,是人工智能的核心,它属于人工智能的一个分支。深度学习是新兴的机器学习研究领域,旨在研究如何从数据中自动地提取多层特征表示,其核心思想是通过数据驱动的方式,采用一系列的非线性变换,从原始数据中提取由低层到高层、由具体到抽象、由一般到特定语义的特征。深度学习不仅改变着传统的机器学习方法,也影响着人类感知的理解,迄今已在语音识别、图像理解、自然语言处理和视频推荐等应用领域引发了突破性的变革。
近几年的时间里,深度学习算法如雨后春笋般不断涌现。这些算法在计算机图像识别、语音和视频识别、自然语言处理及信息检索等领域不断刷新历史记录。本节将根据不同应用领域对相关的知名案例进行简述。
图像识别过去依赖人工设置的特征,特别适合于提取低等级边界信息的SIFT(尺度不变特征转换)或HOG(方向梯度直方图)等。然而,随着小样本无法真实反映实际复杂的情况,研究人员开始在大数据集上进行实验。
1995年Yann Lecun设计了LeNet-5网络,该网络使用了2个卷积层、2个池化层和2个全连接层,形成典型的CNN(卷积神经网络),在MNIST数据集上的实验得到了0.9%的错误率,被用于银行手写支票识别。这也是CNN的成功案例之一。
2006年,Hinton用一个拥有3个隐藏层、170多万权重的深度置信网络在MNIST手写特征识别的数据集上进行训练,在没有对样本进行预处理的情况下,在1万条左右的测试集上,错误率为1.25%,低于反向传播网络及支持向量机(SVM)。
2011年,Google公司建立了全球*大的神经网络,即“深度神经网络”(DNN),也叫“谷歌大脑”,并进行了一个猫脸识别的实验。该实验从YouTube视频中取出1000万张静态图片,让系统自动学习并判断哪些是猫的图片。实验结果表明,他们所建立的深层网络及其算法,在ImageNet数据集1万张图中效果提升了15%,2.2万张图中效果提升了70%。该网络是一个用16000个CPU并行计算平台训练内部拥有10亿个节点的机器学习模型。
2016年初,谷歌旗下*强大脑(DeepMind)公司推出人工智能机器人AlphaGo,创下了围棋人工智能领域的诸多世界纪录。包括:在不让子的情况下,*一次在完整的围棋竞技中击败专业选手(比分5∶0);在中国围棋规则下,成功挑战围棋世界*军李世石(比分4∶1)。AlphaGo的关键技术有深度学习、强化学习和蒙特卡洛树搜索。在其有监督学习策略和强化学习价值网络中采用了CNN结构。
在过去,语音识别一直采用GMM-HMM模型。2012年,HinTon等人考虑了语音数据内部原有的结构特征以后,将传统的模型中的高斯混合模型GMM替换为DBN进行实验。结果表明,在TIMIT核心测试集上,错误率降到20.7%,准确率有明显提升。无独有偶,其他研究人员也尝试将GMM-HMM中的GMM替换为其他深度神经网络,也得到了良好的效果。
微软公司的语音视频检索系统(MAVIS),也是在CD-DNN-HMM深度模型的基础上进行开发的,其在RT03S数据集上单词错误率从27.4%降低到了18.5%。2012年,微软在天津公开演示了MAVIS系统对现场讲演者的英文演讲,进行后台的语音识别、英/中文机器翻译和中文语音合成等一系列处理,效果流畅。
自然语言处理(NLP)传统处理方法的缺陷为采用浅层结构,使用线性分类器且需要人工设计大量较好的特征进行预处理,特征在分离的任务中被串联导致传播误差增大。2003年,Bengio等人提出词向量方法,采用神经网络构建语言模型。之后,研究人员在此基础上提出了不同的词向量训练模型。由于人类自然语言具有递归特性,即任何语言中的句子,事实上可以由词、短语递归组合而成,因此,将循环神经网络(RNN)引入NLP成为一种趋势。从2010年开始,来自Google的一些研究者一直从事该领域的研究,提出了RNNLM(循环神经网络语言模型),在语言模型的训练速度、准确率及困惑度上得到了改善。
退伍军人创伤后成长计划与IBM Watson合作使用人工智能和分析技术,以确保更多患有创伤后应激障碍的退伍军人能够完成心理治疗。使用这些技术后,使完成率从原来的不到10%上升到73%。根据退伍军人事务部的统计,80%的患有创伤后应激障碍的退伍军人在确诊后一年内完成治疗计划,得到康复。在参加了阿富汗和伊拉克战争的300万名老兵中,大约有五分之一的老兵患有创伤后应激障碍。
以色列医疗技术公司MedyMatch和IBM Watson Health正在使用人工智能,通过检测颅内出血,帮助医院急诊室的医生更有效地治疗中风和头部外伤患者。AI系统使用临床洞察力(clinical insight)、深度学习、患者数据和机器视觉来自动标记潜在的脑出血,以供医生检查。
用于检测和诊断癌症的传统方法包括计算机断层扫描(CT)、磁共振成像(MRI)、超声和X射线。不幸的是,许多癌症无法通过这些技术得到足够准确的诊断,从而及时地挽救生命。微阵列基因图谱的分析是一种替代方法,但这项技术需要很多小时的计算,除非这项技术可以使用AI替换。现在已经被证明,斯坦福大学的人工智能诊断算法可以与医疗团队(由21名经委员会认证的皮肤科医生组成)一样有效地从图像中检测潜在的皮肤癌。Startup Enlitic正在使用深度学习来检测CT图像中的肺癌结节,其算法比一个胸科医生组成的专家团队的准确率高50%。
在人工智能的帮助下,其他医疗保健公司正在经历诊断、治疗甚到治愈的过程。Insilico Medicine正在用深度学习算法寻找新药和治疗方法,包括新的免疫疗法。这些基因疗法使用每个病人的细胞来模拟他们自己的生物学和免疫系统。
人工智能之所以能使这些疗法奏效,是因为它能设计出组合疗法,并以闪电般的速度,以模拟的形式进行数百万次实验,来识别令人难以置信的复杂生物标记物。
纵观深度学习在人工智能不同细分领域中的应用,在计算机视觉、语音识别和自然语言处理等领域中成绩相对显著。但是在其他相关领域,依然不时涌现新的深度结构及其算法。
本书学习和使用机器学习算法开发应用程序,通常遵循以下步骤。
(1)收集数据。
收集所需的数据,方法如:网络爬虫、问卷调查获取的信息、一些设备发送过来的数据,以及从物联网设备获取的数据等。
(2)准备输入数据。
得到数据之后,要确保得到的数据格式符合要求,如某些算法要求特征值需要使用特定的格式。
(3)分析输入的数据。
查看输入的数据是否有明显的异常值,如某些数据点和数据集中的其他值存在明显的差异。通过一维、二维或者三维图形化展示数据是个不错的方法,但是得到的数据特征值都不会低于三个,无法一次图形化展示所有特征。可以通过数据的提炼,压缩多维特征到二维或者一维。
(4)训练算法。
机器学习算法从这一步才算真正开始。需要考虑算法是使用监督学习算法还是无监督学习算法。如果使用无监督学习算法,由于不存在目标变量值,因而也不需要训练算法,所有与算法相关的内容都在第(5)步。
(5)测试算法。
这一步将实际使用第(4)步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须通过其他的评测手段来检测算法的成功率。如果不满意预测结果,则返回到第(4)步。
(6)使用算法。
这一步是将机器学习算法转化为应用程序,执行实际任务。
开发机器学习应用程序的步骤如图1-2所示。 显示全部信息