




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习原理与应用第1章机器学习基础本章学习目标(知识要点)了解人工智能、机器学习及其关系;
熟悉机器学习中的基本问题及典型任务;了解机器学习在各领域的场景应用;
掌握机器学习开发环境的搭建;
熟悉机器学习常用库、机器学习框架、机器学习平台目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6◎人工智能
◎机器学习机器学习简介1.11.人工智能阿兰•图灵提出机器学习、遗传算法、图灵测试等概念1.人工智能约翰·麦卡锡(JohnMcCarthy,1927-2011)1956:TheDartmouthConference(达茅斯会议)人工智能(ArtificialIntelligence,AI)1.人工智能人工智能基本任务知识表示搜索推理机器学习人工智能按智能程度划分弱人工智能强人工智能超人工智能1.人工智能人工智能研究的主要内容计算机视觉模式识别、图像处理、图像生成、人脸识别等;自然语言理解与交流文本理解及生成、摘要生成、语义理解、语音识别及合成等;认知与推理逻辑推理、自动推理、搜索、物理及社会常识等;机器人学智能控制与设计、运动规划、任务规划、博弈等;人工智能伦理社会伦理、伦理规范、伦理标准等;机器学习知识表示、知识获取、知识处理、统计建模、分析工具及计算方法等大语言模型GPT、BERT、GPT-4o、OpenAI-o1、DeepSeek-V3等2.机器学习机器学习(MachineLearning,ML)是研究计算机(机器)如何模拟和实现人的学习行为的一种技术。1997年,TomMitchell提出机器学习定义提出学习问题后,如果计算机程序对于任务T的性能度量P通过经验E得到了提高,则认为此程序对经验E进行了学习2.机器学习机器学习研究历程(五个学派)符号主义、联结主义、进化主义、贝叶斯派、Analogizers(类比主义)机器学习学派起源学科代表性算法代表性人物应用符号主义(Symbolists)逻辑学、哲学逆演绎算法(Inversededuction)TomMitchell、SteveMuggleton、RossQuinlan知识图谱联结主义(Connectionist)神经科学反向传播算法(Backpropagation)、深度学习(Deeplearning)YannLeCun、GeoffHinton、YoshuaBengio机器视觉、语音识别进化主义(Evolutionaries)进化生物学基因编程(Geneticprogramming)JohnKoda、JohnHolland、HodLipson海星机器人贝叶斯派(Bayesians)统计学概率推理(Probabilisticinference)DavidHeckerman、JudeaPearl、MichaelJordan反垃圾邮件、概率预测类比主义(Analogizer)心理学核机器(Kernelmachines)PeterHart、VladimirVapnik、DouglasHofstadter推荐系统2.机器学习机器学习基本流程输入数据,通过模型训练,预测结果。模型通常为函数2.机器学习机器学习分为有监督学习、半监督学习、弱监督学习、自监督学习、无监督学习、深度学习、强化学习、深度强化学习。2.机器学习机器学习整个流程问题的定义、收集数据、建立特征工程、模型的训练和测试、模型评估、
模型应用,然后再将应用的结果反馈到问题定义2.机器学习机器学习处理步骤1)定义问题:根据具体任务,定义学习问题2)收集数据:将收集的数据分成三组:训练数据、验证数据和测试数据3)特征工程:使用训练数据来构建使用相关特征4)模型训练:根据相关特征训练模型5)模型评估:使用验证数据评估训练的模型,测试数据检查被训练的模型的表现。6)模型应用:使用完全训练好的模型在新数据上做预测7)模型调优:根据模型应用中的问题,以及更多数据、不同的特征、
参数来提升算法的性能表现。目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6◎机器学习问题
◎机器学习典型任务◎机器学习应用场景
机器学习任务1.21.2.1机器学习问题基本问题分类回归聚类降维网络分析等。前沿问题规模化学习参数空间自动配置学习最优拓扑结构搜索脑等。1.2.1机器学习问题1.回归(Regression)分类回归分析用于预测输入变量(自变量)和输出变量(因变量)之间的关系。常用回归算法线性模型、非线性模型、规则化、逐步回归、提升(boosted)和袋装(bagged)决策树、神经网络和自适应神经模糊学习1.2.1机器学习问题2.分类(Classification)从数据中学习一个分类决策函数或分类模型(分类器),对新的输入进行输出预测,输出变量取有限个离散值。二元分类问题输出范围只有两个可能的值多元分类问题输出范围有多个值时常用分类算法支持向量机(SVM)、提升(boosted)决策树和袋装(bagged)决策树、k-最近邻、朴素贝叶斯(NaïveBayes)、判别分析、逻辑回归和神经网络1.2.1机器学习问题3.聚类(Clustering)分析聚类即给定一组样本特征,通过发掘样本在N维空间的分布,分析样本间的距离,如哪些样本距离更近,哪些样本之间距离更远,来进行样本类别的划分。常用分类算法k-均值和k-中心点、分层聚类、模糊聚类、高斯混合模型、隐马尔可夫模型、自组织映射、减法聚类、单连接群集、预期最大化(EM)、非负矩阵分解、潜在狄利克雷分配(LDA)。1.2.1机器学习问题4.降维(DimensionalityReduction)通过降维方法去除冗余的特征,用更少的维数来表示特征降维可以加快训练的速度、筛选掉一些噪音和冗余特征会丢失一些信息,需要掌握平衡问题。1.2.1机器学习问题5.网络学习
网络学习是通过计算机学习网络的浅层、深层结构、网络节点表示、节点重要性及其作用等信息。常见的网络学习算法自组织映射、感知、反向传播、自动编码、Hopfield网络、玻尔兹曼机器、限制玻尔兹曼机器、Spiking神经网络等。1.2.2机器学习典型任务机器学习任务分类任务回归任务语音识别机器翻译机器阅读理解异常检测图机器学习1.2.3机器学习应用场景机器学习应用场景广告推荐用户画像营销票房预测新闻推荐……目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6◎开发环境系统要求◎Windows10系统平台下搭建开发环境◎Linux系统平台下搭建开发环境机器学习开发环境1.31.3.1开发环境系统要求Windows10或Linux(如Ubuntu18.04)操作系统首先查看自己电脑显卡的型号。如显卡为NVIDIA系列,可选择安装GPU版本;否则,需装CPU版1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台1)安装Anaconda,Anaconda下载地址为:/distribution/,选择Windows下的python版本,
根据自己系统是64位,选择对应版本下载,(历史版本下载地址:/archive/)Anaconda下载界面1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台2)然后运行直接默认安装即可,安装中需要注意如图所示,勾选默认添加环境变量,将Anaconda环境配置到PATH环境变量中配置Anaconda环境1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台3)安装完成后,检测Anaconda环境是否安装成功(查看Anaconda版本号),打开windows下的cmd,输入命令:conda–version,如安装成功,则返回当前版本号1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台4)安装完成后,检测Anaconda环境是否安装成功(查看Anaconda版本号),打开windows下的cmd,输入命令:conda–version,如安装成功,则返回当前版本号1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台4)创建Opencv并安装python3.7,输入命令:condacreate--nameOpencvpython=3.71.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台5)激活并进入环境,输入命令:condaactivateOpencv6)安装Opencv,输入命令:pipinstallopencv-python1.3.2
Windows10系统平台下搭建开发环境1.搭建Python开发平台7)进入python解释器:python8)测试python环境:print(‘helloworld!’)输出:helloworld!1.3.2
Windows10系统平台下搭建开发环境2.搭建OpenCV开发平台1)激活并进入环境:condaactivateOpencv2)安装OpenCV环境:pipinstallopencv-python3)测试OpenCV环境,进入python解释器输入:importcv2不报错则为正常1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台1)安装TensorFlow-CPU:打开windows的cmd命令行,创建环境tf-cpu并安装python3.7,输入命令:condacreate--nametf-cpupython=3.72)激活并进入环境,输入命令:condaactivatetf-cpu1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台3)安装Tensorflow-cpu,输入命令:pipinstalltensorflow==1.13.14)安装numpy1.16.0,输入命令:pipinstallnumpy==1.16.05)测试Tensorflow-cpu安装环境,进入python解释器,输入测试代码importtensorflowastfhello=tf.constant('Hello,Tensorflow!')sess=tf.Session()print(sess.run(hello)输出结果如下b'Hello,Tensorflow!'1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台6)安装Tensorflow-gpu,查看自己电脑显卡的型号。如果显卡是NVIDIA系列的,继续下面步骤;如果显卡不是NVIDIA系列的,直接装CPU版即可。右键点击此电脑->管理->设备管理器->显示适配器,就可以查看自己电脑显卡的型号1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台7)打开英伟达官网/cuda-gpus查看自己的显卡型号算力以及是否支持GPU加速,如果计算能力≥3.5,可以装GPU版1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台8)打开网址:/cuda-toolkit-archive,选择local版本下载和安装CUDAToolkit10.01.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台9)安装CUDA,运行下载好的安装包选择OK解压1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台10)在兼容性检测和同意许可协议后,选择精简安装1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台11)安装完成后,重启即可,系统会自动添加环境变量。验证是否安装成功,在win+R中输入:powershell,输入命令:nvcc-V1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台12)下载安装cuDNN,在网址:/rdp/cudnn-archive中选择forCUDA10.013)将cuDNN解压出来的三个文件夹:bin、include和lib,复制到C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA10目录下并重启系统1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台14)Tensorflow-gpu的安装,与步骤1至2相同,创建并激活进入环境tf-gpu输入代码15)安装Tensorflow-gpu,输入命令:pipinstalltensorflow-gpu==1.13.1condacreate--nametf-gpupython=3.7condaactivatetf-gpu1.3.2
Windows10系统平台下搭建开发环境3.搭建TensorFlow开发平台16)安装numpy1.16.0,输入命令:pipinstallnumpy==1.16.017)测试Tensorflow-GPU环境,进入python解释器输入测试代码如下所示,输出True即安装成功importtensorflowastfa=tf.test.is_built_with_cuda()b=tf.test.is_gpu_available(cuda_only=False,min_cuda_compute_capability=None)print(a)print(b)1.3.2
Windows10系统平台下搭建开发环境4.搭建Pytorch开发平台1)打开Pytorch官网/,GPU安装方式如图1-31所示,CUDA选项选择None即为CPU版本2)Pytorch的安装,创建并激活进入环境torch,输入命令如下:
condacreate--nametorchpython=3.7condaactivatetorch1.3.2
Windows10系统平台下搭建开发环境4.搭建Pytorch开发平台3)输入上图中RunthisCommand框中的指令安装Pytorch-gpu2)测试安装是否成功,进入python解释器,输入如下代码:
importtorchprint("cudaisavailable{}".format(torch.cuda.is_available()))print("torchversion{}".format(torch.__version__))1.3.3
Linux系统平台下搭建开发环境1.搭建Pytorch开发平台1)安装Anaconda,同上一样在Anaconda官网地址:/distribution/,选择linuxpython版本,然后根据操作系统下载对应的版本1.3.3
Linux系统平台下搭建开发环境1.搭建Pytorch开发平台2)进入Anaconda目录,执行命令:bashAnaconda3-2019.10-Linux-x86_64.sh3)按照提示操作,成功安装1.3.3
Linux系统平台下搭建开发环境1.搭建Pytorch开发平台4)验证Anaconda是否安装成功,在终端窗口中,输入命令:conda-V,输出Anaconda版本号5)安装Python环境,在终端窗口输入:condacreate–namepython3.7python==3.71.3.3
Linux系统平台下搭建开发环境1.搭建Pytorch开发平台6)激活并进入环境,在终端窗口输入:condaactivatepython3.77)测试Python环境,首先进入python解释器,在终端窗口输入:python,输入测试代码如下print(‘helloworld!’)
输出结果:helloworld1.3.3
Linux系统平台下搭建开发环境2.搭建OpenCV开发平台1)激活并进入Python环境,安装Opencv环境在终端输入代码如下condaactivatepython3.7pipinstallopencv-python1.3.3
Linux系统平台下搭建开发环境2.搭建OpenCV开发平台2)测试Opencv环境,进入Python解释器,在终端窗口输入:importcv2不报错即为安装成功1.3.3
Linux系统平台下搭建开发环境3.搭建Tensorflow开发平台1)安装创建Tensorflow-cpu环境,在终端窗口输入:condacreate–nametf-cpupython==3.72)激活Tensorflow-cpu环境,在终端窗口输入:condaactivatetf-cpu1.3.3
Linux系统平台下搭建开发环境3.搭建Tensorflow开发平台3)安装Tensorflow-cpu,在终端窗口输入:pipinstalltensorflow==1.13.14)安装numpy1.16.0,输入命令:pipinstallnumpy==1.16.01.3.3
Linux系统平台下搭建开发环境3.搭建Tensorflow开发平台5)测试Tensorflow-cpu环境,进入python解释器,输入测试代码如下importtensorflowastfhello=tf.constant('Hello,Tensorflow!')sess=tf.Session()print(sess.run(hello)输出结果如下b'Hello,Tensorflow!’6)Tensorflow-gpu的安装,查看自己电脑显卡的型号。如果显卡是NVIDIA系列的,继续下面步骤;如果显卡不是NVIDIA系列的,直接装CPU版即可1.3.3
Linux系统平台下搭建开发环境3.搭建Tensorflow开发平台7)与步骤1至2相同,创建并激活进入环境tf-gpu输入代码如下condacreate--nametf-gpupython=3.7condaactivatetf-gpu8)安装Tensorflow-gpu,在终端输入:cundainstalltensorflow-gpu==1.13.11.3.3
Linux系统平台下搭建开发环境3.搭建Tensorflow开发平台9)安装numpy1.16.0,输入命令:pipinstallnumpy==1.16.010)测试Tensorflow-gpu环境,进入python解释器输入测试代码如下,结果都返回True即为安装成功importtensorflowastfa=tf.test.is_built_with_cuda()b=tf.test.is_gpu_available(cuda_only=False,min_cuda_compute_capability=None)print(a)print(b)1.3.3
Linux系统平台下搭建开发环境4.搭建PyTorch开发平台1)进入PyTorch官网/,GPU安装方式如图1-48所示,CUDA选项选择None即为CPU版本1.3.3
Linux系统平台下搭建开发环境4.搭建PyTorch开发平台2)PyTorch的安装,创建并激活进入环境torch输入代码如下condacreate--nametorchpython=3.7condaactivatetorch3)输入图中RunthisCommand框中的命令,安装PyTorch-gpu1.3.3
Linux系统平台下搭建开发环境4.搭建PyTorch开发平台4)测试是否安装成功,进入python解释器,输入如下代码importtorchprint("cudaisavailable{}".format(torch.cuda.is_available()))print("torchversion{}".format(torch.__version__))目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6◎库简介
◎库安装及集成机器学习常用库概述1.41.4.1库简介库简介Python机器学习中库Numpy、Scipy、Scikit-learn、Theano、TensorFlow、Keras、PyTorch、Pandas、Matplotlib还有Gensim、milk、Octave、mahout、pyml、NLTK、libsvm等库。1.TheanoTheanos是一个可以让用户定义、优化、有效评价数学表示的Python包,是一个通用的符号计算框架。优点是显式的利用了GPU,使得数据计算比CPU更快,使用图结构下的符号计算架构、对RNN支持很好。缺点是依赖于Numpy,偏底层、调试困难、编译时间长、缺乏预训练模型。当前最新的版本为Theano1.0.4。1.4.1库简介2.Scikit-learnScikit-learn是一个在2007年由数据科学家DavidCournapeau发起,基于NumPy和SciPy等包的支持的Python语言的机器学习开源工具包。它通过NumPy、SciPy和Matplotlib等Python数值计算的库,实现有监督和无监督的机器学习。在分类、回归、聚类、降维、预处理等方面,应用于数据挖掘、数据分析等领域,是简单高效的数据挖掘和数据分析工具。当前最新的版本是Scikit-learn0.22.2。3.Statsmodels在Python中,statsmodels是统计建模分析的核心工具包,其包括了几乎所有常见的各种回归模型、非参数模型和估计、时间序列分析和建模以及空间面板模型等最新的版本是statsmodelsv0.11.1。1.4.1库简介4.GensimGensim是一个开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达,其支持TF-IDF、LSA、LDA、word2vec等主题模型算法,通常用于抽取文档的语义主题。Gensim的输入是原始的、无结构的数字文本(纯文本),在内置的算法支持下,通过计算训练语料中的统计共现模式自动发现文档的语义结构。5.KerasKeras是基于Theano的一个深度学习框架,也是一个高度模块化的神经网络API库,提供了一种更容易表达神经网络的机制。Keras主要包括14个模块包,如Models、Layers、Initializations、Activations、Objectives、Optimizers、Preprocessing、metrics等模块。另外,Keras还提供了一些用于编译模型,处理数据集,图形可视化等的最佳工具。Keras运行在TensorFlow,CNTK,或Theano之上,支持CPU和GPU运行。最新的版本为Keras2.3.1。1.4.1库简介6.DMTKDMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的强大工具包;支持在超大规模数据上灵活稳定地训练大规模机器学习模型。DMTK的框架包含参数化的服务器和客户端SDK。DMTK是设计用于分布式机器学习的平台。深度学习不是DMTK的重点,DMTK中发布的算法主要是非深度学习算法。7.CNTKCNTK是微软认知工具集(MicrosoftCognitiveToolkit,CNTK),是用于商业级分布式深度学习的开源工具包。它通过有向图将神经网络描述为一系列计算步骤。CNTK允许用户轻松实现和组合流行的模型类型,例如前馈DNN,卷积神经网络(CNN)和递归神经网络(RNN/LSTM)。CNTK通过跨多个GPU和服务器的自动微分和并行化实现随机梯度下降(SGD,错误反向传播)学习。CNTK也是第一个支持开放神经网络交换ONNX格式的深度学习工具包,这是一种用于框架互操作性和共享优化的开源共享模型表示。ONNX由Microsoft共同开发,并得到许多其他人的支持,允许开发人员在CNTK,Caffe2,MXNet和PyTorch等框架之间移动模型。1.4.2库安装及集成1.Theano安装1)在Anaconda中创建并进入环境,注意python版本要≤3.6(参考1.4搭建机器学习开发环境)输入命令:condacreate--nameMLpython==3.62)安装Theano输入命令:condainstallTheano3)安装Theano环境所依赖组件condainstallmkl-servicepipinstallnoseypipinstallparameterized4)测试Theano安装环境,进入python解释器输入代码如下代码importtheanotheano.test()1.4.2库安装及集成2.Scikit-learn安装1)在Anaconda中创建并进入环境,注意python版本要≤3.6(参考1.4搭建机器学习开发环境)输入:condacreate--nameMLpython==3.62)安装Scikit-learn,输入命令:condainstallscikit-learn3)测试Scikit-learn安装环境,进入python解释器,输入代码如下fromsklearnimportdatasetsiris=datasets.load_iris()digits=datasets.load_digits()print(digits.data)目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6机器学习框架概述 1.51.5机器学习框架概述常用的机器学习框架CaffeTensorflowMXNetPytorchApacheMahoutApacheSingaMlibH2O1.5机器学习框架概述1.Caffe框架Caffe(ConvolutionArchitectureForFeatureExtraction)是一个兼具表达性、速度和思维模块化的深度学习框架,出现于2013年,设计初衷是应用于计算机视觉。其内核是用C++编写的,Caffe支持多种类型的深度学习架构,支持CNN、RCNN、LSTM、全连接神经网络设计,以及基于GPU和CPU的加速计算内核库。此外,Caffe有Python和Matlab相关接口。2017年4月,Facebook发布Caffe2,增加递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch。Caffe具有完全开源、模块化、表示和实现分离、GPU加速、Python和MATLAB结合等特点。下载链接:/BVLC/caffe/资源链接:/1.5机器学习框架概述2.TensorFlowTensorFlow是由Google设计开发的开源的机器学习框架,以Python语言为基础,主要用于机器学习和深度学习应用,其特点包含可以方便的用张量来定义、优化、计算数学形式化表达,支持深度神经网络、机器学习算法,适用于不同数据集的高性能数值计算。TensorFlow可以跨平台在Linux、Windows、Mac系统下运行,也可以在移动终端下运行,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)上进行分布式计算,也可以部署到设备,如桌面设备、服务器集群、移动设备、边缘设备等。TensorFlow模块包含TensorBoard、Datasets、TensorflowHub、Serving、ModelOptimization、Probability、TensorFlowFederated、MLIR、NeuralStructuredLearing、XLA、TensorFlowGraphics、SIGAddons、SIGIO当前版本为TensorFlow2中文链接:/?hl=zh-cn安装链接:/install?hl=zh-cn1.5机器学习框架概述3.MXNetMXNet是一个轻量级的深度学习框架(亚马逊AWS选择支持),支持Python,R,Julia,Scala,Go,Javascript等,支持多语言接口和多GPU。MXNet尝试将声明式编程与命令式编程两种模式无缝的结合,在命令式编程上MXNet提供张量运算,而声明式编程中MXNet支持符号表达式。MXNetPython库包含NDArray、Symbol、KVStore,NDArray提供矩阵和张量计算,Symbol定义神经网络,提供自动微分,KVStore使得数据在多GPU和多个机器间同步。当前的版本为MXNet1.9链接:/versions/1.9.1/源代码链接:/repos/asf#mxnet1.5机器学习框架概述4.PytorchPyTorch前身起源于1990年产生的Torch,其底层与Torch框架一样,是应用于机器学习的优化的张量库,支持GPU和CPU。PyTorch除了基本的torchPythonAPI库之外,还有处理音频、文本、视觉等库,如torchaudio、torchitext、torchvision、torchElastic等。2018年4月Facebook宣布Caffe2将正式将代码并入了PyTorch。PyTorch在数据加载API、构建神经网络等方面具有明显优势。当前的版本为PyTorch2.6官方链接:/1.5机器学习框架概述5.ApacheMahoutApacheMahout是ApacheSoftwareFoundation(ASF)开发的一个全新的开源项目,提供一些可扩展的机器学习领域经典算法的实现。Mahout包括聚类、分类、推荐过滤、频繁子项挖掘等。同时,Mahout通过ApacheHadoop库可以扩展到云端。Mahout已经包含TasteCF,支持k-Means、模糊k-Means、Canopy、Dirichlet、Mean-Shift、Matrix和矢量库等在集群上的分布式运行。当前的版本为ApacheMahout14.1官方链接:/1.5机器学习框架概述6.ApacheSingaSINGA项目始于2014年,由新加坡国立大学数据库系统实验室联合浙江大学和网易共同开发完成,是一个开源的分布式、可扩展的深度学习平台,它可以在机器集群上训练大规模的机器学习模型,尤其是深度学习模型。2019年10月,SINGA项目成为Apache软件基金会(ApacheSoftwareFoundation,ASF)顶级项目。其包含硬件层、支撑层、接口层、Python应用层。SINGA通过代码模块化来支持不同类型的深度学习模型,不同的训练(优化)算法和底层硬件设备。另外,SINGA同时支持ONNX、DLaaS(DeepLearningasaService)等。当前的版本为SINGA4.3官方链接:/Github链接:/apache/singa1.5机器学习框架概述7.MLlibMLlib是最早由AMPLab、UC伯克利发起的Spark子项目常用机器学习库。MLlib已经Java、Scala和Python语言,支持通用的机器学习算法,如分类、回归、聚类、协同过滤(ALS)、降维(SVD、PCA)、特征提取与转换、优化(随机梯度下降、L-BFGS)等。它在Spark中可以实现GraphX+MLIib、Streaming+MLIib、SparkSQL+MLIib等组合应用。官方链接:/mllib/文档链接:/docs/latest/ml-guide.html1.5机器学习框架概述8.H2OH2O是由Oxdata于2014年推出的一个独立开源机器学习平台,主要功能是为app提供快速的机器学习引擎。H2O支持大量的无监督式和监督式机器学习算法,可以通过对R与Python进行引入包的方式进行模型的开发,提供可视化的UI界面建模工具,以及模型的快速部署、自动化建模和自动化参数调优。另外,H2O提供了许多集成,如H2O+TensorFlow+MXNet+Caffe、H2O+Spark等。H2O4GPU是H2O开发的基于GPU机器学习加速的工具包。其最新稳定的版本是1.8LTS。H2O也提供了一个RESTAPI,用于通过HTTP上的JSON从外部程序或脚本访问所有软件的功能。H2O核心代码使用Java编写,数据和模型通过分布式Key/Value存储在各个集群节点的内存中。H2O的算法使用Map/Reduce框架实现,并使用了JavaFork/Join框架来实现多线程。官方链接:https://h2o.ai/platform/ai-cloud/make/h2o/目录
机器学习简介
机器学习任务
搭建机器学习开发环境
机器学习常用库概述
机器学习框架概述1.11.21.31.41.5
机器学习开源平台1.6机器学习开源平台 1.61.6机器学习开源平台机器学习开源平台PaddlePaddlePhotonMLX-DeepLearningAngelAWS1.6机器学习开源平台1.PaddlePaddlePaddlePaddle(ParallelDistributedDeepLearning,并行分布式深度学习),又称飞桨,是百度发起的开源深度学习平台,支持大规模稀疏参数训练场景、千亿规模参数、数百个节点的高效并行训练,同时支持动态图和静态图,具有易用,高效,灵活和可伸缩等特点。飞桨支持本地和云端两种开发和部署模式,其组件使用场景如图官方中文链接:/Github链接:/PaddlePaddle/Paddle1.6机器学习开源平台2.PhotonMLPhotonML是LinkedIn公司开发的应用于ApacheSpark的机器学习库。PhotonML支持大规模回归、L1、L2和elastic-net正则化的线性回归、逻辑回归和泊松回归。提供可选择的模型诊断,创建表格来帮助诊断模型和拟合的优化问题,实现了实验性质的广义混合效应模型。PhotonML把典型的机器学习系统分为三个阶段部分,第一阶段部分是数据准备,包含在线数据的ETL,即数据抽取(Extract)、转换(Transform)、加载(Load),以及创建标签、加入特征;第二阶段部分是采样数据,分为训练数据集、测试数据集,通过特征计算,训练Photon机器学习模型,选取最优评分模型,在测试数据集验证;第三部分是最优模型在线部署,进行A/B测试,验证效果,具体流程如下图Github链接:/linkedin/photon-ml1.6机器学习开源平台3.X-DeepLearningX-DeepLearning(简称XDL)是由阿里发起的面向高维稀疏数据场景(如广告、推荐、搜索等)深度优化框架,其主要特性有:针对大batch/低并发场景的性能优化;存储及通信优化,参数无需人工干预自动全局分配,请求合并,彻底消除ps的计算/存储/通信热点;完整的流式训练,包括特征准入,特征淘汰,模型增量导出,特征counting统计等。XDL专注解决搜索广告等稀疏场景的模型训练性能问题,因此将模型计算分为稀疏和稠密两部分,稀疏部分通过参数服务器,GPU加速,参数合并等技术极大提升了稀疏特征的计算和通信性能。稠密部分采用多backend设计,支持TF和Mxnet两个引擎作为计算后端,并且可以使用原生TF和MxnetAPI定义模型。此外,XDL支持单机及分布式两种训练模式,单机模式一般用来做早期模型的调试和正确性验证,为了充分发挥XDL的稀疏计算能力,建议使用分布式模式进行大规模并行训练。Github链接:/alibaba/x-deeplearning1.6机器学习开源平台4.AngelAngel是一个基于参数服务器架构的分布式机器学习平台。Angel能够高效的支持现有的大数据系统以及机器学习系统——依赖于参数服务器处理高维模型的能力,Angel能够以无侵入的方式为大数据系统(比如ApacheSpark)提供高效训练超大机器学习模型的能力,并且高效的运行已有的分布式机器学习系统(比如PyTorch)。此外,针对分布式机器学习中通信开销大和掉队者问题,Angel也提供了模型平均、梯度压缩和异构感知的随机梯度下降解法等。目前Angel支持Java和Scala,Angel系统基本架构如图1-59所示,主要包括四个部分,分别为:客户端(Client)、主控节点(Master)、计算节点(Worker)和存储节点(Server)。Github链接:/Angel-ML/angel1.6机器学习开源平台5.AWSAWS是Amazon开发的机器学习平台,其提供了丰富的软件开发工具包和工具包,如AWS命令行界面CLI、Ruby、JavaScript、Python、PHP、.NET、Node.js、Android、IOS等,应用在机器学习、用户计算、机器人技术、区块链、物联网、游戏开发、数据分析等方面,提供的服务包含AmazonPolly、AWSDeepLearning、AMIAmazonTranscribe等中文链接:/cn/本章小结机器学习基础人工智能机器学习分类及典型算法机器学习任务领域应用场景机器学习开发环境搭建Windows10系统下搭建Linux系统下搭建机器学习常用库、集成安装、常用工具集机器学习常见的框架开源平台习题概念题机器学习典型任务有哪些,分别应用于哪些场景?机器学习、深度学习、强化学习三者之间的关系是什么?搭建机器学习开发环境常用的软件有那些?常见的机器学习框架有那些,它们之间有什么关系?操作题编写一个文本分析处理程序。要求如下:(1)用Tensorflow和Torch完成自动读取指定目录下指定格式的数据;(2)支持文件正则解析操作;(3)使用文件存储数据。参考文献MitchellT.M.,HillM.MachineLearning[M].NewYork:McGraw-HillScience/Engineering/Math,1997.杨强.机器学习的几个前沿问题[R].中国工程院知识智能联合研究中心年会暨认知智能高峰论坛.北京:2020.LevineS,KumarA,TuckerG,etal.OfflineReinforcementLearning:Tutorial,Review,andPerspectivesonOpenProblems[C/OL]./10.48550/arXiv.2005.01643,2020.ChalapathyR.,ChawlaS.DeepLearningforAnomalyDetection:ASurvey[J].CoRR,vol.abs/1901.03407,2019.ZhangZ,WangX,ZhuW.AutomatedMachineLearningonGraphs:ASurvey[C].Proceedingsofthe27thACMSIGKDDConferenceonKnowledgeDiscovery&DataMining,NewYork:AssociationforComputingMachinery,2021谢谢!94机器学习原理与应用第2章
特征选择与降维本章学习目标(知识要点)了解特征选择的作用,熟悉特征选择一般框架和常用方法,掌握其实现原理和应用;掌握特征选择的常用方法;熟悉降维技术基本原理和主要技术;熟悉主成分分析技术的原理及应用。目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5特征选择简介2.11.特征选择目的1)避免维数灾难问题在现实任务中经常遇到维数灾难问题,即描述一个对象的特征集合非常大,例如一张图片包含百万级像素,一篇文章包含成千上万级词汇。通过特征选择可以减少特征个数,使得后续学习过程在低维空间中构建模型,大幅度减轻维数灾难问题,提高机器学习算法的效率。举例来说,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样一单位超正方体,则需要1020
个采样点:所以,这个10维的超正方体也可以说是比单位区间大1018倍.如图任务:分类三角形和圆[1]1.特征选择目的2)降低噪音、提取有效信息庞大的特征集合可能只有少量的元素很相关,而另一些大量的特征则可能是无关或冗余的。所谓无关特征即与当前学习目标没有直接联系的特征,而冗余特征则不会给目标对象增加任何新信息,可以从其他特征推演出来。例如一篇描述足球比赛的文章,可能其中一些关键词足以让读者了解其主题,但是诸如大量的“的”、“是的”等词汇则并不能反映这篇文章的有效信息;而描述一个运动足球踢的“好”,“那么好”这个词相比于“精准”、“迅速”等词汇是冗余特征。去除不相关或冗余的特征往往会降低学习任务的难度,让机器学习算法抽丝剥茧,获取更重要的特征。1.特征选择目的3)降低过拟合风险特征数量越多,训练样本就会越稀疏。随着特征数量的增加,为了覆盖特征值,就需要更多的训练样本。如果没有足够的训练样本,就可能会出现过拟合问题。输入变量会增加模型本身的额外自由度,这些额外的自由度对于模型记住某些细节信息会有所帮助,但对于创建一个稳定性良好、泛化性能强的模型可能却没有好处,也就是说增加额外的不相关变量容易增大过拟合的风险,在新数据上可能表现不佳。而更少的输入维数通常意味着相应的更少的参数或更简单的结构,一定程度能帮助学习算法改善所学模型的通用性、降低过拟合风险的作用。2.特征选择步骤机器学习算法中采用特征选择技术的一般框架特征选择:就是如何选取一个包含所需要重要信息的特征子集。通常做法是先产生一个候选子集,接着对其重要性进行评估,然后根据评价结果产生下一个候选子集,再对其进行评估,如此循环持续进行,直到无法产生一个更好的候选子集为止。两个关键环节:子集搜索、子集评价2.特征选择步骤
2.特征选择步骤
目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5◎过滤式方法
◎包裹式方法◎嵌入式方法特征选择方法2.22.2特征选择方法特征选择方法(根据特征选择模块与机器学习算法之间的关系)过滤式(Filter)方法特征选择过程独立,与后续学习器的训练无关。包裹式(Wrapper)方法特征选择过程与机器学习算法有关,特征选择依赖于学习器的性能作为特征子集的评价准则,两者迭代进行。嵌入式(Embedding)方法特征选择过程与机器学习算法有关,特征选择与学习器训练过程融为一体,在学习器训练过程中自动进行特征选择。2.2.1过滤式方法
2.2.1过滤式方法单变量过滤式方法每个特征在特征空间中独立地进行排序不需要考虑特征之间的相互关系优点是计算效率高,不易过拟合缺点是不太能去掉冗余特征代表性方法包括方差检验法、卡方检验法、皮尔森相关系数法、互信息法等多变量过滤式方法考虑特征变量之间的相互关系常用基于相关性和一致性的特征选择优点是能够自然地处理冗余特征情况代表性方法Relief算法等2.2.1过滤式方法
2.2.1过滤式方法上述可以直接利用sklearn包的方差特征选择函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()#加载方差检验特征选择函数fromsklearn.feature_selectionimportVarianceThreshold
var=VarianceThreshold(threshold=1)#threshold为方差的阈值,默认0;这里剔除方差小于#1的特征var=var.fit_transform(iris.data)#返回特征选择后的特征2.2.1过滤式方法
2.2.1过滤式方法直接利用sklearn包的卡方检验特征选择函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()
#加载卡方检验特征选择函数fromsklearn.feature_selectionimportSelectKBest#移除topK外的特征fromsklearn.feature_selectionimportchi2#卡方检验
model=SelectKBest(chi2,k=5)#根据卡方统计量选择前k个值最高的特征model.fit_transform(iris.data,iris.target)var=model.get_support(True)#返回特征选择后的特征
2.2.1过滤式方法
2.2.1过滤式方法Pearson相关系数特征选择法可以直接利用sklearn包以及Scipy的pearsonr函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()
#加载Pearson相关系数法fromsklearn.feature_selectionimportSelectKBest#移除topK外的特征fromscipy.statsimportpearsonr#计算皮尔森相关系数fromnumpyimportarray
#SelectKBest第一个参数为计算评估特征是否好的函数,该函数的输入为特征矩阵和类别向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。model=SelectKBest(lambdaX,Y:array(map(lambdax:pearsonr(x,Y),X.T)).T,,k=3)#根据皮尔森相关系数选择前k个值最高的特征model.fit_transform(iris.data,iris.target)var=model.get_support(True)#返回特征选择后的特征2.2.1过滤式方法案例(基于互信息的特征选择)1.数据集此次采用数据集Paribas,该数据为法国巴黎银行个人用户理赔的匿名数据,可从/c/bnp-paribas-cardif-claims-management/data下载,部分数据如下所示,Paribas中每个数据样本的特征向量包含133维特征,既有数值型特征,也有文本型特征;target代表数据样本的类别标签2.2.1过滤式方法案例(基于互信息的特征选择)2.安装sklearn包等,引入特征选择相关库#引入基础依赖包importpandasaspdimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.feature_selectionimportmutual_info_classiffromsklearn.feature_selectionimportSelectKBest3.导入数据以及预处理#导入20000条样本示例数据df=pd.read_csv('paribas-train.csv',nrows=20000)#过滤非数字类特征numerics=['int16','int32','int64','float16','float32','float64']
numerical_features=list(df.select_dtypes(include=numerics).columns)
data=df[numerical_features]#划分特征数据和类别标签,并对数据进行训练集和测试集划分X=data.drop(['target','ID'],axis=1)#特征向量集合
y=data['target']#类别标签序列
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=101)2.2.1过滤式方法案例(基于互信息的特征选择)4.基于互信息度量对特征进行排序#计算训练集中每个特征与类别标签之间的互信息mutual_info=mutual_info_classif(X_train.fillna(0),y_train)mi_series=pd.Series(mutual_info)mi_series.index=X_train.columns#根据互信息值对特征进行排序,并绘制柱形图mi_series.sort_values(ascending=False).plot.bar(figsize=(20,8))5.选择排名最高的特性k_best_features=SelectKBest(mutual_info_classif,k=10).fit(X_train.fillna(0),y_train)print('Selectedtop10features:{}'.format(X_train.columns[k_best_features.get_support()]))最终选出来的特征为:按照互信息的特征排序2.2.2包裹式方法过滤式方法独立于任何特定的分类器。缺点完全忽略了所选特征子集对机器学习算法性能的影响,因此所选择的特征子集不一定对于模型是最佳的。与过滤式方法区别包裹式方法假定最优特征子集应当依赖于算法中的归纳偏置(即算法本身的一些启发式假设)。基于此,包裹式方法直接把最终将要使用的模型性能作为特征子集的评价标准包裹式方法目的为给定的模型选择最有利于其性能的特征子集。2.2.2包裹式方法给定预定义的机器学习算法,以分类算法为例,一个典型的包裹式方法将执行以下步骤:1)搜索特征的子集。2)通过分类器的性能来评价所选择的特征子集。3)重复步骤1和步骤2,直至达到某一条件。包裹式方法框架2.2.2包裹式方法机器学习算法中常用的包裹式方法1.RFE(RecursiveFeatureElimination)基本思想:RFE是一个经典的包裹式方法,它使用一个机器学习模型来进行多轮训练,每轮训练后,删除掉若干个重要性低的特征,再基于新的特征集进行下一轮训练,直到特征数满足自己的设定。主要步骤:1)RFE通过首先在原始特征上训练模型(例如分类模型),并为每个特征指定一个权重系数。2)将拥有最小绝对值权重的特征将从特征集中被剔除。3)如此迭代递归,直至剩余的特征数量达到所需的特征数量2.2.2包裹式方法sklearn包中集成了RFE的函数实现,如下述代码:#加载数据fromsklearnimportdatasetsiris=datasets.load_iris()
#加载REF特征选择函数和分类模型fromsklearn.feature_selectionimportRFEfromsklearn.linear_modelimportLogisticRegression#逻辑斯蒂分类模型
model=LogisticRegression()rfe=RFE(estimator=model,n_features_to_select=1,step=1)
rfemodel=rfe.fit_transform(iris.data,iris.target)2.2.2包裹式方法2.2. RFECV(RecursiveFeatureElimination-CrossValidation)RFECV是RFE的扩展,它通过交叉验证的方式执行RFE,以此来选择最佳数量的特征。主要步骤:1)指定一个外部的机器学习算法,比如SVM分类算法(在下一章中会详细介绍),通过该算法对所有特征子集进行交叉验证,以评估学习器的性能损失。2)对于某个特征,如果减少特征会造成性能损失,那么将不会去除该特征。3)最终筛选得到的特征子集作为所挑选的特征。2.2.2包裹式方法sklearn包同样提供了RFECV函数实现供直接调用,如下述代码:fromsklearn.svmimportSVCfromsklearn.model_selectionimportStratifiedKFoldfromsklearn.feature_selectionimportRFECVfromsklearn.datasetsimportmake_classification#创建一个分类模型X,y=make_classification(n_samples=1000,n_features=25,n_informative=3,n_redundant=2,n_repeated=0,n_classes=2,n_clusters_per_class=1,random_state=0)svc=SVC(kernel="linear")#SVC线性分类模型#创建RFECV特征选择模型,交叉验证使用roc_auc指标评估特征rfecv=RFECV(estimator=svc,step=1,cv=StratifiedKFold(2),scoring='roc_auc',min_features_to_select=1)rfecv.fit(X,y)2.2.2包裹式方法案例(基于Paribas数据的包裹式方法应用),详细代码见书和课程案例资源包。1.安装sklearn以及mlxtend包,引入特征选择相关库函数2.导入数据以及预处理3.借助包裹式方法前向搜索特征子集
在该数据集中,所选择的特征子集如下: Index(['v10','v14','v23','v34','v38','v45','v50','v61','v72','v129'],dtype='object')4.根据最终所选的特征子集验证算法性能该算法在训练集和测试集的性能指标分别如下:Trainset:RandomForestsroc-auc:0.7209127288873236Testset:RandomForestsroc-auc:0.71488149019708462.2.3嵌入式方法基本思想嵌入式方法在学习器训练过程中自动地进行特征选择,是一种将特征选择与学习器训练完全融合的特征选择方法,即将特征选择融入学习器的优化过程中。该方法先使用某些机器学习算法和模型进行训练,得到各个特征的权重系数以判断特征的优劣,然后再进行过滤。这种方式同时继承了过滤式方法和包裹式方法的优势,既同包裹式方法一样与分类器有交互,又同过滤式方法一样不需要迭代地评估特征集,因此计算效率高。嵌入式方法分类第一种是剪枝方法,它首先利用所有的特征来训练一个模型,然后试图通过将相应的系数降为0来消除一些特征。第二种是带有内置机制的模型用于特征选择,如ID3和C4.5。第三种是带有目标函数的正则化模型,它能通过最小化拟合误差使得特征系数足够小甚至精确为零。
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法3.ElasticNet正则ElasticNet正则是Ri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《房地产行业概述》课件
- 《长江之脉》课件
- 家居销售艺术
- 孩童成长的引导者
- 围墙低价改造合同范本
- 社区居民家庭困难补助申请书
- 保育理论题练习测试题附答案
- 配餐员精简版练习试题及答案
- 单位之间投资合同范本
- 临时道路使用补偿合同范例
- 妇女节女性健康知识讲座关爱女性健康主题宣教课件
- 2024年浙江省烟草专卖局(公司)管理类岗位招聘笔试真题
- 广东省惠州市惠东县2022年小升初语文试卷(学生版+解析)
- 智能建筑监理例会会议记录
- 中国稀土热障涂层材料行业分类、市场运行态势及产业链全景图谱分析报告
- 2025年九年级上册道德与法治核心知识点梳理汇编
- 2024年河南省郑州某中学小升初数学试卷(含答案)
- 2024 湖南省公务员考试真题及答案(A类、B类、行政执法、综合管理岗、省考)5套
- 七年级数学新北师大版(2024)下册第一章《整式的乘除》单元检测习题(含简单答案)
- 2025年春新冀教版英语三年级下册课件 2L1
- 《英国小说家罗琳》课件
评论
0/150
提交评论