前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习-2:MachineLN之模型评估

机器学习-2:MachineLN之模型评估

作者头像
MachineLP
发布2022-05-09 14:36:15
2890
发布2022-05-09 14:36:15
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏

​你要的答案或许都在这里:小鹏的博客目录

开篇废话:

很多文章其实都是将书中的东西、网上课程、或者别人的论文的东西总结一下,发出来,但是个人感觉还是加入个人的理解,然后加上一些工程中遇到的问题一起发出来会更好些。

正如学习再多tricks,不如踩一遍坑。 模型评估的标准有很多,但是适合自己的才是好的,我本人就比较喜欢看loss,而有些人更加关注准确率。

回想上学时候我们基本接受的都是被动接收知识,其实教的再好都不如好的提问,学习独立思考的能力,我学习的很多东西不是在课堂上老师所谓的教,而是在面试过程中面试官的提问,在项目中老板的提问、客户的提问,每次我都能学到很多东西,因为他们问的我很多有点含糊,或者不会,然后就回来自己学习总结,接下来又去被问,又学习又总结,也因此刚毕业换了几次工作,看到这里大家肯定感觉我是奇葩中奇葩,其实我不反对,别人怎么看我并不重要,只要自己知道自己想要的是什么就好,有人可能会问,刚毕业就换工作是不是不太好? 我可以跟你说没关系,迈开第一步,万事大吉。

那么我的问题是:

(1)为什么要评估模型?

(2)评估模型有哪些方法?

(3)不同的方法针对什么问题?

(4)根据评估的结果如何调优?

(5)根据评估结果怎么判定模型训练完成?

看到这里你的答案是什么? 那么下面是我的答案,欢迎批评指正。

(1)为什么要评估模型?

其实我们去评估模型最终是为了,得到符合我们数据或者是业务的最优模型,但是这往往不是一蹴而就的,反而使得评估模型通常成了下一步我们调参或者调优的一个参考。

(2)评估模型有哪些方法?

通常很多书籍中不会将loss(MachineLN之三要素中策略,也就是你的损失函数、目标函数的值)作为模型的评估标准,反而loss是一个很重要的标准,他将左右你调参过程中的很多参数,并且可以成为你判定是否模型训练完成的标准,譬如我们看到loss一直波动比较大,我们很自然的会想到是你的学习率太大了吧,后来loss开始波动很大,回来慢慢的平稳下降,这可能是数据分布的影响,可能是你样本的预处理方式;个人喜欢看loss,而准确率有时候在很长时间里波动不会很大;看到这里不要迷糊,总之还是那句话自己去踩踩坑,比什么都重要。

模型评估的方法相比大家都不陌生,只要看过一些机器学习的基础知识都可以知道一些,我在想要不要再写一下呢,纠结中...

评价的方法有:

错误率(error rate)= a个样本分类错误/m个样本精度(accuracy)= 1 -错误率

误差(error):学习器实际预测输出与样本的真是输出之间的差异(差异的标准可以定义为相似度或者距离)。

训练误差(training error):即经验误差。学习器在训练集上的误差。

泛化误差(generalization error):学习器在新样本上的误差。

真正例(True Positive,TP):真实类别为正例,预测类别为正例。

假正例(False Positive,FP):真实类别为负例,预测类别为正例。

假负例(False Negative,FN):真实类别为正例,预测类别为负例。

真负例(True Negative,TN):真实类别为负例,预测类别为负例。

ROC: 纵轴:真正例率 TPR;横轴:假正例率FPR;

AUC:ROC曲线下面的面积。

准确率,又称查准率(Precision,P);

召回率,又称查全率(Recall,R):(例如在人脸检测中有多少人脸检测到了,漏掉了多少人脸)

等;

上面基本上是分类模型的评价标准,而在回归模型中,一般都是通过距离或者相似度来衡量(欧氏距离等)。有点乱,可以去看看周老师的机器学习一书。

(3)不同的方法针对什么问题?

在(2)中回答过了。

(4)根据评估的结果如何调优?(都是基于深度学习的,?)

  • 当训练集的效果(准确率)上不去,和贝叶斯估计(人的表现)存在一定差距的时候:
  • (1)增加模型的复杂度。 或者直接多加几层。
  • (2)现在目前效果非常好的一些模型:resnet,inception等。
  • (3)重新选择优化函数:AdamOptimizer,MomentumOptimizer,RMSPropOptimizer等等。
  • 训练集效果表现好,测试集效果表现不好:
  • (1)增加训练样本的数量。
  • (2)正则化:L2范数,dropout等(dropout原理是什么呢?使随机使神经元失活,相当于把一个复杂的模型拆分开,测试后时候凑到一起,集成学习的思想,又刹不住闸了。。。)。
  • (3)还要观察训练样本和测试样本的分布是否一致。
  • (4)交叉验证。
  • 还有像样本预处理:
  • (1)归一化:img/255.0,img-0.5, img*2,将数据转化为-1,1.
  • (2)减去均值除以方差。
  • (3)减去样本各通道的均值。
  • 还有loss的选择啊,多标签单分类适合用softmax_cross_entropy(对于多标签多分类的要用多个softmax),多标签多分类常用sigmoid_cross_entropy。
  • data augmentation。
  • 还要注意BN的使用,学习率的选择,batch_size的大小。

可以参考博客:https://cloud.tencent.com/developer/article/1016727

深度学习的这么坑你都遇到过吗?:https://cloud.tencent.com/developer/article/1016666

(5)根据评估结果怎么判定模型训练完成?

很多人都说:loss不再怎么变化,或者准确率不再怎么变化,ML书中一般都是交叉验证选最好的,但是dl中往往是选择什么时候停止,其实真实的情况往往是这个样子的(如下图),开始模型是欠拟合的,随着迭代次数的增多,模型会慢慢收敛,但是过了一个点以后,会呈现过拟合,这种情况怎么调参? 有哪些解决方法? 哦,发现自己好烦,我同事和大家一样也很烦我,说我问题真多,哈哈。。。我在迁移学习过程中一般都是从更新最后一层参数开始,根据自己的数据量来判断要更新最后几层的参数,更新多了会过拟合,少了会欠拟合,当然你还可以设置正则化等等。

(6)总结

模型评估还是很重要的,但注意不同的标准可能评估的结果有点差异,还想简单提一下,偏差和方差的问题,后面的学习中可能会用到,先看一下这张图(其实就是上面那张图),其实我们模型的误差Error = Bias + Variance + Noise。 鱼和熊掌不可兼得。

可以参考:http://blog.csdn.net/u014365862/article/details/76360351

推荐阅读:

1. 机器学习-1:MachineLN之三要素

2. 机器学习-2:MachineLN之模型评估

3. 机器学习-3:MachineLN之dl

4. 机器学习-4:DeepLN之CNN解析

5. 机器学习-5:DeepLN之CNN权重更新(笔记)

6. 机器学习-6:DeepLN之CNN源码

7. 机器学习-7:MachineLN之激活函数

8. 机器学习-8:DeepLN之BN

9. 机器学习-9:MachineLN之数据归一化

10. 机器学习-10:MachineLN之样本不均衡

11. 机器学习-11:MachineLN之过拟合

12. 机器学习-12:MachineLN之优化算法

13. 机器学习-13:MachineLN之kNN

14. 机器学习-14:MachineLN之kNN源码

15. 机器学习-15:MachineLN之感知机

16. 机器学习-16:MachineLN之感知机源码

17. 机器学习-17:MachineLN之逻辑回归

18. 机器学习-18:MachineLN之逻辑回归源码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档