社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习模型评估

机器学习算法那些事 • 1 年前 • 219 次点击  

在机器学习中,模型评估是指对训练好的模型进行性能评估的过程。评估模型的性能是为了确定模型在解决特定问题或任务上的效果如何。是机器学习流程中至关重要的一步,它可以帮助我们了解模型的优劣,并做出进一步的改进或决策。

本文图片皆引自吴恩达机器学习教学视频,是对视频内容的提炼和总结,本文内容适合正在入门的初学者。

注:评估模型性能时,最简单的做法是对数据集按照一定比例进行拆分,主流做法是将数据集按照73或者8:2的比例拆分成训练集和测试集。

用训练集(training set)训练模型参数,再用测试集(testing set)进行效果测试,可以生成训练集和测试集的损失函数随迭代轮次的变化曲线来观察。

注:更好的评估方案是,将数据集拆分成训练集、验证集(Validation Set)和测试集。拆分比例为6:2:2,这样做可以用于筛选合适的模型,如下图:

注:图中有3个神经网络模型,分别用每一个模型在训练集上进行训练,会得到3组参数,将训练好的模型在验证集上进行验证,查看每一个模型的损失函数Jcv(w,b),找到误差最小的模型,假设第二个模型在验证集上的损失最小,那么最后再把第二个模型放到测试集上进行测试。

用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集检验模型效果。

验证集用于模型选择和调优阶段,而测试集用于最终评估模型的性能。

注:偏差和方差,偏差指的是模型预测值与真实值之间的差异,方差指的是模型预测值的变化范围;

注:训练出来的模型如果过于简单,在训练集和验证集上都会存在高偏差,如果模型过于复杂,会使模型出现过拟合,在训练集上表现良好,但是在验证集上误差较大。

所以,要找到一个合适的模型,使其在训练集和验证集上同时具有较低的误差。

注:是正则化系数,如果特别大的话,会导致w非常小,接近于0,也就是训练出来的函数只有b项,是一条平行于x轴的直线。过小,等于没有正则项,模型容易过拟合。所以也要选取合适的值。

模型在训练集上的错误率低,但是在验证集上偏高,说明模型存在高方差,高方差是过拟合的表现。
模型在训练集和验证集上的错误率均较高,但是错误率接近,说明模型存在高偏差,高偏差是欠拟合的表现。
模型在训练集的错误率高,在验证集的错误率更高,说明模型同时具有高偏差和高方差。同时具有高方差和高偏差的情况说明模型既没有很好地拟合训练数据,也没有很好地泛化到新数据

注:训练集的样本数越多,训练误差就越大,因为很难去拟合所有样本。

注:如果模型本身具有高偏差,则无法训练更多的数据。

注:如果模型具有高方差,那么通过获取更多的训练数据,可能是有帮助的。

一般训练数据较多时,为了查看选用模型是否合适,需要先将训练集的一小部分拿出来做训练,观察模型是否具有高方差或者高偏差,便于及时调整策略,而不会浪费计算资源。

注:高方差对应过拟合,可以通过增加训练样本,减少特征数量和增大来调整。

高偏差对应欠拟合,可以通过增加特征、增加模型复杂度和减小来调整。

注:以罕见疾病诊断为例说明精确率(precision)和召回率(recall)的意义。

高精确率:意味着如果模型诊断出患者有某种疾病,那么患者可能确实患有该病。Precision = TP / (TP + FP)

高召回率:意味着如果患者患有某种疾病,那么被识别出来的概率很高。Recall=TP/(TP+FN)

注:经常需要在精确率和召回率之间做权衡,高的精确率往往对应低的召回率。可以通过调整阈值来进行选择。

F1分数(F1 score)可以用来评估一个模型的综合性能,被定义为精确率和召回率的调和平均数,在这个公式中分子是精确率和召回率的乘积,数值小的起主要作用,所以如果模型的精确率或者召回率有一个偏低的话,都会使得F1 score的数值变小。

F1 分数更适用于评估类别不平衡情况下的分类器性能。

还有一个参数是Accuracy (准确率),准确率是指分类器预测正确的样本数占总样本数的比例。Accuracy = (TP + TN) / (TP + TN + FP + FN)。

精确率(Precision)和Accuracy (准确率)的区别:

  • 精确率关注的是分类器在预测为正类的样本中的准确性,而准确率则关注整体样本的分类准确性。

  • 精确率更适合用于处理偏斜数据集(即某个类别的样本数量远远大于其他类别),因为它不受负类样本数量的影响。

  • 准确率适用于类别平衡的数据集,其中各个类别的样本数量相对均衡。

全文结束。

编辑:电子e学堂

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168304
 
219 次点击