精华内容
下载资源
问答
  • 对数据噪声理解
    2018-07-13 10:15:30

    以前的观点:噪音是错误的数据;

    现在的观点:噪音不仅包括错误的数据,而且包括正确的数据,但由于采样的原因导致数据偏少,而对学习器而言等同于噪音;比如说5分类,其中一个类别只有10个样本,其他4个类别各有100万条样本,那么这10个样本就称之为噪音;称之为sampling noise;

    噪音的本质:数据对预测是无效的;一种是对未来完全无用的数据,这种数据再多也是噪音;一种是对数据对未来预测有帮助,但 数据量稀少对未来预测也是随机的,也等同于噪音效果;

    更多相关内容
  • 数据挖掘:数据清洗——数据噪声处理

    万次阅读 多人点赞 2020-02-19 14:43:42
    数据噪声(Noise):数据集中的干扰数据(场景描述不准确的数据),即测量变量中的随机误差或方差。 二、噪声数据与离群点的区别 观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):而离群点(Outlier)属于...

    数据挖掘:数据清洗——数据噪声处理

    在这里插入图片描述

    一、什么是数据噪声?

    数据噪声(Noise):数据集中的干扰数据(对场景描述不准确的数据),即测量变量中的随机误差或方差

    二、噪声数据与离群点的区别

    观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):而离群点(Outlier)属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的,但是总的来说是和大部分观测量之间有明显不同的观测值。

    数据噪声与离群点有很多相同的地方。之间没有太过明确的定义,主要看应用的场景。如在信用卡诈骗中,我们通常会关注那些少量的异常数据,此时数据是具有探索意义的。而在一般的场景下,离群点和噪声都需要剔除,一般使用的方法也有很多相似之处,如3标准差去噪,dbscan去噪,孤立森林等。

    三、产生原因

    同异常值,也有机器因素和人为因素。这里不做过多说明。

    四、处理的必要性

    对模型训练有影响很多算法,不仅会增加数据量,也会加大计算量,增加计算机内存和计算开销,也会增大计算误差。特别是线性算法,都是通过迭代来获取最优解的,如果数据中含有大量的噪声数据,将会大大的影响数据的收敛速度,甚至对于训练生成模型的准确也会有很大的副作用。

    五、处理方法

    常见的噪声数据的处理方法:

    1. 人工检查
    2. 统计模型;
    3. 分箱;
    4. 聚类;
    5. 回归 。

    5.1 人工检查

    根据业务和对数据本身的理解,人为的进行数据筛选。

    5.2 统计模型

    对于正态数据,利用3个标准差原则进行去噪,或使用四分位差进行去噪。
    对于偏态数据用分箱则效果更好

    5.3 分箱

    分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理
    在采用分箱技术时,需要确定的两个主要问题就是:

    1. 如何分箱
    2. 如何对每个箱子中的数据进行平滑处理。

    分箱的方法有4种:等深分箱法、等宽分箱法、用户自定义区间法和最小熵法。

    等宽分箱法容易受异常值影响,分箱后可能有的区域值很多,有的很少。分配不均匀。

    等深/等频分箱法则容易将相同的值分到不同的箱中。

    5.3.1 分箱方法

    例:客户收入属性income排序后的值(人民币元):800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000。

    5.3.1.1 统一权重

    也称等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。每个箱子的深度(箱内数据的个数)统一

    统一权重:设定权重(箱子深度)为4,分箱后

    箱1:800 1000 1200 1500

    箱2:1500 1800 2000 2300

    箱3:2500 2800 3000 3500

    箱4:4000 4500 4800 5000

    5.3.1.2 统一区间

    也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。

    统一区间:设定区间范围(箱子宽度)为1000元人民币,分箱后

    箱1:800 1000 1200 1500 1500 1800

    箱2:2000 2300 2500 2800 3000

    箱3:3500 4000 4500

    箱4:4800 5000

    5.3.1.3 用户自定义区间

    用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。
    用户自定义:如将客户收入划分为1000元以下、1000-2000、2000-3000、3000-4000和4000元以上几组,分箱后

    箱1:800

    箱2:1000 1200 1500 1500 1800 2000

    箱3:2300 2500 2800 3000

    箱4:3500 4000

    箱5:4500 4800 5000

    5.3.1.4 最小熵法

    熵是不确定性的度量,最大熵原理的意思就是说我们在对结果进行推测时,要承认我们的无知,所以要最大化不确定性,以得到最客观的结果。而对于最小熵原理,则是要最小化每个分箱内的不确定性。跟下面介绍的聚类方法不一样,这里的无监督模型是为了更好的分组,进而进行数据平滑处理。而后面的聚类是直接把噪声数据删除。
    链接:最小熵原理

    5.3.2 数据平滑方法

    数据平滑方法又可以细分为:平均值平滑、边界值平滑和按中值平滑。
    排序后的数据:4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34。以下例子按照等深分箱处理。

    5.3.2.1 平均值平滑

    对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。

    5.3.2.2 边界值平滑

    用距离较小的边界值替代箱中每一数据。
    在这里插入图片描述

    5.3.2.3 中值平滑

    取箱子的中值,用来替代箱子中的所有数据。
    在这里插入图片描述

    5.4 聚类

    可以通过如聚类如k-means来检测离群点。聚类将类似的值组织成群或“簇”。那些落在簇之外的值(孤立点),这些孤立点被视为噪声。同离群点的处理方式。
    k均值聚类法将观测值聚为k类,但在聚类过程中需要保证分箱的有序性:第一个分箱中所有观测值都要小于第二个分箱中的观测值,第二个分箱中所有观测值都要小于第三个分箱中的观测值,等等。
    在这里插入图片描述

    5.5 回归

    可以用一个函数拟合数据来光滑数据。这种技术称之为回归。即让数据适合一个函数来平滑数据,通过建立数学模型来预测下一个数值。通过,包括线性回归和非线性回归。

    1. 线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性可以用来预测另一个。
    2. 多元线性回归是线性回归的扩充,其中涉及的属性多余两个,并且数据拟合到一个多维曲面。

    六、利用Python进行数据离散化

    pandas中的cut(),qcut()用来把一组数据分割成离散的区间。

    6.1 使用pd.cut()

    pd.cut(),按照数据值的大小(从最大值到最小值进行等距划分)进行划分。每个间隔段里的间隔区间都是相同的,统一区间

    pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
    
    • 参数含义
      补充:duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。
      在这里插入图片描述
    • 返回值
      out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。
      bins:分隔后的区间,当指定retbins为True时返回。
    import numpy as np
    import pandas as pd
    
    ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
    
    # 将ages平分成5个区间,等宽分箱
    pd.cut(ages, 5)
    [(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
    Length: 16
    Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]
    
    #将ages平分成5个区间并指定labels
    pd.cut(ages, 5, labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 婴儿, 青年, 青年, ..., 婴儿, 婴儿, 青年, 青年, 青年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    # 给ages指定区间进行分割
    pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    #返回分割后的bins,令retbins=True即可
    pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
    ([婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
     Length: 16
     Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
     array([  0,   5,  20,  30,  50, 100]))
    
    #只返回x中的数据在哪个bin,令labels=False即可
    #第一个0表示1在第0个bin中。
    pd.cut(ages, [0,5,20,30,50,100], labels=False)
    array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)
    
    df_cut['data'] = ages
    df_cut['data_分组'] = pd.cut(ages,5)
    df_cut['data_标签分组'] = pd.cut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    df_cut['data_标签组别'] = pd.cut(ages, [0,5,20,30,50,100], labels=False)
    

    在这里插入图片描述

    6.2 使用pd.qcut()

    pd.qcut(),按照数据出现频率百分比划分,比如要把数据分为四份,则四段分别是数据的0-25%,25%-50%,50%-75%,75%-100%,每个间隔段里的元素个数都是相同的,统一权重

    pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise') 
    

    在这里插入图片描述

    # 将ages平分成5个区间
    pd.qcut(ages,5)
    [(0.999, 12.0], (0.999, 12.0], (0.999, 12.0], (36.0, 62.0], (25.0, 36.0], ..., (12.0, 25.0], (12.0, 25.0], (12.0, 25.0], (25.0, 36.0], (25.0, 36.0]]
    Length: 16
    Categories (5, interval[float64]): [(0.999, 12.0] < (12.0, 25.0] < (25.0, 36.0] < (36.0, 62.0] < (62.0, 100.0]]
    
    # 查看区间内的数据个数,等深分箱
    pd.qcut(ages,5).value_counts()
    (0.999, 12.0]    4
    (12.0, 25.0]     3
    (25.0, 36.0]     3
    (36.0, 62.0]     3
    (62.0, 100.0]    3
    dtype: int64
    
    #将ages平分成5个区间并指定labels
    pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    #返回分割后的bins,令retbins=True即可
    pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
    [婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
    ([婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
     Length: 16
     Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
     array([  1.,  12.,  25.,  36.,  62., 100.]))
     
    #只返回x中的数据在哪个bin,令labels=False即可
    #第一个0表示1在第0个bin中。
    pd.cut(ages, 5, labels=False)
    array([0, 0, 0, 1, 1, 0, 2, 3, 3, 4, 4, 0, 0, 1, 1, 1], dtype=int64)
    
    df_qcut = pd.DataFrame()
    df_qcut['data'] = ages
    df_qcut['data_分组'] = pd.qcut(ages,5)
    df_qcut['data_标签分组'] = pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    df_qcut['data_标签组别'] = pd.qcut(ages, 5, labels=False)
    

    在这里插入图片描述

    七、总结

    噪声和离群点之间有一定的差别,而具体的处理要看应用场景是什么。
    存在数据噪声,会增大数据量,影响模型运行速度,并对准确率造成影响。
    处理方法有

    1. 人工检查
    2. 统计模型;
    3. 分箱;
    4. 聚类;
    5. 回归 。

    对于分箱,可先使用pandas中的cut()和qcut(),进行分箱,然后通过mean(),median()编写数据平滑的函数,作为替代值。具体哪种分箱方式,要看应用的场景。如年龄,等宽分箱比较合理。
    聚类和回归可使用sklearn中的包实现。其中回归通过对数据拟合预测的方式,来甄别噪声数据。

    八、参考文献

    https://blog.csdn.net/M_WBCG/article/details/79117085
    https://blog.csdn.net/poi10086/article/details/82497065
    https://blog.csdn.net/qq_32572085/article/details/89704051
    https://www.zhihu.com/question/37506766
    https://www.cnblogs.com/nicetoseeyou/p/10655422.html
    https://www.cnblogs.com/sench/p/10128216.html
    https://www.cnblogs.com/nicetoseeyou/p/10655422.html

    展开全文
  • 本文探讨了时钟公差Σ-Δ ADC中低通抽样和数字滤波器的影响,特别是滤波器陷波频率的影响。窄带Σ-Δ应用通常利用数字滤波器提供50Hz、60Hz或50Hz/60Hz的噪声抑制。在选择外部时钟晶体或内部时钟时,了解时钟...
  • 也许你也会跟我一样认为典型数据表中的某些规格难以理解,这是因为其中涵盖了一些你不太熟悉的隐含惯例。许多RF系统工程师而言,其中一种规格便是锁相环(PLL)中的相位噪声。当信号源被用作本机振荡器(LO)或高速...
  • 数据预处理--噪声

    万次阅读 2018-01-20 21:55:19
    数据集中的干扰数据场景描述不准确的数据) 2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师...

    1.噪声是什么?数据集中的干扰数据(对场景描述不准确的数据)

    2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师采集信号的方法就是将一个信号接受终端固定到车上,然后开车绕着基站转,信号终端就会自动采集不同区域的信号强度,生成一份数据。但是如果车在采集过程中遇到了突发事件、急刹车,就可能会对信号采集造成一定的影响,生成噪声数据。

    3.噪声对模型训练有什么影响?很多算法,特别是线性算法,都是通过迭代来获取最优解的,如果数据中含有大量的噪声数据,将会大大的影响数据的收敛速度,甚至对于训练生成模型的准确也会有很大的副作用。

    4.去除噪声的方法:根据不同的业务场景有不同的处理方法,这里只提出正态分布3σ原则。正态分布也叫常态分布,是连续随机变量概率分布的一种,自然界、人类社会、心理、教育中大量现象均按正态分布,如能力的高低、学生成绩的好坏都属于正态分布,我们可以把数据集的质量分布立杰成一个正态分布。它会随着随机变量的平均数、标准差与单位不同而有不同的分布形态。正态分布可以表示成一种概率密度函数。

    正态分布公式
    • formula
    其中, σ可以表示成数据集的标准差,μ代表数据集的均值,x代表数据集的数据。相对于正常数据,噪声数据可以理解为小概率数据。


    正态分布具有这样的特点:x落在(μ-3σ,μ+3σ)以外的概率小于千分之三。根据这一特点,我们可以通过计算数据集的标准差,把三倍于数据集的标准差的点设想为噪声数据排除。

    示例
    from __future__ import division
    
    mat = [[19, 26, 63], [13, 62, 65], [16, 69, 15], [14, 56, 17], [19, 6, 15], [11, 42, 15], [18, 58, 36], [12, 77, 33],
           [10, 75, 47], [15, 54, 70], [10017, 1421077, 4169]]
    
    
    # 获得矩阵的字段数量
    def width(lst):
        i = 0;
        for j in lst[0]:
            i += 1
        return i
    
    
    # 得到每个字段的平均值
    def GetAverage(mat):
        n = len(mat)
        m = width(mat)
        num = [0] * m
        for i in range(0, m):
            for j in mat:
                num[i] += j[i]
            num[i] = num[i] / n
        return num
    
    
    # 获得每个字段的标准差
    def GetVar(average, mat):
        ListMat = []
        for i in mat:
            ListMat.append(list(map(lambda x: x[0] - x[1], zip(average, i))))
    
        n = len(ListMat)
        m = width(ListMat)
        num = [0] * m
        for j in range(0, m):
            for i in ListMat:
                num[j] += i[j] * i[j]
            num[j] /= n
        return num
    
    # 获得每个字段的标准差
    def GetStandardDeviation(mat):
        return list(map(lambda x:x**0.5,mat))
    # 对数据集去噪声
    def DenoisMat(mat):
        average = GetAverage(mat)
        variance = GetVar(average, mat)
        standardDeviation=GetStandardDeviation(variance)
        section = list(map(lambda x: x[0] + 3*x[1], zip(average, standardDeviation)))
        n = len(mat)
        m = width(mat)
        num = [0] * m
        denoisMat = []
        noDenoisMat=[]
        for i in mat:
            for j in range(0, m):
                if i[j] > section[j]:
                    denoisMat.append(i)
                    break
                if j==(m-1):
                    noDenoisMat.append(i)
        print("去除完噪声的数据:")
        print(noDenoisMat)
        print("噪声数据:")
        return denoisMat
    
    
    if __name__ == '__main__':
        print("初始数据:")
        print(mat)
        print(DenoisMat(mat))
    


    数据过滤:一组数据中,里面有一个字段对于结果没有任何的意义,就可以将该字段过滤掉。就例如一组数据的用户ID不具备描述行为特性的含义。
    展开全文
  • 在本问题里,最重要的是研究不同的噪声水平(即数据集中带有错误标签的样本的百分比)模型性能的影响。但是,当前的受控实验仅局限在人工合成噪声,而不是真实的噪声。与实际经验相比,人工合成噪音会导致研究结果...

    点击上方“3D视觉工坊”,选择“星标”

    干货第一时间送达

    来自 | 知乎   作者 | 蒋路

    链接 | https://www.zhihu.com/people/roadjiang/posts

    编辑 | 深度学习这件小事公众号

    本文仅作学术交流,如有侵权,请联系后台删除。

    孔子云:“性能不够,数据来凑”。可是如果数据中有噪声标签(Noisy Labels)怎么办?本文借鉴Google AI的最新工作[1]来回答这个问题。

    以下我们尽量避免使用专业术语,希望对非专业的读者也会有所帮助。

    深度神经网络的成功依赖于高质量标记的训练数据。训练数据中存在标记错误(标记噪声,即Noisy Labels)会大大降低[2]模型在干净测试数据上的准确性[3]。不幸的是,大型数据集几乎总是包含带有不正确或不准确的标签。这导致了一个悖论:一方面,大型数据集对于深度网络的训练是非常必要的,而另一方面,深度网络往往会记住训练标签噪声,从而在实践中导致较差的模型性能。

    学界已经意识到这个问题的重要性,一直在试图理解理解标签噪声,和发明新的鲁棒学习方法来克服它们。在这个过程中,受控实验[4]扮演着至关重要的角色。好比研发一种新的药物,我们需要受控实验来对影响实验结果的无关因素加以控制。在本问题里,最重要的是研究不同的噪声水平(即数据集中带有错误标签的样本的百分比)对模型性能的影响。但是,当前的受控实验仅局限在人工合成噪声,而不是真实的噪声。与实际经验相比,人工合成噪音会导致研究结果大相径庭。来看一个例子:“神经网络是否对于人工噪音数据敏感?”,前人给出了截然相反的答案:

    ”Deep neural networks easily fit random labels” (Zhang et al. 2017)

    VS

    “Deep learning is robust to massive label noise” (Rolnick et al. 2017)


    更重要的是,我们发现:在人工噪声上表现良好的方法,在现实世界的噪声数据集上效果可能并不理想。

    在ICML 2020上发布的“Beyond Synthetic Noise: Deep Learning on Controlled Noisy Labels”中,我们做出了三点贡献。首先,我们建立了第一个受控的噪声数据集,一个来自真实世界的标签噪声(即Web标签噪声)[2]。其次,我们提出了一种简单而有效的方法来克服真实和人工行合成的噪声标签。最后,我们进行了迄今为止最大的实验,比较了人工和真实噪声在各种训练环境下的区别。

       人工合成标签噪声与真实标签噪声的区别:

    人工噪声与真实标签噪声的分布之间存在许多差异,以图像举例:

    1. 首先,带有真实标签噪声的图像在视觉或语义上与干净的正样本更加一致。

    2. 其次,人工标签噪声处于类级别(即同一类中的所有样本均同样嘈杂),而现实世界中的标签噪声处于实例级(与相关类无关,某些图片会比其他图片更有可能被错误标注)。例如,“本田思域”和“本田雅阁”的侧面图片会比正面拍摄的图片更容易混淆。

    3. 第三,带有真实标签噪声的图像来自开放的词汇,这些词汇可能不会与特定数据集的类词汇重叠。例如,“ ladybug”的噪声图像包括诸如“ fly”之类的图片,然而”fly"很可能是一个background class,也就是并不是我们训练集合定义的class的一部分。

    基于以上原因,一个受控标签噪声的数据集将有助于更好地定量研究人工合成和实际标签噪声之间的差异。

    人工合成标签噪音和Web标签噪音的比较。从左到右的列是Mini-ImageNet或Stanford Cars数据集中的真实睁眼本,带有人工合噪声的图像,以及带有错误Web标签的图像(在本文中收集)。

    为了区分,我们用红色噪声来指代Web标签噪声,而用蓝色噪声来指代人工合成标签噪声 (见黑客帝国中的红色和蓝色药丸)

       Web上受控标签噪声

    “如果选择蓝色药丸– 故事就此结束,你在自己床上醒来,继续相信你愿意相信的一切。如果你吃下红色药丸– 你将留在奇境,我会让你看看兔子洞究竟有多深。” (黑客帝国 1999)

    我们提出的Web噪声数据集合建立在两个公共数据集上:Mini-ImageNet(用于粗粒度图像分类)和Stanford Cars(用于细粒度图像分类)。遵循人工合成数据集的构建方法,我们逐渐将这些数据集中的干净图像替换为从网络上收集的标签错误的图像。

    为此,我们使用类名(例如“ ladybug”)作为关键字从网络上收集图像,这是一种自动方法来收集Web上带有噪声标签的图像,完全无需人工注释。然后,我们使用Google Cloud Labeling Service的标注人员检查每个检索到的图像,这些标注人员将识别给定的Web标签是否正确。我们使用带有错误标签的Web图像来替换原始Mini-ImageNet和Stanford Cars数据集中的一定比例的干净训练图像。我们创建了10个不同的数据集,它们的标签噪声逐渐升高(从0%的完全干净数据,到80%的带有错误标签的数据)。数据集已在我们的“ 受控噪声网络标签”网站上开源。

       MentorMix:一种简单的鲁棒学习方法

    给定一个含有未知噪声的数据集,我们的目标是训练一个鲁棒的模型,该模型可以很好地推广到干净的测试数据上。我们介绍了一种简单有效的方法来处理噪声标签,称为MentorMix,该方法是在本文提出的数据集上开发得到的。

    MentorMix是一种基于MentorNet和Mixup两种现有技术的迭代方法,包括四个步骤:加权,抽样,混合和再加权。第一步,通过MentorNet网络在mini-batch中为每个样本计算权重,并将权重normalize为分布。在此处的示例中,MentorNet使用StudentNet训练loss来确定分布中的权重。

    MentorMix方法的四个步骤的图示:加权,采样,混合和再加权。

    接下来,对于每个样本,我们使用重要性采样根据分布在同一个mini-batch中选择另一个样本。由于权重较高的样本往往带有正确的标签,因此在采样过程中会受到青睐。然后,我们使用Mixup混合原始样本和采样得到的样本,以便模型在两者之间进行插值,并避免过度拟合噪声。最后,我们可以为混合的样本计算一个新的权重,来计算最终的example loss。对于高噪声水平,上述二次加权的影响变得更加明显。

    上面的动画演示了MentorMix中的四个关键步骤,其中StudentNet是要在噪声标签数据上进行训练的模型。正如Jiang等人所述,我们采用了非常简单的MentorNet版本,以计算每个样本的权重。

       模型性能

    我们在五个数据集上验证了MentorMix的有效性。其中WebVision 1.0是一个包含有现实噪声标签的220万张图像的大型数据集。MentorMix在WebVision数据集上获得最佳的结果,就ImageNet ILSVRC12验证集的top-1分类准确性而言,将以前的最佳方法提高了约3%。

       Web噪声标签的新发现

    这项工作代表了迄今为止最大的研究,目的是了解在噪声标签上训练的深度神经网络。我们提出了三个有关Web标签噪声的新发现:

    • 深度神经网络可以更好地泛化在Web标签噪声

    • 在神经网络标签噪声上,深度神经网络可能不会率先学习模式 (Learning the early patterns first)

    • 当神经网络在噪声数据上微调时,更先进的ImageNet架构会在带有噪声的训练数据集上表现的更好。

    基于我们的发现,我们有以下针对在噪声数据上训练深度神经网络的实用建议:

    1. 处理噪声标签的一种简单方法是fine-tune在干净的数据集(如ImageNet)上预训练的模型。预训练的模型越好,则可以更好地推广到下游含有噪声的训练任务上。

    2. 提前停止 (Early Stopping)可能对网络上的实际的标签噪音无效。

    3. 在人工噪声上表现良好的方法,在现实世界的噪声数据集上效果可能并不理想

    4. Web标签噪声似乎危害较小,但是对于我们当前的robust Learning的学习方法而言,解决起来却更加困难。这个发现鼓励更多的未来研究。

    5. 建议的MentorMix可以更好地克服人工合成和现实噪音标签。

    MentorMix的代码可在GitHub上获得,数据集在我们的数据集网站上,链接如下:

    GitHub:https://github.com/google-research/google-research/tree/master/mentormix

    数据集:https://google.github.io/controlled-noisy-web-labels/index.html

    更多资源:http://www.lujiang.info/cnlw.html

    参考

    ^这两种观点或许都是对的。不同的结论来自于不同的人工噪声设置。

    ^以下我们以来自网络的噪声标签来举例说明真实标签噪声。虽然真实噪声不仅包含网络标签,然而网络标签是最常见的一种真实噪声。

    本文仅做学术分享,如有侵权,请联系删文。

    下载1

    在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

    下载2

    在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

    下载3

    在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

    重磅!3DCVer-学术论文写作投稿 交流群已成立

    扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

    同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

    一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

    ▲长按加微信群或投稿

    ▲长按关注公众号

    3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

    学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

     圈里有高质量教程资料、可答疑解惑、助你高效解决问题

    觉得有用,麻烦给个赞和在看~  

    展开全文
  • 使用matlab采样数据文本进行fft变换步骤与代码 傅里叶变换。 提供采样数据文本进行FFT(快速傅里叶变换)的代码模板,并代码重要部分做了注释,便于理解 matlab FFT 傅里叶变换
  • 在本问题里,最重要的是研究不同的噪声水平(即数据集中带有错误标签的样本的百分比)模型性能的影响。但是,当前的受控实验仅局限在人工合成噪声,而不是真实的噪声。与实际经验相比,人工合成噪音会导致研究结果...
  • 噪声的详细理解

    千次阅读 2021-12-11 08:58:43
    数据处理的时候,经常会遇到噪声。一般的噪声是一种功率谱密度为常数的随机信号或随机过程,即白噪声。白噪声的由来是由于白光是由各个频率的单色光混合而成,因为此信号的平均功率谱性质成为“白”,此信号也就是...
  • 噪声和失真是工程师在设计高精度模拟系统常见的两个令人挠头的问题。但是,当我们查看一个运算放大器数据表中的总谐波失真和噪声 (THD+N) 数值时,也许不能立即搞清楚哪一个才是你要应对的敌人:噪声还是失真?
  • 在选择自己需要的ADC时,噪声、ENOB有效分辨率都是关键的参数。
  • 所有的ADC都会具有一定的噪声,这包括输入参考噪声(ADC固有噪声)和量化噪声(ADC转换时产生...由于当前更高分辨率的迫切需求,设计者必须更好地理解ADC噪声、ENOB、有效分辨率,以及信噪比(SNR)。本文的目的正基于此。
  • 数据预处理之python实现噪声处理

    千次阅读 多人点赞 2020-03-18 10:35:18
    数据集中的干扰数据场景描述不准确的数据) 2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师...
  • 给数组中的每个数据加上噪音的方法: import numpy as np a = np.arange(10).reshape(5,2) a Out[83]: array([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]) 假设原数组如上所示,为5行2列,那么想给每个数据...
  • 我们可以轻松地处理频域中的数据,例如:去除噪声波。 之后,我们可以使用这个逆方程将频域数据转换回时域波: 让我们暂时忽略 FT 方程的复杂性。 假设我们已经完全理解数学方程的含义,让我们使用傅立叶变换在 ...
  • 通俗理解数据仓库的四大特点

    千次阅读 2020-07-13 16:57:37
    数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。...面向主题的数据组织方式,就是在较高层次分析对象数据的一个完
  • 对数据挖掘的认识.pdf

    2020-11-22 09:02:16
    对数据挖掘的认识 一数据挖掘的理解 数据挖掘是从大量的不完全的有噪声的模糊的随机的 数据集中识别出有效的新颖的潜在有用的以及最终可理解的 知识的非平凡过程这个定义包括几层含义数据源必须是真实 的大量的含...
  • 神经网络的方法不常用于数据挖掘任务,因为他们可能具有复杂的结构,训练时间长,和不易理解的结果表示和常产生不可理解的模型,然而,神经网络具有对噪声数据的高承受能力和高精确度,是数据挖掘中的优先考虑。...
  • GAN噪声理解

    2021-04-04 13:40:40
    链接: link.
  • (1)数据清洗:清除数据噪声和与挖掘主题明显无关的数据 (2)数据集成:将多个数据源中的相关数据结合到一起 (3)数据选择:根据数据挖掘的目标选择待处理的数据 (4)数据转换:将数据转换为易于进行数据...
  • 时间序列数据的白噪声检验

    千次阅读 2021-10-11 16:29:49
    只有数据平稳,才可以借数据。 只有借数据,才可以做分析。 什么是白噪声序列 白噪声序列也称为纯随机序列,它满足两个性质 1)数据是平稳的 2)t≠s的时候,方差为0,说明t和s没有线性的关系 白噪声的性质 在白...
  • 数据增广】数据增广之详细理解

    千次阅读 2020-05-22 14:52:18
    数据增广是深度学习中常用的技巧之一,主要用于增加训练数据集,让数据集尽可能的多样化,使得训练的模型具有更强的泛化能力.现有的各大深度学习框架都已经自带了数据增广,但是平时在用的使用只是直接调用了对应的...
  • 数据预处理_数据清理(缺失值、噪声等详细处理)

    万次阅读 多人点赞 2018-08-11 10:57:21
    实际的数据库极易受噪声、缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源。低质量的数据将会导致低质量的挖掘结果。有大量的数据预处理技术: - - 数据清理:可以用来清楚数据中的噪声,...
  • 一、数据挖掘是什么?   数据挖掘是从大量...  数据挖掘是创建数据挖掘模型的一组试探法和计算方法,通过提供的数据进行分析,查找特定类型的模式和趋势,最终形成创建模型。   大数据挖掘常用的算法有分类、
  • 一个24位的ADC,真正能使用的位数能达到24位吗?答案是否定的,由于器件本身噪声的存在,且噪声范围已经超过了ADC的最小分辨率。所以,基本上24位ADC都不能做到24位无跳动。...
  • 基础理论介绍: 扩展卡尔曼滤波EKF用于多源传感器融合 ...本篇博客主要是记录自己 EKF 的学习过程,以理论逻辑为主线,代码实现为辅助理解如何从头开始实现一个基于扩展卡尔曼滤波的数据。 待更… ...
  • 数据(data)是事实或观察的结果,是客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。 数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等。 数据和信息是不可分离的,数据...
  • 肌电信号的数据理解

    千次阅读 多人点赞 2021-01-20 23:35:49
    本文主要是解释说明肌电数据,只有理解数据的格式和意义,才能更进一步的去处理数据,从自采的肌电数据角度和Ninapro公共数据集的角度来理解数据。 一、基于自采肌电数据理解 这里用于采集设备的肌电设备是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,388
精华内容 32,555
关键字:

对数据噪声理解