机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样、数据集分布是否一致
一、图像数据不足时的处理方法
1.在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?
回答1
图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面,即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。
对应的处理方法大致也可以分两类:
一是基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则顶)、集成学习、Dropout 超参数等;
二是基于数据的方法, 主要通过数据扩充( Data Augmentation ),即根据一些先验知识,在保持特定信息的前提下;对原始数据进行适当变换以达到扩充数据集的效果。具体到图像分类任务中,在保持圄像类别不变的前提下,可以对训练集中的每幅圄像进行以下变换。
- 一定程度内的随机旋转、平移、缩版、裁剪、填充、左右翻转等,这些变换对应着同一个目标在不同角度的观察结果。
- 对图像中的像素添加躁声扰动。
- 颜色变换。
- 改变图像的亮度、清晰度、对比度、锐度等。
除了直接在图像空间进行变换,还可以先对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如SMOTE ( Synthetic Minority Over” sampling Technique )算法。抛开上述这些启发式的变换方法,使用生成模型也可以合成一些新样本,例如当今非常流行的生成式对抗网络模型。
此外,借助已有的其他模型或数据来进行迁移学习在深度学习中也十分常见。例如,对于大部分图像分类任务,并不需要从头开始训练模型,而是借用一个在大规模数据集上预训练好的通用模型,并在针对目标任务的小数据集上进行微调( fine-tune ) , 这种微调操作就可以看成是一种简单的迁移学习。
回答2
训练数据不足带来的问题
过拟合:当训练样本数量较少时,模型可能会过于紧密地学习到训练数据中的细节和噪声,导致在新的、未见过的数据上表现不佳。
泛化能力差:模型无法从有限的数据中学习到全面的特征表示,从而影响其在不同场景下的应用效果。
不稳定性:少量的数据可能导致训练过程不稳定,模型参数容易受到数据分布微小变化的影响。
缓解方法
数据增强:通过旋转、缩放、翻转等方式对现有数据进行变换,生成新的训练样本,增加数据多样性。
迁移学习:利用预训练模型(如在ImageNet上预训练的模型)作为基础,根据具体任务微调模型参数,可以有效利用预训练模型学到的通用特征。
模型正则化:引入正则项(如L1、L2正则化)来惩罚过大参数值,减少过拟合的风险。
集成学习:通过结合多个模型的预测结果来提高整体性能,即使单个模型可能因数据不足而表现不佳。
主动学习:在标注成本较高的情况下,主动选择最有价值的样本进行标注,逐步扩大训练集规模。
半监督学习:利用大量未标注数据与少量标注数据共同训练模型,以提升模型性能。
二、检验方法
1.KS检验(Kolmogorov-Smirnov Test)
KS检验是一种非参数检验方法,用于比较一个样本分布与理论分布(一维分布),或者两个样本分布之间的相似度。它可以用来判断一个样本是否符合某个理论分布,或两个独立样本是否来自相同的总体分布。
原理
原假设:样本数据来自指定的理论分布(单样本情况);两个样本来自同一分布(双样本情况)。
备择假设:样本数据不符合指定的理论分布(单样本情况);两个样本来自不同的分布(双样本情况)。
应用场景
单样本KS检验:
检验一组数据是否服从正态分布、均匀分布等特定分布。
双样本KS检验:
比较两组独立样本是否来自相同的总体分布。
2.T检验(T-Test)
T检验是一种常用的统计检验方法,用于比较两组样本均值是否存在显著性差异。它主要用于小样本情况,并且假设样本数据来自正态分布。T检验分为几种类型,包括单样本T检验、独立样本T检验(两样本T检验)和配对样本T检验。
主要类型
单样本T检验:
检验一个样本的均值是否与已知总体均值存在显著差异。
独立样本T检验(两样本T检验):
检验两个独立样本的均值是否存在显著差异。
配对样本T检验:
检验两个相关样本(如前后测量值)的均值是否存在显著差异。
原理
原假设:样本均值等于已知总体均值(单样本T检验);两样本均值相等(独立样本T检验);配对样本的均值差为零(配对样本T检验)。
备择假设:样本均值不等于已知总体均值(单样本T检验);两样本均值不相等(独立样本T检验);配对样本的均值差不为零(配对样本T检验)。
3.F检验(F-test)
F检验是一种常用的统计检验方法,主要用于比较两个或多个样本方差是否相等,以及在回归分析中检验模型的整体显著性。F检验通常基于F分布,通过计算F统计量来评估假设。
主要类型
方差齐性检验:
检验两个或多个样本的方差是否相等。
ANOVA(Analysis of Variance):
检验多个样本均值是否存在显著差异。
回归分析中的F检验:
检验线性回归模型的整体显著性。
原理
原假设:样本方差相等(方差齐性检验);多个样本均值相等(ANOVA);回归模型中的所有系数均为零(回归分析)。
备择假设:样本方差不相等(方差齐性检验);多个样本均值不相等(ANOVA);回归模型中的至少一个系数不为零(回归分析)。
4.Grubbs检验(Grubbs’ Test)
Grubbs检验(Grubbs’ Test)是一种用于检测数据集中是否存在离群值(outliers)的统计检验方法。它适用于单个离群值的检测,并假设数据来自正态分布。
原理
Grubbs检验主要用于检测单个极端值是否显著偏离其他数据点。具体来说,它可以检测最小值或最大值是否为离群值。
假设
原假设(H₀):样本中没有离群值。
备择假设(H₁):样本中存在离群值。
5.卡方检验(Chi-squared Test)
卡方检验(Chi-squared Test)是一种常用的统计检验方法,用于检验观测频数与期望频数之间的差异是否具有统计显著性。它通常用于以下几种情况:
独立性检验:检验两个分类变量之间是否独立。
适合度检验:检验观测频数是否符合某种理论分布。
原理
卡方检验的核心是计算卡方统计量(χ²),并将其与给定显著性水平下的临界值进行比较。
假设
原假设(H₀):观测频数与期望频数之间没有显著差异(独立性检验中,两个变量独立)。
备择假设(H₁):观测频数与期望频数之间存在显著差异(独立性检验中,两个变量不独立)。
实现步骤
- 计算观测频数和期望频数。
- 计算卡方统计量。
- 确定自由度。
- 查找临界值或计算p值。
- 做出决策。
KS检验与卡方检验
相同点
目的:
检验目的:两者都是用于检验数据是否符合某种理论分布或模型。
假设检验:两者都涉及假设检验的过程,通过统计量和p值来判断是否拒绝原假设。
应用领域:
广泛适用:两者在统计学和数据分析中都有广泛应用,特别是在验证数据分布和模型拟合方面。
显著性水平:
显著性水平:两者都使用显著性水平(如0.05)来判断是否拒绝原假设。
不同点
检验类型:
KS检验:主要用于连续数据的一维分布检验,可以检验单样本与理论分布的符合性或两个样本分布的相似性。
卡方检验:主要用于离散数据的分布检验,可以检验观测频数与理论频数的符合性或两个分类变量的独立性。
数据类型:
KS检验:适用于连续数据。
卡方检验:适用于离散数据或分类数据。
自由度:
KS检验:不需要显式计算自由度。
卡方检验:需要计算自由度,通常为 ( (r-1)(c-1) ),其中 ( r ) 是行数,( c ) 是列数。
适用场景:
KS检验:适用于检验单样本是否符合某种连续分布(如正态分布)或两个样本是否来自相同的连续分布。
卡方检验:适用于检验观测频数是否符合某种离散分布(如泊松分布)或两个分类变量是否独立。
计算复杂度:
KS检验:计算相对简单,主要关注最大差异。
卡方检验:计算相对复杂,需要计算每个类别的观测频数和期望频数。
三、不均衡样本集的重采样
在处理不均衡样本集时,重采样是一种常用的方法,旨在平衡各类样本的数量,从而提高模型的泛化能力和预测性能。常见的重采样方法包括过采样(Over-sampling)、欠采样(Under-sampling)以及它们的组合方法。
- 过采样(Over-sampling)
过采样是指增加少数类样本的数量,使其与多数类样本数量接近。常用的方法有:
随机过采样:直接复制少数类样本。
SMOTE(Synthetic Minority Over-sampling Technique):合成生成新的少数类样本。 - 欠采样(Under-sampling)
欠采样是指减少多数类样本的数量,使其与少数类样本数量接近。常用的方法有:
随机欠采样:随机删除多数类样本。
Tomek Links:删除多数类样本中与少数类样本相邻的样本。
Cluster Centroids:将多数类样本聚类后保留每个簇的中心点。 - 组合方法
组合方法通常结合过采样和欠采样,以达到更好的平衡效果。常用的方法有:
SMOTE + Tomek Links
SMOTE + Random Under-sampling
优点和缺点
优点
提高模型性能:通过平衡样本数量,提高模型在少数类上的预测性能。
减少偏差:避免模型过度偏向多数类。
缺点
过采样:可能会引入重复样本,导致过拟合。
欠采样:可能会丢失部分有用信息,导致信息损失。
组合方法:需要权衡过采样和欠采样的比例,以达到最佳效果。
通过这些重采样方法,可以有效地解决不均衡样本集的问题,提高模型的泛化能力和预测性能。
1.对于二分类问题,当训练集中正负样本非常不均衡肘,如何处理数据以更好地训练分类模型?
在二分类问题中,当训练集中正负样本非常不均衡时,可以通过多种方法来处理数据,以更好地训练分类模型。以下是一些常用的处理方法:
- 重采样方法
重采样方法包括过采样(Over-sampling)、欠采样(Under-sampling)以及它们的组合。
1.1 随机过采样(Random Over-sampling)
原理:复制少数类样本,使它们的数量接近多数类样本。
优点:简单易用,可以增加少数类样本的数量。
缺点:可能导致过拟合,因为复制样本会增加数据的冗余。
1.2 SMOTE(Synthetic Minority Over-sampling Technique)
原理:合成生成新的少数类样本,而不是简单复制。
优点:可以生成新的样本,减少过拟合的风险。
缺点:需要选择合适的参数,如邻居数量。
1.3 随机欠采样(Random Under-sampling)
原理:随机删除多数类样本,使它们的数量接近少数类样本。
优点:简单易用,可以减少多数类样本的数量。
缺点:可能丢失有用的信息。
1.4 SMOTE + Tomek Links
原理:先使用SMOTE生成新的少数类样本,然后使用Tomek Links删除多数类样本中与少数类样本相邻的部分。
优点:结合了过采样和欠采样的优点,可以更有效地平衡样本。 - 成本敏感学习(Cost-Sensitive Learning)
原理:在训练过程中调整不同类别的损失函数权重。
优点:可以在不改变数据的情况下,通过调整损失函数来影响模型的训练过程。
缺点:需要选择合适的权重。
2.1 加权损失函数
实现:在训练过程中,对不同类别的损失函数赋予不同的权重。 - 集成学习(Ensemble Learning)
原理:使用多个模型进行集成,提高整体性能。
优点:可以利用多个模型的优势,提高模型的鲁棒性和泛化能力。
缺点:计算成本较高。
3.1 Bagging
实现:使用Bagging方法,如Random Forest。
3.2 Boosting
实现:使用Boosting方法,如AdaBoost或XGBoost。 - 数据增强(Data Augmentation)
原理:通过对少数类样本进行数据增强,生成新的样本。
优点:可以增加数据多样性,减少过拟合风险。
缺点:需要选择合适的数据增强方法。
4.1 数据增强示例
实现:使用图像数据增强或其他特征增强方法。
四、数据集分布是否一致?
训练集 vs 验证集 vs 测试集
数据一致性分析
1、数据可视化、统计检验、特征分布比较
1.KDE(核密度估计)分布图
核密度估计(Kernel Density Estimation, KDE)是一种非参数统计方法,用于估计未知随机变量的概率密度函数(PDF)。KDE 方法通过在每个数据点上放置一个核函数(通常是高斯核),然后将所有核函数的值相加以获得一个平滑的概率密度估计,通过核密度估计图可以比较直观的看出数据样本本身的分布特征。
在 Python 中,seaborn 库提供了 kdeplot 函数来绘制 KDE 图。
2.KS检验(Kolmogorov-Smirnov Test)
Kolmogorov-Smirnov (KS) 检验是一种非参数统计检验方法,用于比较两个样本集的经验分布函数(Empirical Cumulative Distribution Function, ECDF)。它可以用于检验两个样本集是否来自同一分布,或者检验一个样本集是否符合某个理论分布。
KS 检验的应用场景
两样本 KS 检验:检验两个样本集是否来自同一分布。
单样本 KS 检验:检验一个样本集是否符合某个理论分布(如正态分布)。
使用 scipy.stats 进行 KS 检验
2、Adversarial Validation(对抗验证)
Adversarial Validation 是一种用于检测两个数据集之间分布差异的方法。它通过构建一个分类器来区分两个数据集,进而评估它们之间的相似性。如果分类器能够准确地区分两个数据集,则说明它们之间的分布存在显著差异;反之,则说明它们之间的分布较为一致。
应用场景
- 数据集一致性检查:检查训练集和测试集之间的分布一致性。
- 数据预处理:在数据预处理阶段,确保数据集的一致性。
- 特征工程:识别哪些特征导致数据集之间的差异。
具体做法:
- 将训练集、测试集合并成一个数据集,新增一个标签列,训练集的样本标记为 0 ,测试集的样本标记为 1 。
- 重新划分一个新的train_set和test_set(区别于原本的训练集和测试集)。
- 用train_set训练一个二分类模型,可以使用 LR、RF、XGBoost、 LightGBM等等,以AUC作为模型指标。
- 如果AUC在0.5左右,说明模型无法区分原训练集和测试集,也即两者分布一致。如果AUC比较大,说明原训练集和测试集差异较大,分布不一致。
- 利用第 2 步中的分类器模型,对原始的训练集进行打分预测,并将样本按照模型分从大到小排序,模型分越大,说明与测试集越接近,那么取训练集中的 TOP N 的样本作为目标任务的验证集,这样即可将原始的样本进行拆分得到训练集,验证集,测试集。
在相同样本量下,不重复抽样和重复抽样的抽样平均误差大小关系是怎样的?
总体大小 (N) 很大时:不重复抽样的标准误与重复抽样的标准误接近。
总体大小 (N) 较小时:不重复抽样的标准误比重复抽样的标准误小。
simple random sampling简单随机抽样、systematic sampling系统抽样和stratified sampling分层抽样的共同特点
一句话:抽样过程中每个个体被抽到的可能性相等、都是不放回抽样
共同特点
目标一致性
目的:这些抽样方法的主要目的是从总体中选取具有代表性的样本,以便通过样本推断总体的特征。
随机性
随机性:尽管具体实现方式不同,但这些抽样方法都强调随机性,以减少偏倚并提高样本的代表性。
简单随机抽样:每个个体被选中的概率相同。
系统抽样:起始点随机选择,之后按照固定间隔选择样本。
分层抽样:各层内部随机选择样本。
代表性
代表性:这些抽样方法都旨在确保样本具有良好的代表性,即样本能够反映总体的关键特征。
简单随机抽样:通过随机选择样本,使样本尽可能接近总体。
系统抽样:通过均匀分布的样本,使样本具有较好的代表性。
分层抽样:通过在各个子群体内随机选择样本,确保样本覆盖总体的不同特征。
可操作性
实施简便:这些抽样方法在实际操作中相对简便,易于理解和执行。
简单随机抽样:只需要一个随机数生成器即可实现。
系统抽样:只需要确定起始点和固定间隔即可实现。
分层抽样:只需要确定分层标准并在各层内随机选择即可实现。
统计推断
统计推断:这些抽样方法都可以用于进行统计推断,即通过样本估计总体的参数。
简单随机抽样:可以直接计算样本均值、比例等统计量。
系统抽样:也可以直接计算样本均值、比例等统计量。
分层抽样:需要在各层内计算统计量,并加权平均得到总体估计。
误差控制
误差控制:这些抽样方法都有一定的误差控制机制,以确保抽样误差在可接受范围内。
简单随机抽样:通过增加样本量来减小抽样误差。
系统抽样:通过均匀分布的样本减少抽样误差。
分层抽样:通过在各层内随机选择样本,减少抽样误差。
具体方法概述
简单随机抽样(Simple Random Sampling)
定义:每个个体被选中的概率相同。
优点:简单易行,无偏性好。
缺点:可能无法充分覆盖总体的某些特征。
系统抽样(Systematic Sampling)
定义:按照固定间隔选择样本。
优点:简单易行,样本分布均匀。
缺点:如果总体有周期性或规律性,则可能导致偏差。
分层抽样(Stratified Sampling)
定义:将总体分为若干子群体(层),在各层内随机选择样本。
优点:能更好地覆盖总体的不同特征,减少抽样误差。
缺点:需要先确定分层标准,实施相对复杂。
总结
简单随机抽样、系统抽样和分层抽样虽然在具体操作方式上有所不同,但它们都具有以下共同特点:
目标一致性:从总体中选取具有代表性的样本。
随机性:强调随机性,减少偏倚。
代表性:确保样本具有良好的代表性。
可操作性:实施简便,易于理解和执行。
统计推断:可用于进行统计推断。
误差控制:有一定的误差控制机制。
给定n个数据点,如果其中一半用于训练,一半用于测试,则训练误差与测试误差之间的差别会随着n 的增加而减少。
当给定 ( n ) 个数据点,并且其中一半用于训练,另一半用于测试时,训练误差与测试误差之间的差别会受到样本量 ( n ) 的影响。随着 ( n ) 的增加,训练误差与测试误差之间的差别会发生变化。下面详细分析这一过程:
误差的概念
训练误差(Training Error):模型在训练集上的预测误差。
测试误差(Test Error):模型在未见过的测试集上的预测误差。
随着 ( n ) 增加的变化趋势
低样本量(小 ( n ))
训练误差:模型容易过拟合,训练误差较低。
测试误差:由于模型过拟合,测试误差较高。
差距:训练误差与测试误差之间的差距较大。
中等样本量(适中 ( n ))
训练误差:模型开始泛化,训练误差逐渐增加。
测试误差:模型泛化能力增强,测试误差逐渐降低。
差距:训练误差与测试误差之间的差距开始缩小。
高样本量(大 ( n ))
训练误差:模型泛化能力更强,训练误差趋于稳定。
测试误差:模型泛化能力更强,测试误差趋于稳定。
差距:训练误差与测试误差之间的差距进一步缩小。
理论分析
偏差(Bias)和方差(Variance)
偏差:模型预测的期望值与真实值之间的差异。
方差:模型预测值的波动程度。
偏差-方差分解:测试误差可以分解为偏差平方加上方差加上噪声项。
偏差-方差权衡(Bias-Variance Tradeoff)
低样本量:模型容易过拟合,方差大,偏差小。
中等样本量:模型开始泛化,方差减小,偏差增大。
高样本量:模型泛化能力强,方差和偏差都较小。
具体分析
低样本量(小 ( n ))
训练误差:由于样本量少,模型容易过拟合,训练误差较低。
测试误差:模型过拟合导致泛化能力差,测试误差较高。
差距:训练误差与测试误差之间的差距较大。
中等样本量(适中 ( n ))
训练误差:随着样本量增加,模型开始泛化,训练误差逐渐增加。
测试误差:模型泛化能力增强,测试误差逐渐降低。
差距:训练误差与测试误差之间的差距开始缩小。
高样本量(大 ( n ))
训练误差:随着样本量进一步增加,模型泛化能力更强,训练误差趋于稳定。
测试误差:模型泛化能力更强,测试误差趋于稳定。
差距:训练误差与测试误差之间的差距进一步缩小。
参考:
标签:采样,误差,训练,方法,模型,样本,检验,数据 From: https://blog.csdn.net/qq_45832050/article/details/142886130