在他的书 为什么这本书, Judea Pearl 提倡向机器传授因果原理,以提高它们的智力。 深度学习的成就本质上只是一种曲线拟合,而因果关系可以用来揭示世界系统在各种约束下的相互作用,而无需直接检验假设。 这可以提供将我们引向 AGI(人工广义智能)的答案。
该解决方案提出了一个使用贝叶斯网络的因果推理框架,以模拟天气和土壤条件的形式,根据观察到的卫星图像和实验试验数据来表示因果依赖关系并得出因果结论。 这 案例研究 是氮肥施用与玉米产量之间的因果关系。
卫星图像是使用专门构建的 Amazon SageMaker 地理空间功能 并丰富了定制的 Amazon SageMaker处理 操作。 因果推理引擎部署在 Amazon SageMaker 异步推理.
在这篇文章中,我们演示了如何使用创建此反事实分析 亚马逊SageMaker JumpStart 的解决方案。
解决方案概述
下图显示了端到端工作流的架构。
先决条件
你需要一个 AWS账户 使用此解决方案。
要运行此 JumpStart 1P 解决方案并将基础设施部署到您的 AWS 账户,您需要创建一个活动的 亚马逊SageMaker Studio 实例(参考 加入 Amazon SageMaker 域). 当您的 Studio 实例准备就绪时,请按照中的说明进行操作 SageMaker 快速启动 启动作物产量反事实解决方案。
请注意,此解决方案目前仅在美国西部(俄勒冈)区域可用。
因果推理
因果关系就是理解变化,但如何在统计和机器学习 (ML) 中将其形式化并不是一件容易的事。
在这项作物产量研究中,作为肥料添加的氮和产量结果可能会混淆。 同样,作为肥料添加的氮和氮浸出的结果也可能会混淆,因为一个共同的原因可以解释它们之间的关联。 但是,关联不是因果关系。 如果我们知道哪些观察到的因素混淆了关联,我们会解释它们,但如果还有其他隐藏变量导致混淆怎么办? 减少施肥量不一定会减少残留氮; 同样,它可能不会显着降低产量,而土壤和气候条件可能是混淆该关联的观察因素。 如何处理混杂是因果推理的核心问题。 RA Fisher 介绍的一项技术称为 随机对照试验 旨在打破可能的混淆。
然而,在没有随机对照试验的情况下,需要纯粹根据观察数据进行因果推断。 有一些方法可以将因果问题与观察研究中的数据联系起来,方法是根据我们假设的事情如何发生编写因果图形模型。 这涉及声称相应的遍历将捕获相应的依赖关系,同时满足条件可忽略性的图形标准(在何种程度上我们可以将因果关系视为基于因果假设的关联)。 在我们假设结构之后,我们可以使用隐含的不变性从观察数据中学习并插入因果问题,在没有随机对照试验的情况下推断因果关系。
该解决方案使用来自模拟随机对照试验 (RCT) 的数据以及来自卫星图像的观测数据。 在伊利诺伊州(美国)数千块田地中进行了多年的一系列模拟,用于研究玉米对该地区天气和土壤变化的广泛组合下氮肥用量增加的反应。 它解决了使用受限于土壤数量和年份的试验数据的局限性,它可以通过使用各种农业情景和地理位置的作物模拟来探索。 该数据库使用来自该地区 400 多项试验的数据进行了校准和验证。 土壤初始氮浓度在合理范围内随机设定。
此外,该数据库还通过卫星图像观测得到增强,而区域统计数据则来自光谱指数,以表示跨地理和物候阶段的植被时空变化。
贝叶斯网络的因果推理
结构因果模型 (SCM) 使用图形模型通过结合数据驱动和人工输入来表示因果依赖关系。 提出了一种称为贝叶斯网络的特定类型的结构因果模型,通过将变量表示为节点并将变量之间的关系表示为边来使用概率表达式对作物物候动力学进行建模。 节点是作物生长、土壤和天气状况的指标,它们之间的边代表时空因果关系。 父节点是与田间相关的参数(包括播种日期和种植面积),子节点是产量、氮吸收和氮浸出指标。
欲了解更多信息,请参阅 数据库表征 和 指南 用于识别玉米生长阶段。
构建贝叶斯网络模型需要几个步骤(使用 因果关系),然后我们才能将其用于反事实和干预分析。 因果模型的结构最初是从数据中学习的,而主题专业知识(可信文献或经验信念)用于假设随机变量和干预变量之间的额外依赖性和独立性,以及断言结构是因果关系。
运用 没有眼泪,一种用于结构学习的连续优化算法,描述变量之间条件依赖关系的图形结构是从数据中学习的,对边、父节点和子节点施加了一组约束,这些约束在因果模型中是不允许的。 这保留了变量之间的时间依赖性。 请参见以下代码:
"""
tabu_edges: Imposing edges that are not allowed in the causal model
tabu_parents: Imposing parent nodes that are not allowed in the causal model
tabu_child: Imposing child nodes that are not allowed in the causal model """
from causalnex.structure.notears import from_pandas g_learned = from_pandas( X, tabu_edges=tabu_edges, tabu_parent_nodes=tabu_parents, tabu_child_nodes=tabu_child, max_iter=100,
)
下一步在模型中编码领域知识并捕捉物候动态,同时避免虚假关系。 多重共线性分析、变异膨胀因子分析和全局特征重要性使用 夏普 进行分析以提取对水分胁迫变量(膨胀、物候和开花前后的光合作用)、天气和土壤变量、光谱指数和基于氮的指标的见解和限制:
"""
edges: Modifying the structure by imposing constraints on edges """
from causalnex.structure import StructureModel g = StructureModel()
g.add_edges_from( edges, origin="expert" )
CausalNex 中的贝叶斯网络仅支持离散分布。 任何连续的特征,或具有大量类别的特征,在拟合贝叶斯网络之前被离散化:
from causalnex.discretiser.discretiser_strategy import ( DecisionTreeSupervisedDiscretiserMethod, MDLPSupervisedDiscretiserMethod
) discretiser = DecisionTreeSupervisedDiscretiserMethod( mode="single", tree_params={"max_depth": 2, "random_state": 2022},
)
discretiser.fit( feat_names=features, dataframe=df, target_continuous=True, target=target,
)
在审查结构后,可以从数据中学习给定其父变量的每个变量的条件概率分布,步骤称为 似然估计:
from causalnex.network import BayesianNetwork bn = BayesianNetwork(g)
bn = bn.fit_node_states(discretised_data)
bn = bn.fit_cpds( train, method="BayesianEstimator", bayes_prior="K2",
)
最后,结构和似然用于执行动态观察推理,遵循确定性 连接树算法 (JTA),并使用进行干预 微积分. SageMaker 异步推理 允许对传入请求进行排队并异步处理它们。 此选项非常适合观察和反事实推理场景,在这些场景中,过程无法并行化,因此需要大量时间来更新整个网络的概率,尽管可以并行运行多个查询。 请参见以下代码:
"""
Query the marginal likelihood of states in the graph given some observations. These observations can be made anywhere in the network, and their impact will be propagated through to the node of interest. """
from causalnex.inference import InferenceEngine ie = InferenceEngine(bn) pseudo_observation = [{"day_sow":0}, {"day_sow":1}, {"day_sow":2}]
marginals_multi = ie.query( pseudo_observation, parallel=True, num_cores=multiprocessing.cpu_count(),
)
# distribution before intervention
marginals_before = ie.query()["Y_corn"] # updating a node distribution
ie.do_intervention("N_fert", 0) # effect of do on marginals
marginals_after = ie.query()["Y_corn"] # Resetting the node distribution
ie.reset_do("N_fert")
有关详细信息,请参阅 推理脚本.
因果模型 笔记本 是运行上述步骤的分步指南。
地理空间数据处理
地球观测工作 (EOJ) 链接在一起以获取和转换卫星图像,而专门构建的操作和预训练模型用于云去除、镶嵌、波段数学运算和重采样。 在本节中,我们将更详细地讨论地理空间处理步骤。
感兴趣的领域
下图中,绿色多边形为选中的县,橙色格子为数据库地图(10×10公里的网格,在该地区进行试验),灰度方块格子为100公里×100公里Sentinel-2 UTM 平铺网格。
空间文件用于将模拟数据库映射到相应的卫星图像,覆盖划分伊利诺伊州(在该地区进行试验的地方)的 10 公里 x 10 公里单元格的多边形、县多边形和 100 公里 x 100 公里的哨兵- 2 个 UTM 磁贴。 为了优化地理空间数据处理管道,首先选择附近的几个 Sentinel-2 瓦片。 接下来,叠加图块和单元格的聚合几何形状以获得感兴趣区域 (RoI)。 选择在 RoI 内完全观察到的县和单元格 ID,以形成传递到 EOJ 的多边形几何图形。
时间范围
对于本练习,玉米物候周期分为三个阶段:营养阶段 v5 至 R1(出苗、叶领和雄穗)、生殖阶段 R1 至 R4(吐丝、水泡、牛奶和面团)和生殖阶段R5(凹陷)和 R6(生理成熟度)。 在 2 周的时间范围内和预定义的感兴趣区域(选定的县)内获取每个物候阶段的连续卫星访问,从而能够对卫星图像进行空间和时间分析。 下图说明了这些指标。
去云
Sentinel-2 数据的云去除使用基于 ML 的语义分割模型来识别图像中的云,其中多云像素被替换为值 -9999(无数据值):
request_polygon_coordinates = [[(-90.571754, 39.839326), (-90.893651, 39.84092), (-90.916609, 39.845075), (-90.916071, 39.757168), (-91.147678, 39.75707), (-91.265848, 39.757258), (-91.365125, 39.758723), (-91.367962, 39.759124), (-91.365396, 39.777266), (-91.432919, 39.840554), (-91.446385, 39.870394), (-91.455887, 39.945538), (-91.460287, 39.980333), (-91.494865, 40.037421), (-91.510322, 40.127994), (-91.512974, 40.181062), (-91.510332, 40.201142), (-91.258828, 40.197299), (-90.911969, 40.193088), (-90.909756, 40.284394), (-90.450227, 40.276335), (-90.451502, 40.188892), (-90.199556, 40.183945), (-90.118966, 40.235263), (-90.033026, 40.377806), (-89.92468, 40.435921), (-89.717104, 40.435655), (-89.714927, 40.319218), (-89.602979, 40.320129), (-89.601604, 40.122432), (-89.578289, 39.976127), (-89.698259, 39.975309), (-89.701864, 39.916787), (-89.994506, 39.901925), (-89.994405, 39.87286), (-90.583534, 39.87675), (-90.582435, 39.854574), (-90.571754, 39.839326)]]
start_time = '2018-08-15T00:00:00Z'
end_time = '2018-09-15T00:00:00Z' eoj_input_config = { "RasterDataCollectionQuery": { "RasterDataCollectionArn": 'arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8', "AreaOfInterest": { "AreaOfInterestGeometry": { "PolygonGeometry": {"Coordinates": request_polygon_coordinates} } }, "TimeRangeFilter": {"StartTime": start_time, "EndTime": end_time}, "PropertyFilters": { "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 10}}}], "LogicalOperator": "AND", }, }
} eoj_config = { "JobConfig": { "CloudRemovalConfig": { "AlgorithmName": "INTERPOLATION", "InterpolationValue": "-9999", "TargetBands": ["red", "green", "blue", "nir", "swir16"], }, }
} eojParams = { "Name": "cloudremoval", "InputConfig": eoj_input_config, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
EOJ创建完成后返回ARN,用于后续的地理拼接操作。
要获取作业的状态,您可以运行 sg_client.get_earth_observation_job(Arn = response['Arn']).
地理马赛克
geomosaic EOJ 用于将来自多个卫星访问的图像合并成一个大的马赛克,通过用其他时间戳的像素覆盖无数据或透明像素(包括多云像素):
eoj_config = {"JobConfig": {"GeoMosaicConfig": {"AlgorithmName": "NEAR"}}} eojParams = { "Name": "geomosaic", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
EOJ创建完成后返回ARN,用于进行后续的重采样操作。
重采样
重新采样用于缩小地理空间图像的分辨率,以匹配裁剪蒙版的分辨率(10-30 m 分辨率重新缩放):
eoj_config = { "JobConfig": { "ResamplingConfig": { "OutputResolution": {"UserDefined": {"Value": 30, "Unit": "METERS"}}, "AlgorithmName": "NEAR", }, }
} eojParams = { "Name": "resample", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
创建 EOJ 后,返回 ARN 并用于执行后续的波段数学运算。
乐队数学
波段数学运算用于将观测值从多个光谱带转换为单个波段。 它包括以下光谱指数:
- 埃维2 – 双波段增强型植被指数
- DGVI – 广义差分植被指数
- NDMI – 归一化差异水分指数
- 归一化植被指数 – 归一化差异植被指数
- NDWI – 归一化差异水指数
请参见以下代码:
spectral_indices = [['EVI2', ' 2.5 * ( nir - red ) / ( nir + 2.4 * red + 1.0 ) '], ['GDVI', ' ( ( nir * * 2.0 ) - ( red * * 2.0 ) ) / ( ( nir * * 2.0 ) + ( red * * 2.0 ) ) '], ['NDMI', ' ( nir - swir16 ) / ( nir + swir16 ) '], ['NDVI', ' ( nir - red ) / ( nir + red ) '], ['NDWI', ' ( green - nir ) / ( green + nir ) ']] eoj_config = { "JobConfig": { "BandMathConfig": {"CustomIndices": {"Operations": []}}, }
} for indices in spectral_indices: eoj_config["JobConfig"]["BandMathConfig"]["CustomIndices"]["Operations"].append( {"Name": indices[0], "Equation": indices[1][1:-1]} ) eojParams = { "Name": "bandmath", "InputConfig": {"PreviousEarthObservationJobArn": eoj_arn}, **eoj_config, "ExecutionRoleArn": role_arn,
} eoj_response = sg_client.start_earth_observation_job(**eojParams)
区域统计
使用进一步丰富光谱指数 Amazon SageMaker处理,其中基于 GDAL 的自定义逻辑用于执行以下操作:
通过并行数据分布,清单文件(针对每个作物物候阶段)分布在多个实例中,使用 ShardedByS3Key
S3 数据分发类型。 有关详细信息,请参阅 特征提取脚本.
地理空间处理 笔记本 是运行上述步骤的分步指南。
下图显示了连续卫星访问的 RGB 通道,代表玉米物候周期的营养和繁殖阶段,有(右)和没有(左)作物掩码(CW 20、26 和 33,2018 年伊利诺伊州中部)。
在下图中,光谱指数(归一化植被指数, 埃维2, NDMI) 的连续卫星访问代表了玉米物候周期的营养和生殖阶段(CW 20、26 和 33,2018 年伊利诺伊州中部)。
清理
如果您不想再使用此解决方案,您可以删除它创建的资源。 在 Studio 中部署解决方案后,选择 删除所有资源 自动删除启动解决方案时创建的所有标准资源,包括 S3 存储桶。
结论
该解决方案为用例提供了蓝图,在这些用例中,贝叶斯网络的因果推理是从数据和人工输入的组合中回答因果问题的首选方法。 工作流包括推理引擎的高效实现,它将传入的查询和干预排队并异步处理它们。 模块化方面可以重用各种组件,包括使用专门构建的操作和预训练模型进行地理空间处理、使用定制的 GDAL 操作丰富卫星图像,以及多模态特征工程(光谱指数和表格数据)。
此外,您可以将该解决方案用作构建网格化作物模型的模板,在这些模型中进行氮肥管理和环境政策分析。
有关更多信息,请参阅 解决方案模板 并按照 指南 在美国西部(俄勒冈)地区推出 Crop Yield Counterfactuals 解决方案。 该代码可在 GitHub回购.
参考文献
German Mandrini、Sotirios V. Archontoulis、Cameron M. Pittelkow、Taro Mieno、Nicolas F. Martin、
伊利诺伊州数千个田地和多年的玉米对氮反应的模拟数据集,
数据简述,第 40 卷,2022 年,107753,ISSN 2352-3409
有用的资源
作者简介
保罗巴纳 是 AWS 机器学习原型实验室的高级数据科学家。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/generate-a-counterfactual-analysis-of-corn-response-to-nitrogen-with-amazon-sagemaker-jumpstart-solutions/
- :是
- 1
- 10
- 100
- 2018
- 2021
- 2022
- 39
- 7
- a
- 关于
- 成就
- 账号管理
- 获得
- 后天
- 横过
- 要积极。
- 添加
- 增加
- 额外
- 地址
- 倡导者
- 后
- 德盛
- 目标
- 算法
- 所有类型
- 允许
- 尽管
- Amazon
- 亚马逊SageMaker
- 亚马逊SageMaker JumpStart
- 其中
- 量
- 分析
- 和
- 答案
- 分析数据
- 应用领域
- 架构
- 保健
- 国家 / 地区
- 围绕
- AS
- 方面
- 断言
- 社区
- At
- 自动
- 可使用
- 避免
- AWS
- BAND
- 基于
- 贝叶斯
- BE
- before
- 之间
- 蓝色
- 书
- 午休
- 广阔
- 建立
- 建筑物
- by
- 被称为
- CAN
- 能力
- 捕获
- 捕获
- 例
- 类别
- 原因
- 细胞
- 中央
- 链接
- 更改
- 更改
- 通道
- 孩子
- 自称
- 索赔
- 云端技术
- 码
- 项圈
- 组合
- 相当常见
- 组件
- 浓度
- 条件
- 进行
- 分享链接
- 连续
- 约束
- 连续
- 控制
- 受控
- 相应
- 可以
- 创建信息图
- 创建
- 作物
- 目前
- 曲线
- 习俗
- 量身定制
- 周期
- data
- 数据处理
- 数据科学家
- 数据驱动
- 数据库
- 天
- 深
- 深入学习
- 演示
- 部署
- 派生
- 细节
- 详情
- 差异
- 直接
- 讨论
- 分布
- 分配
- 分布
- 分
- 域
- 大幅
- 画
- 动力学
- 每
- 效果
- 出现
- 使
- 使
- 端至端
- 发动机
- 工程师
- 增强
- 丰富
- 环境的
- 环境政策
- 本质上
- 锻炼
- 扩张
- 技术专家
- 专门知识
- 说明
- 探索
- 表达式
- 延期
- 提取
- 因素
- 农业
- 专栏
- 特征
- 少数
- 字段
- 数字
- 遵循
- 以下
- 针对
- 申请
- 骨架
- 止
- 充分
- 进一步
- 生成
- 地域
- 得到
- GitHub上
- 特定
- 全球
- 图形
- 灰度
- 绿色
- 格
- 事业发展
- 指南
- 处理
- 发生
- 有
- 老旧房屋
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 人
- 理想
- 鉴定
- 确定
- 伊利诺伊州
- 图片
- 图片
- 影响力故事
- 履行
- 默示
- 进口
- 重要性
- 征收
- 威风
- in
- 包括
- 包含
- 来电
- 结合
- 增加
- 指标
- 指数
- 信息
- 基础设施
- 初始
- 原来
- 可行的洞见
- 例
- 说明
- 房源搜索
- 互动
- 兴趣
- 介入
- 介绍
- IT
- 它的
- 工作
- 知道
- 知识
- 实验室
- 大
- 发射
- 发射
- 铅
- 学习用品
- 知道
- 学习
- 局限性
- 有限
- 文学
- 不再
- 机
- 机器学习
- 机
- 制成
- 制作
- 颠覆性技术
- 地图
- 马丁
- 面膜
- 面膜
- 匹配
- 数学
- 问题
- 到期
- 合并
- 研究方法
- 指标
- 可能
- 牛奶
- ML
- 模型
- 模型
- 模块化
- 更多
- 多
- 姓名
- 美国宇航局
- 近
- 一定
- 需求
- 网络
- 网络
- 下页
- 萨科
- 节点
- 节点分布
- 节点
- 数
- 获得
- of
- on
- 操作
- 运营
- 优化
- 优化
- 附加选项
- 橘色
- 秩序
- 俄勒冈
- 其他名称
- 并行
- 参数
- 父母
- 特别
- 通过
- 演出
- 光合作用
- 管道
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 插头
- 政策
- Polygon
- 可能
- 帖子
- 首选
- 原则
- 先
- 市场问题
- 过程
- 处理
- 过程
- 处理
- 财产
- 建议
- 建议
- 原型
- 提供
- 提供
- 纯粹
- 有疑问吗?
- 随机
- 随机化
- 范围
- 价格表
- 准备
- 合理
- 红色
- 减少
- 减少
- 地区
- 关系
- 关系
- 切除
- 更换
- 代表
- 代表
- 要求
- 必须
- 分辨率
- 资源
- 响应
- 提供品牌战略规划
- 审查
- RGB
- 投资回报率
- 运行
- 运行
- sagemaker
- 卫星
- 情景
- 科学家
- 部分
- 分割
- 选
- 前辈
- 感
- 系列
- 集
- 几个
- 作品
- 同样
- 单
- 方案,
- 解决方案
- 一些
- 空间的
- 光谱
- 广场
- 阶段
- 实习
- 标准
- 州/领地
- 州
- 统计
- Status
- 步
- 步骤
- 应力
- 结构体
- 研究
- 工作室
- 学习
- 主题
- 随后
- SUPPORT
- 产品
- 服用
- 芋头
- 教诲
- 模板
- 测试
- 这
- 图
- 国家
- 世界
- 其
- 他们
- 从而
- 博曼
- 事
- 数千
- 三
- 通过
- 始终
- 次
- 至
- 一起
- 培训
- 改造
- 转型
- 透明
- 治疗
- 试用
- 试验
- 信任
- 加州大学洛杉矶分校
- 揭露
- 下
- 理解
- 单元
- 联合的
- 美国
- 更新
- 更新
- us
- 使用
- 验证
- 折扣值
- 各个
- 访客
- 体积
- 水
- 方法
- 天气
- 周
- 井
- 西部
- 什么是
- 这
- 而
- 将
- 中
- 也完全不需要
- 世界
- 写作
- X
- 年
- 产量
- 产量
- 完全
- 您一站式解决方案
- 和风网