本文根据燕山大学软件工程专业机器学习课程期末复习纲要编写,文本内容来源为上课所使用的PPT,由于时间紧迫这个版本是比较全的知识点,只包含关键词的速记突击版本后续会上传。
机器学习是人工智能的一个分支。我们使用计算机设计一个系统,使它能够根据提供的训练数据按照一定的方式来学习;随着训练次数的增加,该系统可以在性能上不断学习和改进;通过参数优化的学习模型,能够用于预测相关问题的输出。
推理期(只要给机器赋予逻辑推理能力,机器就拥有智能)——知识期(要使机器拥有智能就必须设法使机器拥有知识)——学科形成(作为独立学科开始发展)——繁荣期(神经网络被重视,成为深度学习理论的基础)
监督学习:模型从有标记的训练数据中推导出预测函数(分类、回归)
半监督学习:模型在不和外界交互的情况下利用未标记样本提升学习性能
无监督学习:模型从无标记的数据中推断定论(聚类)
强化学习:给定数据学习选择一系列行动以最大化长期收益
数据预处理:数据清洗、数据集成、数据采样
特征工程:特征编码、特征选择、特征降维、规范化(标准化、区间缩放、归一化)
数据建模:回归问题、分类问题、聚类问题、其他问题
结果评估:拟合度量、查准率、查全率、F1值、PR曲线、AUC、ROC曲线
**实践流程:**准备数据;配置网络(定义网络,定义损失函数,定义优化算法);训练网络;模型评估;模型预测
内容:对各种脏数据进行对应方式的处理,得到标准、干净、连续的数据提供给数据统计、挖掘等使用
意义:保证数据完整性、唯一性、合法性、权威性、一致性
是指对目标领域、场景的特定原始数据进行采集的过程,采集的数据以图像类、文本类、语音类、视频类等非结构化数据为主。
就是对随机现象的模拟,根据给定的概率分布从而模拟一个随机事件。另一说法就是用少量的样本点去近似一个总体分布,并刻画总体分布中的不确定性。
原始数据存在数据不平衡的问题:数据集类别分布不均(二分类,两者数据差距过大)采用过采样、欠采样等方式解决。
面临不平衡的数据集的时候传统模型评价方法不能精准的衡量模型的性能。
在数据集中找到有用的特征属性,通过组合现有特征创建新特征的子集。(新增特征子集是原来特征的映射)
数据集中经常会出现字符串信息,这类信息不能直接用与算法计算需要转化为数值形式进行编码。
目标:提高预测的准确性;构造更快、消耗更低的模型;对模型有更好的理解和解释
方法:运用过滤法、包裹法、嵌入法、one-hot编码、语义编码
分类问题是有监督学习的核心问题
贝叶斯、SVM、决策树、逻辑回归
决策树是一种描述都样本数据进行分类的树形结构模型,由节点和有向边组成,内部每个节点表示一个属性上的判断,每个分支表示一个判断结果的输出,每个叶节点表示一种分类结果。
从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到达到叶子节点,将叶子节点存放的类别作为决策结果。
特征变量的选择:通过信息增益、信息增益比、Gini指数等方法选择
决策树的生成:例如ID3、C4.5、CART等
剪枝:通过剪枝来避免过拟合
信息量不能为负数,信息量之间可以相加,随着概率单调递减(概率越高信息量越小);
信息熵表示信息不确定性的一种量度,熵越高越混乱
信息增益该变量的信息增益越高则分类效果越好(特征前熵-特征后熵)
信息增益比处理选择取值较多的特征的问题,只有不同变量分裂出不同个数字节点的情况下才会起作用。
Gini指数:Gini指数越小则变量纯度越高
ID3算法:以信息增益为准来选择分支
C4.5算法:以信息增益比为基准来选择分支
CART算法:使用Gini指数来选择分支的特征变量(二叉树)
原因:防止过拟合
策略:预剪枝(降低过拟合风险,显著减少时间开销,存在欠拟合风险)、后剪枝(欠拟合风险小,泛化性能优秀,训练时间开销大)
判断决策树泛化性能是否提升的方法:留出法(预留一部分数据作为验证集
估计先验概率 P ( c ) P(c) P(c);为每个属性计算条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c);计算后验概率
在分类问题情况下,所有相关概率都已知的理想情况下,贝叶斯考虑如何基于这些概率和误判损失来选择最优的类别标记。
贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的类别标记。
然而现实中很难直接获得,机器学习所要实现的是基于有限的训练样本尽可能准确地估计出后验概率,主要用两种策略:判别式模型和生成时模型
极大似然估计:试图在所有可能的取值中找到一个使数据出现的“可能性”最大的值。
朴素贝叶斯分类器采取了“属性条件独立性假设”:每个属性独立地对分类结果发生影响。
支持向量机(SVM),是一种有监督学习方法,寻找具有最大边缘(间隔)的超平面,同时面对近似线性可分的情况需要适当放宽这个间隔,引入软间隔和松弛因子,面对更复杂的低维线性不可分的情况,通过使用核函数将数据点映射到高维,寻找超平面进行划分,使得该平面两侧距离该平面最近的两类样本之间的距离最大化。
线性可分SVM,应选择“正中间”,容忍性好,鲁棒性高,泛化能力最强。
超平面方程: f ( x ) = ω T x + b = 0 f(x)=ω^T x+b=0 f(x)=ωTx+b=0
最大间隔:寻找参数 ω 和 b,使得 γ 最大。
线性可分:拉格朗日乘子法,SMO算法
近似线性可分SVM:由于噪声存在或数据本身分布存在偏差,现实中大多数情况下很难实现二类问题的完美划分,需要引入软间隔与松弛变量、Hinge Loss、惩罚因子。
对于一维线性不可分,映射到二维空间就可以获得一条直线,仍不可分变换坐标空间,二维不可分则映射到三维空间找平面
本质就是一个全连接层
回归分析用于预测自变量和隐变量之间的关系,只管来说回归问题提等价于函数拟合,根据变量个数可分为一元回归分析和多元回归分析。
一元线性回归算法流程:
损失函数:
平均绝对误差MAE,又被称为l1范数损失
平均平方误差MSE,又被称为l2范数损失
均方根差RMSE,是MSE(平均平方误差)的算术平方根
求解:最小二乘法原理,同故宫最小化误差的二平方和,使得拟合对象无限接近目标对象。主要思想就是求解未知参数,是的理论值和观测值之差(残差)的平方和最小。
缺点:主要针对线性函数有全局最优解且是闭式解,针对更复杂的函数难以起作用。
求解:
可看成是更简单的一种最小二乘法最后一步解方程的方法,梯度下降法是用来计算函数最小值的。
根据计算一次目标函数梯度的样本数量可分为:批量梯度下降(BGD),随机梯度下降(SGD),小批量梯度下降(mini-batch GD)
BGD:
训练过程中每一步迭代都使用训练集中的所有内容,也就是说利用现有参数对训练集中的每一个输入生成一个估计输出,然后跟实际输出进行比较,统计所有误差,求平均来作为更新参数的依据。
优点:每一步都利用了训练集中的所有数据,因此当损失函数达到最小值以后,能够保证此时的梯度为0,换句话说就是能够收敛,因此,使用BGD时不需要逐渐减小学习速率
缺点:每一步都需要所有数据,因此随着数据集的增大,运行速度会越来越慢
SGD:
优点:每次只计算一个样本,收敛非常快
缺点:随机抽取样本,误差是不可避免的,每次迭代的梯度受抽样的影响比较大
mini-batch GD:
小批量梯度下降结合了批量梯度下降和随机梯度下降的优点,他以一次小批量的训练数据计算目标函数的权重并更新参数。
挑战:
梯度下降的改进:
Momentum:若当前梯度与历史累计梯度方向一致则当前梯度会被加强反之则减弱。
AdaGrad:每一次迭代,不同参数使用不同的学习率
Adam:利用梯度的一阶矩和二阶矩估计动态调整每个参数的学习率,优点在于经过偏置校正后,每一次迭代学习率都有一个确定的范围,参数较为平稳。
聚类问题:无监督学习中,训练样本的标记信息是未知的。将数据集中的样本划分为若干个不相交的子集。既可以作为一个单独的过程,也可以作为其他学习任务的前驱过程。
聚类性能度量,亦称为聚类的”有效性指标“,与监督学习中的性能度量作用类似。一般来讲,同一蔟的样本尽可能彼此相似,不同蔟的样本尽可能不同,”簇内相似度“高”且蔟间相似度“低聚类效果好。外部指标:聚类结果与某个”参考模型【Jaccard、FM、Rand指数在0.1区间内越大越好】"进行比较;内部指标:直接考察聚类结果而不使用任何参考模型。【DB指数 越小越好、Dunn指数 越大越好】
随机选取k个点作为初始的聚类中心点,根据每个样本到聚类中心点的距离,把样本归类到相距它最近的聚类中心代表的类中,再计算样本均值,若相邻的两个聚类中心无变化结束迭代,否则改过程重复进行。
选取质心;分配数据点;更新聚类中心;判断聚类中心的值是否变化
基于层次的聚类方法:层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构,数据集划分既可采用“自底向上”的组合逻辑,也可反向,所以可分为:聚合层次聚类和划分层次聚类。
聚合层次聚类:采用自底向上的策略,开始时每一个样本自己就是一个类,称为原子聚类,根据这些样本之间的相似性将这些样本对象进行合并。
**划分层次聚类:**采用自顶向下的策略,他首先将所有对象置于同一个蔟中,然后逐渐细分直至每个对象自成一簇,豁达到了某个终止条件,该种方法一般较少使用。
自底向上的聚合策略,首先将数据集中的每一个样本看作一个初始聚类,然后在算法运行时每一步找出距离最近的两个聚类簇进行合并,改过程不断重复,直至到达预设的聚类簇的个数。三种度量方式:最小距离、最大距离、平均距离
给定包含n个对象的数据集D,聚类簇距离度量函数d,聚类簇数为k
计算所有样本间的距离
更新聚类簇及样本间距离
重复上述过程,直至聚类簇数位设定的参数k
同一类别的样本,他们之间是紧密相连的,也就是说,在任意样本不远处一定有同类别的样本存在。样本密度出发考虑样本间的可连接性,基于可连接样本不断扩展聚类的蔟实现聚类的目的。
基于一组“邻域”参数,来刻画样本分布的紧密程度。
基本概念:
ϵ邻域
核心对象
密度直达
密度可达
密度相连
示例:令MinPts=3,且虚线显示出 ϵ 邻域; x 1 x_1 x1为核心对象, x 2 x_2 x2由 x 1 x_1 x1密度直达, x 3 x_3 x3由 x 1 x_1 x1密度可达, x 3 x_3 x3与 x 4 x_4 x4密度相连。
DBSCAN对蔟的定义:由密度可达关系导出的最大密度相连样本集合
集成学习是一个过程:按照某种算法生成多个模型再将这些模型组合起来解决某个问题,通常用来提高模型的性能或者用来降低模型选择不当的可能性。集成个体应好而不同。有一个关键假设:基学习器的误差相互独立,好而不同是集成机器学习研究的核心,大致可分为两类:
从偏差-方差权衡的角度看,AdaBoost主要关注降低偏差,因此AdaBoost能基于泛化特性相当弱的分类器构建出很强的集成分类器
先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续得到更多关注,然后集训调整后的样本分布来训练下一个基学习器,直到基学习器的数目达到事前指定的T,最后将这T个基学习器进行加权结合。
AdaBoost采用了boosting的算法框架,通过改变数据分布学习多个基本分类器,这些数据分布由上一个基本分类器分类出来的结果决定,确定下一步输入样本的权值。将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
计算样本权重
赋予训练集中的每一个样本权重,构成权重向量,将其初始化为相等值,都为1/m
计算错误率
在训练集上训练出一个弱分类器,并计算分类器的错误率
计算弱分类器的权重
为当前的分类器赋予权重a,计算公式为 α = 1 2 l n ( 1 − ϵ ϵ ) α=\frac{1}{2}ln(\frac{1-ϵ}{ϵ}) α=21ln(ϵ1−ϵ)
调整样本权重值
根据上一次的训练结果,调整权重值(上次分类正确权值降低,分类错误权重增加)
给定一个训练数据集,队训练样本进行采样,产生若干个不同的子集,再从每个子集中训练出一个基学习器,如果每个子集都完全不同则甚至不足以进行有效学习,为解决这个问题考虑使用相互有交叠的采样子集。
基学习器不存在强依赖关系,采用并行化生成的方法,需要用到自助采样法(给定包含t
个样本的数据集,随机取出一个样本放到采样集中,再放回,经过m次后得到一个m个样本的采样集。
随机森林:在Bagging框架的基础上,进一步在决策树的训练过程中引入了随机属性选择。
森林:任意两棵树的相关性:相关性越大则错误率越大;每棵树的分类能力越强,整个森林的错误率越低。
构建流程:
假设有m个样本的训练集,需要的弱分类器为T个。
对样本使用自助采样法进行随机抽样,共采样T个包含m条样本的采样集;构建决策树时,传统决策树在选择属性时根据当前节点的属性集合中选择一个最优属性,但是在RF中对基决策树中的每个节点,先从节点的属性集合中随机选择一个包含k个属性的子集,再从这个子集中选择一个最优属性用于划分;将构建的T个弱分类器进行结合,得到强分类器。
平均法:
对于树脂类的回归预测问题,通常使用的结合策略是平均法(算术平均法、加权平均法)一般而言,在个体学习器性能相差较大时宜采用加权平均法,在个体学习器性能相近时宜采用简单平均法。
投票法:
绝对多数投票法:得票过半数则预测为该标记否则拒绝预测
相对多数投票法:的票最多的标记,若有多个同时获得最高票数的标记则从中随机选择
加权投票法:每个基学习器的分类票数和权重相乘,最终将各个类别的票数求和,最大值即为输出
学习法:
代表方法是Stacking,主要是利用弱学习器的学习结果作为输入,将初始样本的标记当作样例标记,重新训练新的学习器。
在这种情况下,将弱学习器称为出基学习器,将用于结合的学习器称为次级学习器。
准确率:分类正确的样本个数占所有样本的个数
精确率:分类正确的样本个数占分类器所有正样本个数的比例(基数是预测结果的正例)
召回率:分类正确的正样本个数占正样本个数的比例(基数是真实情况的正例)
F1:精确率与召回率的调和平均值
PR曲线:P指精准率,R指精确率,PR曲线用来描述模型的优劣
神经网络是由具有适应性的简单单元(神经元模型)组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的反应
机器学习中的神经网络通常是指“神经网络学习”,或者机器学习与神经网络两个学科的交叉部分。
神经元模型即上述定义中的简单单元,是神经网络的基本成分。
生物神经网络:每个神经元与其他神经元相连,当他兴奋时就会向相连神经元发送物质,改变神经元内的电位,如果电位超过一个阈值,那么它就会被激活,即兴奋起来,向其他神经元发送化学物质。
MP神经元模型:输入:来自其他n个神经元传递过来的输入信号;处理:输入信号通过带权重的链接进行传递,神经元接收到总输入值将神经元的阈值进行比较;输出:通过激活函数的处理得到输出。能轻易地实现逻辑与、或、非运算。
激活函数:理想的激活函数时越阶函数,0表示抑制1表示激活,越阶函数具有不连续、不光滑等性质,常用的是Sigmoid函数。
感知机学习:给定训练数据集,权重与阈值可通过学习得到。
定义:每层神经元与下一层神经元全互联,神经元之间不存在同层链接也不存在跨层链接。
前馈:输入层接受外界输入,隐含层与输出层神经元对信号进行加工,最终结果由输出层神经元进行输出。
学习:根据训练数据来调整神经元之间的“连接权重”以及每个功能神经元的“阈值”。若两类模式线性可分,则感知机学习过程一定会收敛。单层感知机的学习能力非常有限,只能解决线性可分问题,对于非线性可分为题采用多层感知机实现。
多层网络:包含隐藏层(输入层与输出层之间的神经元称为隐层或隐含层)的网络
理想的激活函数时越阶函数,0表示抑制神经元1表示激活神经元
越阶函数具有不连续、不光滑等性质,常用的是Sigmoid函数。
输入层:主要用于获取输入的信息,比如黑白照片的像素是黑色还是白色的,大小取决于输入信息的规模
隐藏层:主要进行特征提取,调整权重让隐藏层的神经单元对某种形式形成反应
输出层:用于对接隐藏层并输出模型结果,调整权重以对不同的隐藏层神经元刺激形成正确的反应,输出的兴奋度即为结果
全连接神经网络:每层每个节点均和上一层的所有节点相连
损失函数:是用来度量模型的预测值 f ( x ) f(x) f(x)与真实值Y的差异程度的运算函数,它是一个非负实值函数,通常使用 L ( Y , f ( x ) ) L(Y, f(x)) L(Y,f(x))来表示,损失函数越小,模型的鲁棒性就越好。
偏置向量:偏置单元,它其实就是函数的截距,与线性方程 y = w x + b y=wx+b y=wx+b中的 b b b 的意义是一致的。在 y = w x + b y=wx+b y=wx+b中, b b b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。神经网络的参数也可以表示为: ( W , b ) (W, b) (W,b),其中 W W W表示参数矩阵, b b b表示偏置项或截距项。其作用是给网络分类增加平移的能力。
BP算法
最成功的训练多层前馈神经网络的算法,也是使用最多的算法。
工作流程:将输入示例提供给输入层神经元,逐层将信号前传直到产生输出结果;计算输出层与真实值的误差,将误差使用BP算法传播到整个网络,对连接权重及阈值进行调整;该迭代过程循环进行,直到达成某些条件停止为止。
标准BP算法:
每次针对单个训练样例更新权值和阈值
参数频繁更新,不同样例可能抵消,需要多次迭代
累计BP算法:
优化目标是最小化整个训练集上的累计误差
读取整个训练集一遍才对参数进行更新,参数更新频率较低
多层前馈网络表示能力:
只要一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数
多层前馈网络局限:
神经网络由于强大的表示能力,经常过拟合,表现为训练误差持续降低但测试误差却上升。
如何设置隐层神经元个数暂未解决,实际应用中只能试错
缓解过拟合的策略:
早停:训练误差降低、验证误差升高则停止训练
正则化:误差目标函数中增加一项描述网络复杂程度的部分
可能存在多个局部极小值但只会有一个全局最小值。
如何跳出局部极小达成全局最小呢?
模拟退火:每一步都以一定概率接受比当前更差的结果
梯度随机下降:在计算梯度时加入随机因素
卷积层:
卷积计算=特征抽取
卷积核深度=上一层数据输入的深度
多个卷积核:一个卷积核提取一种局部模式
卷积核个数=提取特征的个数
多层卷积:一层卷积得到的特征往往是局部的,层数越高学到的特征就越全局化
每层卷积层由若干卷积单元(卷积核)组成,每个参数都是通过反向传播算法优化得到的。
卷积运算的目的是提取输入的不同特征,三个关键词:卷积核(用于对输入图像进行共享权值的遍历);步长(卷积核在图片上移动的大小);填充(满足输出的图像的维度要求)
卷积核:往往是行数和列数都为奇数的矩阵,用于图像模糊、平滑处理(均值滤波器和高斯滤波器)大的卷积核不利于模型深度的增加,计算性能也会降低。
卷积核和图像尺寸不匹配要先进行填充
Padding解决的问题:每卷积一层下一层输入的维度都会降低、边缘信息利用不够;优点:卷积核大小不再限制深度
激活层:
加入非线性元素,在同一个网络中只是用一种激活函数。
池化层:
在高和宽的层面上进行采样,不改变深度维度
全连接层:
多层映射成一个一维向量;打破卷积层的空间限制,对不同特征进行加权;输出层就是对应每个类别的的得分;
本质上是一种输入到输出的映射,只要使用已知的模式对卷积网络加以训练,网络就具有输入输出之间的映射能力,也参照了反向传播算法。
第一阶段向前传播:从样本集中取得样本,将x输入网络,获得输出结果
第二阶段向后传播:采用BP算法对误差处理进行更新网络权重
LSTM与RNN结构类似,都是链状结构,但是其中的重复块有不同的结构,依靠门控制机制解决信息遗忘问题。
用三种门机制进行控制:遗忘门(决定丢弃哪些信息),输入门(决定什么样的新信息被存在细胞状态中,有两层sgimoid决定要存放在细胞状态的信息量的大小,tanh层创建一个新的候选值向量,下一步对这两个信息进行更新)和输出门(计算细胞状态来确定输出的整个细胞单元的状态,首先使用sigmoid确定输出哪个部分然后把细胞状态通过tanh处理并与sigmoid门的输出相乘,最终仅输出确定输出的部分。
GRU只有两个门(遗忘门和输入门合并成一个更新门)GRU参数跟少因此更容易收敛。
训练集:用于构建学习模型的数据集
验证集:辅助构建模型,在构建过程中评估模型,提供无偏估计进而调整模型参数
测试集:用于评估训练好的模型的性能
理解:机器学习模型中一般有两类参数:一类需要从数据中学习和估计得到,称为模型参数(Parameter)——即模型本身的参数,比如线性回归直线的加权系数(斜率)及其偏差项(截距)。还有一类则是机器学习算法中的调优参数,需要人为设定,称为超参数
参数和超参数的区别:参数模型是模型内部的配置变量,需要用数据估计模型参数的值;模型超参数时模型外部的配置之,需要手动设置超参数的值。
超参数有哪些:梯度下降算法中的学习速率α,迭代次数epoch,网络层数,网络节点数,批量大小batch-size,k近邻法(KNN)中的k(最相近的点的个数),决策树模型中树的深度。
模型学习的参数过多导致拟合函数完美预测训练集,但对新数据的测试集预测结果较差,过拟合通常发生在模型过于复杂的情况下,会导致模型预测性能变弱,增加数据的波动性
改进方法:
模型泛化能力差,训练好的模型在训练集表现差、测试集表现也很差。模型拟合程度不高,数据离拟合曲线较远,模型没有很好地捕捉到数据特征。
改进方法:
DNN、CNN输入、输出定长,处理输入、输出边长问题效率不高,无法单一解决时序相关序列问题
RNN不同于是一种双向传递的神经网络,主要用来处理序列数据,当前输出与前面的输出也有关,网络会对前面的信息进行记忆并用于当前神经元的计算。
模型训练:向前传播算法
使用形式: