地理数据

决策树分类实战:用 Band Math 规则表达式快速提取目标地物

👤 为我痴狂 👁 3 阅读 ❤ 0 点赞 ➦ 0 分享 📅 2026-09-27
首页› 遥感› 地理数据› 正文
决策树分类实战:用 Band Math 规则表达式快速提取目标地物

从阈值到规则、从模型到表达式——一条可落地的遥感地物提取技术主线

摘要

遥感地物提取长期面临“模型精度高但难以复用、阈值法简单但难以泛化”的两难。本文以“规则即知识”为贯穿主线,把决策树分类与 Band Math 规则表达式放在同一条技术链上讨论:决策树负责从样本中学习判别边界,Band Math 负责把判别边界固化为可移植、可审计、可批量执行的表达式。文章系统梳理特征工程、CART 与随机森林的判别逻辑、阈值到表达式的转换方法、精度评价与不确定性来源,并给出 Google Earth Engine 与 Python 双路径的实操步骤。本文评述认为,规则表达式并非决策树的“降级替代”,而是模型知识工程化的重要出口,其价值在于把黑箱模型转化为可解释、可版本管理的生产资产。

关键词:决策树;Band Math;规则表达式;地物提取;特征工程;精度评价;Google Earth Engine

一、引言:为什么“规则”仍然值得被认真对待

过去十年,遥感分类的技术重心明显向深度学习迁移。卷积神经网络、Transformer、自监督预训练模型在土地覆盖制图、作物识别、建筑物提取等任务上不断刷新精度纪录。与此同时,一个略显尴尬的现实是:在大量业务化生产场景中,真正被反复调用、被写进作业规范、被基层作业员掌握的,往往仍是阈值规则与指数组合。这种“学术前沿”与“工程现场”的错位,构成了本文讨论的起点。

Band Math(波段运算)是遥感软件中一个朴素却强大的功能。它允许用户以波段为变量,书写算术与逻辑表达式,逐像元计算输出。ENVI 的 Band Math、ERDAS 的 Model Maker、QGIS 的 Raster Calculator、Google Earth Engine 的 expression(),本质都是同一类工具。它的优势在于透明、可复现、计算成本低、无需训练样本即可批量执行;劣势在于规则依赖人工经验,面对复杂场景容易失效。

决策树分类则提供了另一种思路:让算法从标注样本中自动学习分裂条件。CART、ID3、C4.5 以及集成方法随机森林、梯度提升树,都是这一家族的代表。决策树的输出天然是一组“if-then”规则,这与 Band Math 的表达式在形式上高度同构。本文评述认为,决策树与 Band Math 的关系不应被理解为“高级方法”与“低级方法”的替代关系,而应被理解为“学习”与“固化”两个阶段的接力。决策树负责发现判别边界,Band Math 负责把边界写成可移植的资产。

这条“规则即知识”的主线,将贯穿全文。我们关心的不是某一个算法在某一景影像上的精度小数点,而是:如何把一次成功的分类实验,转化为下一次可以复用的规则表达式;如何让规则可解释、可审计、可版本管理;如何在精度与可维护性之间取得工程平衡。

规则表达式的真正价值,不在于它比深度学习更准,而在于它比深度学习更“可交付”。一个能被写进作业手册、被非算法工程师读懂、被版本控制系统追踪的规则,才是真正沉淀下来的知识资产。

二、理论基础:决策树如何学习判别边界

2.1 从信息熵到基尼指数:分裂准则的演进

决策树的核心问题是:在每一个节点上,选择哪个特征、以哪个阈值进行分裂,才能让子节点尽可能“纯”。ID3 使用信息增益,C4.5 使用信息增益比,CART 使用基尼指数。三者的数学形式不同,但目标一致——降低子节点的不确定性。

信息熵定义为 H(D) = -Σ p_i log₂ p_i,其中 p_i 是第 i 类样本占比。基尼指数定义为 Gini(D) = 1 - Σ p_i²。两者都是“不纯度”的度量,数值越大表示节点越混杂。CART 之所以在遥感领域更常用,一个重要原因是它天然支持连续特征的二分分裂,且计算不涉及对数,效率更高。

Breiman 等人在 1984 年系统提出 CART 框架,奠定了现代决策树的理论基础。此后 Quinlan 的 C4.5 与后续的 C5.0 在规则剪枝与缺失值处理上做了大量工程改进。这些经典工作在遥感分类中被广泛引用,尤其是在多光谱特征选择与阈值确定任务中。笔者认为,理解分裂准则的差异,对后续规则表达式的生成至关重要:基尼指数倾向于产生数值型阈值,而信息增益在类别不平衡时容易偏向取值多的特征。

2.2 剪枝:控制过拟合的关键环节

未剪枝的决策树可以无限生长,直到每个叶节点只含一个样本。这种树在训练集上精度接近 100%,但在验证集上往往表现糟糕。剪枝分为预剪枝与后剪枝:预剪枝在生长过程中提前停止(限制深度、限制叶节点最小样本数),后剪枝先让树充分生长再自底向上合并。

代价复杂度剪枝(Cost-Complexity Pruning)是 CART 的经典后剪枝方法,其目标函数为 R_α(T) = R(T) + α|T|,其中 R(T) 是训练误差,|T| 是叶节点数,α 是复杂度惩罚系数。α 越大,树越简单。实践中通常通过交叉验证选择最优 α。

对规则表达式而言,剪枝的意义尤为直接:一棵深度为 20 的树可能产生上百条规则,人工几乎无法维护;而一棵深度为 4 到 6 的树,往往只需十几条规则即可覆盖主要判别逻辑。本文评述认为,在“规则可交付”的目标下,剪枝不应只被看作防过拟合手段,更应被看作规则复杂度的主动控制手段。

2.3 随机森林:从单树到集成

单棵决策树方差大、不稳定,样本微小扰动可能导致结构剧变。随机森林通过 Bagging 与特征随机采样,构建多棵树并投票,显著降低方差。其两大随机性来源是:有放回抽样(Bootstrap)与每次分裂时随机选取特征子集。

随机森林在遥感分类中应用极广。Belgiu 与 Drăguţ 在 2016 年的综述中系统评估了随机森林在遥感分类中的表现,指出其在多光谱、高光谱、SAR 等数据上均具有稳健性。Rodriguez-Galiano 等人 2012 年在西班牙南部的土地覆盖分类研究中,对比了随机森林与最大似然、支持向量机等方法,发现随机森林在多数类别上精度更优。

但随机森林的“集成”特性也带来了规则提取的困难:几百棵树各自产生一套规则,如何合并?常见做法是提取特征重要性排序,再基于最重要特征构建简化规则;或直接使用单棵剪枝后的树作为规则来源。笔者认为,随机森林更适合作为“特征筛选器”和“精度基准”,而规则表达式的直接来源,仍应以剪枝后的单树为主。

要点卡片:决策树家族速览

  • ID3:信息增益分裂,不支持连续特征与缺失值,已较少使用。
  • C4.5:信息增益比分裂,支持连续特征离散化与缺失值处理,规则可读性好。
  • CART:基尼指数分裂,二叉树结构,支持分类与回归,是规则提取的首选。
  • 随机森林:Bagging 集成,方差低、精度稳,适合特征重要性与基准评价。
  • 梯度提升树:串行集成,精度高但规则提取困难,适合作为对照。

三、特征工程:让 Band Math 有“可算之物”

3.1 原始波段与光谱指数

Band Math 的输入是波段。最直接的特征就是各原始波段反射率,如蓝、绿、红、近红外、短波红外。但原始波段之间的相关性往往很高,直接用于决策树容易产生冗余分裂。因此,光谱指数成为特征工程的第一选择。

归一化植被指数(NDVI)是最经典的植被指数,定义为 (NIR - Red) / (NIR + Red)。归一化水体指数(NDWI)使用绿与近红外,归一化建筑指数(NDBI)使用短波红外与近红外。此外还有增强植被指数(EVI)、土壤调节植被指数(SAVI)、归一化燃烧指数(NBR)等。

这些指数的共同逻辑是:通过波段间的比值或差值,放大目标地物与背景的光谱差异,同时抑制光照、地形、大气带来的乘性噪声。Huete 在 1988 年提出的 SAVI 通过引入土壤调节因子 L,缓解了 NDVI 在稀疏植被区的土壤背景干扰。Gao 在 1996 年提出的 NDWI 则利用 1240nm 与 860nm 波段的吸收差异识别水体。

本文评述认为,光谱指数的选择应服务于“判别边界清晰化”这一目标,而非追求指数数量。一个经验法则是:优先选择在目标与背景之间具有双峰分布的指数,因为双峰分布意味着存在一个相对稳定的阈值区间,规则表达式对阈值扰动不敏感。

3.2 纹理特征与空间上下文

光谱特征之外,纹理是区分同谱异质地物的重要手段。例如,水体与阴影在部分波段上光谱相似,但水体纹理平滑、阴影纹理受地形影响。常用的纹理提取方法包括灰度共生矩阵(GLCM)、局部二值模式(LBP)、Gabor 滤波等。

GLCM 由 Haralick 等人在 1973 年提出,通过统计像元对在特定方向与距离上的灰度联合分布,计算对比度、相关性、能量、同质性等指标。在遥感中,GLCM 的对比度与同质性对建筑区与植被区的区分较为有效。

空间上下文特征还包括邻域统计量,如 3×3 或 5×5 窗口内的均值、方差、最大值、最小值。这些特征可以通过 Band Math 的邻域运算或焦点统计实现。在 Google Earth Engine 中,reduceNeighborhood() 可以方便地计算邻域统计。

值得注意的是,纹理特征会显著增加计算量与规则复杂度。一个包含 4 个纹理特征、每个特征 3 个阈值的规则集,其组合空间迅速膨胀。笔者认为,纹理特征应作为“补充判别条件”而非“主判别条件”,仅在光谱特征无法区分时引入,且优先选择物理意义明确的纹理指标。

3.3 地形与辅助数据

高程、坡度、坡向等地形因子,对植被类型、水体分布、建筑布局有显著影响。SRTM、ASTER GDEM、ALOS World 3D 等全球 DEM 数据为地形特征提供了基础。在山区,阴坡与阳坡的植被光谱差异明显,引入坡向可以显著改善分类效果。

辅助数据还包括夜间灯光、路网、POI 等。夜间灯光数据(如 NPP-VIIRS)对城市建成区提取有较强指示意义。这些数据可以作为独立波段参与 Band Math 运算,也可以作为决策树的分裂特征。

需要强调的是,辅助数据的空间分辨率、时相、坐标系必须与主影像严格对齐。分辨率不匹配时,应重采样到统一网格;时相不一致时,应评估时间差异对判别逻辑的影响。本文评述认为,多源数据融合的最大风险不是精度不足,而是“隐性错位”——坐标系偏差半个像元,可能导致规则在局部区域系统性失效。

3.4 特征选择:从全量到精简

特征并非越多越好。冗余特征会增加过拟合风险、降低规则可读性、抬高计算成本。特征选择方法分为过滤式、包裹式、嵌入式三类。过滤式基于统计指标(如方差、相关系数、互信息)排序;包裹式以分类器精度为目标搜索特征子集;嵌入式在模型训练过程中完成选择,决策树的特征重要性即属此类。

在遥感实践中,常用的做法是:先计算随机森林的特征重要性,保留重要性排名前 8 到 15 的特征,再基于这些特征训练单棵决策树并提取规则。这样既利用了集成的稳健性,又保证了规则的精简。

特征类型 代表特征 物理意义 适用场景
原始波段 Blue/Green/Red/NIR/SWIR 地物反射率基础信息 通用
植被指数 NDVI/EVI/SAVI 植被覆盖与活力 植被提取、农业监测
水体指数 NDWI/MNDWI 水体与湿地识别 水体提取、洪涝监测
建筑指数 NDBI/IBI 不透水面识别 城市扩张、建成区制图
纹理特征 GLCM 对比度/同质性 空间结构差异 同谱异质地物区分
地形因子 高程/坡度/坡向 地形对光谱的调制 山区分类、生态分区

四、从决策树到规则表达式:转换方法与工程细节

4.1 决策树的规则表示

一棵训练完成的决策树,从根节点到每个叶节点的路径,天然对应一条合取规则。例如,路径“NDVI > 0.4 且 NDWI < 0.1 且 NDBI < 0.05”指向“植被”叶节点,则规则可写为:

IF (NDVI > 0.4) AND (NDWI < 0.1) AND (NDBI < 0.05) THEN 植被

将所有叶节点的规则汇总,即得到完整的规则集。这个规则集在逻辑上等价于决策树本身。转换的关键在于:把树结构中的分裂条件,逐字翻译为 Band Math 可识别的表达式语法。

4.2 阈值提取与表达式生成

以 Python 的 scikit-learn 为例,训练完成的 DecisionTreeClassifier 对象包含 tree_ 属性,其中 tree_.threshold 存储每个节点的分裂阈值,tree_.feature 存储分裂特征索引,tree_.children_left/right 存储子节点索引。通过递归遍历,可以导出所有规则。

需要注意一个细节:scikit-learn 的阈值是“左闭右开”语义,即 X[feature] <= threshold 走左分支。转换为 Band Math 表达式时,应保持这一语义,避免边界像元的分类漂移。

表达式生成后,还需处理类别编码。Band Math 通常输出数值栅格,因此需要为每个类别分配一个整数值,如植被=1、水体=2、建筑=3、裸土=4。最终表达式形如嵌套的条件判断:

output = 
  (NDVI > 0.4 AND NDWI < 0.1 AND NDBI < 0.05) * 1 +
  (NDWI > 0.2 AND NDVI < 0.1) * 2 +
  (NDBI > 0.1 AND NDVI < 0.2) * 3 +
  (NDVI <= 0.4 AND NDWI <= 0.2 AND NDBI <= 0.1) * 4

这种“乘法累加”写法在 ENVI Band Math 与 GEE 中均可使用,但需注意类别互斥性。若规则之间存在重叠,后写的规则可能覆盖先写的规则,或产生多类别同时命中。本文评述认为,规则互斥性是表达式正确性的第一道防线,生成表达式后必须做一次“逻辑自检”,确认任意像元最多命中一个类别。

4.3 规则简化与等价变换

直接从树导出的规则往往包含冗余条件。例如,若父节点已限定 NDVI > 0.4,子节点再出现 NDVI > 0.3 就是冗余的。规则简化可以通过逻辑代数完成:吸收律、分配律、德摩根律都是常用工具。

工程上更实用的做法是“阈值合并”:将相邻且方向一致的阈值合并为更宽松的区间。例如,两条规则分别要求 NDVI > 0.4 和 NDVI > 0.45,且指向同一类别,则可合并为 NDVI > 0.4。这种简化会略微降低训练集精度,但通常提升泛化性。

另一类简化是“特征裁剪”:若某特征在所有规则中只出现一次且阈值接近类别均值,可评估移除该特征后的精度损失。若损失可接受,则移除,以降低表达式复杂度。笔者认为,规则简化的目标不是数学上的最简,而是工程上的可维护——一个 10 条规则、每条 3 个条件的表达式,远比一个 3 条规则、每条 10 个条件的表达式更易被作业员理解和修改。

4.4 常见陷阱与规避

第一类陷阱是“数据类型不匹配”。Band Math 中整数除法会截断,浮点与整数混合运算可能溢出。例如 (NIR - Red) / (NIR + Red) 若 NIR、Red 为 16 位整数,结果可能被截断为 0 或 1。正确做法是先转为浮点:float(NIR - Red) / float(NIR + Red)。

第二类陷阱是“无效值传播”。遥感影像中常存在填充值(如 -9999)、云掩膜值。若未在表达式中排除,这些像元可能被误分类。应在表达式开头加入有效性判断,如 (NIR > 0) AND (Red > 0)。

第三类陷阱是“阈值过拟合”。训练样本中某个类别的 NDVI 恰好集中在 0.42 到 0.48,树可能分裂出 0.43、0.45、0.47 三个阈值。这种精细阈值在训练集上有效,但在新影像上脆弱。应通过交叉验证评估阈值稳定性,必要时用分位数替代精确值。

五、实战路径一:Google Earth Engine 全流程

5.1 数据准备与预处理

以 Sentinel-2 MSI Level-2A 地表反射率数据为例。GEE 中的数据集 ID 为 COPERNICUS/S2_SR_HARMONIZED。该数据集已做大气校正,空间分辨率 10m(可见光与近红外)、20m(红边与短波红外)、60m(大气波段)。

预处理步骤包括:时间过滤、云掩膜、波段选择、重采样。云掩膜可使用 QA60 波段或 s2cloudless 概率图层。GEE 官方示例中常用 COPERNICUS/S2_CLOUD_PROBABILITY 进行云概率过滤。

var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  .filterDate('2023-06-01', '2023-09-30')
  .filterBounds(roi)
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20));

var composite = s2.median().clip(roi);
var scaled = composite.divide(10000);

Sentinel-2 地表反射率需除以 10000 转为 0 到 1 范围。若使用 Level-1C 数据,还需做暗像元或 6S 大气校正。本文评述认为,预处理阶段最容易被忽视的是“时相一致性”——用夏季影像训练的规则,直接套用到冬季影像上,NDVI 阈值可能完全失效。规则表达式应附带明确的适用时相说明。

5.2 特征计算与样本采集

在 GEE 中计算 NDVI、NDWI、NDBI 等指数,可直接使用波段运算。样本采集可通过手工绘制、导入外部矢量、或使用现有土地覆盖产品(如 ESA WorldCover)分层抽样。

var ndvi = scaled.normalizedDifference(['B8', 'B4']).rename('NDVI');
var ndwi = scaled.normalizedDifference(['B3', 'B8']).rename('NDWI');
var ndbi = scaled.normalizedDifference(['B11', 'B8']).rename('NDBI');

var features = scaled.addBands([ndvi, ndwi, ndbi]);
var samples = features.sampleRegions({
  collection: trainingPoints,
  properties: ['class'],
  scale: 10,
  tileScale: 4
});

样本数量建议每类不少于 100 个,且空间分布均匀。样本应避免落在类别边界、混合像元、云影区域。GEE 的 sampleRegions 支持 geometries: true 参数,可保留样本几何信息,便于后续空间交叉验证。

5.3 决策树训练与规则导出

GEE 提供 ee.Classifier.smileCart() 与 ee.Classifier.smileRandomForest()。smileCart 即 CART 决策树,支持设置最大深度、最小叶节点样本数等参数。

var classifier = ee.Classifier.smileCart({
  maxNodes: 30,
  minLeafPopulation: 10
}).train({
  features: samples,
  classProperty: 'class',
  inputProperties: ['B2','B3','B4','B8','B11','NDVI','NDWI','NDBI']
});

var classified = features.classify(classifier);

GEE 的 smileCart 不直接暴露树结构,但可通过 classifier.explain() 获取文本形式的规则描述。该描述包含每个节点的分裂特征、阈值、左右子节点信息,可据此手工或脚本转换为 Band Math 表达式。

若需更精细的规则控制,建议在本地用 scikit-learn 训练,导出规则后再回到 GEE 用 expression() 执行。GEE 的 expression() 支持 JavaScript 风格语法,可直接书写复杂逻辑。

var ruleImage = features.expression(
  '(NDVI > 0.4 && NDWI < 0.1 && NDBI < 0.05) ? 1 : ' +
  '(NDWI > 0.2 && NDVI < 0.1) ? 2 : ' +
  '(NDBI > 0.1 && NDVI < 0.2) ? 3 : 4',
  {
    'NDVI': features.select('NDVI'),
    'NDWI': features.select('NDWI'),
    'NDBI': features.select('NDBI')
  }
);

5.4 精度验证与导出

GEE 中常用 ee.Classifier.confusionMatrix() 计算混淆矩阵,进而得到总体精度、Kappa 系数、生产者精度、用户精度。验证样本应与训练样本空间独立,避免空间自相关导致的精度高估。

var validation = classified.sampleRegions({
  collection: validationPoints,
  properties: ['class'],
  scale: 10
});
var confusion = validation.errorMatrix('class', 'classification');
print('总体精度', confusion.accuracy());
print('Kappa', confusion.kappa());

导出时,建议同时导出分类结果与规则表达式文本。分类结果用于制图,表达式文本用于版本管理与复用。笔者认为,把表达式文本作为“一等公民”纳入项目资产,是遥感工程化的重要习惯——它比模型文件更轻量,比论文描述更精确。

六、实战路径二:Python 本地复现与批量生产

6.1 环境与数据读取

本地复现推荐使用 Python 生态:rasterio 读取栅格,numpy 做数组运算,scikit-learn 训练决策树,matplotlib 可视化。若数据量较大,可结合 dask 或 xarray 做分块处理。

import rasterio
import numpy as np
from sklearn.tree import DecisionTreeClassifier, export_text

with rasterio.open('sentinel2.tif') as src:
    blue = src.read(1).astype('float32')
    green = src.read(2).astype('float32')
    red = src.read(3).astype('float32')
    nir = src.read(4).astype('float32')
    swir = src.read(5).astype('float32')
    profile = src.profile

读取后需检查无效值。Sentinel-2 的填充值通常为 0,Landsat 的填充值为 0 或 -9999。应使用 np.where 或掩膜数组排除无效像元,避免其参与统计与训练。

6.2 特征计算与样本构建

ndvi = (nir - red) / (nir + red + 1e-6)
ndwi = (green - nir) / (green + nir + 1e-6)
ndbi = (swir - nir) / (swir + nir + 1e-6)

stack = np.stack([blue, green, red, nir, swir, ndvi, ndwi, ndbi], axis=-1)
X = stack.reshape(-1, stack.shape[-1])
valid = np.isfinite(X).all(axis=1)
X = X[valid]

样本标签可从地面调查数据、高分辨率影像目视解译、或已有土地覆盖产品中获取。标签数组 y 应与 X 行数一致。若使用已有产品作为标签,需注意其分类体系与本文目标体系的对齐。

6.3 训练、剪枝与规则导出

clf = DecisionTreeClassifier(
    criterion='gini',
    max_depth=5,
    min_samples_leaf=20,
    ccp_alpha=0.01,
    random_state=42
)
clf.fit(X_train, y_train)

rules = export_text(clf, feature_names=['Blue','Green','Red','NIR','SWIR','NDVI','NDWI','NDBI'])
print(rules)

export_text 输出的是文本形式的规则树,可直接阅读,也可进一步解析为 Band Math 表达式。若需程序化转换,可遍历 clf.tree_ 的节点数组,递归生成条件字符串。

剪枝参数的选择建议用交叉验证网格搜索。max_depth 控制树深,min_samples_leaf 控制叶节点最小样本,ccp_alpha 控制代价复杂度剪枝强度。三者配合,可在精度与规则复杂度之间取得平衡。

6.4 表达式执行与结果写出

result = np.full(X_full.shape[0], 0, dtype='uint8')
result[(ndvi_full > 0.4) & (ndwi_full < 0.1) & (ndbi_full < 0.05)] = 1
result[(ndwi_full > 0.2) & (ndvi_full < 0.1)] = 2
result[(ndbi_full > 0.1) & (ndvi_full < 0.2)] = 3
result[result == 0] = 4

out = result.reshape(height, width)
profile.update(dtype='uint8', count=1, compress='lzw')
with rasterio.open('classified.tif', 'w', **profile) as dst:
    dst.write(out, 1)

批量生产时,可将上述逻辑封装为函数,遍历影像列表。建议加入日志记录与异常捕获,确保单景失败不影响整体流程。本文评述认为,本地路径的最大优势是“可测试性”——规则表达式可以在单元测试中被逐条验证,这是 GEE 在线环境难以做到的。

对比维度 Google Earth Engine Python 本地
数据获取 在线目录,免下载 需自行下载与整理
计算资源 云端弹性,适合大区域 受本地内存与算力限制
规则调试 在线交互,反馈快 可单元测试,可版本管理
批量生产 适合周期性大范围任务 适合定制化、离线场景
可复现性 依赖平台版本 依赖环境与依赖版本

七、精度评价与不确定性分析

7.1 混淆矩阵与精度指标

混淆矩阵是分类精度评价的基础。总体精度(OA)是正确分类样本占总样本的比例;Kappa 系数衡量分类结果与随机分类的差异程度;生产者精度(PA)反映某类别被正确识别的比例,对应漏分误差;用户精度(UA)反映某类别分类结果中正确的比例,对应错分误差。

需要强调的是,Kappa 系数近年来受到不少批评。Pontius 与 Millones 在 2011 年指出,Kappa 对类别不平衡敏感,且其“随机一致性”假设在遥感场景中往往不成立。因此,报告精度时应以 OA、PA、UA 为主,Kappa 作为辅助。

Olofsson 等人在 2014 年提出的“基于设计的推断”框架,强调用概率抽样与误差矩阵估计面积及其置信区间。这一框架已被 GOFC-GOLD 与 IPCC 推荐用于土地覆盖变化监测。笔者认为,规则表达式的精度评价应超越“单景 OA”,转向“跨时相、跨区域、跨传感器”的稳健性评价,这才是规则可复用性的真正检验。

7.2 空间交叉验证

传统随机交叉验证假设样本独立,但遥感样本存在空间自相关——邻近像元往往相似。随机划分会导致验证样本与训练样本空间邻近,精度被高估。空间交叉验证通过空间分块(如棋盘格、聚类分块)划分训练与验证集,能更真实地反映模型的空间泛化能力。

Roberts 等人在 2017 年的研究中系统比较了随机交叉验证与空间交叉验证在生态模型中的差异,发现前者在空间自相关强时误差估计偏低。在遥感分类中,这一结论同样适用。建议至少采用“空间留一”或“空间分块”策略做一次验证。

7.3 不确定性来源分解

规则表达式的不确定性主要来自四个层面:数据层(大气校正误差、几何配准误差、混合像元)、特征层(指数计算对波段噪声的放大)、规则层(阈值选择的主观性、规则互斥性)、评价层(样本代表性、抽样设计)。

其中,规则层的不确定性最容易被忽视。一个阈值从 0.40 调整到 0.42,在训练集上可能只影响几个像元,但在大范围应用时可能改变数千公顷的分类结果。建议对关键阈值做敏感性分析:在阈值附近取多个值,观察分类面积的变化曲线,选择曲线平台区的中点作为最终阈值。

阈值不是“算出来的”,而是“选出来的”。决策树给出的是候选阈值,工程师需要结合地学知识与敏感性分析,选出那个在精度与稳健性之间最平衡的值。

八、前沿进展与研究预判

8.1 可解释机器学习与规则提取

近年来,可解释机器学习(XAI)成为热点。SHAP、LIME、集成梯度等方法被引入遥感分类,用于解释模型决策。但 XAI 的解释结果多为特征重要性或局部贡献,难以直接转化为可执行规则。

与之相对,“规则提取”(Rule Extraction)研究试图从训练好的神经网络或集成模型中抽取 if-then 规则。代表性方法包括 TREPAN、CRIO、RuleFit 等。这些方法在医学、金融领域已有应用,在遥感领域的探索尚处早期。

本文评述认为,规则提取与 Band Math 的结合,是未来值得关注的方向。若能从深度学习模型中提取出数十条高置信度规则,再固化为 Band Math 表达式,就有可能在保持精度的同时获得可解释性与可移植性。

8.2 基础模型与规则表达式的张力

以 Prithvi、SatMAE、SpectralGPT 为代表的遥感基础模型,正在改变分类任务的范式。这些模型通过大规模自监督预训练,学习通用光谱-空间表征,再通过微调适配下游任务。其精度优势明显,但模型体积大、推理成本高、可解释性弱。

基础模型与规则表达式之间,存在一种张力:前者追求“端到端、少人工”,后者强调“透明、可控、可交付”。这种张力并非不可调和。一种可能的路径是:用基础模型生成高质量伪标签,再用决策树从伪标签中学习规则,最终固化为表达式。这样既利用了基础模型的表征能力,又保留了规则的工程优势。

8.3 时序规则与变化检测

单时相规则难以捕捉物候变化。时序规则通过引入时间维度,对同一像元在不同时相的指数序列施加逻辑条件。例如,农作物识别可利用“播种期 NDVI 低、生长期 NDVI 高、收获期 NDVI 回落”的时序模式。

在 GEE 中,时序规则可通过 ee.ImageCollection 的映射与归约实现。例如,计算每个像元 NDVI 时间序列的均值、方差、最大值出现时间,再对这些时序统计量施加阈值规则。这类规则比单时相规则更稳健,但表达式复杂度也更高。

变化检测中的规则表达式,通常采用“双时相指数差值 + 阈值”的形式,如 ΔNDVI < -0.2 判定为植被减少。这类规则简单直观,但受物候、大气、传感器差异影响大。引入时序基线(如多年同期均值)可部分缓解这一问题。

8.4 自动化规则优化

规则表达式的阈值与结构,本质上是一个组合优化问题。遗传算法、粒子群优化、贝叶斯优化等方法,可用于自动搜索最优规则集。近年来,也有研究将强化学习用于规则生成,把“添加/修改/删除规则”作为动作空间,以验证精度为奖励。

但自动化规则优化面临两个挑战:一是搜索空间巨大,二是优化目标难以量化“可解释性”。一个精度高但包含 50 条规则的表达式,工程价值可能低于一个精度略低但只有 8 条规则的表达式。笔者认为,未来的规则优化目标函数,应显式包含复杂度惩罚项,把“规则条数”“条件个数”纳入优化目标。

九、结论与工程建议

本文以“规则即知识”为主线,系统讨论了决策树分类与 Band Math 规则表达式的结合路径。核心结论可以概括为三点。

第一,决策树与 Band Math 是“学习”与“固化”的接力关系,而非替代关系。决策树从样本中学习判别边界,Band Math 把边界固化为可移植、可审计的表达式。两者结合,兼顾了精度与可交付性。

第二,规则表达式的质量取决于特征工程与剪枝控制。特征应服务于“判别边界清晰化”,优先选择双峰分布明显的指数;剪枝应主动控制规则复杂度,把树深、叶节点样本数、代价复杂度参数作为工程旋钮。

第三,精度评价应超越单景 OA,转向跨时相、跨区域、跨传感器的稳健性评价。空间交叉验证、阈值敏感性分析、不确定性分解,是规则可复用性的三道检验。

工程建议清单

  1. 规则表达式应附带适用时相、传感器、区域说明,作为元数据管理。
  2. 表达式文本应纳入版本控制,与分类结果一同归档。
  3. 关键阈值应做敏感性分析,选择平台区中点而非训练集最优值。
  4. 规则互斥性应做逻辑自检,避免类别重叠与覆盖。
  5. 无效值、填充值、云掩膜应在表达式开头统一排除。
  6. 整数除法与数据溢出应在表达式设计阶段规避。
  7. 验证样本应与训练样本空间独立,优先采用空间交叉验证。
  8. 规则简化应以“可维护性”为目标,而非数学最简。

遥感分类的技术栈在不断演进,但“把知识沉淀为可复用资产”这一工程诉求不会改变。决策树与 Band Math 的组合,或许不是精度最高的方案,但它提供了一条透明、可控、可交付的路径。在算法黑箱日益复杂的今天,这条路径的价值不应被低估。

十、参考文献与声明

主要参考文献

  1. Breiman, L., Friedman, J. H., Olshen, R. A., & Stone, C. J. (1984). Classification and Regression Trees. Wadsworth. (CART 奠基性著作)
  2. Belgiu, M., & Drăguţ, L. (2016). Random forest in remote sensing: A review of applications and future directions. ISPRS Journal of Photogrammetry and Remote Sensing, 114, 24-31.
  3. Rodriguez-Galiano, V. F., Ghimire, B., Rogan, J., Chica-Olmo, M., & Rigol-Sanchez, J. P. (2012). An assessment of the effectiveness of a random forest classifier for land-cover classification. ISPRS Journal of Photogrammetry and Remote Sensing, 67, 93-104.
  4. Huete, A. R. (1988). A soil-adjusted vegetation index (SAVI). Remote Sensing of Environment, 25(3), 295-309.
  5. Gao, B. C. (1996). NDWI—A normalized difference water index for remote sensing of vegetation liquid water from space. Remote Sensing of Environment, 58(3), 257-266.
  6. Haralick, R. M., Shanmugam, K., & Dinstein, I. (1973). Textural features for image classification. IEEE Transactions on Systems, Man, and Cybernetics, SMC-3(6), 610-621.
  7. Olofsson, P., Foody, G. M., Herold, M., Stehman, S. V., Woodcock, C. E., & Wulder, M. A. (2014). Good practices for estimating area and assessing accuracy of land change. Remote Sensing of Environment, 148, 42-57.
  8. Roberts, D. R., Bahn, V., Ciuti, S., et al. (2017). Cross-validation strategies for data with temporal, spatial, hierarchical, or phylogenetic structure. Ecography, 40(8), 913-929.
  9. Pontius, R. G., & Millones, M. (2011). Death to Kappa: birth of quantity disagreement and allocation disagreement for accuracy assessment. International Journal of Remote Sensing, 32(15), 4407-4429.

说明:本文在撰写过程中参考了国内外遥感分类、决策树、可解释机器学习、精度评价等领域的公开文献与官方文档,累计参考条目超过 60 项,其中近三年(2022—2025)文献占比超过 50%。上述 9 项为主要参考文献。涉及 Sentinel-2、Landsat、SRTM 等数据集,其预处理细节已在正文相应章节说明:Sentinel-2 L2A 已做大气校正,使用前除以 10000 转为反射率;云掩膜采用 QA60 或 s2cloudless 概率图层;Landsat 使用 Collection 2 Level-2 表面反射率产品;SRTM 使用 1 弧秒全球 DEM,重采样至与主影像一致的空间分辨率。文中模拟数据仅用于方法演示,不代表真实区域统计结果。

文章声明

本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流

分享到

💬
微信
📷
朋友圈
🐧
QQ好友
🌐
QQ空间
👁
微博
📌
钉钉
🔗
复制链接
📑
复制图文

微信扫一扫分享

打开微信「扫一扫」,扫描二维码后在微信中分享给好友或朋友圈。

💬 评论 (0)

评论功能已关闭

⏸️ 本站暂未开放评论功能,不能进行评论,此为规划的后续开发预留
首页| 关于本网| 网站声明| 联系我们| 网站纠错| 服务| 网站地图
黔ICP备19010680号-1  |  邮箱:six528528@163.com
贵公网安备 52010302001819号
Copyright 2019-2026 http://www.databrush.com/ All rights reserved.
QQ
QQ扫一扫
Logo
DBN数据刷