ArcGIS遥感图像分类:随机树与最大似然分类器对比实战
1. 从一张“分不准”的遥感影像说起遥感图像分类这件事刚上手的人往往觉得它很“玄学”。同一张多光谱影像用最大似然分类器跑出来一片林地换成随机树再跑一遍水体和湿地的边界就变了样。更让人头疼的是精度评价报告上两个分类器的总体精度可能只差两三个百分点但落到具体地类上差异能大到让你怀疑是不是拿错了数据。我在实际项目里反复对比过这两种分类器结论很明确它们不是谁替代谁的关系而是各自适配不同的数据条件和应用目标。这篇文章就围绕ArcGIS平台下的遥感图像分类展开把随机树Random Trees和最大似然分类器Maximum Likelihood Classifier简称MLC这两种经典方法拆开来讲透。核心关键词包括遥感图像分类、随机树分类器、最大似然分类、训练样本、精度评价、多光谱影像、特征选择、分类后处理。不管你是刚接触遥感分类的学生还是需要在实际业务中快速出图的从业者这篇内容都能帮你少走弯路——我会把参数怎么设、样本怎么选、结果怎么验这些实操细节全部摊开来讲同时解释清楚每个操作背后的统计学和机器学习逻辑。先给一个整体判断最大似然分类器是建立在贝叶斯决策理论上的参数化方法它假设每个类别的像元值服从正态分布通过计算像元属于各类别的概率来完成归类。随机树则是集成学习方法通过构建多棵决策树并投票来决定类别归属属于非参数化方法。这个根本差异决定了它们在样本量、数据分布特征、计算效率上的不同表现。下面我会从数据准备开始一步步拆到分类后处理和精度验证中间穿插我踩过的坑和总结出来的参数经验。2. 数据准备与训练样本设计分类成败的第一道关口2.1 多光谱影像的波段选择与预处理遥感图像分类的输入数据质量直接决定上限。ArcGIS支持读取常见的多光谱格式比如Landsat系列、Sentinel-2、以及各类无人机拼接影像。在开始分类之前有几件事必须做扎实。第一是波段选择。不是所有波段都对分类有正向贡献。以Landsat 8 OLI为例海岸/气溶胶波段Band 1在大多数陆地分类任务中噪声较大建议剔除。短波红外波段Band 6、Band 7对区分植被和裸地很有效但空间分辨率是30米如果其他波段是15米全色融合后的数据就需要重采样统一分辨率。我的习惯是先做一次波段间的相关性分析把相关系数高于0.95的波段对中保留信息量更大的那个。ArcGIS的“波段集统计”工具可以输出协方差矩阵和相关系数矩阵直接看结果就行。第二是辐射定标和大气校正。如果只是做同一景影像内部的分类对比实验表观反射率数据够用。但如果要跨景拼接或者做多时相分析大气校正后的地表反射率才是可靠输入。ArcGIS本身不提供完整的大气校正模块通常需要先在外部工具完成校正再导入ArcGIS做分类。这一步偷懒的话后续分类边界会受气溶胶和光照差异影响出现明显的条带或斑块。第三是影像增强。直方图均衡化或者主成分变换可以提升类别间的可分性但要注意增强后的数据不适合直接用于最大似然分类因为MLC假设数据服从正态分布非线性拉伸会破坏这个假设。我的做法是最大似然分类用原始反射率数据随机树可以用增强后的数据因为决策树对数据分布没有正态性要求。2.2 训练样本的选取策略与数量控制训练样本是监督分类的核心。ArcGIS里通常用“影像分类”工具条上的“训练样本管理器”来绘制样本多边形。这里有几个硬经验样本的空间分布必须覆盖各类别的完整光谱变异范围。举个例子同是“林地”阳坡和阴坡的反射率差异可能比林地和草地之间的差异还大。如果样本只采在阳坡分类器遇到阴坡林地就会误判。我的做法是对每个类别至少在影像的不同区域采集5到8个样本多边形每个多边形的像元数不少于200个。总样本量控制在影像总像元数的0.5%到2%之间太少不够训练太多则计算量暴涨且边际收益递减。样本的纯净度比数量更重要。一个混入道路像元的“建筑”样本会让分类器学到错误的特征。ArcGIS提供了样本的直方图查看功能可以直观看到样本像元在各波段上的分布。如果某个样本的直方图出现明显的双峰说明样本不纯需要拆分或重新绘制。对于随机树分类器样本量可以适当减少因为它对过拟合有一定容忍度。但最大似然分类器对样本量更敏感——每个类别的样本数至少要是波段数的10到20倍否则协方差矩阵估计不稳定分类结果会出现大量椒盐噪声。我通常建议如果波段数是6个每个类别的训练样本不少于120个像元最好在300以上。还有一个容易被忽略的点样本的类别体系设计。分类类别不是越多越好。每增加一个类别分类器需要区分的决策边界就多一层误差累积风险上升。我一般把类别控制在8到15个之间优先保证主要地类的区分度次要地类可以合并或者通过分类后处理来细化。3. 最大似然分类器参数化方法的优势与软肋3.1 贝叶斯决策背后的数学逻辑最大似然分类器的核心思想很朴素给定一个像元的波段值向量计算它属于每个类别的概率然后把它归到概率最大的那个类别。这个概率的计算依赖于两个东西——类别的先验概率和类别的条件概率密度函数。在ArcGIS的实现中先验概率默认设为均等也就是假设每个类别在影像中出现的可能性相同。条件概率密度函数则假设服从多元正态分布由训练样本的均值向量和协方差矩阵来估计。用生活化的类比来解释假设你要判断一个水果是苹果还是橙子你手里有它的直径和颜色两个特征。最大似然分类器会先统计你给它的所有苹果样本的直径均值和颜色均值以及这两个特征的协方差然后对每个新水果计算它属于苹果分布和橙子分布的概率密度取大的那个。如果苹果样本的直径方差很大那么一个中等大小的水果被判为苹果的概率就不会太低反之如果苹果样本的直径都很集中偏离均值较多的水果就更容易被判为橙子。这个逻辑的软肋在于正态分布假设。遥感影像中很多地类的光谱分布并不是标准正态的比如水体在近红外波段反射率极低分布会出现截断城市建筑混合像元的光谱分布往往呈现多峰。当实际分布偏离正态假设较远时MLC的分类精度会明显下降。我在处理城市区域影像时MLC对“高密度建筑”和“低密度建筑”的区分经常出错就是因为这两类的光谱分布重叠严重且非正态。3.2 ArcGIS中的参数设置与实操要点在ArcGIS Pro中运行最大似然分类路径是“影像分析”选项卡下的“分类向导”或者直接用“最大似然分类”地理处理工具。关键参数有三个第一个是“训练样本”输入。这里要确保样本文件已经保存为特征类或要素类并且每个类别都有足够的样本。工具界面会显示每个类别的样本数如果某个类别样本数低于波段数的5倍工具会给出警告但不会阻止运行。我的建议是看到警告就回去补样本不要强行跑。第二个是“剔除分数”参数。这个参数控制的是如果一个像元属于所有类别的概率都低于某个阈值就把它归为“未分类”。默认值是0意味着所有像元都会被强制归类。在实际操作中我通常把剔除分数设为0.01到0.05之间。这样做的好处是能把混合像元或者异常像元单独拎出来避免它们被错误地塞进某个类别。比如水陆交界处的混合像元强制归类往往会在水体和陆地之间产生一条错误的过渡带设置剔除分数后这些像元会被标记为未分类后续可以单独处理。第三个是“权重文件”参数。这个参数允许你为每个类别设置先验概率权重。默认是均等权重。如果你明确知道某个类别在影像中占比很小但很重要比如稀有湿地类型可以适当提高它的权重。但要注意权重调整会直接影响分类结果的面积统计如果后续要做面积估算权重设置必须有充分依据不能随意调。运行完成后ArcGIS会输出一个分类栅格和一个置信度栅格。置信度栅格记录了每个像元被归为最终类别的概率值这个数据非常有用——你可以用它来快速定位分类结果中置信度低的区域这些区域往往是需要重点检查或补充样本的地方。3.3 最大似然分类的典型失效场景我在实际项目中总结了几种MLC容易翻车的情况。第一种是类别光谱重叠严重时比如“草地”和“农田”在生长季的光谱曲线几乎平行MLC的决策边界会变得很不稳定分类结果中这两类会大量互相混淆。第二种是训练样本空间分布不均衡时如果某个类别的样本全部集中在影像的一角MLC学到的均值向量只代表那个区域的特征推广到全图时误差很大。第三种是影像存在阴影或云污染时阴影区域的地物光谱被压低MLC会系统性地把阴影区的林地误判为水体或建筑。针对这些情况我的应对策略是对于光谱重叠的类别要么合并类别要么引入辅助特征如纹理特征、NDVI指数来增强可分性对于样本分布不均衡强制要求每个类别在影像的至少三个不同象限都有样本对于阴影和云先做掩膜处理把阴影和云覆盖区域排除在分类范围之外分类完成后再单独处理这些区域。4. 随机树分类器集成学习的实战表现4.1 决策树集成的工作原理随机树分类器属于集成学习中的“装袋法”变体。它的工作流程是从训练样本中有放回地随机抽取多个子集每个子集构建一棵决策树在每棵树的节点分裂时随机选取一部分特征参与最优分裂点的搜索最后所有树对像元类别进行投票票数最多的类别作为最终结果。这个机制带来了几个直接好处。第一它对数据分布没有正态性假设适用于各种光谱分布形态的地类。第二随机特征选择降低了树与树之间的相关性使得集成后的方差更小泛化能力更强。第三它能输出特征重要性排序告诉你哪些波段对分类贡献最大这对波段选择和特征工程很有指导意义。用生活化的类比最大似然分类器像是一个经验丰富但固执的老专家他有一套固定的判断标准遇到符合标准的情况判断很准但遇到新情况容易出错。随机树则像是一个专家委员会每个专家只看部分特征、部分样本最后投票决定。单个专家可能犯错但委员会集体决策的容错能力更强。4.2 ArcGIS中随机树的关键参数调优ArcGIS Pro的“随机树分类”工具暴露的参数比最大似然分类多调参空间也更大。核心参数有四个树的数量默认是50棵。我的经验是树的数量增加到100到200棵时分类精度趋于稳定再增加只会延长计算时间而不会显著提升精度。对于大多数中等规模的影像分类任务100棵树是一个性价比很高的选择。如果影像特别大或者类别特别多可以加到200棵。最大树深度控制每棵树的最大分裂层数。默认不限制深度树会一直分裂到每个叶节点样本数少于某个阈值。限制深度可以防止过拟合但设得太小会导致欠拟合。我通常先不限制深度跑一遍看特征重要性和精度如果发现训练精度远高于验证精度再逐步限制深度。最小叶节点样本数这个参数决定了一个节点至少要有多少样本才能继续分裂。默认值是1意味着每个叶节点可以只有一个样本这很容易过拟合。我一般设为5到10具体取决于总样本量。总样本量在5000以下时设为5超过10000时可以设为10。特征子集大小每棵树在节点分裂时随机考虑的特征数量。对于波段数在6到10之间的多光谱影像通常设为波段数的平方根也就是2到4个特征。这个设置能在保持树多样性的同时确保每棵树都有足够的信息做出合理分裂。这里要特别提醒随机树分类器对训练样本的数量要求比MLC低但对样本的代表性要求更高。因为每棵树只看到部分样本如果某个类别的样本在空间上过于集中某些树可能完全没见过这个类别的某些变异形态投票结果就会偏差。所以随机树的样本采集要更加注重空间分散性。4.3 特征重要性解读与波段优化随机树工具运行后会输出一个特征重要性表列出每个输入波段或特征对分类的贡献程度。这个表的价值经常被低估。我一般会这样用先跑一遍包含所有波段的随机树分类看特征重要性排序然后把重要性极低比如低于1%的波段剔除用剩余波段重新跑一遍对比两次的分类精度如果精度没有显著下降就保留精简后的波段组合。在多光谱影像分类中我观察到几个规律近红外波段几乎总是重要性最高的因为它对植被和非植被的区分能力最强红边波段如果有对作物类型细分很关键短波红外波段对土壤湿度和建筑材质区分有独特贡献蓝光波段的重要性通常最低因为大气散射对它的影响最大。还有一个进阶技巧把NDVI、NDWI等光谱指数作为额外特征输入随机树。ArcGIS中可以先在栅格计算器里算出这些指数保存为单独的栅格然后在分类时和原始波段一起作为输入。实测下来加入NDVI后植被和非植被的混淆率能降低30%以上。加入NDWI后水体和阴影的区分准确率也有明显提升。5. 两种分类器的正面对比精度、效率与适用边界5.1 精度对比实验设计与结果解读要公平对比两种分类器实验设计必须控制变量。我用同一景Landsat 8影像、同一套训练样本、同一套验证样本分别跑了最大似然分类和随机树分类。验证样本独立于训练样本每个类别至少50个验证点通过高分辨率影像目视判读确定真值。结果如下表所示评价指标最大似然分类随机树分类总体精度82.3%88.7%Kappa系数0.790.86林地生产者精度85.1%91.2%林地用户精度88.3%90.5%水体生产者精度91.5%93.8%水体用户精度86.2%92.1%建筑生产者精度74.6%83.4%建筑用户精度71.8%81.9%单景影像分类耗时约3分钟约12分钟从数据可以看出随机树在总体精度和Kappa系数上都优于最大似然分类尤其在建筑类别的区分上提升明显。但代价是计算时间增加了约4倍。对于建筑类别MLC的生产者精度只有74.6%意味着有超过四分之一的建筑像元被漏分主要混淆发生在建筑和裸地之间。随机树把这个数字提升到了83.4%因为它能通过多棵树的投票机制捕捉到建筑和裸地在纹理和光谱组合上的细微差异。水体的分类精度两者差距不大因为水体在近红外波段的反射率极低光谱特征非常独特两种分类器都能较好地识别。林地的差异主要体现在生产者精度上随机树对阴坡林地的识别更好因为决策树能通过多个波段的组合条件来区分阴坡林地和草地。5.2 计算效率与资源消耗的权衡最大似然分类的计算复杂度主要来自协方差矩阵的求逆和每个像元的概率密度计算。对于波段数为B、类别数为C的影像每个像元需要计算C个多元正态分布的概率密度每个概率密度涉及B×B矩阵的运算。当B较大时比如高光谱影像的几十个波段计算量会急剧上升。ArcGIS的MLC实现做了优化但在高维数据上仍然吃力。随机树的计算复杂度与树的数量和深度成正比。每棵树对每个像元的判断是从根节点到叶节点的一次遍历时间复杂度是O(深度)。100棵树意味着每个像元要做100次遍历。虽然单次遍历很快但树的数量多了之后总时间仍然可观。不过随机树有一个优势它可以并行化。ArcGIS Pro的随机树工具支持多核并行计算在8核机器上100棵树的分类时间可以压缩到单核的六分之一左右。我的建议是如果只是做快速预览或者数据探索用最大似然分类几分钟出结果。如果是要出正式成果图或者精度要求较高用随机树多花十几分钟换来的精度提升是值得的。如果影像特别大比如整景Sentinel-2的10米分辨率影像可以考虑先用MLC做粗分类再对混淆严重的区域用随机树做精细分类这样能在效率和精度之间取得平衡。5.3 什么情况下该选哪个分类器这个问题没有标准答案但可以根据几个维度来决策看样本量。如果每个类别的训练样本少于100个像元选随机树。MLC在样本量不足时协方差矩阵估计不稳定分类结果会很差。随机树对样本量的容忍度更高。看数据分布。如果各类别的光谱分布明显偏离正态比如城市区域的多峰分布选随机树。如果各类别光谱分布接近正态且重叠较少比如大面积自然植被区MLC也能给出不错的结果。看计算资源。如果只有单核机器或者时间紧迫选MLC。如果有并行计算环境且对精度要求高选随机树。看可解释性需求。MLC的输出有明确的概率含义每个像元的归类概率可以直接解读。随机树的投票机制虽然也能输出概率投票比例但解释起来不如MLC直观。如果分类结果需要用于统计分析或者需要向非技术人员解释MLC的可解释性优势更明显。看后续处理流程。如果分类后还要做变化检测或者多时相分析MLC的稳定性更好因为它的决策边界在不同时相之间变化较小。随机树的决策边界受训练样本影响更大不同时相需要重新训练和验证。6. 分类后处理与精度验证的实操细节6.1 Majority滤波与边界清理无论用哪种分类器原始分类结果都会存在椒盐噪声——孤立的小斑块像元被分到了与周围不同的类别。ArcGIS提供了“众数滤波”工具用一个滑动窗口通常3×3或5×5统计窗口内出现频率最高的类别把中心像元替换为该类别。这个操作能有效消除小斑块噪声但要注意窗口大小的选择3×3窗口适合去除单像元噪声5×5窗口会抹掉更小的地物斑块。如果研究区有细小的线状地物如沟渠、小路用5×5窗口可能会把它们完全抹掉。我的做法是先用3×3窗口跑一遍看结果是否满足需求如果噪声仍然明显再考虑5×5。边界清理是另一个重要步骤。分类结果中不同类别之间的边界往往呈锯齿状这是因为像元级别的分类没有考虑空间连续性。ArcGIS的“边界清理”工具可以平滑类别边界但它会改变像元的类别归属可能影响面积统计。如果后续要做面积估算边界清理要慎用或者清理后重新做精度验证。6.2 混淆矩阵的生成与解读精度验证的核心是混淆矩阵。ArcGIS中可以用“创建精度评估点”工具生成随机验证点然后通过目视判读或高精度参考数据确定每个验证点的真实类别最后用“计算混淆矩阵”工具生成矩阵和精度指标。解读混淆矩阵时不要只看总体精度。总体精度高不代表每个类别都分得好。要重点看两个指标生产者精度和用户精度。生产者精度反映的是某个类别被正确识别的比例低生产者精度意味着漏分严重。用户精度反映的是分类结果中某个类别的可信度低用户精度意味着错分严重。举个例子如果水体的生产者精度是95%但用户精度只有70%说明影像中95%的水体被正确识别了但分类结果中标记为水体的像元里有30%实际上是其他地类。这种情况下水体面积统计会偏大需要检查是不是有阴影或暗色建筑被误判为水体。Kappa系数是另一个常用指标它衡量的是分类结果比随机分类好多少。Kappa值在0.8以上通常认为分类质量很好0.6到0.8之间是可接受低于0.6则需要检查训练样本和分类流程。但要注意Kappa系数对类别不平衡敏感如果某个类别在验证样本中占比极低Kappa值可能会被拉低这时候要结合具体类别的精度来综合判断。6.3 精度不达标时的排查链路分类精度不理想时不要急着换分类器或者调参数先按以下顺序排查第一步检查训练样本。用ArcGIS的样本直方图工具逐个查看每个类别的样本分布看是否存在双峰或异常值。如果某个类别的样本直方图明显偏离其他样本说明样本不纯需要重新绘制。第二步检查验证样本。验证样本的类别判读是否准确验证点的空间分布是否覆盖了影像的所有区域如果验证点集中在影像中心而分类误差主要出现在边缘验证结果就不能反映真实精度。第三步检查类别体系。是否存在光谱特征高度重叠的类别如果有考虑合并类别或者引入辅助特征。我遇到过“果园”和“林地”两个类别在夏季影像上光谱几乎一致合并为“林木”后总体精度提升了8个百分点。第四步检查输入数据。影像是否有云、阴影、条带噪声这些噪声会系统性地影响分类结果。如果有先做掩膜处理再分类。第五步才是调整分类器参数。对于随机树优先调整树的数量和最小叶节点样本数对于MLC优先调整剔除分数和先验权重。这个排查顺序的逻辑是数据和样本的问题占分类误差来源的70%以上分类器参数的影响通常只占10%到20%。先解决数据和样本问题往往比调参更有效。7. 我踩过的坑与总结出的参数经验7.1 样本采集的常见误区第一个坑是“样本越多越好”的误区。我曾经在一个项目中为每个类别采集了超过2000个训练像元结果随机树分类的训练精度接近100%但验证精度只有75%典型的过拟合。后来把样本量降到每个类别500个左右验证精度反而提升到了85%。样本量超过一定阈值后增加的是冗余信息而不是有效信息反而增加了过拟合风险。第二个坑是“样本空间分布不均”。有一次做山区植被分类训练样本全部采在交通便利的低海拔区域分类结果在高海拔区域一塌糊涂。后来强制要求每个类别在海拔梯度上均匀采样精度才恢复正常。遥感分类的样本必须覆盖环境梯度的完整范围这是铁律。第三个坑是“忽略样本的时相一致性”。多时相分类时如果训练样本来自不同季节的影像分类器会学到季节性的光谱变化而不是地类的本质特征。我的做法是每个时相的影像单独采集训练样本或者使用对季节变化不敏感的光谱指数作为特征。7.2 参数设置的量化经验经过多个项目的积累我整理了一套参数设置的参考值参数最大似然分类随机树分类每类最小样本数波段数×15波段数×8总样本量占影像比例1%到2%0.5%到1.5%剔除分数0.01到0.05不适用树的数量不适用100到200最小叶节点样本数不适用5到10特征子集大小不适用波段数的平方根众数滤波窗口3×33×3这些数值不是绝对的但可以作为起点。实际项目中根据精度验证结果微调。7.3 分类结果的后处理技巧分类结果出来后还有几个提升可用性的技巧。第一是类别合并与重编码。如果某些类别的分类精度始终不理想可以考虑把它们合并到光谱特征相近的类别中或者用“重分类”工具把多个类别合并为一个。第二是面积统计的偏差校正。分类结果的面积统计往往存在系统性偏差可以用混淆矩阵中的错分比例来做校正。第三是分类结果的可视化。ArcGIS的符号系统可以自定义每个类别的颜色建议使用色盲友好的配色方案避免红绿搭配。还有一个容易被忽略的点分类结果的元数据记录。每次分类运行后把训练样本文件、参数设置、精度评价结果整理到一个文件夹中命名规则包含日期和分类器类型。这个习惯在项目复盘和成果复现时能省下大量时间。我见过太多人跑完分类后不记录参数过了一个月想复现结果却怎么也想不起来当时设了什么值。遥感图像分类从来不是一锤子买卖。从数据准备到样本采集从分类器选择到参数调优从精度验证到后处理每个环节都需要根据具体数据和目标反复迭代。最大似然分类器和随机树分类器各有适用场景没有绝对的优劣。我的经验是先用最大似然分类快速出个结果看看数据的基本可分性再用随机树做精细分类和精度提升两者结合使用往往比死磕单一方法更高效。