Covariate Shift(协变量偏移)

迁移学习:协变量偏移问题分析 迁移学习:协变量偏移问题分析 作者:禅与计算机程序设计艺术 1. 背景介绍 机器学习模型的性能很大程度上依赖于训练数据的质量和分布。但在实际应用中,训练数据和测试数据往往存在分布差异,这种现象被称为协变量偏移(Covariate Shift)问题。协变量偏移会导致模型在实际应用中 阅读详情
AI摘要

本文介绍了Covariate Shift现象及其在机器学习中的影响,并详细阐述了识别与解决该问题的方法。

转载于https://zhuanlan.zhihu.com/p/205183444

此系列文章为笔者学习工作中的阶段性总结,难免有纰漏,如有不正之处,欢迎指正,大家共同成长。

Covariate Shift现象在机器学习的工业界应用中经常遇到,这个概念实际上属于Dataset Shift的一种。

Dataset Shift概念

在ML项目中,我们一般将采集到的真实场景的数据分成训练集和测试集(或验证集),并假设训练集和测试集符合独立同分布,这样才能保证在训练集上表现良好的模型同样适用于测试集(真实场景)。

但是当因为某些原因,导致训练集和测试集不同分布,便发生了 dataset shift (or drifting)。


Dataset Shift


Dataset Shift类型

dataset shift的类型一般分为三种(以下的协变量因变量可以理解为数据中的x及对应标签y):

  • 协变量偏移(Covariate Shift)

协变量的变化,比如模型应用场景中环境、位置的变化等

注:这里解释下此处的协变量,假设我们要拟合方程 y=wx,对于一个数据对(x,y):
y为因变量,w为自变量,x为协变量。
  • 先验概率偏移(Prior probability shift)

因变量的变化,比如根据月份预测销售额的模型,用平时月份训练的模型预测销售高峰月份的销售额。输入仍然为月份没有变化,但训练集和实际场景中的因变量完全不一样(一般月份和销售高峰月份的销售额本就不一样)。

  • 概念偏移

字面理解就是自变量和因变量之间的关系发生了改变。

识别Covariate Shift

在实际问题中,我们最常遇到的应该是Covariate Shift了,如下图所示,当训练集和测试集差异较大时,我们的训练往往是徒劳的。那么如何分辨发生了Covariate Shift。


Covariate Shift


识别Covariate Shift的一般思路

如果数据发生了Covariate Shift的数据,那么理论上可以通过一个分类器以一个较高的准确率将原始数据和测试数据区分开(毕竟分布不同)。

  1. 在训练集和测试集中随机采样(注意训练集和测试集的采样数量需要一致),然后将采样数据混合到一起形成新的训练数据,对数据增加一个新维度标签,取值取决于数据来源(比如训练集标识1,测试集标识0)。
  2. 上一步得到了一个新的训练集. 将这个训练集的一部分数据(如80%)用来训练模型(KNN, SVM等), 剩下的数据(如20%)用来测试模型的性能。
  3. 计算模型在测试集上的AUC-ROC,如果指标较大(比如大于0.8),便可判定发生了Covariate Shift。


第3步计算AUC-ROC,本质上就是为了衡量二元分类质量。我们还可以采用MCC(Matthews correlation coefficient)来衡量。一般MCC阈值可以设置为0.2。MCC>0.2说明出现了covariate shift的现象,反之亦然。


MCC

PS:

TP(True Positive):真实为1,预测为1 FN(False Negative):真实为1,预测为0 FP(False Positive):真实为0,预测为1 TN(True Negative):真实为0,预测为0

解决covariate shift的方法

这里介绍两种方法解决covariate shift现象:

  • 去除产生covariate shift现象的特征(Dropping of drifting features)
  • 使用密度比的重要性加权(Importance weight using Density Ratio Estimation)

Dropping of drifting features

这个方法很简单,就是去掉产生了偏移(shift)的特征。但是直接去掉特征很可能带来信息损失,导致模型效果变的更差。所以一个简单的原则就是:去除产生偏移的且不重要的特征。

以kaggle的俄罗斯联邦储蓄银行住房市场 ( Sberbank Russian Housing Market)数据为例。我们通过逐个特征分类分析,得到了产生了偏移的特征:

# Drifting features : 
{id, life_sq, kitch_sq, hospital_beds_raion,  cafe_sum_500_min_price_avg, cafe_sum_500_max_price_avg,  cafe_avg_price_500 }

然后分析出所有特征中最重要的20个特征如下,通过对比找出产生偏移的且不重要的特征去除掉即可。



这里有个重要问题就是如何确定特征的重要性。介绍两种比较流行的特征重要性评估方法[2]:

  1. Mean decrease impurity 这个方法的原理其实就是Tree-Model进行分类、回归的原理:特征越重要,对节点的纯度增加的效果越好。而纯度的判别标准有很多,如GINI、信息熵、信息熵增益。(sklearn中的树模型提供了feature_importances_采用的就是这种方法计算得到的)
  2. Mean decrease accuracy
    这个方法更直观一些,是说某个特征对模型精度的影响。把一个变量的取值变为随机数,随机森林预测准确性的降低程度。该值越大表示该变量的重要性越大。 这个方法是很多研究、文献中所采用的方法。


Importance weight using Density Ratio Estimation

Discriminative Learning Under Covariate Shift[3]这篇文章介绍了一种通过对训练数据加权解决训练数据分布与测试数据分布不一致的问题。具体的论证可以参考论文,这里给出简单实现。

1.获取不同数据分布之间的差异

假设样本点为xi,它在训练数据分布为q(xi),在测试数据中的分布为p(xi),则它的密度比表示为p(xi)/q(xi),作为后续的权重系数。那么如何求解分布q和p,文中的思路为训练一个分类模型,数据为“训练+测试”数据,Label为是否属于训练集(测试集标识1,训练集标识-1)。 分类器分得准,证明数据差异明显,分布不一致。反之亦然。

分类器以LR模型为例:

[公式]

[公式]

[公式]


其中,z=1表示样本来自测试集,z=-1表示样本来自训练集。f(xi)表示sigmoid函数的输入值。

两式相比,求得系数p(xi)/q(xi)。

理论上这里用什么learning方法出来的分类器都是可以的。

2.使用权重系数对训练数据加权

学到了这个系数便可以对训练数据中的每个样本加权。(可以理解为重要性加权)


注:

训练LR模型的时候数据标注不一定是训练集-1测试集1,也可以反过来。反过来的话最终的系数为 [公式] ,最终加权效果是一样的,因为此时模型学得的 [公式] 也是相反的。



参考

[1] Covariate Shift – Unearthing hidden problems in Real World Data Science

analyticsvidhya.com/blo

[2] sklearn的feature_importances_含义是什么?

blog.youkuaiyun.com/weixin_37

[3] Discriminative Learning Under Covariate Shift

jmlr.csail.mit.edu/pape

[4] covariate shift现象以及解决方法

blog.youkuaiyun.com/guoyuhaoa

[5] 豆瓣Discriminative Learning Under Covariate Shift

site.douban.com/204776/

深度学习入门(十五)环境和分布偏移(了解) 环境和分布偏移 教材 分布偏移的类型 协变量偏移 标签偏移 概念偏移 分布偏移示例 医学诊断 自动驾驶汽车 非平稳分布 更多轶事 分布偏移纠正 经验风险与实际风险 协变量偏移纠正 标签偏移纠正 概念偏移纠正 学习问题的分类法 批量学习 在线学习 老虎机 控制 强化学习 考虑到环境 机器学习中的公平、责任和透明度 阅读详情

相关推荐

协变量偏移与归一化(Internal Covariate Shift & Normalization)

协变量偏移与归一化 深度学习(也可推广至所有机器学习)学习的是数据的分布。所以一旦分布出现了问题,学习的效率就会大打折扣。因为数据集的分布如果不能很好的体现整体的所有分布,比如人脸识别中训练集都是年轻的脸,但测试集中包含了老年人的脸;股票预测中的训练集数据来源于牛市但测试集中包含了熊市的数据等等。综合来说:测试集的数据标签分布可能和训练集是一样的,但是测试集的条件分布和训练集的条件分布是不同的。用数学语言来描述可以写成: 在这种情况下,我们在训练集上学习到的分布

wuhao1205的博客 828

【机器学习】covariate shift现象的解释

一、什么是covariate shift? 在论文中经常碰到covariate shift这个词,网上相关的中文解释比较少 你可能会在介绍深度学习Batch Normalization方法的论文到中看到covariate shift这个词, 并且所有看过这篇论文的或者实际做过工程的人,都知道BN这种归一化手段很好用,可以避免covariate shift 那么covariate shift

xf__mao的博客 3万+

【AI知识点】内部协变量偏移(Internal Covariate Shift)

内部协变量偏移(Internal Covariate Shift) 是深度学习中的一个概念,它描述了在神经网络训练过程中,每一层的输入分布随着训练过程的变化而变化的现象。这种现象会增加训练的难度,导致网络收敛变慢,甚至可能影响模型的最终性能。

AI完全体 2160

机器学习问题之一:协变量偏移(Covariate Shift)

例如,随着时间的推移,用户的偏好可能会发生变化,这会导致用户行为数据的协变量偏移。同理,在一个复杂的机器学习系统中,也会要求系统的各个子模块在训练过程中输入分布是稳定的,若是不满足这一条件,这会导致各个子模块数据的内部协变量偏移。协变量偏移(Covariate Shift)是机器学习和深度学习中的一个重要概念,指的是在模型训练和应用时,输入数据(特征)的分布发生了变化,但输出标签的分布保持不变。在机器学习中,一般假设模型输入数据的分布是稳定的,若是模型输入数据的分布发生变化,这种现象被称为协变量偏移。

搏博的专栏 3653

Internal Covariate Shift与Normalization

引言 Batch norm在深度学习中已经是一个常用且有效的方法,用来加速网络收敛及防止梯度消失等神经网络常见的问题,那么batch norm为什么有效呢? 从源头出发,神经网络难以训练的原因是什么? Internal Covariate Shift 深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不...

lpty的博客 2万+

《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》论文导读

深度神经网络在训练过程中,由于前面层的参数变化,会导致后面层输入的分布发生变化,这种现象被称为“Internal Covariate Shift”(内部协变量偏移)。这种偏移会使得网络训练变得复杂,需要较低的学习率和谨慎的参数初始化,从而减慢了训练速度,并可能导致模型难以收敛。为了解决这个问题,作者提出了Batch Normalization方法。

谷哥的小弟 1301

破解深度学习难题:Batch Normalization 如何解决 Internal Covariate Shift (内部协变量偏移)问题

Internal Covariate Shift(内部协变量偏移)是指在深度神经网络训练过程中,由于前一层参数的更新导致后一层输入数据分布发生变化的问题。简单来说,随着模型的训练,网络的每一层都会接收到“不断变化的输入分布”,这会给训练过程带来挑战。

aiAI 725

[论文笔记]Batch Normalization

加快模型训练必备的技巧。

日积月累,天道酬勤 1528

[转] Covariate shift && Internal covariate shift

from:https://www.kaggle.com/pavansanagapati/covariate-shift-what-is-it Covariate Shift – What is it ? Introduction You may have heard from various people that data science competitions are...

weixin_33985679的博客 412

Knewton自适应学习平台实战:如何用大数据打造个性化教育体验

本文深入解析Knewton自适应学习平台如何利用大数据技术构建个性化教育体验。通过多维度数据采集、动态认知诊断模型和智能推荐系统,平台能精准识别学生知识盲区,提供定制化学习路径。实战案例显示,该方案显著提升完课率并优化学习效率,展现了自适应学习技术的教育变革潜力。

info6的博客 504

《UE4游戏开发》之 《音效系统的实现》

音效系统需要负责管理什么事情: 1.1 确定声音控制的分类:如背景音乐、技能音效、界面音效、角色配音等,不同游戏对声音有不同的分类 1.2 控制每个分类的声音的开启与关闭,以及调节每个分类声音的大小 解决如何分类: 2.1 首先需要知道ue4为声音分类提供了什么:SoundClass通常需要一个根分类【SC_RPG_Master】,便于总体控制音效,以及指定引擎默认启动的音效 打开SoundClass资产【SC_RPG_Master】,对根控制的设置,将逐级传递并按比例进行设置,以此达到控制一类声音的目的.

qq_21919621的博客 2126

【论文理解】Batch Normalization论文中关于BN背景和减少内部协变量偏移的解读(论文第1、2节)

最近在啃Batch Normalization的原论文(Title:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift)。 详细记录一下对论文前面部分的个人笔记和理解,包括第一部分的Introduction和第二部分的减少内部协变量偏移。 包括了BN解决的问题的由来,以及用普通的Normalization方法为什么不行。...

takedachia的博客 1812

多模态变体—ALIGN:高效的图像-文本学习

ALIGN 论文介绍了该模型的关键技术。无人工标注数据:使用互联网数据进行训练,不依赖人工清洗的数据集。高效的对比学习策略:采用大规模图像-文本配对数据,通过对比学习优化嵌入空间。支持零样本(zero-shot)学习:可以在没有专门训练的情况下执行多种任务,如分类、检索等。可扩展性强:ALIGN 采用高效的 CNN 或 Transformer 作为编码器,适用于大规模计算。

Azperk的博客 1218

Coursera | Andrew Ng (02-week3-3.6)—Batch Norm 为什么奏效?

该系列仅在原课程基础上部分知识点添加个人学习笔记,或相关推导补充等。如有错误,还请批评指教。在学习了 Andrew Ng 课程的基础上,为了更方便的查阅复习,将其整理成文字。因本人一直在学习英语,所以该系列以英文为主,同时也建议读者以英文为主,中文辅助,以便后期进阶时,为学习相关领域的学术论文做铺垫。- ZJ Coursera 课程 |deeplearning.ai |网易云课堂 ...

Self Improvement Lab 966

CMOS sensor 基础

NA

m0_72053187的博客 1657

深度学习论文: Towards Total Recall in Industrial Anomaly Detection

在大规模工业制造中,能够准确检测出有缺陷的零件至关重要。我们在这项工作中面临的一个特殊挑战是冷启动问题:仅使用正常的示例图像来训练模型。虽然可以针对每个类别手动设计解决方案,但我们的目标是构建能够自动适用于多个任务的系统。最佳的方法是将ImageNet模型的嵌入特征与异常检测模型结合起来。在本文中,我们在这一研究基础上进行了扩展,并提出了PatchCore,它利用了一个具有最大代表性的正常补丁特征内存库。通过这种方法,我们能够更好地解决冷启动问题,并提高系统在多任务上的性能。

mingo_敏 1875

Batch Normalization

1. 背景 首先来看看归一化之前和归一化之后的代价函数示意图,左边的最归一化之前,右边为归一化之后,最中间的点为我们要优化的最优点(图片来自Andrew最新deeplearning.ai改善深层神经网络课程的1.9 Normalizing inputs)。 我们可以看到,在归一化之前,不同的特征的取值范围可能有所不同,这样带来的不好的地方就是在进行梯度下降的时候,学习率不能够设置太大

wuzqChom的博客 1330

管理类联考——逻辑——真题篇——按知识分类——综合推理

29、某部门抽检了肉制品、白酒、乳制品、干果、蔬菜、水产品、饮料等﹖类商品共521种样品,发现其中合格样品515种,不合格样品6种。已知: (1)蔬菜、白酒中有2种不合格样品。 (2)肉制品、白酒、蔬菜、水产品中有5种不合格样品。 (3)蔬菜、乳制品、干果中有3种不合格样品。 根据上述信息,可以得出以下哪项? A. 乳制品中没有不合格样品。 B. 肉制品中没有不合格样品。 C. 蔬菜中没有不合格样品。 D. 白酒中没有不合格样品。 E. 水产品中没有不合格样品。 31~32题基于以下题干: 某中学举行田径运

stqer的博客 2017

转载:Batch normalization理解

在学习源码的过程中,发现在搭建网络架构的时候,经常会用到bn算法(即batch_normalization,批标准化),所以有必要深入去研究其中的奥妙。bn算法的提出在2015年的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》。 正如论文开始所说:由于训练过程中各层输入的分布随着前几层参数的变化而变化,使得训练深度神经网络变得复杂。这通过要求较低的学习速率和仔细

小朋友 500

【高级雷达感知与学习】 第十三章 可解释性与物理–感知融合(Physics-Informed ML)

本文提出了一种面向雷达感知的物理约束学习方法,将雷达物理先验(RCS、SNR、距离衰减)嵌入神经网络,解决纯数据驱动模型的样本效率低、泛化能力弱和决策不可信问题。通过三种融合范式(混合建模、物理正则化、PINNs)实现机理与数据协同建模,并设计了物理引导显著图解决雷达可解释性语义错位问题。实验表明,物理约束可提升40%样本效率,增强低信噪比场景鲁棒性。代码实现包含物理正则化损失、可解释性分析和消融实验,为雷达感知系统提供了可迁移的工程范本。

VectorShift的博客 185

8年ES运维经验整理出的Elasticsearch运维手册(超实用)

k1 : 控制非线性词频率归一化(饱和),Elasticsearch中默认值为1.2。用人能看懂的话说就是词语在文档中出现的次数对于得分的重要性。例如说我觉得在某些场景,一个搜索词在文档中出现越多则越接近我希望搜索的内容,就可以将这个参数调大一点。b :控制文档长度对于分数的惩罚力度。变量b处于分母上,它乘以刚刚讨论过的字段长度的比值,Elasticsearch中的b 默认值为0.75。如果b较大,则文档长度相对于平均长度的影响更大。

yonggeit的博客 5273

深度学习中的Internal Convariate Shift (ICS) 问题

深度学习网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络设计到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化。通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训练好模型,我们需要非常谨慎地设定学习率、初始化权重以及尽可能细致的参数更新策略。 Google将这一现象总结为Internal Convariate Shift,简称ICS。 Google提出BN的本之就是能够解决ICS问题,但是最近也有paper指出B...

hxxjxw的博客 1247

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

给AI装上“稳压器”:批归一化如何加速深度学习

想象一条汽车装配线:零件尺寸忽大忽小,工人被迫不停调整工具——这种生产标准不统一的混乱,正是深度学习中“内部协变量偏移”的灾难。今天,让我们一起探索这篇引用超10万次的论文,如何解决了深度学习的“慢性病”。今天,当你秒开手机人脸解锁、当工厂每秒检测十件产品——请不要忘记,背后是无数神经网络层在批归一化的“稳压”下高效协作。· 批归一化+网络:成功训练100层网络(如ResNet),错误率下降40%。效果:将本批数据强行拉回“标准身材”(均值0,方差1)。

nblway的博客 419

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Batch Normalization理解

啥叫所谓的后层网络要不断适应前面网络的变化?有x就行了呀,就算输入的分布变了,又能咋?为啥说学习速度就慢了 ICS产生的原因是由于参数更新带来的网络中每一层输入值分布的改变,并且随着网络层数的加深而变得更加严重 通过固定每一层网络输入值的分布来对减缓ICS问题 ...

weixin_40019546的博客 151

机器学习笔记:神经网络层的各种normalization

1 Normalization的引入 1.1 独立同分布 机器学习,尤其是深度学习的模型,如果它的数据集时独立同分布的(i.i.d.independent and identically distributed),那么模型的效果最好。 独立同分布的数据可以简化常规机器学习模型的训练、提升机器学习模型的预测能力 因此,很多模型在将数据喂入机器学习模型之前,都会有一步“白化”(whitening)操作。 白化一般包含两个目的:......

qq_40206371的博客 3194

详解深度学习中的Normalization,不只是BN(1)

原文链接:点击打开链接 摘要: “ 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Batch Normalization 大法自 2015 年由Google 提出之后,就成为深度学习必备之神器。 “ 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Batch

qq_40954115的博客 195
上一篇: 英文论文中连字符/横线/减号(Hyphen/Dash/Minus sign)
下一篇: 领域自适应(Domain Adaptation)和多源领域自适应(Multi-source Domain Adaptation)
lihe2021
博客等级 码龄10年 264粉丝 81原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值