机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样

一、图像数据不足时的处理方法

1.在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?

图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面,即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳

对应的处理方法大致也可以分两类,一是基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则顶)、集成学习、Dropout 超参数等;二是墓于数据的方法, 主要通过数据扩充( Data Augmentation ),即根据一些先验知识,在保持特定信息的前提下;对原始数据进行适当变换以达到扩充数据集的效果。具体到图像分类任务中,在保持圄像类别不变的前提下,可以对训练集中的每幅圄像进行以下变换。

  1. 一定程度内的随机旋转、平移、缩版、裁剪、填充、左右翻转等,这些变换对应着同一个目标在不同角度的观察结果。
  2. 对图像中的像素添加躁声扰动。
  3. 颜色变换
  4. 改变图像的亮度、清晰度、对比度、锐度等。

除了直接在图像空间进行变换,还可以先对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如SMOTE ( Synthetic Minority Over” sampling Technique )算法。抛开上述这些启发式的变换方法,使用生成模型也可以合成一些新样本,例如当今非常流行的生成式对抗网络模型。

此外,借助已有的其他模型或数据来进行迁移学习在深度学习中也十分常见。例如,对于大部分图像分类任务,并不需要从头开始训练模型,而是借用一个在大规模数据集上预训练好的通用模型,并在针对目标任务的小数据集上进行微调( fine-tune ) , 这种微调操作就可以看成是一种简单的迁移学习。

二、检验方法

1.KS检验

Kolmogorov-Smirnov检验是基于累计分布函数的,用于检验一个分布是否符合某种理论分布或比较两个经验分布是否有显著差异。

  • 单样本K-S检验是用来检验一个数据的观测经验分布是否符合已知的理论分布。
  • 两样本K-S检验由于对两样本的经验分布函数的位置和形状参数的差异都敏感,所以成为比较两样本的最有用且最常用的非参数方法之一。

检验统计量为:


1698844249874.png

其中 Fn(x) 为观察序列值, F(x) 为理论序列值或另一观察序列值。

2.T检验

T检验,也称student t检验,主要用户样本含量较小,总体标准差未知的正态分布。

t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。

t检验分为单总体检验和双总体检验。

3.F检验

T检验和F检验的由来:为了确定从样本中的统计结果推论到总体时所犯错的概率。F检验又叫做联合假设检验,也称方差比率检验、方差齐性检验。是由英国统计学家Fisher提出。通过比较两组数据的方差,以确定他们的精密度是否有显著性差异。

4.Grubbs检验

一组测量数据中,如果个别数据偏离平均值很远,那么称这个数据为“可疑值”。用格拉布斯法判断,能将“可疑值”从测量数据中剔除。

5.卡方检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

  1. 提出原假设H0:总体X的分布函数F(x);
  2. 将总体x的取值范围分成k个互不相交的小区间A1-Ak;
  3. 把落入第i个区间Ai的样本的个数记做fi,成为组频数,f1+f2+f3+...+fk = n;
  4. 当H0为真时,根据假设的总体理论分布,可算出总体X的值落入第i个小区间Ai的概率pi,于是n*pi就是落入第i个小区间Ai的样本值的理论频数;
  5. 当H0为真时,n次试验中样本落入第i个小区间Ai的频率fi/n与概率pi应该很接近。基于这种思想,皮尔逊引入检测统计量:

1698844283510.png

在H0假设成立的情况下服从自由度为k-1的卡方分布。

KS检验与卡方检验

相同点:都采用实际频数和期望频数只差进行检验

不同点:

  • 卡方检验主要用于类别数据,而KS检验主要用于有计量单位的连续和定量数据。
  • 卡方检验也可以用于定量数据,但必须先将数据分组才能获得实际的观测频数,而KS检验能直接对原始数据进行检验,所以它对数据的利用比较完整。

三、不均衡样本集的重采样

在训练二分类模型时,例如医疗诊断、网络入侵检测、信用卡反诈骗等,经常会遇到正负样本不均衡的问题。对于很多分类算法,如果直接采用不均衡的样本集来进行训练学习,会存在一些问题。例如如果正负样本比例达到1 : 99,则分类器简单地将所有样本都判为负样本就能达到99% 的正确率,显然这并不是我们想要的,我们想让分类器在正样本和负样本上都有足够的准确率和召回率。

1.对于二分类问题,当训练集中正负样本非常不均衡肘,如何处理数据以更好地训练分类模型?

对数据进行重采样,使原本不均衡的样本变得均衡。首先,记样本数大的类别为 Cmax ,样本数小的类别为 Cmin,它们对应的样本集分别为 SmaxSmin 。根据题设,有 |Smax|>>|Smin|

虽然目前有些机器学习算法会解决失衡问题,比如XGBoost,但是很多时候还是需要我们去根据业务实际情况,对数据进行采样处理。最简单的处理不均衡样本集的方法是随机采样。采样一般分为过采样( Over-sampling )和欠采样( Under-sampling )。随机过采样是从少数类样本集Smin中随机重复抽取样本(有放回)以得到更多样本;随机欠采样则相反,从多数类样本集Smax中随机选取较少的样本(有放回或无放回)。

直接的随机采样虽然可以使样本集变得均衡,但会带来一些问题,比如,过采样对少数类样本进行了多次复制,扩大了数据规模,增加了模型训练的复杂度, 同时也容易造成过拟合;欠采样会丢弃一些样本,可能会损失部分有用信息,造成模型只学到了整体模式的一部分。

为了解决上述问题,通常在过采样时并不是简单地复制样本,而是采用一些方法生成新的样本。例如, SMOTE 算法对少数类样本集 Smin 中每个样本x ,从它在Smin中的K近邻(k值需要提前指定)中随机选一个样本y ,然后在x,y连线上随机选取一点作为新合成的样本(根据需要的过采样倍率重复上述过程若干次),如图所示。这种合成新样本的过采样方法可以降低过拟合的风险。

1698844295484.jpg

SMOTE 算法为每个少数类样本合成相同数量的新样本,这可能会增大类间重量度(如果选取的少数类样本周围都是多数类样本,这类的样本可能是噪音,则新合成的样本会与周围的多数类样本产生大部分重叠,致使分类困难),并且会生成一些不能提供有益信息的样本。为此出现Borderline-SMOTE 、ADASYN 等改进算法。Borderline - SMOTE只给那些处在分类边界上的少数类样本合成新样本,而ADASYN则给不同的少数类样本合成不同个数的新样本。此外,还可以采用一些数据清理方法(如基于Tomek Links )来进一步降低合成样本带来的类间重量,以得到更加良定义( well-defined )的类簇,从而更好地训练分类器。

同样地,对于欠采样,可以采用Infomed Undersampling 来解决由于随机欠采样带来的数据丢失问题。常见的Informed Undersampling 算法有:

  1. Easy Ensemble 算法。每次从多数类 Smax 中上随机抽取一个子集E( |E|≈|Smin| ),然后用 |E|+Smin 训练一个分类器;重复上述过程若干次,得到多个分类器,最终的分类结果是这多个分类器结果的融合。
  2. Balance Cascade 算法。级联结构,在每一级中从多数类Smax中随机抽取子集E,用 E+Smin 训练该集的分类器;然后将 Smax 中能够被当前分类器正确判别的样本剔除掉,继续下一级的操作,重复若干次得到级联结构;最终的输出结果也是各级分类器结果的融合。
  3. 其他诸如NearMiss(利用K近邻信息挑选具有代表性的样本)、One-sided Selection (采用数据清理技术)等算法。

在实际应用中,具体的采样操作可能并不总是如上述几个算法一样,但基本思路很多时候还是一致的。例如基于聚类的采样方法,利用数据的类簇信息来指导过采样/欠采样操作;经常用到的数据扩充方法也是一种过采样,对少数类样本进行一些噪声扰动或变换(如圄像数据集中对圄片进行裁剪、翻转、旋转、加光照等)以构造出新的样本;而Hard Negative Mining 则是一种欠采样,把比较难的样本抽出来用于迭代分类器。

四、数据集分布是否一致?

训练集 vs 验证集 vs 测试集

6.1数据一致性分析

1、数据可视化、统计方法......

1.KDE(核密度估计)分布图

核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,通过核密度估计图可以比较直观的看出数据样本本身的分布特征。

seaborn中的kdeplot可用于对单变量和双变量进行核密度估计并可视化。

2.KS检验(Kolmogorov-Smirnov)

KS检验是基于累计分布函数,用于检验一个分布是否符合某种理论分布或比较两个经验分布是否有显著差异。两样本K-S检验由于对两样本的经验分布函数的位置和形状参数的差异都敏感,所以成为比较两样本的最有用且最常用的非参数方法之一。

可以使用scipy.stats 库中的ks_2samp,进行KS检验。

2、Adversarial Validation(对抗验证)

1698844310946.jpg

具体做法:

  1. 将训练集、测试集合并成一个数据集,新增一个标签列,训练集的样本标记为 0 ,测试集的样本标记为 1 。
  2. 重新划分一个新的train_set和test_set(区别于原本的训练集和测试集)。
  3. 用train_set训练一个二分类模型,可以使用 LR、RF、XGBoost、 LightGBM等等,以AUC作为模型指标。
  4. 如果AUC在0.5左右,说明模型无法区分原训练集和测试集,也即两者分布一致。如果AUC比较大,说明原训练集和测试集差异较大,分布不一致。
  5. 利用第 2 步中的分类器模型,对原始的训练集进行打分预测,并将样本按照模型分从大到小排序,模型分越大,说明与测试集越接近,那么取训练集中的 TOP N 的样本作为目标任务的验证集,这样即可将原始的样本进行拆分得到训练集,验证集,测试集。

笔试题:

1、在相同样本量下,不重复抽样和重复抽样的抽样平均误差大小关系是怎样的?重复抽样误差大

2、simple random sampling简单随机抽样、systematic sampling系统抽样和stratified sampling分层抽样的共同特点是(抽样过程中每个个体被抽到的可能性相等、都是不放回抽样)

3、给定n个数据点,如果其中一半用于训练,一半用于测试,则训练误差与测试误差之间的差别会随着n 的增加而减少。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
150 88
|
1月前
|
机器学习/深度学习 数据采集 算法
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
202 36
|
1月前
|
人工智能 Kubernetes Cloud Native
跨越鸿沟:PAI-DSW 支持动态数据挂载新体验
本文讲述了如何在 PAI-DSW 中集成和利用 Fluid 框架,以及通过动态挂载技术实现 OSS 等存储介质上数据集的快速接入和管理。通过案例演示,进一步展示了动态挂载功能的实际应用效果和优势。
|
1月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
100 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
274 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
1月前
|
机器学习/深度学习 人工智能
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
Diff-Instruct 是一种从预训练扩散模型中迁移知识的通用框架,通过最小化积分Kullback-Leibler散度,指导其他生成模型的训练,提升生成性能。
62 11
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
|
2月前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
131 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
模型训练数据-MinerU一款Pdf转Markdown软件
MinerU是由上海人工智能实验室OpenDataLab团队开发的开源智能数据提取工具,专长于复杂PDF文档的高效解析与提取。它能够将含有图片、公式、表格等多模态内容的PDF文档转化为Markdown格式,同时支持从网页和电子书中提取内容,显著提升了AI语料准备的效率。MinerU具备高精度的PDF模型解析工具链,能自动识别乱码,保留文档结构,并将公式转换为LaTeX格式,广泛适用于学术、财务、法律等领域。
306 4
|
1月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
53 14
|
2月前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
94 2