深度学习(3)--小总结(评估指标,查准查全率,正交化思想,划分数据集,贝叶斯最优误差,解决数据不匹配,多任务学习,端到端架构)

从总体架构的角度思路来看待机器学习问题

闲来复习,可以学到很多东西!


上一篇:深度学习(2)--小总结(指数加权平均值,偏差修正,momentum梯度下降,学习率衰减,batch归一化与BN层)https://blog.csdn.net/qq_36187544/article/details/91849279

下一篇:深度学习(4)--卷积神经网络小总结(Inception及其超好用的百度云链接,CNN,LeNet,AlexNet,vgg,ResNet,1×1卷积核,扩充数据)https://blog.csdn.net/qq_36187544/article/details/92613205


目录

机器学习评估指标

贝叶斯最优误差

划分数据集的方法

正交化思想

解决数据不匹配

多任务学习

端到端架构


机器学习评估指标

通过评估指标来确定优化方向,提高优化效率

单实数评估指标查准率(precision,分类器分类的结果有多少是正确的),查全率(recall,分类器分类的结果占这个类别总数是多少),F1-score为查准率和查全率的调和平均,通过这些指标来选择。但其实仍旧是看需求来确认什么指标更重要。
比如,一共有100张猫的图片和100张非猫图片,任务需求是分类出猫的图片,分类器的结果是有98张猫的图片,但这个结果中有8张是错误的,则查准率为90/98,查全率为90/100。
附带评价指标:运行时间等


贝叶斯最优误差

贝叶斯最优误差,能达到的最好的极限。一般来讲,机器能达到或者想要达到的即贝叶斯最优误差,比人会略高一点,因为人类在任务上的能力很强,但是不会达到极限。
通过人类表现进行思考:一定程度上认为人类的极限就是贝叶斯最佳误差。机器的极限为贝叶斯最佳误差,训练集与贝叶斯最优误差之间的差距成为可避免偏差,验证集与训练集之间的差距为方差差距,采取不同的优化措施


划分数据集的方法

一定要将目标数据集放在dev和test集中。
比如,如果实际数据集只有10K,但是网上爬取的数据集可到100K:
方案1:混合两数据集,按比例划分到训练,验证和测试集中(虽然满足同分布,但是目标混淆了,目标是实际数据集)
方案2:取实际数据集一半和所有额外数据集进入训练集,剩下一般的实际数据集进入验证和测试集中

总之,合理划分数据集,而不是简单的融合按比例划分


正交化思想

把各个指标独立开,可以用加权等方式强化指标作用。
比如控制汽车有方向盘、油门、刹车,这几个控制是相互不干涉的,

验证集和测试集同分布,取训练集部分作为训练-验证集
比如,训练集误差小,但训练-验证集和验证集误差大,说明方差大。再比如,训练集和训练-验证集误差都小,但是验证集误差大,说明数据不匹配(说明算法不匹配期望数据分布)
总之,训练集与贝叶斯最佳误差之间的差距为可避免误差,训练集与训练-验证集之间的差距为方差问题,训练-验证集与验证集之间的差距为数据不匹配问题,验证集与测试集的差距为对开发集过拟合了。(如下图)


特殊情况:如果验证集和测试集相较于训练集简单,也可能存在验证集和测试集误差比训练-验证集误差小的情况。


解决数据不匹配

对于可避免误差, 认为偏差过大,换更深更广的网络,对于方差,扩充训练集。但是对于数据不匹配问题,没有系统的解决方案,以下为解决思考方案:

误差分析,人工分析训练集和验证集之间的误差。比如,通过人工发现主要因为背景噪声带来的误差,可以人工合成带噪声的数据进行训练。

注意,不要过多用同一个噪声去合成新数据,这样可能导致对这个噪声的过拟合。(容易想到)


多任务学习

训练一个网络输出多个标签比训练多个网络效果更好,这就是多任务学习的力量。多任务学习在CV领域应用效果好。

比如,需要识别一张图片有没有交通标牌,有没有汽车,有没有红绿灯三个任务,用一个网络去实现效果可能会更好。因为前几层神经网络里把一些较底层的特征学习到了

多任务学习适用于什么情况?1.多任务共用相似的底层特征,比如交通图片识别中,汽车交通牌等。2.多任务时,提供的样本数据可能更多。比如,有100张图片供A类识别使用,100张供B类识别使用,训练同一个网络可以有更多数据,底层特征识别更加完备。3.如果网络小不要使用多任务学习!会降低性能。但当网络足够大时通常不会降低。


端到端架构

简单理解,端到端就是一步到位的架构做法。比如现在经手的项目,从图片中识别试纸,读取上面的数值,架构是边缘检测>>>试纸分类>>>读取数值,如果采用端到端的做法即输入数据>>>读取数值。

优点:1.真的实现让数据说话,不管函数映射如何,训练一个足够大的网络,让网络自己处理,而不是引入人类的看法。2.不如手动设计组件,简化架构流程

缺点:1.需要大量数据。2.手动设计的组件其实是把人类认知蕴含其中,如果数据量少,这是一种很实用的方法。

现在分部组件架构更加通用,且吴恩达认为组件架构更加有前景。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是针对鸢尾花数据集建立贝叶斯信念网络模型并评估准确率的Python代码: ```python import numpy as np import pandas as pd from pgmpy.models import BayesianModel from pgmpy.estimators import MaximumLikelihoodEstimator from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 data = pd.read_csv('iris.csv') # 将数据集分为训练集和测试集 train_data, test_data = train_test_split(data, test_size=0.2, random_state=42) # 定义变量名和变量之间的依赖关系 model = BayesianModel([('SepalLengthCm', 'PetalLengthCm'), ('SepalWidthCm', 'PetalLengthCm'), ('PetalLengthCm', 'Species')]) # 使用最大似然估计法对参数进行学习 model.fit(train_data, estimator=MaximumLikelihoodEstimator) # 使用变量消元算法进行推断 y_true = test_data['Species'].values y_pred = [] for index, row in test_data.iterrows(): query = model.predict(row) y_pred.append(query['Species']) # 计算准确率 accuracy = accuracy_score(y_true, y_pred) print('准确率为:', accuracy) ``` 以上代码中,我们使用`pgmpy`库来构建贝叶斯信念网络模型,并且使用`iris.csv`数据集进行学习和评估。在模型构建时,我们定义了三个变量:花萼长度、花萼宽度和花瓣长度,它们之间的依赖关系是花萼长度和花萼宽度对花瓣长度的影响,以及花瓣长度对鸢尾花种类的影响。在学习参数时,我们使用了最大似然估计法。然后,我们将数据集分为训练集和测试集,使用变量消元算法对测试集中每个样本进行推断,并计算准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值