关于 carto-composite-scoring
用于在 CARTO Workflows 中选择并构建综合评分、指数和排名的技能。它根据目标变量或专家权重指导方法选择,并介绍有监督与无监督的空间评分流程。
主要功能
- 01选择有监督或无监督评分
- 02构建回归残差评分
- 03按自定义权重合并变量
- 04使用熵或第一主成分评分
- 05编码并统一输入变量方向
适用场景
- 01创建风险或市场潜力指数
- 02按专家设定的权重排列地点
- 03识别表现高于或低于模型预期的区域
MCP 相关
此技能依赖 carto-create-workflow;连接 MCP 会话时,可通过 MCP 工具操作 CARTO 工作流,否则使用命令行。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cartodb/ agent-skills --skill carto-composite-scoring安装后在 Claude Code 中输入/carto-composite-scoring确认已加载。
附带文件composite-score-supervised.jsoncomposite-score-unsupervised.json
详细介绍
当用户想在 CARTO Workflow 中创建综合得分、指数或多变量排名时,使用此技能。
前置条件:加载 carto-create-workflow 以了解开发流程。它涵盖两种访问方式——连接 MCP 服务时使用 MCP 服务的工作流工具(create_workflow、validate_workflow、run_workflow),否则使用 carto workflows CLI。路由信号:carto-basics/references/access-paths.md。
说明
步骤 1:确定评分方法
向用户询问以下决策树中的问题:
- “是否有目标/结果变量?”(例如收入、销售额、犯罪率)
- 有 → 使用
native.spatialcompositesupervised的监督式方法
- 有 → 使用
- “没有目标变量,但是否掌握变量重要性的专家知识?”(即自定义权重)
- 2a. 透明度比节点数量更重要 → 对每个变量使用
native.normalize,然后使用native.selectexpression,在 SQL 中直接写出加权求和公式(a_norm * 0.5 + b_norm * 0.2 + c_norm * 0.3)。在 Workflows 中可以直接检查输入和权重;每个归一化后的列都会被实体化;无需依赖 Analytics Toolbox。适用于利益相关者需要查看/审计公式,或未使用 AT 的场景。 - 2b. 希望由 AT 管道处理缩放、聚合和分桶 → 使用
native.spatialcompositeunsupervised,并设置scoring_method: CUSTOM_WEIGHTS。只需一个节点,但公式隐藏在组件内部。
- 2a. 透明度比节点数量更重要 → 对每个变量使用
- “没有目标变量,也没有权重?”
- → 使用
native.spatialcompositeunsupervised,并采用ENTROPY或FIRST_PC无监督式方法。
- → 使用
成功标准:在设计管道之前,已确定要使用的组件和评分方法。
步骤 2:构建管道
监督式管道(native.spatialcompositesupervised)
- 加载空间特征数据集(已预先建立 H3 或 Quadbin 索引)
- 加载目标/结果数据集
- 根据空间索引列连接两个数据集
- 仅选择相关特征列(从特征选择中剔除空间索引列和几何列——仅传入实际的特征变量)
- 使用以下参数运行
native.spatialcompositesupervised:model_type:LINEAR_REGbucketize:EQUAL_INTERVALS_ZERO_CENTEREDn_buckets:5outlier_removal:truer_squared_threshold:0.4
- 输出:基于回归残差的综合得分(识别相对于模型表现过高或过低的区域)
成功标准:工作流将特征与目标变量连接起来,仅选择数值型特征列,并为每个空间单元生成基于残差的得分。
无监督式管道(native.spatialcompositeunsupervised)
- 加载空间特征数据集
- 仅选择相关特征列
- 使用
native.casewhen将分类/有序变量编码为数值(例如,“Low_density_urban” → 4,“High_density_urban” → 2) - 对于值越高表示越差的变量,可选择在传递给组件的 SELECT 查询中乘以 -1 来反转变量
- 使用以下参数运行
native.spatialcompositeunsupervised:scoring_method:CUSTOM_WEIGHTS/ENTROPY/FIRST_PCweights:若使用CUSTOM_WEIGHTS,则为必填。线缆格式是由三元组[[<column>, <weight>, <reverse>], ...]组成的 JSON 编码字符串——column是特征列名,weight是数值型权重(内部会归一化,使总和为 1),reverse是布尔值(true会翻转变量,使值越高越差变为值越高越好,无需使用 CASE WHEN)。示例:'[["population_density", 0.5, false], ["accident_rate", 0.5, true]]'。不是对象映射。scaling:RANKINGaggregation:LINEARoutput:RETURN_RANGE,范围为[0, 1]
- 输出:每个位置的综合指数得分
成功标准:所有输入变量均为数值型,变量方向一致(得分越高越好),并为每个空间单元生成归一化得分。
注意事项
- 提供商的大小写规则和 SQL 方言。 此技能使用小写列名(BigQuery / Databricks / Postgres / Redshift 惯例)。在 Snowflake 上,未加引号的标识符会显示为大写——在权重、表达式和下游 SQL 中引用
POPULATION_DENSITY、ACCIDENT_RATE等。有关大小写规则和 SQL 方言对应项,请参阅carto-create-workflow/references/providers/<provider>.md。 - 所有输入变量都必须是数值,且方向一致。 先用 CASE WHEN 将有序字符串(“low”/“medium”/“high”)编码;对于“越高越差”的变量,在评分前乘以 -1(或设置
reverse标志)——忘记这一步会颠倒分数的含义。 - 监督式 R-squared 阈值(默认值为 0.4)较为宽松。如果模型拟合效果较差,基于残差的分数大多只是噪声。请检查模型诊断信息。
- 自定义权重会在内部归一化,使其总和为 1。绝对值并不重要,只有比例重要。
- 监督式分数是残差,不是原始值。分数标识的是偏离模型的区域,而不是原始值最高的区域。
- 从特征选择中排除空间索引列和几何数据——只向评分组件传入实际特征变量。
weights类型标签报告有误。 组件架构(通过read_workflow_componentsMCP 或carto workflows components get native.spatialcompositeunsupervised --json获取)将weights列为type: "ColumnNumber",但实际传输格式是 JSON 编码的ColumnAndNumber字符串,包含三元组[[<column>, <weight>, <reverse>], ...](见上文步骤 2)。请以此技能和参考模板为准,不要依赖报告的类型标签。indexcol.allowedColumns是 UI 提示,而非验证器。 架构为native.spatialcompositeunsupervised.indexcol列出了["geoid", "h3", "quadbin"],但这只是 Workflows 下拉菜单的提示——运行时可使用任何唯一标识列(例如store_id、cell_id)。
参考模板
两个示例都使用 Quadbin 分辨率为 18 的米兰空间特征数据。
| 模板 | 组件 | 文件 |
|---|---|---|
| 监督式 — 识别具有韧性的社区 | native.spatialcompositesupervised | composite-score-supervised.json |
| 非监督式 — 市场潜力评分 | native.spatialcompositeunsupervised | composite-score-unsupervised.json |
常见变体
| 变体 | 方法 |
|---|---|
| 风险指数(洪水、犯罪等) | 使用 CUSTOM_WEIGHTS 的非监督式方法;对于数值越高越安全的变量进行反向处理 |
| 市场潜力 / 选址评分 | 使用 CUSTOM_WEIGHTS 或 ENTROPY 的非监督式方法;提高需求侧变量的权重 |
| 韧性指数 | 使用结果变量(例如收入变化)的监督式方法;残差可揭示表现超出或低于预期的对象 |
| 数据驱动指数(无领域专业知识) | 使用 FIRST_PC 或 ENTROPY 的非监督式方法,让方差决定权重 |
| 人类发展 / 综合指标 | 使用 CUSTOM_WEIGHTS 和 RANKING 缩放的非监督式方法,以便安全地聚合有序变量 |
评论
支持 Markdown