[深度学习]模型性能度量

过拟合与欠拟合

1.概念

过拟合:当模型过度地学习训练样本中的细节与噪音,把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能的下降,以至于模型在新的数据上表现很差。

欠拟合:对训练样本的一般性质尚未学好。

2.原因

出现过拟合的原因:训练集与测试集的特征分布不一致 / 模型太过复杂,而样本量不足

出现欠拟合的原因:模型比较简单 / 模型本身性能不佳 / 训练样本太多

3.解决方案

如何防止过拟合:

Early stopping, 数据集扩增,正则化, Dropout等。

(1)Early stopping

在每一个Epoch结束时(一个Epoch为对所有训练数据的一轮遍历),计算验证集的accuracy。当accuracy在连续多个epoch后都不再提高时,就停止训练。

(2)数据集扩增

“有时候往往拥有更多的数据胜过一个好的模型。”

数据集扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。如从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数并使用该分布产生更多数据等。

(3)正则化

通过在代价函数后面加上正则项来防止过拟合。

(4)Dropout

通过修改神经网络中隐藏的神经元的个数来防止神经元的过拟合。

4.Dropout的原理

Dropout是以概率p来舍弃部分神经元,其余神经元则以1-p的概率被保留,舍弃的神经元的输出部分都被设置为0。

Q:若在训练的时候,以p的概率关闭神经元,则在预测的时候该如何处理?

A:在测试时,被dropout作用的层,每个神经元的输出都要乘以(1-p),使得训练和测试时的输出匹配。

5.在训练过程中,如何观察损失函数曲线?

随着训练时间的增加,模型在训练集上得到的结果,随着损失函数的下降越来越好。但是在验证集上,从某一点以后就不再上升,这表明模型进入了过拟合的状态。这时候,就需要加入其它的正则化手段。

如何选择模型

对候选模型的泛化性能进行评估,然后选择泛化误差小的模型。

数据集划分

1.留出法。

对于训练集、测试集的划分,要尽可能保持数据分布的一致性,也就是保持原有的类别比例。一般使用2/3到4/5的样本用于训练,剩下的样本用于测试。

2.交叉验证法

D = D1 U D2 U ... U Dk, Di n Dj = 空, Di大小相似且为正。每次使用Di作为测试集,其余的子集作为训练集。进行k次训练与测试,返回这k个训练结果的均值,也称为k折交叉验证。p次k折交叉验证,也就是一共进行p*k次训练/验证。

3.自助法

每次从D中挑选出一个样本,将其拷贝放入D‘,然后将样本放回初始训练集中,使该样本下次仍有可能被采样到,重复m次。

性能度量

1.回归任务最常用的度量方式为“均方误差”,表示真实值与预测值之间的误差。

2.Precision 与 Recall

Precision:表示检测为正的真实正例占所有的检测为正的样本的比例;

Recall:表示检测为正的真实正例占所有的真实正例的比例。

Precision = TP/(TP + FP)

Recall = TP/(TP + FN)

平衡点:Break-Event Point,即Precision = Recall时的取值。

F = 2PR/(P + R),  F = (1+beta^2) PR / (beta^2 P + R)

P-R曲线:

3.TPR 与 FPR

TPR = TP / (TP + FN)

FPR = FP / (FP + TN)

TPR(真正例率): 检测出来的正样本占所有正样本的比例;

FPR(假正例率): 检测错了的正样本(实际为负样本)占所有负样本的比例。

不同score值下面的TPR 与 FPR围成的ROC曲线:

AUC为曲线围住的面积,AUC越大,则模型的性能越好。

猜你喜欢

转载自blog.csdn.net/u013250416/article/details/81157138
今日推荐