对训练样本分布不均的思考

背景

最近自己做一个游戏激活&付款预测的比赛,正负样本极其不均衡

正样本:51969        负样本:87529147867(875亿+)

和同事讨论之后+查资料之后,对正负样本不均有了一些新的理解。

最后的理解

样本的正负不均衡和模型学不好没有一定的联系。

对于正负样本不均衡,但是正负样本都足够多的情况,模型还是可以学好的。可能数量巨多的那一类会过拟合。

对于某类样本不够多的情况,需要提高该类权重或者新增该类样本。

对于某类样本绝对多,并且噪声大的情况,对该类样本负采样,会减少噪声。

理解这个问题

传统机器学习以降低总体分类准确度ACC(accuracy)为目标,模型效果在样本分布不均衡的时候,取决于数据量大的一类。

有些有趣的现象:(摘自 机器学习中的负采样(nagative sampling)方法在什么情况下有效,背后的原因是什么? - 赵印的回答 - 知乎 https://www.zhihu.com/question/310805161/answer/587944773

negative sampling在以下几种情况可能会有不一样的结果。

1)样本信息过分冗余,通过negative sampling可以在相同机器资源的情况下提高训练速度,而且对效果影响很有限,这对于有限预算下是很重要的。

2)负样本不能有效反应用户真实意图的情况下,negative sampling可能会带来收益,比如有一些场景用户很可能大部分都没有看到而导致的负样本采集;

3)对于不同的问题也可能会不太一样,比如说implicit和explicit的问题,implict的feedback本身也是有折损的,也就是不点击不代表不喜欢,点击也不代表一定喜欢,需要考虑的信号就需要更仔细的看了。

样本分类不均衡分类

1. 大数据集存在分布不均衡。整体数据规模大,小样本占比较小,但是小样本也覆盖了大部分或者全部特征。

2.小数据集存在分布不均衡。整体数据规模小,少数样本比例的分类数量也少,导致特征分布严重不均衡。

解决方法

摘自 机器学习中样本不平衡,怎么办? - Jim的文章 - 知乎 https://zhuanlan.zhihu.com/p/299166450

扩大训练集

样本不平衡时,可以增加包含一定比例小类样本数据以扩大数据集,更多的数据往往战胜更好的算法。因为机器学习是使用现有的数据多整个数据的分布进行估计,因此更多的数据往往能够得到更多的分布信息,以及更好分布估计。

但有时在增加小类样本数据的同时,也增加了大类数据,并不能显著解决样本不平衡问题。此时可以通过对大类样本数据进行欠采样,以放弃部分大类数据来解决。

重新选择评价指标

确度在类别均衡的分类任务中并不能有效地评价分类器模型,造成模型失效,甚至会误导业务,造成较大损失。

最典型的评价指标即混淆矩阵Confusion Matrix:使用一个表格对分类器所预测的类别与其真实的类别的样本统计,分别为:TP、FN、FP、TN。包括精确度Precision、召回率Recall、F1得分F1-Score等。

重采样数据集

使用采样sampling策略该减轻数据的不平衡程度。主要有两种方法

  1. 对小类的数据样本进行采样来增加小类的数据样本个数,即过采样over-sampling
  2. 对大类的数据样本进行采样来减少该类数据样本的个数,即欠采样under-sampling

采样算法往往很容易实现,并且其运行速度快,并且效果也不错。在使用采样策略时,可以考虑

  1. 不进行采样,正负样本都足够多,也不容易过拟合
  2. 对大类下的样本 (超过1万, 十万甚至更多) 进行欠采样,即删除部分样本
  3. 对小类下的样本 (不足1万甚至更少) 进行过采样,即添加部分样本的副本
  4. 尝试随机采样与非随机采样两种采样方法
  5. 对各类别尝试不同的采样比例
  6. 同时使用过采样与欠采样

产生人工数据样本

一种简单的方法,对该类下的所有样本的每个属性特征的取值空间中随机选取一个值以组成新的样本,即属性值随机采样。可以使用基于经验对属性值进行随机采样而构造新的人工样本,或使用类似朴素贝叶斯方法假设各属性之间互相独立进行采样,这样便可得到更多的数据,但是无法保证属性之前的线性关系(如果本身是存在的)。

有一个系统的构造人工数据样本的方法SMOTE (Synthetic Minority Over-sampling Technique)SMOTE是一种过采样算法,它构造新的小类样本而不是产生小类中已有的样本的副本,即该算法构造的数据是新样本,原数据集中不存在的。该基于距离度量选择小类别下两个或者更多的相似样本,然后选择其中一个样本,并随机选择一定数量的邻居样本对选择的那个样本的一个属性增加噪声,每次处理一个属性。这样就构造了更多的新生数据。

尝试不同的分类算法

对待每一个机器学习任务都使用自己喜欢而熟悉的算法,相信很多人都会感同身受。但对待不同任务需要根据任务本身特点选用不同等算法,尤其对样本不均衡等分类任务。应该使用不同的算法对其进行比较,因为不同的算法使用于不同的任务与数据。

决策树往往在类别不均衡数据上表现不错。它使用基于类变量的划分规则去创建分类树,因此可以强制地将不同类别的样本分开。

对模型进行惩罚

你可以使用相同的分类算法,但是使用一个不同的角度,比如你的分类任务是识别那些小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加"关心"小类样本。如penalized-SVMpenalized-LDA算法。

尝试一个新的角度理解问题

我们可以从不同于分类的角度去解决数据不均衡性问题,我们可以把那些小类的样本作为异常点outliers,因此该问题便转化为异常点检测anomaly detection与变化趋势检测问题change detection

异常点检测即是对那些罕见事件进行识别。如通过机器的部件的振动识别机器故障,又如通过系统调用序列识别恶意程序。这些事件相对于正常情况是很少见的。

变化趋势检测类似于异常点检测,不同在于其通过检测不寻常的变化趋势来识别。如通过观察用户模式或银行交易来检测用户行为的不寻常改变。

将小类样本作为异常点这种思维的转变,可以帮助考虑新的方法去分离或分类样本。这两种方法从不同的角度去思考,让你尝试新的方法去解决问题。

问题学习

1. 为何样本要均匀一些?

原因在于,在不均衡条件下,训练机制的作用(比如某些batch中会只有一类样本),会导致比例较低的类别欠拟合,而比例较高的类别会过拟合。

2. 是不是一定要做样本均衡?

不一定。过采样与欠采样只是为了让模型能充分学习到各类样本的特征,模型学到的理想特征是与样本自身相关的而不是样本的分布。所以只要样本的特征足够,模型就可以学出来,不一定要考虑样本的分布。

 

机器学习中样本不平衡,怎么办? - Jim的文章 - 知乎 https://zhuanlan.zhihu.com/p/299166450

在不平衡样本问题里,过采样与欠采样改变了训练集里样本的分布,这样与测试集分布不一致,还能做出正确预测? - 杨传贵的回答 - 知乎 https://www.zhihu.com/question/362308027/answer/979141091

在不平衡样本问题里,过采样与欠采样改变了训练集里样本的分布,这样与测试集分布不一致,还能做出正确预测? - Ana的回答 - 知乎 https://www.zhihu.com/question/362308027/answer/945610315

我如何对下面的实验进行复现A. Sentinel-2像素筛选 Sentinel-2像素筛选旨在保留最佳质量的同质农田像素,并过滤掉非农田和污染像素,包括云、雪和其他高反射表面。首先使用Sentinel-2 L2 A原始数据集提供的云掩模去除云像素。对于冬季和早春经常出现的积雪和高反射裸露地表,我们根据10-m分辨率的所有可见光和近红外(VNIR)波段(即490、560、665和842 nm)的表面反射率大于0.3的标准来识别它们,该标准基于用于区分它们的最佳反射率阈值的多个测试。 然后,将FROMGLC 10农田掩模应用于无云和无雪的Sentinel-2图像,仅保留农田Sentinel-2像素。 在训练样本的生成过程中,首先对Sentinel-2的农田掩模图像进行空间聚合,使其达到500 m的分辨率,然后采用简单平均法与MODIS数据进行匹配,并对每个聚合后的500 m像元计算平均值、标准差和变异系数,变异系数是用平均值归一化的标准差,如果对于绿色(560 nm)、红色(665 nm)或近红外(842 nm)中的任何光谱带,变化系数大于0.1,这个500-m像素被放弃,因为它的高度空间异质性可能导致反射率-LAI/同尺度下的FPAR关系。景观空间异质性影响中等空间分辨率遥感数据LAI的非线性估计[30]-[32]。 为了将500米的反射率-LAI/FPAR关系转换到10/20米的空间尺度,所有的训练样本都是在一个非常均匀的农田上生成的。 同时,10-m分辨率的FROM-GLC 10农田掩模也被空间聚合到500-m分辨率。对于该二值地图,500-m分辨率的像素只有在其至少90%的子像素被认为是农田时才被认为是农田最后,通过500米农田地图进一步细化500米聚合Sentinel-2图像。 B. MODIS像素筛选 我们使用MODIS LAI/FPAR产品提供的每个像元的辅助质量控制(QC)标签来确定最佳质量的像元,只保留主算法生成的有或没有饱和的像元,并记录其饱和状态以供进一步分析。然后将MODIS LAI/FPAR从正弦坐标重新投影到WGS-84坐标,以匹配处理后的500-m Sentinel-2数据。 C.训练样本生成 MODIS LAI/FPAR产品在其四天复合周期内选择最大估计值[28]。(即,LAI和FPAR值)在四天的时间段内改变,因此Sentinel-2在该时间段内的过境捕获与MODIS剂量相同的LAI/FPAR。由于Sentinel-2的时间分辨率结合Sentinel-2A和2B是五天,在一个MODIS合成周期内,最多只有一幅Sentinel-2图像,因此,我们将500-m Sentinel-2图像与500-m MODIS LAI/FPAR图像相关联。 在2019 - 2020年的整个时间段内,我们在研究区域内随机采集了同步重叠的Sentinel-2和MODIS LAI/FPAR观测数据,共收集了95 000个训练数据对。由于很少有样本在MODIS LAI/FPAR质量标志中标记为饱和,我们进一步收集了5000个LAI/FPAR饱和像素的样本。2因此,收集了100000个训练样本,这些样本在研究区域具有完全的空间和时间代表性。 然而,非饱和样本是对数正态分布的,并且集中在小的莱什中,即LAI < 1,因此训练样本在稀疏植被条件下的权重很大(图3)。 因此,LAI中的截断高斯分布限制应用于非饱和样本,以放弃许多小的LAI样本(图3)。 然后,我们根据样品的LAI和FPAR对样品进行分组,LAI和FPAR组间隔分别为0.5和0.1。去除在每个LAI或FPAR间隔处绿色(560 nm)、红色(665 nm)和NIR(842 nm)表面反射率落在1.5四分位数范围(IQR)之外的样品。 IQR定义为第25和第75个采样点之间的差值,它是数据变异性的度量。异常值可能来自地理配准误差、气溶胶污染或正确的农田分类,这些异常值会影响模型的性能。去除异常值后,这些确定性可以在一定程度上得到降低。绿色、红色、图4显示了同LAI或FPAR间隔的训练样本的Sentinel-2和NIR表面反射率。随着LAI或FPAR的增加,绿色和红色反射率降低,而NIR反射率增加。请注意,当LAI组数大于5或6时,当LAI > 2.5时,绿色、红色和近红外的反射率饱和,确定性增加,最后分别剩下46963个非饱和和10355个饱和训练样本。 D.使用RF模型的LAI/FPAR反演 提出了各种各样的机器学习模型用于回归和函数逼近。本研究采用RF模型从处理的Sentinel-2表面反射率数据中检索LAI和FPAR。RF是多分类和回归树(CART)
最新发布
03-08
<think>好的,我现在需要帮助用户复现Sentinel-2和MODIS数据处理及训练样本生成的过程,特别是像素筛选、数据匹配和RF模型的应用。首先,我得理清用户的具体需求。用户提到了几个关键步骤:Sentinel-2的像素筛选(包括云掩模、雪和高反射表面过滤、FROMGLC农田掩模应用)、MODIS像素筛选(QC标签、重投影)、训练样本生成(空间聚合、异常值去除、LAI分布调整),以及使用随机森林模型进行LAI/FPAR反演。 首先,我需要回忆相关的引用内容,看看是否有可用的信息。引用[2]提到了Landsat/Sentinel-2的去云方法,可能对云掩模有帮助。引用[5]讨论了遥感数据与作物模型结合,特别是国产卫星和MODIS、Landsat、Sentinel-2的应用,这可能涉及数据匹配和区域化处理。引用[3]提到SIF数据的降尺度研究,虽然主要针对SIF,但空间分辨率和地形因子的问题可能对训练样本生成有参考价值。引用[4]中的机理模型和DSSAT模型运行可能与参数反演有关,但用户的问题更偏向数据处理和机器学习应用。 接下来,我需要分步骤解析每个处理流程。首先是Sentinel-2的像素筛选。云掩模部分,用户需要用到云掩模算法,可能使用QA波段或者像Fmask这样的工具。引用[2]提到在云平台上进行去云处理,可能需要使用类似的方法。然后是雪和高反射表面的过滤,可能需要计算NDSI或反射率阈值。FROMGLC农田掩模应用,可能需要下载该数据集,并将其与Sentinel-2影像对齐,保留农田像元。 然后是MODIS数据处理。QC标签筛选,用户需要了解MODIS LAI/FPAR产品的QC标志位,根据质量标识筛选高质量数据。重投影可能需要将MODIS的Sinusoidal投影转换为与Sentinel-2一致的UTM,可能需要使用GDAL或MODIS Reprojection Tool。 数据匹配部分,需要将高分辨率的Sentinel-2数据与低分辨率的MODIS数据进行空间匹配。可能需要将Sentinel-2数据聚合到MODIS的分辨率,或者将MODIS数据降尺度到Sentinel-2的分辨率。此外,时间匹配也很重要,确保影像日期相近。 训练样本生成涉及空间聚合,比如将Sentinel-2的10米分辨率聚合到MODIS的500米,作为训练样本。异常值去除可能需要统计方法,如Z-score或IQR。LAI分布调整可能需要直方图匹配或分位数调整,确保样本分布合理。 RF模型的应用部分,需要准备特征变量(如Sentinel-2的光谱波段、植被指数)和目标变量(MODIS LAI/FPAR)。数据分割为训练集和测试集,进行交叉验证,调整超参数,评估模型性能。 在思考过程中,可能遇到的问题包括数据预处理中的投影转换误差、云掩模彻底导致的噪声、时空匹配的一致性,以及RF模型过拟合或欠拟合。需要确保每个步骤的准确性,比如使用精确的重投影工具,严格的质量控制步骤,合理的数据增强方法。 此外,引用[5]中提到遥感数据与作物模型结合,可能在这里的数据同化或参数反演中有借鉴意义,比如如何利用RF模型的结果进一步优化作物模型参数。但用户的问题主要集中在数据处理和机器学习应用,可能需要更关注具体的数据处理步骤和模型训练细节。 最后,生成相关问题时,需要考虑用户可能进一步询问的细节,如具体工具的使用、参数设置、模型优化方法,或者结果验证的步骤。例如,如何选择RF的超参数,或者如何处理同传感器之间的光谱差异。</think>### Sentinel-2与MODIS数据处理及RF模型应用复现步骤 #### 一、Sentinel-2像素筛选 1. **云掩模处理** - 使用**QA波段**或**Fmask算法**识别云像素,结合阈值法(如波段10热红外阈值)过滤云污染区域[^2]。 - 示例代码片段: ```python # 使用S2云掩模QA波段过滤 cloud_mask = (qa_band & 0x0F00) > 0 clear_pixels = sentinel2_data[~cloud_mask] ``` 2. **雪/高反射表面过滤** - 计算**归一化雪指数(NDSI)**,设定阈值(如NDSI > 0.4)过滤雪覆盖区域。 - 通过短波红外(SWIR)或近红外(NIR)反射率阈值排除高反射地表(如城市区域)。 3. **FROM-GLC农田掩模应用** - 下载FROM-GLC(Finer Resolution Observation and Monitoring of Global Land Cover)农田分类数据,与Sentinel-2影像空间对齐。 - 保留农田类别像素:`masked_data = sentinel2_data[landcover == 10]`。 #### 二、MODIS数据处理 1. **QC标签筛选** - 解析MODIS LAI/FPAR产品(MOD15A2H)的QC波段,筛选高质量数据(如主算法反演成功、无云干扰)。 - 例如:`valid_mask = (qc_data & 0x03) == 0`。 2. **重投影与空间匹配** - 使用**MODIS Reprojection Tool(MRT)**将Sinusoidal投影转换为UTM/WGS84,与Sentinel-2对齐。 - 示例命令:`resample -p modis_param.txt -i MODIS.hdf -o MODIS_UTM.tif`。 #### 三、训练样本生成 1. **空间聚合与匹配** - 将Sentinel-2数据(10-20m)聚合至MODIS分辨率(500m),生成匹配的训练样本对。 - 使用均值或中值聚合:`modis_scale_data = block_reduce(sentinel2_data, block_size=(50,50), func=np.mean)`。 2. **异常值去除** - 通过**四分位距(IQR)**或**3σ原则**剔除异常值: ```python q1, q3 = np.percentile(lai_data, [25, 75]) iqr = q3 - q1 valid_range = (lai_data > q1 - 1.5*iqr) & (lai_data < q3 + 1.5*iqr) ``` 3. **LAI分布调整** - 使用**分位数匹配**或**直方图均衡化**调整样本分布,确保训练集覆盖全范围LAI值。 #### 四、RF模型构建与反演 1. **特征工程** - 输入特征:Sentinel-2波段反射率(B2-B8, B11-B12)、植被指数(NDVI、EVI、NDWI)。 - 目标变量:MODIS LAI/FPAR产品(需时序一致性验证)。 2. **模型训练与优化** - 使用**Scikit-learn**实现,关键参数调优(n_estimators, max_depth): ```python from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor(n_estimators=200, max_depth=15, oob_score=True) rf.fit(X_train, y_train) ``` 3. **验证与确定性分析** - 交叉验证(10折)评估R²和RMSE。 - 通过**OOB误差**和**特征重要性排序**优化模型。 #### 五、关键挑战与解决方案 1. **时空匹配误差** - 优先选择同日或时间窗(±1天)的Sentinel-2与MODIS数据,减少物候差异影响[^5]。 2. **异源数据光谱差异** - 使用**波段响应函数校正**或**统计归一化**(如Z-score标准化)。 3. **地形影响(如引用[3])** - 在山区区域加入DEM衍生因子(坡度、坡向)作为辅助特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值