机器模式识别 7_第1页
机器模式识别 7_第2页
机器模式识别 7_第3页
机器模式识别 7_第4页
机器模式识别 7_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器学习与模式识别第七章模型从评估与优化第七章模型评估与优化

7.1交叉验证

7.2模型选择

7.3参数调优27.1交叉验证-数据集划分

3训练集:拟合模型、学习数据特征、计算模型梯度、更新权重验证集:训练过程中评估模型性能测试集:完全不参与训练的数据。训练后评估模型泛化能力,即模型在从未见过的数据上的表现。7.1交叉验证-数据集划分

4fromsklearn.model_selectionimporttrain_test_splitx_train_temp,x_test,y_train_temp,y_test=train_test_split(x,y,test_size=0.2,random_state=42)x_train,x_val,y_train,y_val=train_test_split(x_train_temp,y_train_temp,test_size=0.25,random_state=42)可使用python第三方库sklearn快速实现:将数据集划分为训练集(80%)和测试集(20%)将训练集联合体进一步划分为训练集和验证集x_train/y_train用于训练,x_val/y_val用于验证,x_test/y_test用于测试7.1交叉验证-模型拟合与验证5过拟合:模型在训练集上表现过于出色,过度学习了训练集中的细节,包括噪声和异常点等,而在测试集或验证集上的性能表现较差欠拟合:模型未能充分学习训练集中的关键结构和规律,导致在训练集、测试集和验证集上的表现都比较差只有训练集、测试集和验证集上模型的正确率都比较高时才算成功地训练出了一个性能较为优秀的机器学习模型7.1交叉验证的原理-常见交叉验证6将数据集划分为几“折”,重复地使用这些子集来训练和验证模型每次训练选择一部分子集作为训练集,另一部分子集作为验证集。通过多次迭代训练,

每个子集都有机会作为验证集,从而更全面地评估模型在不同数据上的表现7.1简单交叉验证(Hold-Out)7也称为留出法将原始数据集进行一次切分,随机按比例划分成训练集和验证集两部分常见的数据集划分比例为7∶3交叉验证的雏形7.1简单交叉验证8fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLogisticRegressiondata_set=load_iris()x=data_set.datay=data_set.targetlogre=LogisticRegression()x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=42)logre.fit(x_train,y_train)predict=logre.predict(x_test)导入鸢尾花数据和逻辑回归模型简单交叉验证划分数据,70%用作训练集,训练一次不需要划分评估集模型拟合及预测7.1交叉验证的原理-分层采样9数据集划分要注意保持数据分布的一致性如果训练集和验证集中的样本类别比例差异过大,那么评估结果可能会因为训练、验证数据分布的不一致而产生很大的偏差,可以使用分层采样的方法来处理类似的问题7.1K折交叉验证10将数据集随机划分K份,每次随机选择K-1份作为训练集,剩下1份作为验证集平均K次的结果作为最后泛化误差的估计,模型最终精度由预留出的测试集计算得出最常用的是5折和10折交叉验证。7.1K折交叉验证fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimportcross_val_score,KFoldfromsklearn.linear_modelimportLogisticRegressiondata_set=load_iris()x=data_set.datay=data_set.targetlogre=LogisticRegression()kf=KFold(n_splits=5)score=cross_val_score(logre,x,y,cv=kf)11导入鸢尾花数据集和逻辑回归算法实现5折交叉验证并评估7.1留一交叉验证(Leave-one-out)12保留单个样本作为验证集,剩余n-1个样本作为训练集不断重复,直到数据集的每个样本都被作为验证集所使用适用于样本数量n小于50时7.1留一交叉验证fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimportcross_val_score,LeaveOneOutfromsklearn.ensembleimportRandomForestClassifierdata_set=load_iris()data_set=iris.datadata_set=iris.targetloo=LeaveOneOut()tree=RandomForestClassifier(n_estimators=10,max_depth=5,n_jobs=-1)score=cross_val_score(tree,x,y,cv=loo)13导入鸢尾花数据集随机森林分类器实现留一交叉验证并评估7.1时间序列交叉验证14处理时间序列数据,存在时间相关性前K个时间段数据作为训练集,紧接着第(K+1)个时间段数据作为测试集随着K值的增加,训练集会逐渐扩大并包含之前所有时间段的数据7.1时间序列交叉验证importnumpyasnpfromsklearn.model_selectionimportTimeSeriesSplit

x=np.array([[1,2],[3,4],[1,2],[3,4],[1,2],[3,4]])y=np.array([1,2,3,4,5,6])tscv=TimeSeriesSplit(n_splits=3)TimeSeriesSplit(max_train_size=none,n_splits=3)15导入时间序列模型实现时间序列交叉验证7.2模型选择-算法选择策略16观察数据集的大小和性质分清问题类型,加入候选模型权衡模型可解释性和准确性7.2模型选择-模型评估指标17分类模型常用混淆矩阵,包括模型预测值与真实值的差别列代表模型预测类别,行代表样本真实类别简单二分类可以归纳为以下四种类型7.2模型选择-模型评估指标18真阳率(TruePositiveRate,TPR):预测为阳性的阳性样本数和阳性样本实际数的比值真阴率(TrueNegativeRate,TNR):预测为阴性的阴性样本数和阴性样本实际数的比值假阳率(FalsePositiveRate,FPR):预测为阳性的阴性样本数和阴性样本实际数的比值假阴率(FalseNegativeRate,FNR):预测为阴性的阳性样本数和阳性样本实际数的比值

7.2模型选择-模型评估指标19准确率(Accuracy):正确预测的实例数与数据集中总实例数量比值精确率(Precision):正确预测的阳性样本占所有预测为阳性样本的比例,在不均衡数据上表现更好召回率(Recall):样本中被正确预测的样本比例

7.2模型选择-模型评估指标20调和平均值:β调整精确率和召回率的权重,β越大,召回率的权重越大;反之精确率权重越大F1分数(F1score):当β=1时称为F1分数,是精确率和召回率的调和平均数,两者权重相同F1score的值是从0到1的,1是最好,0是最差

7.2模型选择-模型评估指标21ROC曲线:以真阳率(TPR)、假阳率(FPR)两个指标分别为纵横坐标绘制的图形,虚线为基准线,曲线是ROC曲线应尽可能靠近图形的左上角AUC值:ROC曲线下方部分面积大小,AUC值大于0.75比较合理。7.2模型选择-模型评估指标22回归模型评估指标:均方误差(MeanSquaredError,MSE):真实值与预测值之差,平方之后求和平均均方根误差(RootMeanSquareError,RMSE):均方误差算术平方根,与数据量级是一个级别,更容易去感知数据

7.2模型选择-模型评估指标23平均绝对误差(MeanAbsoluteError,MAE):预测值与真实值偏差的绝对值的平均决定系数(R^2):在统计学中通常使用决定系数对回归模型进行评价。用y_i表示真实观测值,y̅表示真实观测值的平均值,使用ŷ_i表示预测值,可以得到SSR、SSE和SST

7.2模型选择-模型评估指标24SSR(回归平方和):预测值与平均值的误差,反映自变量与因变量相关程度的偏差平方和SSE(残差平方和):预测值与真实值的误差,反映模型拟合程度SST

(总平方和):总体数据的离散程度

7.2模型选择-模型评估指标25聚类模型评估指标:分为内部指标和外部指标两类DB指数:簇内距离与簇间距离之比,值越小则类间相似度越低,效果越好k是聚类数量,Wi、Wj为类Ci中所有样本到其聚类中心和到类Cj中心的平均距离,Cij为类Ci和Cj中心之间的距离。

7.2模型选择-模型评估指标26轮廓系数:结合内聚度和分离度,同类距离越近,不同类距离越远,分数越高。S_i接近1,样本聚类合理S_i接近-1,样本聚类不合理更应该分类到其他类中S_i接近0,样本在两个类的边界上

7.2模型选择-模型评估指标27纯度(Purity):正确聚类样本数占总样本数的比例兰德指数(RandIndex,RI):使用混淆矩阵的方式实现

7.3参数调优28超参数(Hyperparameter):需要基于经验、实验或专家知识在模型训练前人为设定的参数,不具备通过训练数据自动学习的能力,“调参”实际上指的是调整超参数模型参数(Parameter):模型内部通过训练数据学习得到的变量,如线性回归中的斜率和截距。7.3参数调优29超参数优化需要:具有目标函数的模型(回归或分类等)搜索空间用于查找超参数组合的搜索或优化方法用于比较不同超参数配置的性能评估函数可直接调用常见的超参数优化库,如scikit-Optimize、Hyperopt、Optuna、KerasTuner等7.3参数调优-网格搜索30网格搜索:使用穷举法遍历超参数的所有可能组合。以选择支持向量机(SVM)模型的最佳超参数为例,步骤如下:1.确定超参数和候选值:SVM需要两个超参数:C(正则化参数)候选值:[0.1,1,10];kernel(核函数)候选值:['linear','rbf’]。2.生成超参数组合网格:候选值进行笛卡尔积运算如:(C=0.1,kernel='linear')。7.3参数调优-网格搜索313.模型训练、评估:对每个超参数组合,使用交叉验证方法评估模型泛化能力,然后记录评分,

重复直到遍历所有参数组合。4.选择最优超参数:根据性能评估结果,选择性能最佳的超参数组合,构建最终的SVM模型缺点是计算量较大,搜索效率低下7.3参数调优-随机搜索32随机搜索优化法:在定义的区间内随机选择预定义数量的样本作为候选超参数值。然后训练这些候选值,直到定义的预算(如时间、迭代次数等)耗尽。7.3参数调优-贝叶斯优化33贝叶斯优化-贝叶斯概率:对不确定性的量化评估,根据新证据更新先验概率(之前的判断),从而得到后验概率(更新后的判断)先验概率分布P(w)表示对参数(或事件)w的假设。观测数据集D={t1,…,tN}。获得观测数据集D后,用后验概率P(D|w)(似然函数)评估参数w的不确定性

7.3参数调优-贝叶斯优化34贝叶斯优化包含:概率代理模型(probabilisticsurrogatemodel):模拟未知目标函数的工具,常见方法是利用已有观测数据训练一个高斯过程回归模型,用以拟合优化目标函数。采集函数(AcquisitionFunction):基于后验概率分布F(x)|F(x1:n)=f(x1:n)构建的,用于指导选择下一个相对最优的评估点,常见的是提升概率(ProbabilityOfImprovement,POI)策略,保证选择的评估点序列使得总损失最小7.3参数调优-贝叶斯优化35概率代理模型-高斯过程:由均值函数μ和协方差函数σ2(又称核函数)确定的函数F(x),其预测遵循正态分布D是超参数配置空间,y=F(x)是每个超参数值x的评估结果。

7.3参数调优-建立高斯过程回归

361.定义高斯过程F(x)的先验分布,即指定均值函数和协方差函数2.选择n个采样点x_1,…,x_n(记为x_(1:n)),得到目标函数的观测值f(x_1),…,f(x_n)记为f(x_(1:n)),同样也是高斯过程里对应的观测值记为F(x_(1:n))3.根据观测值调整均值函数和协方差函数里的参数,确定最终高斯过程,完成对函数f(x)的拟合7.3参数调优-建立高斯过程回归

37用最大后验估计方法实现训练高斯过程回归模型里的参数(均值函数和核函数里的参数),选择在已知观测值下最可能的参数值η为参数集合,P[η|F(x1:n)=f(x1:n)]为在得到所有观测值的情况下,参数的概率分布,只需最大化分子对任意给定的x都可计算出其预测值如图:

7.3参数调优-贝叶斯优化387.3参数调优-采集函数39采集函数:基于后验概率分布,输入每个采样点x并进行打分,分数越高越值得被采样,更新代理模型的后验分布基于提升的策略(POI):偏好于当前最优目标函数值有所提升(提升指比当前目标函数值小)的位置作为评估点量化了x的观测值可能提升当前最优目标函数值的概率。ν*为当前最优函数值,ϕ(·)为标准正态分布累积密度函数,ξ为平衡参数

7.3参数调优40POI策略把所有提升看成是等量的,只反映了提升的概率而没有反映提升量的大小莫库斯等人提出一种新的基于提升的策略:EI(expectedimprovement)ϕ(·)为标准正态分布概率密度函数。包含POI公式,既整合了提升概率又体现了不同的提升量。

7.3参数调优-初始化41参数的初始化方法有:固定初始化随机初始化

固定方差初始化 Xavier初始化 He初始化固定初始化:针对一些特殊的参数如偏置(Bias),根据经验选择将偏置或其他参数初始化为一个固定的常数如果所有单元(例如神经元)的初始状态完全相同,这可能会导致模型在训练开始时表现出对称性,从而影响其学习不同特征的能力7.3参数调优-初始化42高斯分布初始化:用高斯分布N(0,σ2)对每个参数进行随机初始化,均值为0,方差为σ2设置r=3σ2时,可均匀分布在区间[-r,r]内采样,并且这个分布的方差大致等于某个给定的σ2

7.3参数调优-初始化43Xavier初始化:将权重初始化为一个高斯分布或者均匀分布的随机数He初始化(Kaiming初始化):针对ReLU及其变种(如Leaky-ReLU、P-ReLU等)激活函数,在输入小于0时输出为0,导致神经元在训练过程中可能出现“死亡”的情况设计的权重初始化方法若使用高斯分布则其理想方差σ2=2Ml-1,其中Ml-1是上一层神经元的数量;若采用区间为[-r,r]的均匀分布则r=6Ml-1。7.3参数调优-批次大小与学习率44批次大小:每次迭代只计算一小部分(一个批次)训练样本上的梯度来更新模型参数。影响小批量梯度下降法的主要因素有:批量大小、学习率和梯度估计。

学习率:与批量大小通常是正相关。通常用“迭代”(Iteration)“合”(Epoch)来描述训练的进度。每一个小批量更新算是一次迭代,而整个训练集的所有样本都被使用一次则称为一个回合。关系可以表示为:7.3参数调优-学习率调整45学习率调整:随机梯度下降(StochasticGradientDescent,SGD):每次迭代随机选择一个样本来计算损失函数关于模型参数的梯度,并据此来更新模型参数,计算公式与梯度下降算法相同α是学习率,gt是梯度方向,Δθt是损失函的优化量,包含优化迭代方向和步长,优化变量的更新公式为:

7.3参数调优-学习率调整46AdaGrad算法:梯度下降法变体,为每个模型参数动态地调整学习率。对于更新频繁(梯度较大)的参数,给予较小的学习率;对于更新不频繁(梯度较小)的参数,给予较大的学习率。整体学习率是逐渐缩小1.累积梯度平方的累积值nt:nt=nt-1+g2t,其中gt是当前梯度方向。2.更新模型参数θt:Δθt=α×gt,α是学习率,ε是一个很小的正数,用于避免nt+ε除以零错误,并确保数值稳定性。7.3参数调优-学习率调整47RMSProp:AdaGrad的一个扩展,解决AdaGrad训练后期学习率变得非常小(梯度平方和累积过大)的问题。引入超参数γ控制梯度平方的累积衰减速度

7.3参数调优-学习率调整48动量法:引入动量因子加速优化训练过程,减少在收敛值附近的振荡,利用之前积累的动量来替代当前时刻的梯度在第t次迭代时,参数更新方向是基于之前所有梯度的一个“加权移动平均”来计算的ρ是动量因子,通常设置为接近1的值,如0.9;α是学习率;gt是当前时刻的梯度

7.3参数调优-学习率调整49Adam算法:结合动量法和RMSProp算法优点,能自适应地调整学习率,并使用动量作为参数更新方向1.计算梯度的一阶矩估计(类似于动量法中的动量项)其中mt是梯度的一阶矩估计(带有动量的梯度),β1是一阶矩估计的指数衰减率(通常接近1,如0.9),gt是当前时刻的梯度。

7.3参数调优-学习率调整502.计算梯度的二阶矩估计(类似于RMSProp中的梯度平方累积)其中nt是梯度的二阶矩估计(梯度平方的累积),β2是二阶矩估计的指数衰减率(通常接近1但小于β1),g2t是当前时刻梯度的平方。

7.3参数调优-学习率调整513.对一阶矩估计和二阶矩估计进行偏差修正,以补偿初始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论