根据大数定理可知,当训练集大小 || 趋向于无穷大时,经验风险就趋向于期望风险。然而通常情况下,我们无法获取无限的训练样本,并且训练样本往往是真实数据的一个很小的子集或者包含一定的噪声数据,不能很好地反映全部数据的真实分布。经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高.这就是所谓的过拟合(Overfitting)
原因
过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的。本质上:算法从训练集的统计噪声中获取了信息并表达在模型结构的参数中。
解决方法
数据上:加数据,数据增强,扩大样本集,获得更多有效特征,减少噪声影响。
模型上:降低模型复杂度。使用小模型,减少网络层数,神经元个数等 ,Dropout
训练上:Early stopping
正则化:L1和L2正则化,标准化(BN)
集成学习:集成多个模型,降低单一模型过拟合风险
为了解决过拟合问题,一般在经验风险最小化的基础上再引入参数的正则化 (Regularization)来限制模型能力,使其不要过度地最小化经验风险。或者使用提前停止训练方法。针对梯度下降的优化算法,除了加正则化项之外,还可以通过提前停止来防止过拟合。如果在验证集上的错误率不再下降,就停止迭代.这种策略叫提前停止。
正则化项用来减少参数空间,避免过拟合。ℓ1 范数的引入通常会使得参数有一定稀疏性,因此在很多算法中也经常使用.从贝叶斯学习的角度来讲正则化是引入了参数的先验分布,使其不完全依赖训练数据。
欠拟合(Underfitting),即模型不能很好地拟合训练数据,在训练集,测试集上的错误率都比较高.欠拟合一般是由于模型能力不足造成的。
原因
解决方法
**偏差(Bias)**是指一个模型在不同训练集(同一数据集的不同次采样)上的平均性能和真实结果的偏离程度,可以用来衡量一个模型的拟合能力。
**方差(Variance)**是指一个模型在不同训练集上的差异,刻画了数据扰动造成的影响。可以用来衡量一个模型是否容易过拟合。
**噪声(Noise)**是当前学习任务上任何学习算法所能达到的期望泛化误差的下界即表示了任务本身的难度(任何算法误差都不可能低于该噪声值)。
泛化误差可以分解为偏差和方差和噪声之和。
泛化性能是由算法的学习能力,数据的充分性,任务本身的难度共同决定的。
方差一般会随着训练样本的增加而减少.随着模型复杂度的增加,模型的拟合能力变强,偏差减少而方差增大,从而导致过拟合。
当一个模型在训练集上的错误率比较高时,说明模型的拟合能力不够,偏差比较高.这种情况可以通过增加数据特征、提高模型复杂度、 减小正则化系数等操作来改进.当模型在训练集上的错误率比较低,但验证集上 的错误率比较高时,说明模型过拟合,方差比较高.这种情况可以通过降低模型 复杂度、加大正则化系数、引入先验等方法来缓解.此外,还有一种有效降低方差 的方法为集成模型,即通过多个高方差模型的平均来降低方差.
残差是观察值与模型估计值之间的差。
误差是观察值与真实值之间的差。
估计类条件概率一种常见策略是假定其符合某种确定的概率分布形式,在基于训练样本对概率分布的参数进行估计。事实上,概率模型的训练过程就是参数估计过程。频率派认为参数虽然未知但是客观存在的固定值,可通过优化似然函数等准则来确定参数值;贝叶斯派认为参数是未观察的随机变量,本身有分布,故假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。
假设样本数据由真实数据分布p_data(x)生成。最大似然可以看作使模型分布p_model(x;θ)尽可能和经验分布 数学公式: $ \hat p_{data} $相匹配的尝试。
频率派认为真实参数θ是未知的定值,贝叶斯派认为参数是随机变量。根据已知知识表示θ的先验分布,根据数据集计算后验分布。
贝叶斯估计与最大似然估计有两点重要区别:一,不像最大似然方法预测使用θ的点估计,贝叶斯方法使用θ的全分布;二,贝叶斯先验分布,会使概率质量密度朝参数空间中偏好先验的区域偏移。
最大后验点估计
原则上应该使用θ的完整后验分布进行预测。但后验计算复杂,点估计提供了一个可行解。MAP估计选择后验概率组大的点。
生成式模型是直接对联合概率分布P(X,Y)进行建模
判别式模型是直接对条件概率分布P(Y|X)进行建模
机器学习处理流程
问题建模->数据探索->特征工程->模型训练->模型融合
特征工程是对原始数据进行一系列的处理,旨在去除原始数据中杂质和冗余,设计更加高效的特征以刻画求解的问题与预测模型之间的关系。
常用数据类型:
1)结构化数据:可看作数据库中一张表,每列有明确定义,包含数值型和类别型两种
2)非结构化数据:包含文本,图像,音频等,其包含信息无法用一个简单数值表示。
a. 线性函数归一化(Max-Min Scaling)。对原始数据进行线性变化,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。
X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}} Xnorm=Xmax−XminX−Xmin
X 为原始数据
b. 零均值归一化(Z-Score Normalization)将原始数据映射到均值为0,标准差为1的分布上。假设原始特征均值为μ,标准差为σ,则归一化公式为
z = x − μ σ z = \frac{x - μ}{σ} z=σx−μ
归一化与标准化
a. 所谓“归一”,就是把数据归到[0,1]或[a,b]这个区间内。归一化会改变原始数据的原始距离,分布和信息,标准化不会。
常用的方法有: min-max归一化y=(x-min)/(max-min)
b. 所谓“标准”,就是标准正态分布,把数据转换成标准正态分布。
常用的方法有:z-score标准化,即零-均值标准化,y=(x-μ)/σ
归一化与标准化使用场景:
对输出范围有要求,用归一化
数据较为稳定,不存在极端的极值,用归一化
数据存在异常值和较多噪声,用标准化
svm,knn,pca等都需要归一化或标准化
a. 序号编码。 序号编码通常用于处理类别间具有大小关系的数据。序号编码会按照大小关系对类别特征赋予一个数值ID,转换后依然保留大小关系
b.独热编码。通常用于处理类别间不具有大小关系的特征。当类别取值较多时考虑使用稀疏向量来节省空间;配合特征选择来降低维度。
c.二进制编码。先用序号编码给每个类别赋一个类别ID,后将ID对应的二进制编码作为结果
d.其他编码…
a. 数值特征的变化和组合
特征的线性组合仅适用于决策树以及基于决策树的集成学习算法,因为树模型不擅长捕获不同特征之间的相关性。
常用数值特征变换和组合:
1)多项式特征:x1 * x1, x1*x2, y = w1 * x1 + w2 * x2 + w3 * x1 * x2
2)比例特征:x1/x2
3)绝对值
4)max(x1, x2), min(x1, x2), x1 or x2
5) 分桶离散化:将连续数值特征划分到不同桶里
b. 类别特征与数值特征的组合
1)中位数,众数,最小/大值,标准差,方差,频数
c. 独热矢量的逻辑拼接
sex: male and age: 18
IDF(t) = log(文章总数 / 包含单词t的文章总数+1)
若一个单词在很多文章中都出现,则他可能是个通用词汇,对于区分文章特殊语义贡献较小
b. n-gram模型。将连续出现的n个词组成词组作为一个单独的特征。
c. 主题模型。从文本库中发现有代表性的主题,并且计算出每篇文章的主题分布。词袋和n-gram模型无法识别两个不同的词是否具有相同主题。也就是说给定两个词是否有更高概率出现在同一文章中。假设有有K个主题(超参),把任意文章表示为K维主题向量,每一维度表示一个主题,权重代表该篇文章属于这个主题的概率。主题模型要做的就是从文本中发现有代表性的主题,并计算每篇文章对应哪些主题。
d. 词嵌入。将词映射成低维空间上的一个稠密向量。
word2vec是一种浅层的神经网络模型,有两种网络结构分别为cbow和skip-gram。cbow目标是根据上下文信息来预测当前词的生成概率而skip-gram是根据当前词来预测上下文中各个词的生成概率。在参数学习时由于最后softmax激活函数存在归一化项,需要迭代词汇表所有单词,过程缓慢,因此产生了分层softmax和负采样的改进方法。
LDA(迪利克雷模型)是利用文档中单词的共现关系来对单词按主题聚类,可以理解为对“文档-单词”矩阵分解,得到“文档-主题”和“主题-单词”两个概率分布。而word2vec是对“上下文-单词”矩阵进行学习,得到的向量融入了上下文共现特征。
主题模型和词嵌入两类方法最大的不同在于模型本身,主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(主题)。词嵌入一般表达为神经网络的形式,似然函数定义在网络输出上,需要学习网络权重以得到单词的向量表示。
下面介绍几种比较常用的逐层归一化方法:批量归一化、层归一化、权重归 一化和局部响应归一化。
批量归一化(Batch Normalization,BN)方法是一种有效的逐层归一化方法,可以对神经网络中任意的中间层进行归一化操作.在实践中归一化操作一般应用在仿射变换之后、激活函数之前。批量归一化是对一个中间层的单个神经元进行归一化操作(每个神经元处理k个样本的某个维度的数据),因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计信息.此外,如果一个神经元的净输入的分布在神经网络中是动态变化的,比如循环神经网络,那么就无法应用批量归一化操作。
层归一化(Layer Normalization)是对一个中间层的所有神经元进行归一化.对于 个样本的一个小批量集合 () = [(1,); ⋯ ; (,)],层归一化是对矩阵 () 的每一列进行归一化,而批量归一化是对每一行进行归一化。
样本包含多种属性,对于当前任务有用的属性称作相关特征,无用的称作无关特征。从给定特征集合中选择相关特征子集的过程称作特征选择。使用特征选择的原因主要是过多的特征会遇到维度灾难,并且会提升学习难度。
1)过滤式选择
先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。
2)包裹式选择
将最终要使用的学习器的性能作为特征子集的评价标准。也就是说包裹式特征选择目的是为给定学习器选择最有利的特征子集。
3)嵌入式选择
嵌入式特征选择是将特征选择过程和学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行特征选择。
模型融合即先产生一组个体学习器,再用某种策略将他们结合起来以加强模型效果。个体学习器得准确率越高、多样应越大,模型融合得提升效果就越好。
模型融合分为两类:
1)学习器之间不存在强依赖关系,可并行化,代表方法为Bagging方法和随机森林
2)学习器之间存在强依赖关系,必须串行化,代表方法为Boosting方法
Bagging方法是采用自助(Booststrap)采样法,有放回的在原数据集上采样得到若干个子训练集,每个子训练集作为不同学习器的训练集来训练模型。然后对各个子学习器的结果进行综合得到最终结果。
随机森林是对Bagging的改进,基学习器是决策树,对于基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后从这个子集中选择一个最优属性用于划分。
Boosting方法的训练过程中基模型是按次序训练的,基模型的训练集按照某种策略每次需要进行一次转换,最后对所有的基模型的结果进行线性综合。著名的算法有AdaBoost和提升树。
AdBoost算法是加法模型,损失函数为指数函数,二分类算法
提升树是加法模型,基学习器为决策树。二分类问题损失函数为指数函数,回归问题损失函数为平方差
梯度提升树:提升树只适合误差函数为指数函数和平法误差,对于一般的损失函数,梯度提升树算法可以将损失函数的负梯度在当前模型的值作为残差的近似值。
GBDT算法有两种描述,一种是基于残差的版本,损失函数是均方差(对均方差求导后就是真实值和预测值的残差方向);另一种是基于梯度的。其实二者都是基于梯度的,只不过均方差在求导后变为残差。
投票法:对于分类问题,选择投票多的分类结果,或者按照权重选择分类结果
平均法:对于回归问题,平均或者加权平均各个分类器的结果
Stacking:一种分层框架,第一层输入为原始训练集,第二层以第一层的各个模型的输出作为新特征接着训练。
在机器学习中通常把样本分为训练集和测试集,训练集用于训练模型,测试集用于评估模型。
留出检验(Holdout)
将原始样本集随机划分为训练集和验证集两个互斥的部分。该方法明显的缺点在于验证集上计算出来的最后评估指标与分组有很大关系。为取消随机性,引入交叉验证。
交叉检验
k折交叉验证:首先将全部样本划分为k个大小相等的样本子集,依次遍历k个子集,每次选择一个子集作为验证集,其他子集所谓训练集进行模型训练和评估;最后k个评估指标的平均值作为最终的评估指标 。
留p验证:每次选择p个样本作为验证集,剩余的作为测试集,将评估指标的平均值作为最终结果。n个样本里挑p个有Cpn中可能。当p等于1时即留一法。
自助法
对于总数为n的样本集,进行n次有放回的随机抽样得到大小为n的训练集。n次抽样中有重复采样的,有从未被采样的,将从未被采样的取出作为验证集。
准确率是所有类别整体性能的平均,如果希望对每个类都进行性能估计,就需要计算精确率(Precision)和召回率(Recall)
准确率(Accuracy),所有样本中标签预测正确的个数占总样本数的比例。
y为真实标签,y_hat为预测标签
准确率可以很直接的反应模型的好坏但是当数据类别分布不均匀时,占比大的类别往往时影响准确率的主要原因。比如样本中包含99个负样本,1个正样本,那么模型把所有数据都分类为负样本依旧可以获取0.99的准确率。
错误率(Error Rate),与准确率相反
精确率(Precision),类别 的查准率是所有预测为类别的样本中预测正确的比例(在判定为类别c的样本中,多少是对的)
召回率(Recall),也叫查全率,类别的查全率是所有真实标签为类别的样本中被预测正确的那部分所占的比例(在数据集中所有的样本c中,有多少被找到了)
精确率目的是“找的准”,召回率目的是“查的全”。精确率会漏掉一些”没有把握“的正样本,正样本被分的少,召回率就低了。召回可能会把一些不对的判为正样本,对应的精确率就低了。
在大多数情况下学习器是学习一个实值或者概率值,然后和一个分类阈值比较,大则为正类,否则负类。实际上,可以根据这个预测实数或者概率进行排序,将可能为正例的排在前面,不可能排在后面。分类过程则相当于在该排序序列中设置某个截断点将样本分为两类。不同的任务需求可能会采用不同的阶段点。若重视召回率,则在排序靠后处截断,若重视精准率则在靠前处截断
PR(Precision-Recall)曲线,纵轴是精准率,横轴是召回率。首先根据学习器预测结果进行排序,排在前面的是最可能为正例的样本(最有可能为类别c的样本),后面的是最不可能的正例样本。按照此顺序逐个把样本作为正例(类别c)进行预测(此处为截断点为阈值),计算出当前位置的精准和召回率,绘制PR曲线。
PR曲线可以直观地显示学习器在样本上精准率与召回率之间的关系。若曲线中有学习器A的PR曲线完全包裹了学习器B的曲线,则认为A的效果更好。
ROC(Receiver Operating Characteristic)全称叫受试者工作特征,与PR曲线类似,采用相同的方法但计算不同的横纵坐标值。ROC曲线以真正例率TPR(eg. 召回率)为纵轴,假正例率FPR(样本中所有负样本中被预测错了的部分的占比)为横轴绘图。
TPR:样本中所有正样本中被预测为正的部分的占比
FPR:样本中所有负样本中被预测为正的部分的占比
与PR曲线类似,若一个分类器的ROC曲线包含了另一个曲线,则前者性能更优。但是若两曲线相交,则需要比较线下面积即AUC。
相比PR曲线,ROC曲线在正负样本发生变化时,形状基本保持不变,而PR曲线则会发生剧烈变化。ROC曲线能尽量降低不同测试集带来的干扰,更客观衡量模型本身的性能。若需要查看模型在不同数据集上的表现则PR曲线更直观些。
AUC(Area Under Curve)
精确率、召回率等指标,都需要设定一个阈值去判别是属于正类还是负类。PR曲线和ROC曲线则是以排序后得每个样本作为阈值计算对应指标和绘图的,相当于把所有阈值都试了一遍。
ROC曲线越向左上方,效果越好,对应AUC的面积越大,AUC面积取值在0.5~1之间。其实,AUC考虑的是排序结果的好坏,将正例排在前面,AUC越大。AUC从概率的角度解释就是给定一组正负样例,分类器将正例排在前面的概率。
F值(F Measure)是一个综合指标,为精确率和召回率的调和平均
T,F代表真实与预测结果是否一致,P,N代表预测结果。
TP表示预测为正,真实标签为正,预测正确
TN表示预测为负,真实标签为负,预测正确
FP表示预测为正,真实标签为负,预测错误
FN表示预测为负,真实标签为正,预测错误
微平均是每一个类别混淆矩阵中对应元素的算术平均值计算出的各个指标。
m i c r o − P = T P ‾ T P ‾ + F P ‾ micro_-P = \frac{\overline{TP}}{\overline{TP} + \overline{FP}} micro−P=TP+FPTP
m i c r o − R = T P ‾ T P ‾ + F N ‾ micro_-R = \frac{\overline{TP}}{\overline{TP} + \overline{FN}} micro−R=TP+FNTP
m i c r o − F = 2 ∗ m i c r o − P ∗ m i c r o − R m i c r o − P + m i c r o − R micro_-F = \frac{2 * micro_-P * micro_-R}{micro_-P + micro_-R} micro−F=micro−P+micro−R2∗micro−P∗micro−R
正则化是被显式设计用于减少测试误差,提高泛化能力的策略。在许多正则化策略中,有些是对模型添加限制参数值的额外约束,有的是对目标函数添加额外项来对参数值进行约束。这些约束可以改变模型在测试集上的表现。这些约束有时被设计为编码特定类型的先验知识;有时这些约束被设计为偏好简单模型,提高泛化能力。其他的正则化如集成方法则结合多个假设来解释训练数据。
参数范数惩罚(带正则项和带约束条件是等价的)
许多正则化方法通过对目标函数添加一个参数范数惩罚限制模型的学习能力。当最小化带正则的目标函数时,它会降低原始目标函数关于训练数据的误差并同时减少在某些衡量标准下参数θ的规模。选择不同的参数范数会偏好不同的解。
L2正则化(岭回归):输入向量各个维度平方和的开方。使得权重更接近原点,L2正则化能让学习算法感知到具有较高方差的输入,因此与输出目标的协方差较小(相对增加方差)的特征的权重将会收缩。
L正则化:各个参数的绝对值之和。L1会产生更稀疏解。
参数共享
正则化参数的另一种方法是强迫某些参数相等。通常称为参数共享。
稀疏表示
除了直接惩罚模型参数外,还可以间接对模型参数惩罚比如惩罚神经网络的激活单元,得到稀疏的表示(表示中许多元素为0或接近0)
其他的正则化方法还包括:数据集增强,多任务学习,提前终止,dropout等操作。
纯优化最小目标代价函数J本身,而大多数机器学习问题关注的是某些性能度量P,其定义于测试集上,不一定可解,因此一般是通过降低代价函数J来间接优化P。机器学习算法的目标是降低来自真实数据的期望泛化误差,称为风险。但真实数据通常不知道,只有训练集中样本。因此机器学习转化为最小化训练集上的期望损失即最小化经验风险。但是最小化经验风险很容易过拟合,并且有有时,我们真正关注的损失函数不一定能被高效优化。在这种情况下通常会选择优化代理损失函数,比如用负对数似然代替0-1损失。在一些情况下,代理损失函数比原函数学的更多。
机器学习算法与一般优化算法不同的一点是机器学习算法目标函数通常可以分解为训练样本上的和,计算参数的每一次更新时通常仅使用整个代价函数中一部分项来估计代价函数的期望值。
1. 参数学习
在确定了训练集 、假设空间 ℱ 以及学习准则后,如何找到最优的模型 (, ∗ ) 就成了一个最优化问题。
批量梯度下降
批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和。当训练集中的样本数 量 很大时,空间复杂度比较高,每次迭代的计算开销也很大.
随机梯度下降
批量梯度下降法相当于是从真实数据分布中采集 个样本,并由它们计算出来的经验风险的梯度来近似期望风险的梯度.为了减少每次迭代的计算复杂度,我们也可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数。
批量梯度下降和随机梯度下降之间的区别在于,每次迭代的优化目标是对 所有样本的平均损失函数还是对单个样本的损失函数.随机梯度下降相当于在批量梯度 下降的梯度上引入了随机噪声.在非凸优化问题中,随机梯度下降更容易逃离局部最优点.
小批量梯度下降
小批量梯度下降法是批量梯度下降和随机梯度下降的折中.每次迭代时,我们随机选取一小部分训练样本来计算梯度并更新参数。
第 次迭代时,随机选取一个包含 个样本的子集,计算这个子集上每个样本损失函数的梯度并进行平均,然后再进行参数更新, 称为批量大小(Batch Size)
批量大小不影响随机梯度的期望,但是会影响随机梯度的方差.批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率.而批量大小较小时,需要设置较小的学习率,否则模型会不收敛.学习率通常要随着批量大小的增大而相应地增大。
2. 梯度估计修正
随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性(如果每次选取样本数量比较 小,损失会呈现振荡的方式下降)。一种有效地缓解梯度估计随机性的方式是通过使用最近一段时间内的平均梯度来代替当前时 刻的随机梯度来作为参数更新的方向,从而提高优化速度。
动量
随机梯度下降有时会很慢,动量方法旨在加速学习,特别是处理高曲率,小但一致的梯度或带噪声的梯度。动量算法积累了之前梯度指数级衰减的移动平均,并且继续沿该方向移动。动量定义为质量与速度的乘积,是该物体在它运动方向上保持运动的趋势,假设单位质量,则速度就是粒子的动量。动量算法是用之前积累动量来替代真正的梯度.每次迭代的梯度可以看作加速度.每个参数的实际更新差值取决于最近一段时间内梯度的加权平均值. 当某个参数在最近一段时间内的梯度方向不一致时,其真实的参数更新幅度变 小;相反,当在最近一段时间内的梯度方向都一致时,其真实的参数更新幅度变 大,起到加速作用
动量是刻画惯性的物理量。惯性体现在对前一个步伐信息的重利用上。参数的更新过程可以类比速度的变化。当前梯度好比当前时刻的加速度,前一次步伐好比前一时刻的速度,当前步伐好比当前时刻的速度。
3. 学习率调整
常用的学习率调整方法包括学习率衰减、学习率预热、周期性学习率调整以及一些自适应调整学习率的方法,比如 AdaGrad、RMSprop、AdaDelta 等.自适应学习率方法可以针对每个参数设置不同的学习率.
学习率衰减
较简单的学习率调整可以通过学习率衰减的方式来实现,不失一般性,这里的衰减方式设置为按迭代次数进行衰减。如分段常数衰减,即每经过 1 , 2 , ⋯ , 次迭 代将学习率衰减为原来的 1 , 2 , ⋯ , 倍。
学习率预热
可以在最初几轮迭代时,采用比较小的学习率,等梯度下降到一定程度后再恢复到初始的学习率,这种方法称为学习率预热。
自适应学习率算法
AdaGrad
独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有损失最大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数再学习率上有相对较小的下降。但对于训练深度神经网络模型而言,从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。
在 AdaGrad 算法中,如果某个参数的偏导数累积比较大,其学习率相对较小;相反,如果其偏导数累积较小,其学习率相对较大。但整体是随着迭代次数的增加,学习率逐渐缩小。AdaGrad 算法的缺点是在经过一定次数的迭代依然没有找到最优点时,由于这时的学习率已经非常小,很难再继续找到最优点。
AdaGrad采用历史梯度平方和来衡量不同参数的梯度稀疏性,取值越小表明越稀疏。
RMSProp
AdaGrad根据平方梯度的整个历史收缩学习率,可能使得学习率在达到这样得凸结构前就变得太小了。RMSProp改变梯度积累为指数加权的移动平均,使其在找到凸碗状结构后快速收敛。
Adam
可以看作动量法和RMSprop算法的结合,不但使用动量作为参数更新方向,而且可以自适应调整学习率。Adam算法一方面计算梯度平方g2的指数加权平均(和RMSprop算法类似),另一方面计算梯度g 的指数加权平均(和动量法类似)
Adam记录梯度一阶矩(E(g)),即过往梯度与当前梯度的平均,这体现了惯性保持;同时还记录了梯度的二阶矩(E(g^2)),即过往梯度平方与当前梯度平方的平均,为不同参数产生自适应的学习速率。
优化方法大体上可以分为两类:1)调整学习率,使得优化 更稳定;2)梯度估计修正,优化训练速度
4. 参数与超参数
在机器学习中,优化又可以分为参数优化和超参数优化.模型 (; )中的 称为模型的参数,可以通过优化算法进行学习.
超参数是用来定义模型结构或优化策略的. 常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化分布的参数项的系数、神经网络的层数、支持向量机中的核函数等.超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习.因此,超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过超参搜索的方法对一组超参数组合进行不断试错调整.
超参搜索算法包含的要素:目标函数,即算法要最大/小化的目标 ;搜索范围;步长等。
采样的应用?
采样本质是对随机现象的模拟,同样也是一种信息的降维,通过少量样本近似总体分布。对数据集的多次重采样可以挖掘更多信息,如自助法和刀切法通过对样本多次采样来估计统计量的偏差,方差等。利用重采样还可以在保持特定信息下有意识地改变样本的分布适应后续学习。
均匀分布随机数生成
一般采用线性同余法来生成离散均匀分布伪随机数。
不均衡样本集的重采样
很多分类模型在不均衡数据集上训练时会出现问题,主要原因是模型在训练时优化的目标函数和测试时使用的评价标准不一致。这种不一致体现在训练数据和测试数据分布不一致或者训练阶段不同类别的权重与测试阶段不一致。
处理不均衡的问题:
1)基于数据的方法
随机采样是处理不均衡样本集最简单的方法,主要分为过采样和欠采样。随机过采样是从少数类样本集中随机重复抽取样本得到更多样本;随机欠采样从多数类样本集中随机选取较少的样本。
过采样对少数类样本进行多次复制,增加训练复杂度,容易造成过拟合;欠采样丢弃一些样本会损失部分有用信息。
2)基于算法的方法
在样本不均衡时,也可以通过改变模型训练时的目标函数来矫正这种不均衡;当样本数目极其不均衡时,也可以将问题转化为单类学习。
常见采样方法
1)逆变换法
对于一些简单的分布可以直接使用均匀采样的扩展方法来产生样本点。然而,很多分布一般不好直接进行采样,可以考虑函数变换法。从目标分布p(x)中不好采样x,可以构造一个变换u=f(x)使得p(u)中采样u比较容易。通过先对u采样后通过反函数间接得到x。
2)拒绝采样
如果目标分布的积累分布函数的逆函数无法求解,可以构造一个容易采样的参考分布,先对参考分布采样,然后对得到的样本进行后续处理,使得最终样本服从目标分布。如拒接采样,重要性采样。
对于目标分布p(x),选取一个易采样的参考分布,使得对于任意x都有p(x)<=M.q(x),按照如下过程采样
a. 从q(x)中随机抽取一个样本xi
b. 从均匀分布U(0,1)产生一个随机数ui
c. 如果ui<(p(xi)/ Mq(xi))则接受样本xi,否则拒绝,重复a~c直到产生的样本被接受
3)MCMC采样
马尔可夫蒙特卡洛采样基本思想是针对带采样的目标分布,构造马尔科夫链,使得该马尔可夫链的平稳分布就是目标分布;然后,从任何一个初始状态出发,沿着马尔可夫链进行状态转移,最终得到的状态转移序列会收敛到目标分布,由此可以得到目标分布的一系列样本。实际操作中,核心点是如何构造合适的马尔可夫链即确定马尔可夫链的状态转移概率。常见的采样法包括Metropolis-Hastings采样和吉布斯采样。MCMC采样法得到的样本序列中相邻的样本不是独立的。若要得到独立的样本可以同时运行多条链或者在一条链上每隔若干样本才选取一个。
1. K-Means
k-means属于无监督学习,预先给定簇的个数k,最小化样本与簇中心的平方误差。具体过程如下,首先数据预处理,如归一化,处理离群点等,然后随机选取K个中心,定义代价函数,迭代t步直到代价函数J收敛。
K均值在迭代中,首先固定簇中心,调整每个样例所属类别使代价函数减少,然后固定类别,调整簇中心使代价函数减少。两个过程交替进行,J单调递减。
K-means的优缺点
缺点
1)需要预先确定初始K值,且该值不一定与分布相吻合
2)K均值只收敛到局部最优,受初始值很大
3)易受噪声点影响
4)样本只能划分为单一类
5)无法解决数据分布差别较大的情况(类别数量比相差大)
优点
1)对于大数据集,K均值可伸缩,高效,计算复杂度O(NKt),t为迭代次数,N为样本数
调优角度
1)数据归一化和离群点处理
K均值聚类本质是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对聚类结果产生决定性影响,所以未做归一化和同一单位的数据无法直接参与运算;离群点和噪声会对均值产生较大影响,导致中心偏移。因此k均值使用前要对数据做预处理。
2)合理选择K值
k值得选择是k均值算法得主要缺点,常用方法为手肘法或Gap Statistic方法。
3)采用核函数
核聚类的思想是将输入空间中的数据点映射到高维的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,达到更准确的聚类结果。
2. 高斯混合模型
高斯混合模型假设每个簇的数据都是符合高斯分布的,当前数据呈现的分布是各个簇的高斯分布叠加的结果,即使用多个高斯分布函数的线性组合来对数据分布进行拟合。理论上,高斯混合模型可以拟合任意分布。高斯混合模型的步骤就是寻找各个簇的均值,方差和分模型的权重。
高斯混合模型和K均值都是聚类算法,都需要指定K值,都使用EM算法求解,都只收敛于局部最优。相比于K均值,可以给出样本属于某类的概率。高斯混合模型不仅可以聚类还可以用于生成新样本点。
3. 聚类评估
聚类评估任务是估计在数据集上进行聚类的可行性,以及聚类结果的质量。主要分为三个子任务
1)估计聚类趋势
这一步骤主要检测数据分布中是否存在非随机的簇结构。通过观察聚类误差是否随聚类类别数量增加而单调变化。如果数据是随机的,即不存在非随机簇机构,聚类误差随聚类类别数量增加变化幅度应不显著。
2)判定数据簇数
手肘法,gap statistic法
3)测定聚类质量
不同算法结果不同,在无监督情况下,通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果
度量指标:
a. 轮廓系数
b. 均方根标准差,衡量结果同质性即紧凑程度
c. R方,衡量聚类差异度
对原始数据进行特征提取后有时会得到高维的特征向量。这些高维向量可能会包含冗余和噪声,因此可以通过降维的方式寻找数据内部的特性提升表达能力,降低训练复杂度。
KNN
KNN是一种常用的监督学习方法,给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个邻居信息进行预测。在分类任务中,选择k个邻居中出现最多的类别作为预测结果;回归任务中,使用k个样本的平均值作为预测结果。
PCA
主成分分析旨在找到数据中的主成分,利用这些主成分表征原始数据,从而达到降维的目的。PCA的目标是最大化投影方差即找到一个方向使样本在该方向投影后方差最大。具体步骤如下:
1)对样本数据进行中心化处理
2)求样本协方差矩阵
3)对协方差矩阵进行特征值分解,将特征值按照降序排列
4)取特征值前d大对应的特征向量W1~d,计算xi在wj方向上的投影即wj^t * xi
PCA同样可以从回归问题的角度分析,即在高维空间中,我们实际要找到一个d维的超平面,使得数据点到这个超平面的距离平方和最小。
LDA
线性判别分析是一种有监督的降维算法,而PCA没有考虑到数据的标记信息,只是把原数据映射到一些方差比较大的方向上而已。
LDA首先是对分类任务服务的,要找到一个方向使得投影后的样本按照类别分开。LDA的中心思想是类内小,类间大。只需要得到样本均值和类内方差就可以得出最佳投影方向。
PCA与LDA的区别
当LDA扩展到高维多类时二者的过程是类似的。但原理还是有区别的。
PCA选择的是投影后数据方差最大的方向。由于无监督,PCA假设方差越大信息量越多,用主成分表示原始数据可以去冗余降维;而LDA选择投影后类内方差小,类间方差大的方向。用到了类别信息 。
太多不想截了,我转pdf上传为资源吧。。。。。
下载地址