| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 天池工业蒸汽量预测-模型验证 -> 正文阅读 |
|
[人工智能]天池工业蒸汽量预测-模型验证 |
作者:recommend-item-box type_blog clearfix |
5 模型验证5.1 模型验证的概念和方法5.1.1训练误差与测试误差????????当我们的一个训练好的模型可以预测任意情况呢?答案显然是否定的。我们建立机器学习的目的并不是为了在已有的数据集,也就是训练集上效果表现非常优异,我们希望建立的机器学习模型在未知且情况复杂的测试数据上表现优异,我们称这样的未出现在训练集的未知数据集成为测试数据集,简称测试集。我们希望模型在测试集上表现优异!举个栗子,假如我们根据股票市场前六个月的数据拟合一个预测模型,我们的目的不是为了预测以前这六个月越准越好,而是预测明天乃至未来的股价变化。 ???????在回归中,我们最常用的评价指标为均方误差,即:
M
S
E
=
1
N
∑
i
=
1
N
(
y
i
?
f
^
(
x
i
)
)
2
MSE = \frac{1}{N}\sum\limits_{i=1}^{N}(y_i -\hat{ f}(x_i))^2
MSE=N1?i=1∑N?(yi??f^?(xi?))2,其中
f
^
(
x
i
)
\hat{ f}(x_i)
f^?(xi?)是样本
x
i
x_i
xi?应用建立的模型
f
^
\hat{f}
f^?预测的结果。如果我们所用的数据是训练集上的数据,那么这个误差为训练均方误差,如果我们使用测试集的数据计算的均方误差,我们称为测试均方误差。一般而言,我们并不关心模型在训练集上的训练均方误差,我们关心的是模型面对未知的样本集,即测试集上的测试误差,我们的目标是使得我们建立的模型在测试集上的测试误差最小。那我们如何选择一个测试误差最小的模型呢?这是个棘手的问题,因为在模型建立阶段,我们是不能得到测试数据的,比如:我们在模型未上线之前是不能拿到未知且真实的测试数据来验证我们的模型的。在这种情况下,为了简便起见,一些观点认为通过训练误差最小化来选择模型也是可行的。这种观点表面看上去是可行的,但是存在一个致命的缺点,那就是:一个模型的训练均方误差最小时,不能保证测试均方误差同时也很小。对于这种想法构造的模型,一般在训练误差达到最小时,测试均方误差一般很大!如图: ???????可以看到:当我们的模型的训练均方误差达到很小时,测试均方误差反而很大,但是我们寻找的最优的模型是测试均方误差达到最小时对应的模型,因此基于训练均方误差达到最小选择模型本质上是行不同的。正如上右图所示:模型在训练误差很小,但是测试均方误差很大时,我们称这种情况叫模型的过拟合。 5.1.2偏差-方差的权衡:???????从上图的测试均方误差曲线可以看到:测试均方误差曲线呈现U型曲线,这表明了在测试误差曲线中有两种力量在互相博弈。可以证明: ???????另一方面,模型的偏差是指:为了选择一个简单的模型去估计真实函数所带入的误差。假如真实的数据X与Y的关系是二次关系,但是我们选择了线性模型进行建模,那由于模型的复杂度引起的这种误差我们称为偏差,它的构成是复杂的。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。偏差度量的是单个模型的学习能力,而方差度量的是同一个模型在不同数据集上的稳定性。“偏差-方差分解”说明:泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。 ???????一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,我们要找到一个方差–偏差的权衡,使得测试均方误差最小。 5.1.3 欠拟合与过拟合???????当一个模型恰到好处地表达了数据关系时,我们就认为这个模型拟合效果好。欠拟合(underfitting),也叫高偏差(bias),是指算法所训练的模型不能完整地表达数据关系。在这种情况下,一般也可通过增加额外的特征、增加多项式特征,减小 λ \lambda λ的值等方法来优化模型。过拟合(overfitting),也叫高方差(variance),指的是算法所训练的模型过多地表达了数据关系,此时很有可能表达的是数据间的噪声关系。在这种情况下,一般可通过收集更多的数据、使用更少的特征、增加 λ \lambda λ的值等方法来优化模型。
5.1.4 模型的泛化与正则化???????泛化是指机器学习模型学习到的概念在处理训练过程中未遇到的样本的表现,即模型处理新样本的能力。 ???????正则化(Regularization是给需要训练的目标函数加上一些规则(限制),目的是为了防止过拟合。(在统计领域中,正则化也称作压缩估计),正则化的主要目的是通过特征选择即对回归函数的系数进行约束,显著降低模型方差,最终降低测试误差。 具体说,就是将回归系数往零的方向压缩,这也就是为什么叫压缩估计的原因。 5.1.4.1 正则化种类???????L1,L2正则化(L1,L2Regularization)使用的正则化项分别是L1范数、L2范数,其中: L1范数,公式为 ∣ ∣ x ∣ ∣ 1 = ∑ i = 1 n ∣ x i ∣ ||x||_1 = \sum^n_{i=1}{|x_i|} ∣∣x∣∣1?=∑i=1n?∣xi?∣,即向量元素的绝对值之和。 L2范数,公式为 ∣ ∣ x 2 ∣ ∣ = ( ∑ i = 1 n ∣ x i ∣ 2 ) 1 2 ||x_2||=(\sum^n_{i=1}{|x_i|^2})^\frac{1}{2} ∣∣x2?∣∣=(∑i=1n?∣xi?∣2)21?,又叫欧几里得(Euclid)范数,即向量元素绝对值平方和再进行开方。 L-q范数,公式为 ∣ ∣ x ∣ ∣ q = ( ∑ i = 1 n ∣ x i ∣ q ) 1 q ||x||_q = (\sum_{i=1}^n{|x_i|}^q)^\frac{1}{q} ∣∣x∣∣q?=(∑i=1n?∣xi?∣q)q1?,即向量元素绝对值的q次幂的累加和再 1 q \frac{1}{q} q1?次幂 ???????上述公式中, n n n为模型的阶次,即模型有几个变量(对应数据有几个维度)
???????一般的损失函数(无正则项)为:
???????加入正则化项后的损失函数为:
???????也可以看下面的三维图像 ???????q=2的俯视图是一个圆很好理解,考虑到 z = w 1 2 + w 2 2 z=w_1^2+w_2^2 z=w12?+w22?就是抛物面,其俯视图是一个圆。 ???????参数空间L2正则化和参数空间L1正则化的示意图分别如下所示。可以注意到L1正则化的最小值 w 1 = 0 w_1=0 w1?=0,即变量 x 1 x_1 x1?的系数为0,起到了降维的作用(降低模型复杂度,防止过拟合)。
5.1.4.2 岭回归???????对参数空间进行L2范数正则化的线性模型称为岭回归(Ridge Regression) 5.1.4.3 LASSO回归???????对参数空间进行L1范数正则化的线性模型称为LASSO回归(LASSO Regression) 5.1.5 回归模型的评估指标和调用方法
???????回归模型的评估指标有平均绝对值误差、均方误差、均方根误差、R平方值。 1.平均绝对值误差(MAE)是预测值与真实值之差的绝对值,计算公式如下:
2.均方误差(MSE)是指的参数估计值与参数真实值之差平方的期望值。MSE是衡量平均误差的一种较方便的方法,可以用来评价数据的变化程度。MSE的值越小,说明预测模型描述实验数据具有越好的精确度,计算公式如下:
3.均方根误差(RMSE)是MSE的平方根,计算公式如下:
4.R平方值(R-Squared)反映了回归模型在多大程度上解释了因变量的变化,或者说模型对观测值的拟合程度如何。计算公式如下:
更多的回归指标请参照sklearn回归指标 5.1.6 分类模型的评估指标和调用方法更多的分类指标请参照sklearn分类指标 5.1.7 评估方法
???????交叉验证(Cross Validation)是验证分类器性能的一种统计分析方法,其基本思想是在某种意义下将原始数据进行分组,一部分作为训练集,另一部分作为验证集。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来作为评价分类器的性能指标。常用的交叉验证法包括简单交叉验证、K折交叉验证、留一法交叉验证和留P法交叉验证。 1.简单交叉验证 ???????简单交叉验证(Cross Validation)是将原始数据随机分为两组,一组作为训练集,另一组作为验证集,利用训练集训练分类器,然后利用验证集验证模型,将最后的分类准确率作为此分类器的性能指标。通常划分30%的数据作为测试数据。 2.K折交叉验证 ???????K折交叉验证(K-Fold Cross Validation),是将原始数据分成K组(一般是均分),然后将每个子集数据分别做一次验证集,其余K-1组子集数据做训练集,这样就会得到K个模型,将K个模型最终的验证集的分类准确率取平均值,作为K折交叉验证分类器的性能指标。通过设置K大于或等于3。
3.留一法交叉验证 ???????留一法交叉验证(Leave-One-Out Cross Validation,LOO-CV),是指每个训练集由除一个样本之外的其余样本组成,留下的一个样本为验证集。这样,对于N个样本的数据集,最终可以形成N个模型,用N个模型最终的验证集的分类准确率的平均数作为分类器的性能指标。留一法是K折交叉验证,K=N时的特例。
4.留P法交叉验证 ???????留P法交叉验证(Leave-P-Out Cross Validation,LPO-CV),与留一法交叉验证类似,是从完整的数据集中删除p个样本,产生所有可能的训练集和验证集。对于N个样本,能产生(N,p)个训练-检验对。也就是每个训练集由除P个样本之外的其余样本组成,留下的P个样本为验证集。
5.1.8 几种交叉验证在sklearn中的调用方法(1)简单交叉验证
(2)K折交叉验证
(3)留一法交叉验证:
(4)留P法交叉验证:
具体的应用方式参照下例: ???????我们将使用重复的分层k-fold交叉验证来评估该模型,一共重复3次,每次有10个fold。我们将评估该模型在所有重复交叉验证中性能的平均值和标准差。
参考资料 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 8:35:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |