{"id":"16561b8c-8ba0-4a59-a5a3-ed6bda5b9632","entityType":"agent","slug":"clawhub-gechengling-financial-engineer-digital-employee","name":"Financial Engineer Digital Employee","canonicalUrl":"https://www.xpersona.co/agent/clawhub-gechengling-financial-engineer-digital-employee","canonicalPath":"/agent/clawhub-gechengling-financial-engineer-digital-employee","generatedAt":"2026-10-11T17:45:14.268Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":null},"description":"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Skill: Financial Engineer Digital Employee Owner: gechengling Summary: 覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Tags: Financial:2.0.3, financial-engineer-digital-employee:2.0.4, latest:2.0.4 Version history: v2.0.4 | 2026-09-21T05:45:48.007Z | user 2.0.4: 新增全局建模口径与最新动态章节（六道关卡、指标速查与易错点、输出质量自检、保存外发前确认）；8个模块新增输出示例与自检表；安全声明改为与正文一致的表述 v2.0.3 | 2026-08-28T07:07:23.352","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17ewqc4f2s6gpcbm88hy7fgvn85kg1g:financial-engineer-digital-employee","sourceUrl":"https://clawhub.ai/gechengling/financial-engineer-digital-employee","homepage":"https://clawhub.ai/gechengling/skills/financial-engineer-digital-employee","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/gechengling/financial-engineer-digital-employee","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/gechengling/skills/financial-engineer-digital-employee","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Skill: Financial Engineer Digital Employee Owner: gechengling S"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":null},"stars":null,"forks":null,"downloads":1039,"packageName":null,"latestVersion":"2.0.4","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:30:19.955Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T15:30:20.029Z","lastCrawledAt":"2026-10-11T15:30:19.955Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T15:30:19.955Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.4","createdAt":"2026-09-21T05:45:48.007Z","changelog":"2.0.4: 新增全局建模口径与最新动态章节（六道关卡、指标速查与易错点、输出质量自检、保存外发前确认）；8个模块新增输出示例与自检表；安全声明改为与正文一致的表述","fileCount":3,"zipByteSize":33853},{"version":"2.0.3","createdAt":"2026-08-28T07:07:23.352Z","changelog":"Security review remediation (patch 2). Replaced the over-broad 'no-network / no-file / no-advice' disclaimer with an accurate, consistent capability statement: the skill is a methodology guide that does not bundle executable code or auto-run background tasks; the file I/O, API/MCP calls, audit logs and recommendations described in the body are user-executed in their authorized, compliance-governed environment. Added an explicit sensitive-data retention/access-control governance note and softened explicit operation-advice phrasing (e.g. buy-on-support / stop-loss). Resolves the SDI-1/SDI-4 capability-mismatch and SQP-2/SSD-3 data-control findings from the previous review.","fileCount":3,"zipByteSize":28159},{"version":"2.0.2","createdAt":"2026-08-28T05:58:57.841Z","changelog":"Security review remediation (patch). Removed executable code examples, external tool/API invocations (finx data-service, web_search, MCP tools, cron/scheduled tasks), auto-publish behavior and real tool names (Playwright); added an explicit no-network / no-code / no-credential / no-file-write security disclaimer so the stated behavior is consistent with the skill body. Content and workflow guidance unchanged.","fileCount":3,"zipByteSize":27740},{"version":"2.0.1","createdAt":"2026-07-18T15:05:22.474Z","changelog":"v2.0.1: Fixed compliance metadata - removed under-scoped allowed-tools:[] and over-restrictive capability declarations. Updated to honest capability notice. Refreshed with July 2026 market data.","fileCount":3,"zipByteSize":29273},{"version":"2.0.0","createdAt":"2026-06-04T15:01:36.930Z","changelog":"**Financial Engineer Digital Employee 2.0.0 Changelog** - Major upgrade: SKILL.md was comprehensively rewritten, greatly enhancing skill documentation and clarity. - Streamlined overview of the 14 core modules and clarified workflow structure. - Significant expansion of documentation for“数据轮廓速览”(data profiling) and“单变量分析”(univariate analysis), including clearer parameter, output, and usage examples. - Improved distinctions between modules, added explicit instructions, and updated security/disclaimer statements. - Removed obsolete skill-card.md file for better maintenance.","fileCount":3,"zipByteSize":29342},{"version":"1.0.0","createdAt":"2026-06-04T04:07:47.056Z","changelog":"- Initial release of \"Financial Engineer\" digital employee skill (v1.0.0). - Provides a comprehensive end-to-end machine learning workflow for financial risk modeling, covering 14 core modules (data profiling, feature analysis, LR/scorecard modeling, XGBoost/DNN models, model tuning, model interpretation, group modeling, and more). - All functionality is advisory and reference-only; no executable code or persistent storage is included. - Outputs require human review and do not constitute financial or legal advice. - Includes detailed security and disclaimer notices to ensure safe and responsible usage.","fileCount":3,"zipByteSize":5962}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17ewqc4f2s6gpcbm88hy7fgvn85kg1g:financial-engineer-digital-employee","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:45:14.251Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gechengling-financial-engineer-digital-employee/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":null},"readme":"Skill: Financial Engineer Digital Employee\n\nOwner: gechengling\n\nSummary: 覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。\n\nTags: Financial:2.0.3, financial-engineer-digital-employee:2.0.4, latest:2.0.4\n\nVersion history:\n\nv2.0.4 | 2026-09-21T05:45:48.007Z | user\n\n2.0.4: 新增全局建模口径与最新动态章节（六道关卡、指标速查与易错点、输出质量自检、保存外发前确认）；8个模块新增输出示例与自检表；安全声明改为与正文一致的表述\n\nv2.0.3 | 2026-08-28T07:07:23.352Z | user\n\nSecurity review remediation (patch 2). Replaced the over-broad 'no-network / no-file / no-advice' disclaimer with an accurate, consistent capability statement: the skill is a methodology guide that does not bundle executable code or auto-run background tasks; the file I/O, API/MCP calls, audit logs and recommendations described in the body are user-executed in their authorized, compliance-governed environment. Added an explicit sensitive-data retention/access-control governance note and softened explicit operation-advice phrasing (e.g. buy-on-support / stop-loss). Resolves the SDI-1/SDI-4 capability-mismatch and SQP-2/SSD-3 data-control findings from the previous review.\n\nv2.0.2 | 2026-08-28T05:58:57.841Z | user\n\nSecurity review remediation (patch). Removed executable code examples, external tool/API invocations (finx data-service, web_search, MCP tools, cron/scheduled tasks), auto-publish behavior and real tool names (Playwright); added an explicit no-network / no-code / no-credential / no-file-write security disclaimer so the stated behavior is consistent with the skill body. Content and workflow guidance unchanged.\n\nv2.0.1 | 2026-07-18T15:05:22.474Z | user\n\nv2.0.1: Fixed compliance metadata - removed under-scoped allowed-tools:[] and over-restrictive capability declarations. Updated to honest capability notice. Refreshed with July 2026 market data.\n\nv2.0.0 | 2026-06-04T15:01:36.930Z | auto\n\n**Financial Engineer Digital Employee 2.0.0 Changelog**\n\n- Major upgrade: SKILL.md was comprehensively rewritten, greatly enhancing skill documentation and clarity.\n- Streamlined overview of the 14 core modules and clarified workflow structure.\n- Significant expansion of documentation for“数据轮廓速览”(data profiling) and“单变量分析”(univariate analysis), including clearer parameter, output, and usage examples.\n- Improved distinctions between modules, added explicit instructions, and updated security/disclaimer statements.\n- Removed obsolete skill-card.md file for better maintenance.\n\nv1.0.0 | 2026-06-04T04:07:47.056Z | auto\n\n- Initial release of \"Financial Engineer\" digital employee skill (v1.0.0).\n- Provides a comprehensive end-to-end machine learning workflow for financial risk modeling, covering 14 core modules (data profiling, feature analysis, LR/scorecard modeling, XGBoost/DNN models, model tuning, model interpretation, group modeling, and more).\n- All functionality is advisory and reference-only; no executable code or persistent storage is included.\n- Outputs require human review and do not constitute financial or legal advice.\n- Includes detailed security and disclaimer notices to ensure safe and responsible usage.\n\nArchive index:\n\nArchive v2.0.4: 3 files, 33853 bytes\n\nFiles: skill-card.md (2409b), SKILL.md (102806b), _meta.json (154b)\n\nFile v2.0.4:SKILL.md\n\n---\r\nname: \"Financial Engineer Digital Employee\"\r\nslug: financial-engineer-digital-employee\r\ndescription: \"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。\"\r\nversion: 2.0.4\r\nallowed-tools: []\r\ncapabilities:\r\n  - educational-reference\r\n  - advisory-only\r\n  - requires-human-review\r\n  - illustrative-code-samples\r\n---\r\n\r\n# Financial Engineer Digital Employee / 金融工程专家数字员工\r\n\r\n> **⚠️ SECURITY NOTICE / 安全声明**\r\n> - **Type:** Educational reference / analytical framework ONLY\r\n> - **No bundled executable payload:** this skill ships no runnable package, installer, background task or scheduled job. The commands, scripts and configuration snippets shown in the text are illustrative reference material, to be read and, if useful, run by the user inside their own authorised environment.\r\n> - **No persistent storage, network calls, background execution, or credential collection**\r\n> - **All outputs are for reference only and require human review before real-world application**\r\n> - **This skill does NOT provide financial, legal, or insurance advice**\r\n> - **Users must exercise their own judgment and consult qualified professionals**\r\n>\r\n> **⚠️ 数据安全警告**\r\n> - 本技能仅提供参考框架和分析建议，**不随附可执行程序、安装脚本、后台任务或定时任务**；正文中的命令与代码为**供用户在自有授权环境中参考使用的示意材料**，本技能自身不代为执行\r\n> - 本技能不会主动发起网络请求、不会自动读取或落盘用户的业务数据与个人身份信息（PII）；建模数据由用户在自有授权环境中自行准备\r\n> - **数据最小化**：建模时只使用完成该任务所必需的最小字段集；涉敏字段应先脱敏、泛化或取得授权，能不用就不用\r\n> - **保存/外发前确认**：任何模型文件、评测报告、特征清单与图表，必须先向用户完整预览并经用户明确确认后再写入磁盘或对外发送\r\n> - 所有输出仅为方法论参考，实际决策需由具备相应资质的专业人员作出\r\n\r\n## Skill Overview / 技能概览\r\n\r\n金融工程专家数字员工，集成以下14项核心能力模块：\r\n\r\n1. **Module 1: 数据轮廓速览**\r\n2. **Module 2: 单变量分析**\r\n3. **Module 3: 特征深度分析**\r\n4. **Module 4: LR评分卡建模**\r\n5. **Module 5: LR评分卡调参**\r\n6. **Module 6: XGBoost建模**\r\n7. **Module 7: XGBoost调参**\r\n8. **Module 8: DNN深度学习建模**\r\n9. **Module 9: DNN调参**\r\n10. **Module 10: 多模型效果对比**\r\n11. **Module 11: 模型解释**\r\n12. **Module 12: 自主实验循环**\r\n13. **Module 13: 分群建模**\r\n\r\n## 全局建模口径与最新动态（2026-09-21 新增）\r\n\r\n### 建模与合规动态\r\n\r\n| 动态类型 | 内容摘要 | 发布时间 | 对建模流程的影响 | 应对动作 |\r\n|---------|---------|---------|----------------|---------|\r\n| 模型治理 | 金融机构模型全生命周期管理与可解释要求持续强化 | 2026-Q3 | 模型需可解释、可复现、可审计 | 保留特征清单、参数与版本记录 |\r\n| AI应用 | 银行业保险业AI安全开发应用指导意见落地，高风险场景需可解释可审计 | 2026-06-18 | 评分卡与复杂模型均需解释材料 | 每个模型输出解释与局限性说明 |\r\n| 数据安全 | 个人信息保护与数据最小化要求在建模场景执行细化 | 2026-Q3 | 特征可解释“为什么要这个字段” | 建立字段准入与留痕 |\r\n| 自动化建模 | 自动化特征工程与自动调参工具普及，人工判断价值转向“问题定义” | 2026-Q3 | 调参不再是主要瓶颈 | 把精力放在口径、切分与验证上 |\r\n| 模型监控 | 模型上线后漂移监控成为标配环节 | 2026-Q3 | 一次性建模不够 | 增加监控指标与预警阈值 |\r\n\r\n> **数据截止**: 2026-09-21 | 来源：公开行业信息与监管公开信息\r\n> **声明**: 以上动态供参考，具体以官方最新发布为准\r\n\r\n### 建模流程通用的六道关卡\r\n\r\n| 关卡 | 要回答的问题 | 不通过的处理 |\r\n|------|-------------|-------------|\r\n| 问题定义 | 预测什么、在哪个时点预测、给谁用 | 先回去定义清楚，不要开始建模 |\r\n| 口径与切分 | 训练集/验证集/OOT 如何切，是否有泄漏 | 重做切分，按时间切优先 |\r\n| 特征准入 | 每个字段为什么可用、是否有未来信息 | 剔除无法解释来源的字段 |\r\n| 基线对比 | 比简单基线好多少 | 不优于基线则不值得上线 |\r\n| 稳定性 | 跨时间、跨群的表现是否稳定 | 不稳定的模型限制使用范围 |\r\n| 可解释与留痕 | 能否解释单个预测与整体行为 | 补解释材料后再评审 |\r\n\r\n### 常用指标速查与易错点\r\n\r\n| 指标 | 定义 | 易错点 |\r\n|------|------|--------|\r\n| AUC | 正负样本排序能力的综合度量 | 样本极度不均衡时单独看AUC会乐观 |\r\n| KS | 好坏样本累计分布的最大差值 | 对切分点敏感，需看曲线形状 |\r\n| PSI | 分布稳定性指标 | 分箱方式不同结果差异大 |\r\n| Lift / Gain | 前若干分位的提升倍数 | 只看Top分位会忽略整体 |\r\n| 召回率/精确率 | 正样本的覆盖与命中 | 单一阈值下比较会误导 |\r\n| OOT Gap | 训练集与OOT表现的差 | 用随机切分掩盖时间效应 |\r\n\r\n### 输出质量自检（所有模块通用）\r\n\r\n| 自检项 | 不通过表现 | 处理动作 |\r\n|--------|-----------|---------|\r\n| 数据有来源与授权 | 使用来源不明的字段 | 补来源与授权说明，否则剔除 |\r\n| 无未来信息 | 使用了预测时点之后才可得的字段 | 剔除该特征并重训 |\r\n| 结论有边界 | 写成确定性的“必然” | 改为“在……假设下，可能……” |\r\n| 风险有提示 | 只讲效果不讲局限 | 补齐局限与风险段 |\r\n| 未夹带敏感信息 | 出现未脱敏的原始明细 | 先脱敏再输出 |\r\n| 已过人工复核 | 未经复核即外发 | 标注“待复核”，确认后再发送 |\r\n| 可复现 | 未记录参数、版本与随机种子 | 补齐实验记录 |\r\n\r\n### 保存与外发前确认\r\n\r\n1. 在对话中完整展示报告、指标与图表，供用户逐段确认；\r\n2. 用户确认后再写入文件或对外发送；未经确认不得落盘、不得发送；\r\n3. 落盘时同时记录：运行时间、数据时间窗、主要参数、模型版本、审核人。\r\n\r\n---\r\n\r\n14. **Module 14: DeepModel深度集成**\r\n\r\n---\r\n\r\n\r\n---\r\n\r\n## Module 1: 数据轮廓速览\r\n\r\n# 数据洞察报告 (portable)\r\n\r\n基于 `scripts/profiler.py` 主脚本，对数据集进行轮廓扫描，生成数据概况报告。\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--output` | | `data_profiling_report.md` | 报告输出路径 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--output_name` | | `data_profiling_report` | 报告基名（不含扩展名） |\r\n| `--config` | | - | JSON 配置文件路径 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n```bash\r\npython scripts/profiler.py \\\r\n  --data_path ./examples/toy.parquet \\\r\n  --output_dir ./outputs/profile_run\r\n```\r\n\r\n执行结束后：\r\n- 产物目录 `<output_dir>/` 下生成：\r\n  - `report.md` — 数据概况报告\r\n  - `result.json` — 结构化产物清单（见 PROTOCOL.md）\r\n- stdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可\r\n\r\n---\r\n\r\n## 产物示例\r\n\r\n```json\r\n{\r\n  \"skill\": \"data-profiling\",\r\n  \"status\": \"success\",\r\n  \"files\": [\r\n    {\"path\": \".../report.md\", \"role\": \"report\"}\r\n  ],\r\n  \"metrics\": {\"n_rows\": 10000, \"n_cols\": 28, \"n_missing_cols\": 5},\r\n  \"summary\": \"中等规模数据集（10,000行），28 个字段，数值型为主，发现 2 个高缺失字段\"\r\n}\r\n```\r\n\r\n---\r\n\r\n## 报告输出结构\r\n\r\n| 章节 | 内容 |\r\n|------|------|\r\n| 1. 数据概览 | 文件名、格式、大小、行列数、字段类型分布饼图 |\r\n| 2. 字段详情清单 | 每个字段的类型、缺失率、唯一值数、示例值 |\r\n| 3. 数值特征分析 | 描述性统计（均值/标准差/分位数/偏度/峰度）+ histogram 分布图 |\r\n| 4. 类别特征分析 | 唯一值数、Top 值占比、集中度 + bar chart |\r\n| 5. 缺失值分析 | 缺失率排名表格 + 柱状图 |\r\n| 6. 数据质量 | 重复行、空列、常量列、高缺失列 |\r\n| 7. 样本预览 | 前 5 行数据展示 |\r\n\r\n---\r\n\r\n## 自适应展示\r\n\r\n当数值/类别特征数量超过 20 个时，统计表格和图表只展示前 20 个，避免报告过长。\r\n\r\n---\r\n\r\n## 与其他 Skill 的关系\r\n\r\n| Skill | 用途区别 |\r\n|-------|----------|\r\n| **data-profiling** | 快速了解数据轮廓，不做深度分析 |\r\n| feature-analysis | 深度特征分析（IV、PSI、相关性等），需要目标变量 |\r\n| xgb-modeling | 建模全流程，需要目标变量 |\r\n\r\n**建议流程**：\r\n1. 先用 `data-profiling` 了解数据基本情况\r\n2. 根据洞察结果，决定是否需要 `feature-analysis` 或 `xgb-modeling`\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **无需目标变量**：本 Skill 不需要提供目标变量，纯数据描述\r\n2. **快速轻量**：执行速度快，适合大数据集的快速扫描\r\n3. **自动类型推断**：识别数值型、类别型、布尔型、时间型、文本型字段\r\n\r\n\r\n---\r\n\r\n\r\n## 输出示例与自检（2026-09-21 新增）\r\n\r\n**轮廓报告的判读要点**\r\n\r\n| 现象 | 可能原因 | 处理建议 |\r\n|------|---------|---------|\r\n| 某字段缺失率 > 90% | 采集不全或字段冗余 | 评估后剔除，不默认填充 |\r\n| 唯一值数 = 样本数 | 主键或泄露字段 | 确认是否为ID类字段并剔除 |\r\n| 类别字段取值极多 | 高基数字段 | 考虑合并低频取值 |\r\n| 分布集中在单一值 | 采集口径问题 | 回溯数据源确认 |\r\n| 时间字段跨度异常 | 数据窗口截断 | 明确训练数据时间窗 |\r\n\r\n**自检**：轮廓扫描只描述事实，不做归因；任何“该字段无用”的结论都须结合业务含义，不能仅凭缺失率下判断。\r\n\r\n## Module 2: 单变量分析\r\n\r\n# 单变量分析 (portable)\r\n\r\n基于 `scripts/analyzer.py` 主脚本，对指定特征进行单变量级别的分布分析或预测力评估。\r\n\r\n---\r\n\r\n## 功能定位\r\n\r\n| 模式 | 目标变量 | 核心功能 | 使用场景 |\r\n|------|:--------:|----------|----------|\r\n| 数据探索模式 | ❌ 无 | 分布分析、交叉分布 | 刚上传数据、初步了解特征分布 |\r\n| 特征筛选模式 | ✅ 有 | IV值、分箱表、筛选建议 | 建模前快速筛选特征 |\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--features` | ✅ | - | 待分析特征列名，逗号分隔，或 `\"all\"` |\r\n| `--target` | | - | 目标变量列名（可选，有则进入筛选模式） |\r\n| `--exclude_cols` | | - | 排除的列，逗号分隔 |\r\n| `--binning_method` | | `quantile` | 分箱方式：`quantile`(等频) / `distance`(等距) |\r\n| `--n_bins` | | `10` | 分箱数量 |\r\n| `--cross` | | - | 交叉分布的两个特征，逗号分隔 |\r\n| `--output` | | 自动生成 | 报告输出名称 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置文件路径 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n### 数据探索模式（无目标变量）\r\n\r\n```bash\r\npython scripts/analyzer.py \\\r\n  --data_path ./data.parquet --features \"age,income,score\" \\\r\n  --output_dir ./outputs/uni_run\r\n```\r\n\r\n### 特征筛选模式（有目标变量）\r\n\r\n```bash\r\npython scripts/analyzer.py \\\r\n  --data_path ./data.parquet --features \"age,income,score\" --target y_label \\\r\n  --output_dir ./outputs/uni_run\r\n```\r\n\r\n### 交叉分布分析\r\n\r\n```bash\r\npython scripts/analyzer.py \\\r\n  --data_path ./data.parquet --features \"age,income\" --cross \"age,income\" \\\r\n  --output_dir ./outputs/uni_run\r\n```\r\n\r\n---\r\n\r\n## 常用场景\r\n\r\n### 场景一：数据探索（无目标变量）\r\n\r\n查看单特征分布：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --features \"age,income,score\" --output_dir ./outputs/uni_run\r\n```\r\n\r\n指定等距分箱：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --features \"age\" --binning_method distance --n_bins 5 --output_dir ./outputs/uni_run\r\n```\r\n\r\n### 场景二：交叉分布分析\r\n\r\n查看两个特征的联合分布：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --features \"age,income\" --cross \"age,income\" --output_dir ./outputs/uni_run\r\n```\r\n\r\n### 场景三：特征筛选（有目标变量）\r\n\r\n计算 IV 值，评估特征预测力：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --features \"age,income,score\" --target y_label --output_dir ./outputs/uni_run\r\n```\r\n\r\n---\r\n\r\n## 报告输出结构\r\n\r\n### 数据探索模式（无目标变量）\r\n\r\n| 章节 | 内容 |\r\n|------|------|\r\n| 1. 数据概览 | 样本量、分析特征数 |\r\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\r\n| 3. 分布分析 | 各特征的分箱分布表（区间、样本数、占比）+ 柱状分布图 |\r\n| 4. 交叉分布 | 两特征联合分布表（可选） |\r\n| 5. 数据质量标记 | 缺失率过高、低基数等问题标记 |\r\n\r\n### 特征筛选模式（有目标变量）\r\n\r\n| 章节 | 内容 |\r\n|------|------|\r\n| 1. 数据概览 | 样本量、正样本率、分析特征数 |\r\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\r\n| 3. IV值分析 | 各特征 IV 值排名及分箱明细表 |\r\n| 4. 数据质量标记 | 缺失率过高、低基数等问题标记 |\r\n| 5. 筛选建议 | 建议保留/剔除的特征清单 |\r\n\r\n---\r\n\r\n## 分箱说明\r\n\r\n### 等频分箱（quantile）\r\n\r\n按数据分位数划分，每箱样本量大致相等。适合分布不均匀的数据。\r\n\r\n### 等距分箱（distance）\r\n\r\n按数值区间等间隔划分。适合分布均匀的数据。\r\n\r\n### 特殊值处理\r\n\r\n- **缺失值**：单独一箱，标记为 `Missing`\r\n- **零值**：当零值占比 > 5% 时单独一箱\r\n- **负数**：当存在负数时单独处理\r\n\r\n---\r\n\r\n## 输出示例\r\n\r\n### 分布分析表\r\n\r\n```\r\n特征: age | 分箱方式: 等频 | 分箱数: 10\r\n\r\n| 区间          | 样本数  | 占比    | 累计占比 |\r\n|---------------|---------|---------|----------|\r\n| Missing       | 156     | 1.56%   | 1.56%    |\r\n| [18, 23)      | 984     | 9.84%   | 11.40%   |\r\n| [23, 28)      | 1,012   | 10.12%  | 21.52%   |\r\n| ...           | ...     | ...     | ...      |\r\n```\r\n\r\n### 交叉分布表\r\n\r\n```\r\nage × income 交叉分布\r\n\r\n|              | 低收入   | 中收入   | 高收入   | 合计    |\r\n|--------------|----------|----------|----------|---------|\r\n| [18, 25)     | 800      | 300      | 134      | 1,234   |\r\n| [25, 35)     | 500      | 1,200    | 756      | 2,456   |\r\n| [35, 45)     | 200      | 800      | 1,000    | 2,000   |\r\n| ...          | ...      | ...      | ...      | ...     |\r\n```\r\n\r\n### IV 分箱明细表（有目标变量）\r\n\r\n```\r\n特征: age | IV = 0.1523\r\n\r\n| 区间          | 样本数  | 正样本数 | 正样本率 | WoE     | IV      |\r\n|---------------|---------|----------|----------|---------|---------|\r\n| [18, 23)      | 984     | 156      | 15.85%   | 0.32    | 0.0234  |\r\n| [23, 28)      | 1,012   | 98       | 9.68%    | -0.15   | 0.0089  |\r\n| ...           | ...     | ...      | ...      | ...     | ...     |\r\n```\r\n\r\n---\r\n\r\n## 与 feature-analysis 的关系\r\n\r\n| 维度 | univariate-analysis | feature-analysis |\r\n|------|---------------------|------------------|\r\n| 定位 | 单特征快速分析 | 全量特征深度分析 |\r\n| 目标变量 | 可选 | 必须 |\r\n| 相关性分析 | ❌ | ✅ |\r\n| PSI稳定性 | ❌ | ✅ |\r\n| 方案推荐 | ❌ | ✅ 四套方案 |\r\n| 典型用法 | 建模前快速筛选 | 特征工程完整报告 |\r\n\r\n**推荐工作流**：`univariate-analysis`（快速筛选）→ `feature-analysis`（深度分析）\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **特征数量**：建议单次分析不超过 50 个特征，大量特征请分批处理\r\n2. **分箱数量**：默认 10 箱，可根据数据量调整（数据量少时建议 5 箱）\r\n3. **交叉分布**：仅支持两个特征的交叉，建议选择离散或已分箱的特征\r\n4. **IV 计算**：需要目标变量为 0/1 二分类\r\n5. **产物位置**：报告保存到 `<output_dir>/`\r\n\r\n\r\n---\r\n\r\n\r\n## 输出示例与自检（2026-09-21 新增）\r\n\r\n**单变量结论的规范写法**\r\n\r\n| 不规范 | 规范 | 原因 |\r\n|-------|------|------|\r\n| “年龄越大风险越高” | “在样本区间内，年龄与坏样本率呈单调上升，需结合客群结构判断” | 单变量未控制其他因素 |\r\n| “这个字段没有用” | “该字段单变量区分度低，可在多变量环境中再评估” | 单变量弱不代表无用 |\r\n| “缺失就是坏客户” | “缺失本身有区分度，但需确认缺失机制” | 缺失可能含采集偏差 |\r\n\r\n**自检**：单变量分析不得直接推导因果；涉及分箱时须说明分箱方法与样本量下限，样本过少的箱须合并。\r\n\r\n## Module 3: 特征深度分析\r\n\r\n# 建模特征分析报告 (portable)\r\n\r\n基于 `scripts/analyzer.py` 主脚本，对数据集特征进行全面分析并生成 Markdown 报告。\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--baseline_filter` | | - | PSI 基准数据条件（pandas query） |\r\n| `--comparison_filter` | | - | PSI 对比数据条件（pandas query） |\r\n| `--top_n` | | `10` | 输出 IV 排名前 N 的特征分箱明细（默认 10） |\r\n| `--specified_features` | | - | 指定特征分箱明细，逗号分隔 |\r\n| `--output` | | `feature_analysis_report.md` | 报告输出名称 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置文件路径 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n```bash\r\npython scripts/analyzer.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --exclude_cols \"cust_code,busi_dt\" \\\r\n  --baseline_filter \"busi_dt <= '20250501'\" \\\r\n  --comparison_filter \"busi_dt > '20250701'\" \\\r\n  --output_dir ./outputs/fa_run\r\n```\r\n\r\n---\r\n\r\n## 常用场景\r\n\r\n### 场景一：基础分析（不含 PSI）\r\n\r\n适用于无时间维度的数据集：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --target y_label --output_dir ./outputs/fa_run\r\n```\r\n\r\n### 场景二：完整分析（含 PSI）\r\n\r\n适用于有时间切分条件的数据集：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --target y_label \\\r\n  --baseline_filter \"busi_dt <= '20250501'\" \\\r\n  --comparison_filter \"busi_dt > '20250701'\" \\\r\n  --output_dir ./outputs/fa_run\r\n```\r\n\r\n### 场景三：单变量深度分析\r\n\r\n输出 IV Top N 或指定特征的完整分箱明细表：\r\n\r\n```bash\r\npython scripts/analyzer.py --data_path ./data.parquet --target y_label --top_n 10 --output_dir ./outputs/fa_run\r\npython scripts/analyzer.py --data_path ./data.parquet --target y_label --specified_features \"umeng_ALL,bscore\" --output_dir ./outputs/fa_run\r\n```\r\n\r\n---\r\n\r\n## 报告输出结构\r\n\r\n生成的 `feature_analysis_report.md` 包含以下章节：\r\n\r\n| 章节 | 内容 |\r\n|------|------|\r\n| 1. 数据概览 | 样本量、特征数、正样本率 |\r\n| 2. 基础统计分析 | 各特征的均值、标准差、缺失率、偏度、峰度等 |\r\n| 3. IV值分析 | IV 排名 Top 20、IV 分布统计 |\r\n| 4. PSI稳定性分析 | PSI 排名、不稳定特征清单 |\r\n| 5. 相关性分析 | 高相关特征对、共线性处理建议 |\r\n| 6. 综合建议 | 推荐保留/移除特征 |\r\n| 7. 建模特征方案 | 四套特征筛选方案（全量/去共线性/高IV/稳定性优先） |\r\n| 8. 单变量深度分析 | 默认输出 Top 10 特征分箱明细，可通过 `--top_n` 调整 |\r\n\r\n---\r\n\r\n## 特征筛选方案说明\r\n\r\n报告自动生成四套建模特征方案：\r\n\r\n| 方案 | 筛选条件 | 适用场景 |\r\n|------|----------|----------|\r\n| 方案一：全量入模 | 基础合格池（IV>=0.02, PSI<0.25, 缺失率<50%） | XGBoost/LightGBM 等树模型 |\r\n| 方案二：去共线性标准 | 基础池 + 贪心去 \\|r\\|>=0.7 | 逻辑回归、评分卡 |\r\n| 方案三：高预测力精选 | IV>=0.1 + 去共线性 | 特征受限、可解释性要求高 |\r\n| 方案四：稳定性优先 | PSI<0.1 + 去共线性 | 线上部署、高稳定性要求 |\r\n\r\n---\r\n\r\n## 与其他 Skill 的关系\r\n\r\n| Skill | 用途区别 |\r\n|-------|----------|\r\n| **feature-analysis** | 全量特征深度分析+方案推荐，需要目标变量 |\r\n| data-profiling | 快速了解数据轮廓，不做深度分析 |\r\n| univariate-analysis | 少量特征快速分析，不含全量相关性和方案推荐 |\r\n\r\n**建议流程**：`data-profiling`（快速扫描）→ `feature-analysis`（深度分析+方案推荐）→ `xgb-modeling`（建模）\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **目标变量**：必须为数值型\r\n2. **PSI 分析**：需同时提供 `baseline_filter` 和 `comparison_filter`，否则跳过\r\n3. **相关性**：仅对数值型特征有效，非数值列自动跳过\r\n4. **大数据集**：报告默认展示 IV Top 20，完整数据在文件中\r\n5. **产物位置**：报告保存到 `<output_dir>/`\r\n\r\n\r\n---\r\n\r\n## Module 4: LR评分卡建模\r\n\r\n# LR 评分卡建模 (portable)\r\n\r\n基于 WoE (Weight of Evidence) 编码 + Logistic Regression 进行二分类评分卡建模。\r\n\r\n**核心流程**：原始特征 → WoE 最优分箱编码 → LR 训练 → 评分卡转换\r\n\r\n**适用场景**：\r\n- 风控评分卡开发（标准 A/B/C 卡）\r\n- 需要强可解释性的业务场景\r\n- 监管合规要求模型白盒化\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\r\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\r\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\r\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动按 IV 筛选 |\r\n| `--max_n_bins` | | `8` | WoE 分箱最大箱数 |\r\n| `--min_bin_size` | | `0.05` | 最小分箱比例 |\r\n| `--iv_threshold` | | `0.02` | IV 筛选阈值（低于此值的特征排除） |\r\n| `--regularization` | | `l2` | 正则化类型：`l1` / `l2` / `elasticnet` |\r\n| `--C` | | `1.0` | 正则化强度（越小正则化越强） |\r\n| `--max_iter` | | `1000` | LR 最大迭代次数 |\r\n| `--base_score` | | `600` | 评分卡基础分 |\r\n| `--pdo` | | `50` | 评分卡 PDO（分数翻倍点） |\r\n| `--base_odds` | | `50.0` | 基础 Odds（好坏比） |\r\n| `--model_name` | | 自动生成 | 模型名称 |\r\n| `--report_output` | | 自动生成 | 报告输出路径 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置文件路径 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --time_col busi_dt \\\r\n  --exclude_cols \"cust_code,busi_dt\" \\\r\n  --output_dir ./outputs/lr_run\r\n```\r\n\r\n指定特征建模：\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --features \"feat1,feat2,feat3,feat4\" \\\r\n  --regularization l1 --C 0.5 \\\r\n  --output_dir ./outputs/lr_run\r\n```\r\n\r\n---\r\n\r\n## 常用场景\r\n\r\n### 场景一：默认参数快速建模\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label --output_dir ./outputs/lr_run\r\n```\r\n\r\n### 场景二：指定特征建模\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label \\\r\n  --features \"feat1,feat2,feat3\" --output_dir ./outputs/lr_run\r\n```\r\n\r\n### 场景三：自定义评分卡参数\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label \\\r\n  --base_score 650 --pdo 40 --output_dir ./outputs/lr_run\r\n```\r\n\r\n---\r\n\r\n## 输出产物\r\n\r\n1. **建模报告**（Markdown）— 含数据切分、WoE分箱表、LR系数表、评分卡转换表、三段式评估指标、稳定性分析\r\n2. **模型文件**（joblib）— LR 模型 + WoE 编码器序列化\r\n3. **评分卡表**（JSON）— 可直接用于部署的分箱-分数映射\r\n4. **result.json** — 结构化产物清单\r\n\r\n---\r\n\r\n## 与其他建模 Skill 的对比\r\n\r\n| 维度 | lr-modeling | xgb-modeling | dnn-modeling |\r\n|------|-------------|--------------|-------------|\r\n| 算法 | Logistic Regression | XGBoost | MLP (PyTorch) |\r\n| 特征编码 | WoE 分箱编码 | 原始特征直接输入 | StandardScaler |\r\n| 可解释性 | 白盒（系数 × WoE = 贡献） | 黑盒（需 SHAP 解释） | 弱 |\r\n| 非线性能力 | 弱（仅通过分箱引入） | 强（树结构天然支持） | 强（多层激活） |\r\n| 适用场景 | 评分卡 / 合规 / 白盒 | 高精度 / 特征交互 | 高维复杂交互 |\r\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\r\n\r\n---\r\n\r\n## 上下游关系\r\n\r\n- **前置**：`data-profiling` → `feature-analysis` / `univariate-analysis`（特征筛选）\r\n- **后续**：`lr-tuning`（调参优化）、`model-comparison`（多算法对比）\r\n- **平行**：与 `xgb-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **目标变量**：必须为 0/1 二分类\r\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\r\n3. **特征筛选**：不传 `--features` 时自动按 IV 筛选（阈值 `--iv_threshold`）\r\n4. **WoE 分箱**：使用 `optbinning` 做最优分箱，每特征最多 `--max_n_bins` 箱\r\n5. **评分卡公式**：`Score = base_score - factor × ln(odds)`，其中 `factor = pdo / ln(2)`\r\n6. **不提供调参**：需要调参请切 `lr-tuning`（搜索 WoE 分箱 + LR 正则化参数）\r\n7. **模型保存**：模型和评分卡保存到 `<output_dir>/models/`\r\n\r\n\r\n---\r\n\r\n\r\n## 输出示例与自检（2026-09-21 新增）\r\n\r\n**评分卡落地的检查清单**\r\n\r\n| 检查项 | 标准 | 不达标处理 |\r\n|-------|------|-----------|\r\n| 分箱单调性 | 业务上可解释 | 调整分箱或合箱 |\r\n| 每箱样本量 | 满足最低样本要求 | 合并稀疏箱 |\r\n| 系数符号 | 与业务常识一致 | 检查共线性与特征定义 |\r\n| OOT Gap | 在可接受范围 | 检查切分与时间效应 |\r\n| PSI | 跨时间稳定 | 重新校准或更换特征 |\r\n\r\n**自检**：评分卡的优势是可解释，若出现“系数符号与业务常识相反且无法解释”，不得直接上线，须回到特征定义排查。\r\n\r\n## Module 5: LR评分卡调参\r\n\r\n# LR 评分卡参数调优 (portable)\r\n\r\nLR 评分卡调参的**唯一入口**，基于 `_vendor/tuning/lr_engine.LRTuningEngine`。\r\n\r\n核心设计：WoE 分箱参数与 LR 正则化参数**联合搜索**，确保最优组合。\r\n\r\n---\r\n\r\n## 调优流程\r\n\r\n```\r\n基线 LR 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索 → 最优参数 → 迭代\r\n```\r\n\r\n---\r\n\r\n## 执行模式\r\n\r\n| 模式 | 触发条件 | 行为 |\r\n|------|---------|------|\r\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下LR\" | 每轮暂停等待用户反馈 |\r\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径 |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名 |\r\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\r\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\r\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\r\n| `--oot_ratio` | | `0.20` | OOT 占比 |\r\n| `--val_ratio` | | `0.25` | Val 占比 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列 |\r\n| `--max_n_bins` | | `8` | 当前 WoE 分箱数 |\r\n| `--iv_threshold` | | `0.02` | 当前 IV 阈值 |\r\n| `--C` | | `1.0` | 当前正则化强度倒数 |\r\n| `--regularization` | | `l2` | 正则化类型 |\r\n| `--round` / `-r` | | `0` | 当前轮次 |\r\n| `--max_rounds` | | `5` | 最大调优轮数 |\r\n| `--auto` | | - | 自动调优模式（flag） |\r\n| `--metric` | | `auc` | 评估指标 |\r\n| `--model_name` | | 自动生成 | 模型名称 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置路径 |\r\n\r\n---\r\n\r\n## 搜索空间\r\n\r\n| 参数 | 类型 | 范围 | 说明 |\r\n|------|------|------|------|\r\n| max_n_bins | int | 3-15 | WoE 分箱数（越大越精细） |\r\n| iv_threshold | float(log) | 0.005-0.10 | IV 筛选阈值（越低入模特征越多） |\r\n| C | float(log) | 0.01-100 | 正则化强度倒数（越大正则化越弱） |\r\n| regularization | categorical | l1/l2/elasticnet | 正则化类型 |\r\n\r\n---\r\n\r\n## 诊断驱动策略\r\n\r\n| 诊断 | C | iv_threshold | max_n_bins |\r\n|------|---|--------------|------------|\r\n| 过拟合 | ↓ 收紧 | ↑ 抬高（减少特征） | ↓ 减少 |\r\n| 欠拟合 | ↑ 放松 | ↓ 降低（更多特征） | ↑ 增大 |\r\n| 拟合良好 | ±微调 | ±微调 | ±微调 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n### 交互式模式（单轮）\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --round 1 --output_dir ./outputs/lr_tuning\r\n```\r\n\r\n### AUTO 模式\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --auto --max_rounds 5 --output_dir ./outputs/lr_tuning\r\n```\r\n\r\n---\r\n\r\n## 调优策略\r\n\r\n### 策略1：抗过拟合\r\n\r\n**适用条件**：Train-OOT Gap > 0.05\r\n\r\n**调整方向**：\r\n- `C`: 当前值 × 0.5（收紧正则化）\r\n- `iv_threshold`: 当前值 × 1.5（减少入模特征）\r\n- `max_n_bins`: 当前值 - 1（降低分箱精细度）\r\n\r\n### 策略2：增强拟合\r\n\r\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\r\n\r\n**调整方向**：\r\n- `C`: 当前值 × 2（放松正则化）\r\n- `iv_threshold`: 当前值 × 0.5（增加入模特征）\r\n- `max_n_bins`: 当前值 + 2（提升分箱精细度）\r\n\r\n### 策略3：精细微调\r\n\r\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\r\n\r\n**调整方向**：\r\n- `C`: 小幅调整 ±20%\r\n- `max_n_bins`: 微调 ±1\r\n- 其他参数保持不变\r\n\r\n### 策略4：收敛判定\r\n\r\n**条件**：连续2轮 OOT 指标提升 < 0.001\r\n\r\n**行为**：停止调优，输出最终结果\r\n\r\n---\r\n\r\n## 输出格式规范\r\n\r\n每轮调优结束后，**必须**输出以下结构化信息：\r\n\r\n```markdown\r\n### 第 N 轮 LR 调优结果\r\n\r\n**参数变化**:\r\n| 参数 | 上一轮 | 本轮 | 调整原因 |\r\n|------|-------|------|----------|\r\n| C | 1.0 | 0.5 | 收紧正则化 |\r\n| iv_threshold | 0.02 | 0.03 | 减少入模特征 |\r\n| max_n_bins | 8 | 6 | 降低过拟合 |\r\n\r\n**效果对比**:\r\n| 指标 | 上一轮 | 本轮 | 变化 |\r\n|------|-------|------|------|\r\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\r\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\r\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\r\n\r\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\r\n\r\n**下一步建议**: 可继续微调 C 值，或接受当前结果\r\n```\r\n\r\n---\r\n\r\n## 与其他技能的关系\r\n\r\n| 技能 | 职责 | 关系 |\r\n|------|------|------|\r\n| `lr-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\r\n| `model-comparison` | 多算法对比 | 后续：可与 XGB/DNN 做公平对比 |\r\n| `xgb-tuning` | XGBoost 调参 | 平行：同数据不同算法的调参 |\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **数据要求**：目标变量必须为 0/1 二分类\r\n2. **联合搜索**：WoE 分箱与 LR 参数联合优化，确保最优组合\r\n3. **收敛判定**：连续2轮提升不足 0.001 自动停止\r\n4. **最大轮数**：默认最多 5 轮\r\n5. **产物位置**：模型和报告保存到 `<output_dir>/models/` 和 `<output_dir>/`\r\n\r\n\r\n---\r\n\r\n## Module 6: XGBoost建模\r\n\r\n# XGBoost 建模 (portable)\r\n\r\n基于 XGBoost 进行二分类建模，支持自动特征筛选、多方案对比、稳定性分析。可运行在任何 Python 环境，无平台耦合。调参请用 [`xgb-tuning`](./xgb-tuning/SKILL.md)。\r\n\r\n**核心流程**：数据加载 → 特征筛选（四大算子）→ 多方案对比 → 最优方案训练 → 三段式评估 → 稳定性分析 → 报告生成\r\n\r\n## 参数\r\n\r\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`modeling`）。\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\r\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\r\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\r\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\r\n| `--val_ratio` | | `0.25` | 未传 `--val_filter` 时从 train_full 切 val 的比例 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--features` | | - | 指定单套特征，逗号分隔 |\r\n| `--feature_sets` | | - | JSON 多方案；**复杂嵌套优先放到 `--config` 的 `feature_sets` 字段** |\r\n| `--feature_scheme` | | - | 指定单套自动筛选方案：`full`/`decorr`/`high_iv`/`stable`；不传或传空则走 `--auto_select` 全量对比 |\r\n| `--auto_select` | | `true` | 自动特征筛选（四大算子全量对比；指定 `--feature_scheme` 时忽略本参数） |\r\n| `--baseline_filter` | | 同 train | PSI 基准条件 |\r\n| `--comparison_filter` | | 同 oot | PSI 对比条件 |\r\n| `--sample_strategy` | | `auto_weight` | `auto_weight` / `undersample` / `none` |\r\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\r\n| `--report_output` | | `xgb_modeling_report` | 报告基名 |\r\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\r\n| `--config` | | - | JSON 配置文件路径（命令行 > config > 默认） |\r\n\r\n> **复杂嵌套参数（如 `feature_sets`）不要用命令行拼转义 JSON**，改走 `--config config.json` 结构化通道。\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./examples/toy.parquet \\\r\n  --target y_label \\\r\n  --time_col busi_dt \\\r\n  --output_dir ./outputs/run1\r\n```\r\n\r\n复杂 `feature_sets` 通过 `--config` 传入：\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./examples/toy.parquet \\\r\n  --target y_label \\\r\n  --config ./config.json \\\r\n  --output_dir ./outputs/run1\r\n```\r\n\r\n执行结束后 `<output_dir>/` 下生成：\r\n\r\n- `xgb_modeling_report.md` — 建模报告（数据概览、方案对比、最优方案、稳定性分析…）\r\n- `models/<model_name>.json` — XGBoost 模型文件\r\n- `models/<model_name>_meta.json` — 模型元数据（特征列表等）\r\n- `models/<model_name>_card.json` — ModelCard\r\n- `result.json` — 结构化产物清单（见 PROTOCOL.md）\r\n\r\nstdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可获取全部产物路径与 metrics。\r\n\r\n## 产物示例（result.json）\r\n\r\n```json\r\n{\r\n  \"skill\": \"xgb-modeling\",\r\n  \"status\": \"success\",\r\n  \"files\": [\r\n    {\"path\": \".../xgb_modeling_report.md\", \"role\": \"report\"},\r\n    {\"path\": \".../models/xgb_model_20260512_143000.json\", \"role\": \"model\",\r\n     \"meta\": {\"feature_count\": 8, \"scheme_name\": \"去共线性\", \"model_type\": \"xgboost\"}},\r\n    {\"path\": \".../models/xgb_model_20260512_143000_meta.json\", \"role\": \"meta\"}\r\n  ],\r\n  \"metrics\": {\r\n    \"oot_auc\": 0.7823, \"oot_ks\": 0.4215,\r\n    \"auc_gap\": 0.0214, \"ks_gap\": 0.0312,\r\n    \"n_features\": 8, \"overall_score_psi\": 0.0423\r\n  },\r\n  \"summary\": \"xgb-modeling 完成：最优方案「去共线性」，OOT AUC=0.7823，OOT KS=0.4215，特征数=8，Gap=0.0214\"\r\n}\r\n```\r\n\r\n## 跨 skill 串联\r\n\r\n下游（如 `model-explanation`）通过 `--model_path` 传入上游 result.json 中 `role=model` 的文件路径：\r\n\r\n```bash\r\n# 从上游 result.json 提取模型路径\r\nMODEL_PATH=$(jq -r '.files[] | select(.role==\"model\") | .path' ./outputs/run1/result.json)\r\n\r\npython ../model-explanation/scripts/explain.py --model_path \"$MODEL_PATH\" --data_path ./examples/toy.parquet\r\n```\r\n\r\n---\r\n\r\n## 常用场景\r\n\r\n### 场景一：自动特征筛选建模\r\n\r\n不指定特征，自动执行四大算子生成四套方案对比：\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./examples/toy.parquet --target y_label\r\n```\r\n\r\n### 场景二：指定特征建模\r\n\r\n使用指定的特征列表：\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./examples/toy.parquet --target y_label --features \"feat1,feat2,feat3\"\r\n```\r\n\r\n### 场景二-b：指定单套自动筛选方案\r\n\r\n只跑一种筛选方案（如\"去共线性\"）：\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./examples/toy.parquet --target y_label --feature_scheme decorr\r\n```\r\n\r\n可选值：`full`(全量入模) / `decorr`(去共线性) / `high_iv`(高预测力) / `stable`(稳定性优先)\r\n\r\n### 场景三：多方案对比\r\n\r\n传入多套特征方案（**优先用 `--config`**，避免命令行拼 JSON 转义）：\r\n\r\n```json\r\n{\r\n  \"feature_sets\": {\r\n    \"方案A\": [\"f1\", \"f2\"],\r\n    \"方案B\": [\"f1\", \"f3\"]\r\n  }\r\n}\r\n```\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./examples/toy.parquet --target y_label --config ./config.json\r\n```\r\n\r\n### 场景四：保存模型\r\n\r\n训练完成后保存最优模型，供后续 model-explanation 使用：\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./examples/toy.parquet --target y_label --model_name my_best_model\r\n```\r\n\r\n模型自动保存，输出：\r\n- 模型文件：`<output_dir>/models/my_best_model.json`\r\n- 元数据文件：`<output_dir>/models/my_best_model_meta.json`（含特征列表、参数等）\r\n\r\n---\r\n\r\n## 报告结构\r\n\r\n| 章节 | 内容 |\r\n|------|------|\r\n| 执行摘要 | 4 行业务结论：最优方案、Gap 状态、PSI 状态、头部特征风险 |\r\n| 1. 数据概览 | 样本量、正样本率（Train/Test/OOT） |\r\n| 2. 特征方案对比 | 各方案 AUC/KS/Gap 横向对比 |\r\n| 3. 最优方案详情 | AUC/KS/Gini 指标、模型分数 IV 最优分箱、Lift 表、特征重要性、BCR @ Top5/10/20/30%、Brier Score + 校准曲线 |\r\n| 4. 稳定性分析 | 按月 AUC/KS（含 95% Bootstrap 置信区间）、Mann-Kendall 趋势检验、分数 PSI |\r\n| 5. 最终模型总结 | 特征列表、综合表现 |\r\n\r\n---\r\n\r\n## 与其他建模 Skill 的对比\r\n\r\n| 维度 | xgb-modeling | lr-modeling | dnn-modeling |\r\n|------|-------------|-------------|--------------|\r\n| 算法 | XGBoost | Logistic Regression + WoE | MLP (PyTorch) |\r\n| 特征处理 | 原始值直接输入 | WoE 分箱编码 | StandardScaler |\r\n| 非线性能力 | 强（树结构） | 弱（仅通过分箱引入） | 强（多层激活） |\r\n| 可解释性 | 中（需 SHAP） | 强（系数 × WoE） | 弱 |\r\n| 训练速度 | 快 | 很快 | 慢 |\r\n| 适用数据量 | 任意 | 任意 | >10k |\r\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\r\n\r\n---\r\n\r\n## 上下游关系\r\n\r\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\r\n- **后续**：`xgb-tuning`（调参优化）、`model-explanation`（SHAP 解释）\r\n- **平行**：与 `lr-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\r\n\r\n---\r\n\r\n## 依赖\r\n\r\n见 `requirements.txt`（核心：`xgboost`, `scikit-learn`, `optbinning`）。\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **目标变量**：必须为 0/1 二分类\r\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\r\n3. **自动特征筛选**：需要数据同时满足 IV、PSI、缺失率条件\r\n4. **样本策略**：强不均衡场景（正样本率 < 2%）建议 `--sample_strategy undersample`，一般场景用默认 `auto_weight`\r\n5. **不提供调参**：需要调参请切 xgb-tuning（基于 Optuna TPE + 诊断驱动的约束搜索）\r\n6. **模型保存**：每次训练自动保存最优模型至 `<output_dir>/models/`，无需传 `--save_model`；可用 `--model_name` 自定义文件名\r\n7. **稳定性分析**：基准月份取自训练集时间段；Bootstrap CI 需样本量 >= 100 才计算\r\n8. **BCR/校准曲线**：BCR（Bad Capture Rate）反映拒绝 Top K% 人群能捕获多少坏客户；校准曲线反映模型概率输出可信度\r\n\r\n\r\n---\r\n\r\n\r\n## 输出示例与自检（2026-09-21 新增）\r\n\r\n**树模型常见过拟合信号**\r\n\r\n| 信号 | 表现 | 处理 |\r\n|------|------|------|\r\n| 训练与验证差距大 | 训练AUC接近1、验证明显低 | 降低复杂度、加正则、早停 |\r\n| 早停轮次过早 | 验证曲线尚未收敛 | 调整早停耐心值 |\r\n| 特征重要度集中 | 少数特征主导 | 检查是否有泄漏特征 |\r\n| OOT明显下滑 | 跨时间不稳定 | 按时间切分重训 |\r\n\r\n**自检**：树模型必须报告 OOT 表现而非仅验证集表现；上线前须完成特征重要度与单样本解释，说明模型为何给出该判断。\r\n\r\n## Module 7: XGBoost调参\r\n\r\n# XGBoost 参数调优 (portable)\r\n\r\nXGBoost 调参的**唯一入口**，基于 `_vendor/tuning_engine.TuningEngine`。核心设计：\r\n\r\n1. **基线参数智能推断** — 根据数据特征推荐合理起点\r\n2. **模型状态诊断** — 过拟合/欠拟合判定（`diagnose_model`）\r\n3. **约束式贝叶斯搜索** — 诊断结论定向收缩 Optuna 搜索空间\r\n4. **用户知识融合** — 接受用户领域经验调整策略\r\n\r\n---\r\n\r\n## 调优流程\r\n\r\n```\r\n用户需求 → 数据特征分析 → LLM 推断基线参数 → 训练评估 → 诊断分析 → 参数调整 → 迭代直到满意\r\n                                         ↑                                        ↓\r\n                                         └───────────── 用户反馈/知识输入 ─────────────┘\r\n```\r\n\r\n---\r\n\r\n## 执行模式\r\n\r\n| 模式 | 触发条件 | 行为 |\r\n|------|---------|------|\r\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下\"/\"优化一下\" | 每轮暂停等待用户反馈 |\r\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\"/\"一直调到收敛\" | Agent 自动迭代直到收敛，每轮输出进度 |\r\n\r\n**默认模式**: 交互式（更安全，用户可控）\r\n\r\n### 交互式模式行为规范\r\n\r\n1. **单轮调优后必须暂停**，输出结构化诊断报告，等待用户反馈\r\n2. 用户可能的反馈：\r\n   - \"继续\" / \"再调一轮\" → 执行下一轮\r\n   - \"Gap 还是大\" / \"再保守点\" → 调整策略后执行\r\n   - \"可以了\" / \"停\" → 生成最终报告\r\n3. **禁止**在交互式模式下连续执行多轮调优\r\n\r\n### AUTO 模式行为规范\r\n\r\n1. 每轮调优后同样输出完整的结构化诊断报告（格式同交互式模式），然后自动进入下一轮\r\n2. 收敛条件：Gap < 0.03 或 连续2轮提升 < 0.002\r\n3. 收敛后自动生成最终报告\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`tuning`）。\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--features` / `-f` | ✅ | - | 特征列表，逗号分隔 |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\r\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件（已全面替代旧 `--test_filter`） |\r\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\r\n| `--oot_ratio` / `--val_ratio` | | `0.20` / `0.25` | 自动切分比例 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--params` / `-p` | | 默认参数 | 当前参数（JSON；**推荐放 `--config` 的 `params` 字段**） |\r\n| `--baseline` / `-b` | | - | 基线参数（JSON；**推荐放 `--config` 的 `baseline` 字段**） |\r\n| `--round` / `-r` | | `0` | 当前轮次 |\r\n| `--prev_val_metric` | | - | 上一轮 val 指标（用于收敛判断） |\r\n| `--max_rounds` | | `5` | 最大调优轮数 |\r\n| `--auto` | | - | 启用自动调优模式（flag） |\r\n| `--metric` | | `ks` | 评估指标（`auc`/`ks`） |\r\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\r\n| `--report_output` / `-o` | | 自动生成 | 报告输出路径 |\r\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\r\n| `--warm_start` | | - | WarmStartBundle JSON 字符串或文件路径 |\r\n| `--config` | | - | JSON 配置文件路径（由 `--config` 自动注入，一般无需手传） |\r\n\r\n> **`--params` / `--baseline` 传复杂 JSON 时优先放 `--config`**，避免命令行双引号转义问题。\r\n\r\n---\r\n\r\n## 基线参数智能推断\r\n\r\nAgent 应根据 tuner.py 输出的**数据摘要**推断合理的基线参数，而非使用固定默认值。\r\n\r\n### 数据摘要字段\r\n\r\ntuner.py 会输出以下数据特征供 Agent 分析：\r\n\r\n| 字段 | 说明 | 影响参数 |\r\n|------|------|----------|\r\n| `train_samples` | 训练集样本量 | max_depth, n_estimators |\r\n| `oot_samples` | OOT 样本量 | subsample |\r\n| `n_features` | 特征数量 | colsample_bytree |\r\n| `pos_rate` | 正样本率 | min_child_weight, scale_pos_weight |\r\n\r\n### 推断规则\r\n\r\n#### 样本量与树深度\r\n\r\n| 训练集样本量 | max_depth 建议 | 理由 |\r\n|----------------|------------------|------|\r\n| < 5万 | 3 | 样本少，低复杂度防过拟合 |\r\n| 5万 - 20万 | 4 | 中等样本，适中复杂度 |\r\n| 20万 - 100万 | 5 | 样本充足，可稍复杂 |\r\n| > 100万 | 5-6 | 大样本支撑更高复杂度 |\r\n\r\n#### 正样本率与叶节点\r\n\r\n| 正样本率 | min_child_weight 建议 | 理由 |\r\n|----------|--------------------------|------|\r\n| < 1% | 300+ | 正样本极少，需更大叶节点防止噎声 |\r\n| 1% - 5% | 100-200 | 不平衡，适当约束 |\r\n| 5% - 20% | 50-100 | 较平衡，标准约束 |\r\n| > 20% | 20-50 | 平衡数据，可稍宽松 |\r\n\r\n#### 特征数与采样率\r\n\r\n| 特征数 | colsample_bytree 建议 | 理由 |\r\n|----------|---------------------------|------|\r\n| < 20 | 0.9-1.0 | 特征少，充分利用 |\r\n| 20 - 50 | 0.7-0.9 | 中等特征，适度采样 |\r\n| > 50 | 0.5-0.7 | 特征多，增加随机性 |\r\n\r\n### 推断示例\r\n\r\n```\r\n数据摘要:\r\n  训练集: 150,000 样本\r\n  OOT: 50,000 样本\r\n  特征数: 35 个\r\n  正样本率: 2.5%\r\n\r\nAgent 推断基线参数:\r\n  max_depth: 4        <- 样本量中等\r\n  min_child_weight: 150  <- 正样本率低\r\n  colsample_bytree: 0.8  <- 特征数中等\r\n  reg_alpha: 0.3      <- 特征多，适当正则\r\n  reg_lambda: 1.0\r\n  learning_rate: 0.05\r\n  n_estimators: 500\r\n  subsample: 0.8\r\n```\r\n\r\n---\r\n\r\n## 场景化策略\r\n\r\nAgent 应根据用户提供的**场景信息**调整调参策略。\r\n\r\n### 金融风控场景\r\n\r\n**特点**: 模型长期使用，稳定性优先\r\n\r\n| 参数 | 建议值 | 理由 |\r\n|------|--------|------|\r\n| max_depth | 3-4 | 低复杂度，抗过拟合 |\r\n| min_child_weight | 150+ | 叶节点要稳定 |\r\n| reg_alpha | 0.3-0.5 | 强正则化 |\r\n| reg_lambda | 1.0-2.0 | 强正则化 |\r\n\r\n**调参优先级**: Gap 控制 > KS 提升\r\n\r\n**终止条件**: Gap < 0.02，即使 KS 略低也接受\r\n\r\n### 营销响应场景\r\n\r\n**特点**: 短期使用，效果优先\r\n\r\n| 参数 | 建议值 | 理由 |\r\n|------|--------|------|\r\n| max_depth | 4-5 | 允许较高复杂度 |\r\n| min_child_weight | 50-100 | 可以稍宽松 |\r\n| reg_alpha | 0.1-0.2 | 适中正则 |\r\n\r\n**调参优先级**: KS 提升 > Gap 控制\r\n\r\n**终止条件**: KS 达标，Gap < 0.05 可接受\r\n\r\n### 平衡场景（默认）\r\n\r\n**特点**: 兼顾效果和稳定性\r\n\r\n| 参数 | 建议值 |\r\n|------|--------|\r\n| max_depth | 4-5 |\r\n| min_child_weight | 100 |\r\n| reg_alpha | 0.1-0.3 |\r\n| reg_lambda | 0.5-1.0 |\r\n\r\n**终止条件**: KS >= 0.30 且 Gap < 0.03\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n复杂参数（`params`/`baseline`）建议通过 `--config` JSON 文件传入：\r\n\r\n```bash\r\n# 自动调优（推荐：通过 config.json 传复杂参数）\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label --features \"f1,f2,f3\" \\\r\n  --auto --max_rounds 5 --output_dir ./outputs/tuning \\\r\n  --config ./config.json\r\n```\r\n\r\n`config.json` 示例：\r\n\r\n```json\r\n{\r\n  \"params\": {\"max_depth\": 4, \"learning_rate\": 0.05, \"n_estimators\": 500},\r\n  \"baseline\": {\"max_depth\": 4, \"learning_rate\": 0.1}\r\n}\r\n```\r\n\r\n### 交互式模式（单轮调优）\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label --features \"f1,f2,f3\" \\\r\n  --round 1 --output_dir ./outputs/tuning\r\n```\r\n\r\n### AUTO 模式（自动调优循环）\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label --features \"f1,f2,f3\" \\\r\n  --auto --max_rounds 5 --metric auc \\\r\n  --output_dir ./outputs/tuning\r\n```\r\n\r\n脚本通过单出口协议 `[RESULT:{json}]` 输出模型、报告、state 更新；**LLM 不要复述脚本已产出的图表**。\r\n\r\n---\r\n\r\n## 诊断知识库\r\n\r\n### 模型状态诊断\r\n\r\n| 诊断结果 | 判定条件 | 说明 |\r\n|----------|----------|------|\r\n| **过拟合** | Train-OOT Gap > 0.05 | 训练集表现远超测试集，模型记忆训练数据 |\r\n| **轻微过拟合** | Gap ∈ [0.04, 0.05] | 存在一定过拟合风险，需关注 |\r\n| **拟合良好** | Gap ∈ [0.02, 0.04] | 模型泛化能力正常 |\r\n| **欠拟合** | OOT AUC < 0.55 且 Gap < 0.02 | 模型拟合能力不足 |\r\n| **收敛** | 连续2轮提升 < 0.001 | 优化空间有限，可停止 |\r\n\r\n### 过拟合信号\r\n\r\n- Train AUC 持续上升，OOT AUC 下降或停滞\r\n- Train-OOT Gap 逐轮增大\r\n- 验证集效果不稳定\r\n\r\n### 欠拟合信号\r\n\r\n- Train AUC 和 OOT AUC 都较低\r\n- 增加训练轮数后效果持续提升\r\n- Gap 很小但整体 AUC 不足\r\n\r\n---\r\n\r\n## XGBoost 参数语义\r\n\r\n| 参数 | 作用 | 取值范围 | 过拟合时 | 欠拟合时 |\r\n|------|------|----------|----------|----------|\r\n| `max_depth` | 树深度，控制模型复杂度 | 2-8 | ↓ 减小 | ↑ 增大 |\r\n| `min_child_weight` | 叶节点最小样本权重 | 10-300 | ↑ 增大 | ↓ 减小 |\r\n| `reg_alpha` | L1 正则化强度 | 0-2.0 | ↑ 增大 | ↓ 减小 |\r\n| `reg_lambda` | L2 正则化强度 | 0.1-10 | ↑ 增大 | ↓ 减小 |\r\n| `subsample` | 样本采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\r\n| `colsample_bytree` | 特征采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\r\n| `learning_rate` | 学习率 | 0.005-0.15 | ↓ 减小 | ↑ 增大 |\r\n| `n_estimators` | 树数量 | 100-1000 | ↓ 减小 | ↑ 增大 |\r\n\r\n### 参数调整优先级\r\n\r\n**过拟合场景**（按优先级）：\r\n1. 增大 `reg_alpha` / `reg_lambda`（最直接）\r\n2. 减小 `max_depth`（控制复杂度）\r\n3. 增大 `min_child_weight`（限制分裂）\r\n4. 减小 `subsample` / `colsample_bytree`（增加随机性）\r\n\r\n**欠拟合场景**（按优先级）：\r\n1. 增大 `max_depth`（增加复杂度）\r\n2. 增加 `n_estimators`（更多迭代）\r\n3. 减小正则化参数\r\n4. 适当增大 `learning_rate`\r\n\r\n---\r\n\r\n## 用户指令理解\r\n\r\n| 用户表达 | 参数映射 | 调整幅度 |\r\n|----------|----------|----------|\r\n| \"正则化大一点\" | `reg_alpha` ↑ 或 `reg_lambda` ↑ | +50%~100% |\r\n| \"正则化小一点\" | `reg_alpha` ↓ 或 `reg_lambda` ↓ | -30%~50% |\r\n| \"树深度深一点\" | `max_depth` ↑ | +1 |\r\n| \"树深度浅一点\" | `max_depth` ↓ | -1 |\r\n| \"学习率低一些\" | `learning_rate` ↓ | -30%~50% |\r\n| \"学习率高一些\" | `learning_rate` ↑ | +30%~50% |\r\n| \"多训几轮\" | `n_estimators` ↑ | +50%~100% |\r\n| \"少训几轮\" | `n_estimators` ↓ | -30%~50% |\r\n| \"防过拟合\" | 综合：正则化↑, 深度↓, subsample↓ | 组合调整 |\r\n| \"拟合强一点\" | 综合：深度↑, 正则化↓ | 组合调整 |\r\n| \"更激进一点\" | `learning_rate` ↑, `max_depth` ↑ | 较大幅度 |\r\n| \"更保守一点\" | `learning_rate` ↓, 正则化↑ | 较小幅度 |\r\n| \"继续自动调优\" | 从当前参数启动新一轮 AUTO | - |\r\n| \"就用这个\" / \"确认\" | 结束调优，输出最终配置 | - |\r\n\r\n---\r\n\r\n## 调优策略\r\n\r\n### 策略1：抗过拟合\r\n\r\n**适用条件**：Gap > 0.05\r\n\r\n**调整方向**：\r\n- `reg_alpha`: 当前值 × 2（如 0.1 → 0.2）\r\n- `reg_lambda`: 当前值 × 1.5\r\n- `max_depth`: 当前值 - 1（最小为 2）\r\n- `min_child_weight`: 当前值 × 1.5\r\n\r\n### 策略2：增强拟合\r\n\r\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\r\n\r\n**调整方向**：\r\n- `max_depth`: 当前值 + 1（最大为 8）\r\n- `n_estimators`: 当前值 × 1.5\r\n- `reg_alpha`: 当前值 × 0.5\r\n- `learning_rate`: 当前值 × 1.2\r\n\r\n### 策略3：精细微调\r\n\r\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\r\n\r\n**调整方向**：\r\n- `learning_rate`: 小幅调整 ±20%\r\n- `subsample`: 小幅调整 ±10%\r\n- 其他参数保持不变\r\n\r\n### 策略4：收敛判定\r\n\r\n**条件**：连续2轮 OOT 指标提升 < 0.001\r\n\r\n**行为**：停止调优，输出最终结果\r\n\r\n### 策略 5：约束空间下的定向搜索\r\n\r\ntuner.py 在 AUTO 模式下每轮调用 `TuningEngine.run_round(diagnosis, tried_directions)` 在诊断约束空间内跑 5 个 Optuna trial，直接取本轮最优参数进入下轮。`tried_directions` 会自动记录每轮参数增减方向及效果，若某个方向未改善，下一轮会自动冻结该维度。Agent **无需手动追踪**，但在每轮报告中应说明\"本轮诊断为 XX → 搜索空间重点是 XX\"，帮助用户理解调优推演。\r\n\r\n---\r\n\r\n## 输出格式规范\r\n\r\n> **核心原则：每轮必须完整输出**\r\n> 禁止只输出最终调参报告。每一轮调参完成后，不论交互式还是 AUTO 模式，**必须**立即输出该轮的完整诊断分析过程和结果，包括：参数变化及调整理由、训练指标详情、与上一轮的对比、诊断结论、下一步建议。用户需要看到每一轮的诊断推理过程，而非仅看到最终参数。\r\n\r\n### 单轮调优输出（每轮必须使用，交互式和 AUTO 模式均适用）\r\n\r\n每轮调优结束后，**必须**输出以下结构化信息：\r\n\r\n```markdown\r\n### 第 N 轮调优结果\r\n\r\n**参数变化**:\r\n| 参数 | 上一轮 | 本轮 | 调整原因 |\r\n|------|-------|------|----------|\r\n| max_depth | 4 | 3 | 降低过拟合 |\r\n| reg_alpha | 0.1 | 0.3 | 增强正则化 |\r\n\r\n**效果对比**:\r\n| 指标 | 上一轮 | 本轮 | 变化 |\r\n|------|-------|------|------|\r\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\r\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\r\n| Gap (KS) | 0.06 | 0.04 | -0.02 ✓ |\r\n\r\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\r\n\r\n**下一步建议**: 可继续微调正则化，或接受当前结果\r\n```\r\n\r\n### 最终报告（调优结束时生成，不能替代逐轮输出）\r\n\r\n当用户确认结束或 AUTO 模式收敛时，在逐轮输出完毕后，额外生成完整汇总报告：\r\n\r\n> **注意**：最终报告是对逐轮输出的汇总补充，不能替代逐轮输出。即使是 AUTO 模式，也必须先逐轮输出再汇总。\r\n\r\n```markdown\r\n# XGBoost 调参报告\r\n\r\n## 1. 调优概览\r\n\r\n| 项目 | 内容 |\r\n|------|------|\r\n| 执行模式 | 交互式 / AUTO |\r\n| 总轮数 | 3 |\r\n| 收敛原因 | Gap < 0.03 达标 / 用户确认停止 |\r\n\r\n## 2. 调参推演记录\r\n\r\n| 轮次 | 参数 (depth/eta/reg) | OOT KS | OOT AUC | Gap (KS) | 诊断 | 调整决策 |\r\n|------|---------------------|--------|---------|----------|------|----------|\r\n| 基线 | 4 / 0.1 / 0.1 | 0.16 | 0.71 | 0.08 | 过拟合 | 降低 depth |\r\n| R1 | 3 / 0.1 / 0.2 | 0.17 | 0.72 | 0.05 | 轻微过拟合 | 增强正则化 |\r\n| R2 | 3 / 0.08 / 0.5 | 0.18 | 0.73 | 0.03 | 良好 | 收敛停止 |\r\n\r\n## 3. 最终效果\r\n\r\n| 指标 | 基线 | 最终 | 提升 |\r\n|------|------|------|------|\r\n| OOT KS | 0.16 | 0.18 | +0.02 |\r\n| OOT AUC | 0.71 | 0.73 | +0.02 |\r\n| Gap (KS) | 0.08 | 0.03 | -0.05 |\r\n\r\n## 4. 最终参数\r\n\r\n```json\r\n{\r\n  \"max_depth\": 3,\r\n  \"learning_rate\": 0.08,\r\n  \"reg_alpha\": 0.5,\r\n  \"reg_lambda\": 1.0,\r\n  \"min_child_weight\": 100,\r\n  \"subsample\": 0.8,\r\n  \"colsample_bytree\": 0.8,\r\n  \"n_estimators\": 500\r\n}\r\n```\r\n\r\n## 5. 调参结论\r\n\r\n相比基线模型，最终模型：\r\n- OOT KS 提升 0.02（0.16 → 0.18）\r\n- OOT AUC 提升 0.02（0.71 → 0.73）\r\n- Gap (KS) 降低 0.05（0.08 → 0.03）\r\n- 稳定性显著改善，可安全部署\r\n\r\n如需进一步探索，请给出您的调优建议。\r\n```\r\n\r\n---\r\n\r\n## 与其他技能的关系\r\n\r\n| 技能 | 职责 | 关系 |\r\n|------|------|------|\r\n| `xgb-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\r\n| `model-explanation` | SHAP 解释 | 后续：调参完成后解释最优模型 |\r\n| `model-comparison` | 多算法对比 | 平行：可与 LR/DNN 调参后做公平对比 |\r\n| `auto-experiment` | 特征探索 | 区别：本 Skill 调参数，auto-experiment 探索特征 |\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **数据要求**：目标变量必须为 0/1 二分类\r\n2. **特征要求**：需提供已筛选的特征列表（`--features` 必填）\r\n3. **基线参数**：可传入自定义基线参数，否则使用默认值\r\n4. **收敛判定**：连续2轮提升不足 0.001 自动停止\r\n5. **最大轮数**：默认最多 5 轮，避免过度调优\r\n6. **复杂 JSON**：`--params` / `--baseline` 等复杂 JSON 优先通过 `--config config.json` 传入\r\n7. **产物位置**：模型和报告保存到 `<output_dir>/models/` 和 `<output_dir>/`\r\n\r\n\r\n---\r\n\r\n## Module 8: DNN深度学习建模\r\n\r\n# DNN 深度学习建模 (portable)\r\n\r\n基于 PyTorch 实现 MLP (Multi-Layer Perceptron) 进行二分类建模。\r\n\r\n**核心流程**：特征标准化 → MLP 训练（BatchNorm + Dropout + Early Stopping） → 概率预测 → 三段式评估\r\n\r\n**适用场景**：\r\n- 高维特征交互建模\r\n- 特征间存在复杂非线性关系\r\n- 数据量充足（>10k 样本）\r\n- 对模型性能有极致追求（可与 XGBoost 做 ensemble）\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\r\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\r\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\r\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动推断 |\r\n| `--hidden_dims` | | `128,64,32` | 隐藏层维度，逗号分隔 |\r\n| `--dropout` | | `0.3` | Dropout 比率 |\r\n| `--learning_rate` | | `0.001` | 学习率 |\r\n| `--batch_size` | | `512` | 批次大小 |\r\n| `--epochs` | | `100` | 最大训练轮次 |\r\n| `--patience` | | `10` | 早停耐心轮数 |\r\n| `--weight_decay` | | `1e-4` | 权重衰减（L2 正则化） |\r\n| `--pos_weight` | | `auto` | 正样本权重（auto=自动计算） |\r\n| `--model_name` | | 自动生成 | 模型名称 |\r\n| `--report_output` | | 自动生成 | 报告输出路径 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置文件路径 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n默认参数运行：\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --time_col busi_dt \\\r\n  --exclude_cols \"cust_code,busi_dt\" \\\r\n  --output_dir ./outputs/dnn_run\r\n```\r\n\r\n自定义网络结构：\r\n\r\n```bash\r\npython scripts/modeling.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --hidden_dims \"256,128,64\" \\\r\n  --dropout 0.4 \\\r\n  --learning_rate 0.0005 \\\r\n  --epochs 200 \\\r\n  --output_dir ./outputs/dnn_run\r\n```\r\n\r\n---\r\n\r\n## 常用场景\r\n\r\n### 场景一：默认参数快速建模\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label --output_dir ./outputs/dnn_run\r\n```\r\n\r\n### 场景二：自定义网络结构\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label \\\r\n  --hidden_dims \"256,128,64\" --dropout 0.4 --learning_rate 0.0005 \\\r\n  --output_dir ./outputs/dnn_run\r\n```\r\n\r\n### 场景三：指定特征建模\r\n\r\n```bash\r\npython scripts/modeling.py --data_path ./data.parquet --target y_label \\\r\n  --features \"feat1,feat2,feat3\" --output_dir ./outputs/dnn_run\r\n```\r\n\r\n---\r\n\r\n## 输出产物\r\n\r\n1. **建模报告**（Markdown）— 含数据切分、网络结构、训练曲线、三段式评估指标、稳定性分析\r\n2. **模型文件**（.pt）— PyTorch state_dict + 模型配置\r\n3. **训练日志**（JSON）— 每 epoch 的 loss/AUC/KS 记录\r\n4. **result.json** — 结构化产物清单\r\n\r\n---\r\n\r\n## 与其他建模 Skill 的对比\r\n\r\n| 维度 | dnn-modeling | xgb-modeling | lr-modeling |\r\n|------|-------------|--------------|-------------|\r\n| 算法 | MLP (PyTorch) | XGBoost | LR + WoE |\r\n| 特征处理 | StandardScaler | 原始值 | WoE 分箱 |\r\n| 非线性能力 | 强（多层激活） | 强（树结构） | 弱 |\r\n| 可解释性 | 弱 | 中（SHAP） | 强（系数） |\r\n| 训练速度 | 慢 | 快 | 很快 |\r\n| 适用数据量 | >10k | 任意 | 任意 |\r\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\r\n\r\n---\r\n\r\n## 上下游关系\r\n\r\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\r\n- **后续**：`dnn-tuning`（调参优化）、`model-comparison`（多算法对比）\r\n- **平行**：与 `xgb-modeling` / `lr-modeling` 可做横向对比\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **数据要求**：目标变量必须为 0/1 二分类\r\n2. **数据量**：建议训练样本 > 10k，DNN 在小样本上易过拟合\r\n3. **缺失值**：脚本自动使用中位数填充 + 添加缺失指示列\r\n4. **标准化**：自动对数值特征做 StandardScaler 标准化\r\n5. **早停**：当 val loss 连续 `patience` 轮不下降时自动停止\r\n6. **不提供调参**：需要调参请切 `dnn-tuning`（搜索网络架构 + 训练参数）\r\n7. **GPU**：自动检测 CUDA，无 GPU 时回退到 CPU\r\n8. **模型保存**：模型文件保存到 `<output_dir>/models/`\r\n\r\n\r\n---\r\n\r\n## Module 9: DNN调参\r\n\r\n# DNN 深度学习参数调优 (portable)\r\n\r\nDNN 调参的**唯一入口**，基于 `_vendor/tuning/dnn_engine.DNNTuningEngine`。\r\n\r\n核心设计：搜索期间缩减 epochs（加速），诊断驱动动态约束搜索空间。\r\n\r\n---\r\n\r\n## 调优流程\r\n\r\n```\r\n基线 DNN 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索(30 epochs) → 最优参数 → 迭代\r\n```\r\n\r\n---\r\n\r\n## 执行模式\r\n\r\n| 模式 | 触发条件 | 行为 |\r\n|------|---------|------|\r\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下DNN\" | 每轮暂停等待用户反馈 |\r\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\r\n\r\n**默认模式**: 交互式（更安全，用户可控）\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\r\n| `--time_col` | | `busi_dt` | 时间列名 |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\r\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\r\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\r\n| `--oot_ratio` | | `0.20` | OOT 占比 |\r\n| `--val_ratio` | | `0.25` | Val 占比 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--n_layers` | | `3` | 隐藏层数 |\r\n| `--layer_width` | | `128` | 首层宽度 |\r\n| `--dropout` | | `0.3` | Dropout 率 |\r\n| `--learning_rate` | | `0.001` | 学习率 |\r\n| `--weight_decay` | | `1e-4` | L2 正则化 |\r\n| `--batch_size` | | `512` | 批次大小 |\r\n| `--epochs` | | `100` | 完整训练 epochs |\r\n| `--search_epochs` | | `30` | 搜索期间 epochs（加速） |\r\n| `--round` / `-r` | | `0` | 当前轮次 |\r\n| `--max_rounds` | | `5` | 最大调优轮数 |\r\n| `--auto` | | - | 自动调优模式（flag） |\r\n| `--metric` | | `auc` | 评估指标 |\r\n| `--model_name` | | 自动生成 | 模型名称 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n| `--config` | | - | JSON 配置路径 |\r\n\r\n---\r\n\r\n## 搜索空间\r\n\r\n| 参数 | 类型 | 范围 | 说明 |\r\n|------|------|------|------|\r\n| n_layers | int | 2-4 | 隐藏层数 |\r\n| layer_width | int | 32-256 | 首层宽度（递减结构） |\r\n| dropout | float | 0.1-0.5 | Dropout 比率 |\r\n| learning_rate | float(log) | 1e-4 ~ 0.01 | Adam 学习率 |\r\n| weight_decay | float(log) | 1e-5 ~ 1e-3 | L2 正则化 |\r\n| batch_size | categorical | 128/256/512/1024 | 批次大小 |\r\n\r\n---\r\n\r\n## 诊断驱动策略\r\n\r\n| 诊断 | dropout | weight_decay | n_layers | layer_width |\r\n|------|---------|-------------|----------|-------------|\r\n| 过拟合 | ↑ 抬高 | ↑ 增强 | ↓ 减少 | ↓ 缩小 |\r\n| 欠拟合 | ↓ 降低 | ↓ 减弱 | ↑ 增加 | ↑ 增大 |\r\n| 拟合良好 | ±微调 | ±微调 | ±微调 | ±微调 |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n### 交互式模式（单轮调优）\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --round 1 --output_dir ./outputs/dnn_tuning\r\n```\r\n\r\n### AUTO 模式（自动调优循环）\r\n\r\n```bash\r\npython scripts/tuner.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --auto --max_rounds 5 --output_dir ./outputs/dnn_tuning\r\n```\r\n\r\n---\r\n\r\n## 调优策略\r\n\r\n### 策略1：抗过拟合\r\n\r\n**适用条件**：Train-Val Gap > 0.05\r\n\r\n**调整方向**：\r\n- `dropout`: 当前值 + 0.1（上限 0.5）\r\n- `weight_decay`: 当前值 × 2\r\n- `n_layers`: 当前值 - 1（最小为 2）\r\n- `layer_width`: 当前值 - 32（最小为 32）\r\n\r\n### 策略2：增强拟合\r\n\r\n**适用条件**：Val AUC < 0.58 且 Gap < 0.03\r\n\r\n**调整方向**：\r\n- `n_layers`: 当前值 + 1（最大为 4）\r\n- `layer_width`: 当前值 + 32（最大为 256）\r\n- `weight_decay`: 当前值 × 0.5\r\n- `learning_rate`: 当前值 × 1.2\r\n\r\n### 策略3：精细微调\r\n\r\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\r\n\r\n**调整方向**：\r\n- `learning_rate`: 小幅调整 ±20%\r\n- `dropout`: 小幅调整 ±0.05\r\n- 其他参数保持不变\r\n\r\n### 策略4：收敛判定\r\n\r\n**条件**：连续2轮 Val 指标提升 < 0.001\r\n\r\n**行为**：停止调优，输出最终结果\r\n\r\n---\r\n\r\n## 输出格式规范\r\n\r\n与 xgb-tuning 保持一致的逐轮诊断报告格式。\r\n\r\n每轮调优结束后，**必须**输出以下结构化信息：\r\n\r\n```markdown\r\n### 第 N 轮 DNN 调优结果\r\n\r\n**参数变化**:\r\n| 参数 | 上一轮 | 本轮 | 调整原因 |\r\n|------|-------|------|----------|\r\n| n_layers | 3 | 3 | 不变 |\r\n| layer_width | 128 | 96 | 降低过拟合 |\r\n| dropout | 0.3 | 0.4 | 增强正则化 |\r\n\r\n**效果对比**:\r\n| 指标 | 上一轮 | 本轮 | 变化 |\r\n|------|-------|------|------|\r\n| Val AUC | 0.72 | 0.73 | +0.01 ✓ |\r\n| OOT AUC | 0.70 | 0.71 | +0.01 ✓ |\r\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\r\n\r\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\r\n\r\n**下一步建议**: 可继续微调 dropout，或接受当前结果\r\n```\r\n\r\n---\r\n\r\n## 与其他技能的关系\r\n\r\n| 技能 | 职责 | 关系 |\r\n|------|------|------|\r\n| `dnn-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\r\n| `model-comparison` | 多算法对比 | 后续：可与 XGB/LR 做公平对比 |\r\n| `xgb-tuning` | XGBoost 调参 | 平行：同数据不同算法的调参 |\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **数据要求**：目标变量必须为 0/1 二分类\r\n2. **搜索加速**：搜索期间使用 `search_epochs=30`，最终模型使用 `epochs=100`\r\n3. **收敛判定**：连续2轮提升不足 0.001 自动停止\r\n4. **最大轮数**：默认最多 5 轮\r\n5. **产物位置**：模型和报告保存到 `<output_dir>/models/` 和 `<output_dir>/`\r\n\r\n\r\n---\r\n\r\n## Module 10: 多模型效果对比\r\n\r\n# 多模型效果对比 (portable)\r\n\r\n基于**同一份数据切分**，横向运行多种算法，统一评估并生成**客观事实报告**。\r\n\r\n**设计原则（v3 重要变更）**：\r\n- **只陈述事实，不做主观推荐**：删除了旧版的\"五维加权综合评分\"与\"门禁淘汰\"。主观权重本质上将多个不可比指标压成一个数，丢失信息并引入拍脑袋假设；门禁阈值则不同业务差异巨大。\r\n- **Pareto 前沿（无主观权重）**：在 OOT AUC / OOT KS / BCR@10% / KS Gap / PSI 五个方向明确的目标上，识别未被任何算法严格优于的候选集。\r\n- **LLM 推理接手**：报告末尾提供「已知事实清单 + 开放问题」，交由对话中的 AI 结合业务背景推理取舍。\r\n- 同数据同切分 → 消除数据差异对对比结论的干扰\r\n- 多维指标原始陈述 → OOT AUC/KS/BCR/Brier + KS Gap + PSI + 特征数 + 可解释性\r\n- 统计显著性 → DeLong 检验回答\"差距是真的还是采样噪声\"\r\n\r\n---\r\n\r\n## 推荐工作流：先调参再对比\r\n\r\n\"哪个算法好\"这个问题只有在**三个算法都调优后**对比才公平。默认超参下对比只能作为初筛。推荐三步调用：\r\n\r\n```\r\n1. xgb-tuning  → 产出 xgb_tuning_best_*_meta.json\r\n2. lr-tuning   → 产出 lr_tuning_best_*_meta.json\r\n3. dnn-tuning  → 产出 dnn_tuning_best_*_meta.json\r\n4. model-comparison --use_tuned   → 自动扫描上述产物使用最优超参跑对比\r\n```\r\n\r\n---\r\n\r\n## 参数说明\r\n\r\n| 参数 | 必选 | 默认值 | 说明 |\r\n|------|:----:|--------|------|\r\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\r\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\r\n| `--time_col` | | `busi_dt` | 时间列（用于 OOT 切分与分月表现） |\r\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\r\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\r\n| `--oot_ratio` | | `0.20` | OOT 占比 |\r\n| `--val_ratio` | | `0.25` | Val 占比 |\r\n| `--random_seed` | | `42` | 随机种子 |\r\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\r\n| `--features` | | - | 指定特征，逗号分隔；不传则自动推断 |\r\n| `--algorithms` | | `xgb,lr,dnn` | 对比算法列表，逗号分隔 |\r\n| `--scenario` | | `general` | `general` / `scorecard` / `fraud` / `stability_first` |\r\n| `--use_tuned` | flag | 关 | 自动扫描 models 目录加载最新调参最优参数 |\r\n| `--tuned_params_file` | | - | 显式指定 `{\"xgb\":{},\"lr\":{},\"dnn\":{}}` JSON |\r\n| `--config` | | - | 手工覆盖各算法超参的 JSON（优先级高于 tuned） |\r\n| `--model_name` | | 自动生成 | 产物名称前缀 |\r\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\r\n\r\n---\r\n\r\n## 场景预设（`--scenario`）\r\n\r\n场景仅作为**业务上下文标签**，供 LLM 推理时使用；不再参与加权评分、不做门禁淘汰。\r\n\r\n| 场景 | 描述 |\r\n|------|------|\r\n| `general` | 通用；首次对比探索 |\r\n| `scorecard` | 评分卡 / 白盒合规；LR + WoE 天然占优 |\r\n| `fraud` | 反欺诈 / 高风险；关注 OOT KS / BCR |\r\n| `stability_first` | 存量运维；重点关注 PSI 与分月 KS |\r\n\r\n---\r\n\r\n## 执行方式\r\n\r\n默认三算法 + 通用场景：\r\n\r\n```bash\r\npython scripts/comparison.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --exclude_cols \"cust_code,busi_dt\" \\\r\n  --output_dir ./outputs/compare\r\n```\r\n\r\n评分卡场景（只跑 XGB + LR）：\r\n\r\n```bash\r\npython scripts/comparison.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --algorithms \"xgb,lr\" --scenario scorecard \\\r\n  --output_dir ./outputs/compare\r\n```\r\n\r\n使用历史调参最优参数：\r\n\r\n```bash\r\npython scripts/comparison.py \\\r\n  --data_path ./data.parquet --target y_label \\\r\n  --use_tuned --scenario fraud \\\r\n  --output_dir ./outputs/compare\r\n```\r\n\r\n---\r\n\r\n## 对比维度（原始指标，不做加权）\r\n\r\n| 维度 | 字段 | 说明 |\r\n|------|------|------|\r\n| **效果** | OOT AUC / KS / Gini / BCR@10% / Precision@10% / Recall@10% / Brier / LogLoss | 全量原始指标陈列 |\r\n| **泛化** | KS Gap = Train KS - OOT KS | 越小越好；>0.10 标记过拟合风险 |\r\n| **稳定** | PSI（OOT vs Train 分数分布）+ 分月 KS 波动 σ | 越小越稳；≥0.25 标记显著漂移 |\r\n| **可解释** | LR 强 / XGB 中 / DNN 弱 | 仅作文本标签，不参与计算 |\r\n| **简洁** | 入模特征数 | 仅作参考 |\r\n\r\n---\r\n\r\n## 统计显著性（DeLong 检验）\r\n\r\n两两算法 AUC 差异通过 **Fast-DeLong** 做渐近正态检验（O(N log N)，10w+ 样本也秒级完成）：\r\n\r\n- `p < 0.05` → 差距统计显著\r\n- `p ≥ 0.05` → 差距可能是采样波动\r\n\r\n---\r\n\r\n## 输出产物\r\n\r\n1. **对比报告**（Markdown，倒金字塔结构）：\r\n   - 执行摘要（客观指标速览 + Pareto 前沿标记，**无推荐列**）\r\n   - 多算法叠加曲线（ROC/KS/Lift）\r\n   - 数据概览\r\n   - 详细指标总表（train/val/oot × 8 指标）\r\n   - **Pareto 前沿候选集**（无主观权重）\r\n   - DeLong 显著性检验\r\n   - 稳定性（真实 PSI + 分月 KS）\r\n   - 样本级一致性（Top-K Jaccard / Spearman / 分歧数）\r\n   - 跨算法特征重叠（Jaccard + 共识特征）\r\n   - 每算法独立评估图\r\n   - **LLM 推理引导**：事实清单 + 开放问题，交由对话中的 AI 推理取舍\r\n   - 各算法适用场景背景知识\r\n\r\n2. **各模型文件**：XGB(.json) / LR(.joblib) / DNN(.pt，含 imputer+scaler 元数据)\r\n\r\n---\r\n\r\n## 与其他技能的关系\r\n\r\n| 技能 | 职责 | 关系 |\r\n|------|------|------|\r\n| `xgb-tuning` / `lr-tuning` / `dnn-tuning` | 调参优化 | 前置：公平对比前需先调参 |\r\n| `xgb-modeling` / `lr-modeling` / `dnn-modeling` | 基线建模 | 被复用训练对比模型 |\r\n| `model-explanation` | 模型解释 | 后续：对比完成后解释最优模型 |\r\n\r\n---\r\n\r\n## 注意事项\r\n\r\n1. **公平对比**：\"哪个算法好\"只有在三个算法都调优后对比才公平\r\n2. **同数据同切分**：本技能确保所有算法使用完全相同的数据切分\r\n3. **DeLong 检验**：p < 0.05 才认为差距统计显著\r\n4. **Pareto 前沿**：只识别未被任何算法严\n\nFile v2.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn74e704j3ygjcygnpf02rdvd185js13\",\n  \"slug\": \"financial-engineer-digital-employee\",\n  \"version\": \"2.0.4\",\n  \"publishedAt\": 1789969548007\n}\n\nFile v2.0.4:skill-card.md\n\n## Description:\n\nProvides a financial modeling reference workflow covering data profiling, univariate and feature analysis, LR scorecards, XGBoost and DNN modeling, tuning, interpretation, model comparison, segmentation, and DeepModel integration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gechengling](https://clawhub.ai/user/gechengling)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and financial modeling teams use this skill as an advisory reference for structuring machine learning workflows from dataset review through model comparison, interpretation, and review-ready reporting.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Financial modeling datasets and generated reports or model artifacts may contain sensitive financial data or PII.\n\nMitigation: Use only authorized, minimized datasets; redact or generalize sensitive fields before analysis; review artifacts before saving or sharing.\n\nRisk: Advisory modeling outputs could be mistaken for financial, legal, insurance, or automated decision advice.\n\nMitigation: Require qualified human review before applying outputs to real-world decisions or external communications.\n\nRisk: Illustrative commands and code snippets may be adapted and run in user environments.\n\nMitigation: Run adapted examples only in authorized environments and inspect commands, inputs, outputs, and model artifacts before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gechengling/skills/financial-engineer-digital-employee)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with illustrative shell commands, code and configuration snippets, report outlines, and JSON result examples.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Advisory-only outputs require human review; generated reports, model artifacts, feature lists, and charts may contain sensitive financial or personal data.]\n\n## Skill Version(s):\n\n2.0.4 (source: server release metadata and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.3: 3 files, 28159 bytes\n\nFiles: skill-card.md (2594b), SKILL.md (90105b), _meta.json (154b)\n\nFile v2.0.3:SKILL.md\n\n---\nname: \"Financial Engineer Digital Employee\"\nslug: financial-engineer-digital-employee\ndescription: \"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。\"\nversion: 2.1.0\ncapabilities:\n  - educational-reference\n  - advisory-only\n  - requires-human-review\n  - no-executable-code\n---\n\n# Financial Engineer Digital Employee / 金融工程专家数字员工\n\n> **⚠️ 安全与能力声明（Security & Capability Notice）**\n>\n> **方法论参考框架（Educational / analytical framework）**\n> - **本技能为工作流与方法论指引，不捆绑任何可执行代码、脚本或自动后台任务**；文中出现的命令/代码示例均已移除，相关操作由用户在符合其机构合规要求的自有授权环境中执行\n> - **本技能本身不代为发起网络请求、不自动调用任何 MCP/API 工具、不创建定时任务、不收集任何凭据或 API Key**；正文所述的取数、系统查询、文件读写、审计留痕、消息外呼等操作，均为对该岗位既有工作流的**描述性参考**，实际执行主体与责任均在用户及其所在机构\n> - **敏感数据与留痕合规**：本技能涉及读取用户提供的业务材料、生成文档/报告/影像，以及在正文中描述的审计日志、客户笔记、案例归档等留存动作，这些内容可能包含客户身份、健康、财务、信贷、理赔等敏感信息。所有留存动作须遵循用户所在机构的**数据留存期限、访问权限、加密与脱敏**等管控要求；本技能不预设强制留存周期，亦不向任何第三方传输数据\n> - 所有输出（含分析、建议、话术、报告草稿）均为**供具备相应资质的专业人员审核决策的参考**，不构成正式的投资/保险/信贷/法律意见；最终决策与责任由持牌专业人员承担\n> - 触发后应先与用户确认具体业务上下文，再进入对应模块，避免在非专业语境下误激活；本技能面向持牌金融机构的专业岗位人员（研究/投顾/信贷/核保/理赔/财富管理等），仅在明确的专业业务上下文中使用\n## Skill Overview / 技能概览\n\n金融工程专家数字员工，集成以下14项核心能力模块：\n\n1. **Module 1: 数据轮廓速览**\n2. **Module 2: 单变量分析**\n3. **Module 3: 特征深度分析**\n4. **Module 4: LR评分卡建模**\n5. **Module 5: LR评分卡调参**\n6. **Module 6: XGBoost建模**\n7. **Module 7: XGBoost调参**\n8. **Module 8: DNN深度学习建模**\n9. **Module 9: DNN调参**\n10. **Module 10: 多模型效果对比**\n11. **Module 11: 模型解释**\n12. **Module 12: 自主实验循环**\n13. **Module 13: 分群建模**\n14. **Module 14: DeepModel深度集成**\n\n---\n\n\n---\n\n## Module 1: 数据轮廓速览\n\n# 数据洞察报告 (portable)\n\n基于 `scripts/profiler.py` 主脚本，对数据集进行轮廓扫描，生成数据概况报告。\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--output` | | `data_profiling_report.md` | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--output_name` | | `data_profiling_report` | 报告基名（不含扩展名） |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n执行结束后：\n- 产物目录 `<output_dir>/` 下生成：\n  - `report.md` — 数据概况报告\n  - `result.json` — 结构化产物清单（见 PROTOCOL.md）\n- stdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可\n\n---\n\n## 产物示例\n\n```json\n{\n  \"skill\": \"data-profiling\",\n  \"status\": \"success\",\n  \"files\": [\n    {\"path\": \".../report.md\", \"role\": \"report\"}\n  ],\n  \"metrics\": {\"n_rows\": 10000, \"n_cols\": 28, \"n_missing_cols\": 5},\n  \"summary\": \"中等规模数据集（10,000行），28 个字段，数值型为主，发现 2 个高缺失字段\"\n}\n```\n\n---\n\n## 报告输出结构\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 文件名、格式、大小、行列数、字段类型分布饼图 |\n| 2. 字段详情清单 | 每个字段的类型、缺失率、唯一值数、示例值 |\n| 3. 数值特征分析 | 描述性统计（均值/标准差/分位数/偏度/峰度）+ histogram 分布图 |\n| 4. 类别特征分析 | 唯一值数、Top 值占比、集中度 + bar chart |\n| 5. 缺失值分析 | 缺失率排名表格 + 柱状图 |\n| 6. 数据质量 | 重复行、空列、常量列、高缺失列 |\n| 7. 样本预览 | 前 5 行数据展示 |\n\n---\n\n## 自适应展示\n\n当数值/类别特征数量超过 20 个时，统计表格和图表只展示前 20 个，避免报告过长。\n\n---\n\n## 与其他 Skill 的关系\n\n| Skill | 用途区别 |\n|-------|----------|\n| **data-profiling** | 快速了解数据轮廓，不做深度分析 |\n| feature-analysis | 深度特征分析（IV、PSI、相关性等），需要目标变量 |\n| xgb-modeling | 建模全流程，需要目标变量 |\n\n**建议流程**：\n1. 先用 `data-profiling` 了解数据基本情况\n2. 根据洞察结果，决定是否需要 `feature-analysis` 或 `xgb-modeling`\n\n---\n\n## 注意事项\n\n1. **无需目标变量**：本 Skill 不需要提供目标变量，纯数据描述\n2. **快速轻量**：执行速度快，适合大数据集的快速扫描\n3. **自动类型推断**：识别数值型、类别型、布尔型、时间型、文本型字段\n\n\n---\n\n## Module 2: 单变量分析\n\n# 单变量分析 (portable)\n\n基于 `scripts/analyzer.py` 主脚本，对指定特征进行单变量级别的分布分析或预测力评估。\n\n---\n\n## 功能定位\n\n| 模式 | 目标变量 | 核心功能 | 使用场景 |\n|------|:--------:|----------|----------|\n| 数据探索模式 | ❌ 无 | 分布分析、交叉分布 | 刚上传数据、初步了解特征分布 |\n| 特征筛选模式 | ✅ 有 | IV值、分箱表、筛选建议 | 建模前快速筛选特征 |\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--features` | ✅ | - | 待分析特征列名，逗号分隔，或 `\"all\"` |\n| `--target` | | - | 目标变量列名（可选，有则进入筛选模式） |\n| `--exclude_cols` | | - | 排除的列，逗号分隔 |\n| `--binning_method` | | `quantile` | 分箱方式：`quantile`(等频) / `distance`(等距) |\n| `--n_bins` | | `10` | 分箱数量 |\n| `--cross` | | - | 交叉分布的两个特征，逗号分隔 |\n| `--output` | | 自动生成 | 报告输出名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n### 数据探索模式（无目标变量）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 特征筛选模式（有目标变量）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 交叉分布分析\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：数据探索（无目标变量）\n\n查看单特征分布：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n指定等距分箱：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：交叉分布分析\n\n查看两个特征的联合分布：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：特征筛选（有目标变量）\n\n计算 IV 值，评估特征预测力：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 报告输出结构\n\n### 数据探索模式（无目标变量）\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、分析特征数 |\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\n| 3. 分布分析 | 各特征的分箱分布表（区间、样本数、占比）+ 柱状分布图 |\n| 4. 交叉分布 | 两特征联合分布表（可选） |\n| 5. 数据质量标记 | 缺失率过高、低基数等问题标记 |\n\n### 特征筛选模式（有目标变量）\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、正样本率、分析特征数 |\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\n| 3. IV值分析 | 各特征 IV 值排名及分箱明细表 |\n| 4. 数据质量标记 | 缺失率过高、低基数等问题标记 |\n| 5. 筛选建议 | 建议保留/剔除的特征清单 |\n\n---\n\n## 分箱说明\n\n### 等频分箱（quantile）\n\n按数据分位数划分，每箱样本量大致相等。适合分布不均匀的数据。\n\n### 等距分箱（distance）\n\n按数值区间等间隔划分。适合分布均匀的数据。\n\n### 特殊值处理\n\n- **缺失值**：单独一箱，标记为 `Missing`\n- **零值**：当零值占比 > 5% 时单独一箱\n- **负数**：当存在负数时单独处理\n\n---\n\n## 输出示例\n\n### 分布分析表\n\n```\n特征: age | 分箱方式: 等频 | 分箱数: 10\n\n| 区间          | 样本数  | 占比    | 累计占比 |\n|---------------|---------|---------|----------|\n| Missing       | 156     | 1.56%   | 1.56%    |\n| [18, 23)      | 984     | 9.84%   | 11.40%   |\n| [23, 28)      | 1,012   | 10.12%  | 21.52%   |\n| ...           | ...     | ...     | ...      |\n```\n\n### 交叉分布表\n\n```\nage × income 交叉分布\n\n|              | 低收入   | 中收入   | 高收入   | 合计    |\n|--------------|----------|----------|----------|---------|\n| [18, 25)     | 800      | 300      | 134      | 1,234   |\n| [25, 35)     | 500      | 1,200    | 756      | 2,456   |\n| [35, 45)     | 200      | 800      | 1,000    | 2,000   |\n| ...          | ...      | ...      | ...      | ...     |\n```\n\n### IV 分箱明细表（有目标变量）\n\n```\n特征: age | IV = 0.1523\n\n| 区间          | 样本数  | 正样本数 | 正样本率 | WoE     | IV      |\n|---------------|---------|----------|----------|---------|---------|\n| [18, 23)      | 984     | 156      | 15.85%   | 0.32    | 0.0234  |\n| [23, 28)      | 1,012   | 98       | 9.68%    | -0.15   | 0.0089  |\n| ...           | ...     | ...      | ...      | ...     | ...     |\n```\n\n---\n\n## 与 feature-analysis 的关系\n\n| 维度 | univariate-analysis | feature-analysis |\n|------|---------------------|------------------|\n| 定位 | 单特征快速分析 | 全量特征深度分析 |\n| 目标变量 | 可选 | 必须 |\n| 相关性分析 | ❌ | ✅ |\n| PSI稳定性 | ❌ | ✅ |\n| 方案推荐 | ❌ | ✅ 四套方案 |\n| 典型用法 | 建模前快速筛选 | 特征工程完整报告 |\n\n**推荐工作流**：`univariate-analysis`（快速筛选）→ `feature-analysis`（深度分析）\n\n---\n\n## 注意事项\n\n1. **特征数量**：建议单次分析不超过 50 个特征，大量特征请分批处理\n2. **分箱数量**：默认 10 箱，可根据数据量调整（数据量少时建议 5 箱）\n3. **交叉分布**：仅支持两个特征的交叉，建议选择离散或已分箱的特征\n4. **IV 计算**：需要目标变量为 0/1 二分类\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 3: 特征深度分析\n\n# 建模特征分析报告 (portable)\n\n基于 `scripts/analyzer.py` 主脚本，对数据集特征进行全面分析并生成 Markdown 报告。\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--baseline_filter` | | - | PSI 基准数据条件（pandas query） |\n| `--comparison_filter` | | - | PSI 对比数据条件（pandas query） |\n| `--top_n` | | `10` | 输出 IV 排名前 N 的特征分箱明细（默认 10） |\n| `--specified_features` | | - | 指定特征分箱明细，逗号分隔 |\n| `--output` | | `feature_analysis_report.md` | 报告输出名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：基础分析（不含 PSI）\n\n适用于无时间维度的数据集：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：完整分析（含 PSI）\n\n适用于有时间切分条件的数据集：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：单变量深度分析\n\n输出 IV Top N 或指定特征的完整分箱明细表：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 报告输出结构\n\n生成的 `feature_analysis_report.md` 包含以下章节：\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、特征数、正样本率 |\n| 2. 基础统计分析 | 各特征的均值、标准差、缺失率、偏度、峰度等 |\n| 3. IV值分析 | IV 排名 Top 20、IV 分布统计 |\n| 4. PSI稳定性分析 | PSI 排名、不稳定特征清单 |\n| 5. 相关性分析 | 高相关特征对、共线性处理建议 |\n| 6. 综合建议 | 推荐保留/移除特征 |\n| 7. 建模特征方案 | 四套特征筛选方案（全量/去共线性/高IV/稳定性优先） |\n| 8. 单变量深度分析 | 默认输出 Top 10 特征分箱明细，可通过 `--top_n` 调整 |\n\n---\n\n## 特征筛选方案说明\n\n报告自动生成四套建模特征方案：\n\n| 方案 | 筛选条件 | 适用场景 |\n|------|----------|----------|\n| 方案一：全量入模 | 基础合格池（IV>=0.02, PSI<0.25, 缺失率<50%） | XGBoost/LightGBM 等树模型 |\n| 方案二：去共线性标准 | 基础池 + 贪心去 \\|r\\|>=0.7 | 逻辑回归、评分卡 |\n| 方案三：高预测力精选 | IV>=0.1 + 去共线性 | 特征受限、可解释性要求高 |\n| 方案四：稳定性优先 | PSI<0.1 + 去共线性 | 线上部署、高稳定性要求 |\n\n---\n\n## 与其他 Skill 的关系\n\n| Skill | 用途区别 |\n|-------|----------|\n| **feature-analysis** | 全量特征深度分析+方案推荐，需要目标变量 |\n| data-profiling | 快速了解数据轮廓，不做深度分析 |\n| univariate-analysis | 少量特征快速分析，不含全量相关性和方案推荐 |\n\n**建议流程**：`data-profiling`（快速扫描）→ `feature-analysis`（深度分析+方案推荐）→ `xgb-modeling`（建模）\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为数值型\n2. **PSI 分析**：需同时提供 `baseline_filter` 和 `comparison_filter`，否则跳过\n3. **相关性**：仅对数值型特征有效，非数值列自动跳过\n4. **大数据集**：报告默认展示 IV Top 20，完整数据在文件中\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 4: LR评分卡建模\n\n# LR 评分卡建模 (portable)\n\n基于 WoE (Weight of Evidence) 编码 + Logistic Regression 进行二分类评分卡建模。\n\n**核心流程**：原始特征 → WoE 最优分箱编码 → LR 训练 → 评分卡转换\n\n**适用场景**：\n- 风控评分卡开发（标准 A/B/C 卡）\n- 需要强可解释性的业务场景\n- 监管合规要求模型白盒化\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动按 IV 筛选 |\n| `--max_n_bins` | | `8` | WoE 分箱最大箱数 |\n| `--min_bin_size` | | `0.05` | 最小分箱比例 |\n| `--iv_threshold` | | `0.02` | IV 筛选阈值（低于此值的特征排除） |\n| `--regularization` | | `l2` | 正则化类型：`l1` / `l2` / `elasticnet` |\n| `--C` | | `1.0` | 正则化强度（越小正则化越强） |\n| `--max_iter` | | `1000` | LR 最大迭代次数 |\n| `--base_score` | | `600` | 评分卡基础分 |\n| `--pdo` | | `50` | 评分卡 PDO（分数翻倍点） |\n| `--base_odds` | | `50.0` | 基础 Odds（好坏比） |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--report_output` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n指定特征建模：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：默认参数快速建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：指定特征建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：自定义评分卡参数\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出产物\n\n1. **建模报告**（Markdown）— 含数据切分、WoE分箱表、LR系数表、评分卡转换表、三段式评估指标、稳定性分析\n2. **模型文件**（joblib）— LR 模型 + WoE 编码器序列化\n3. **评分卡表**（JSON）— 可直接用于部署的分箱-分数映射\n4. **result.json** — 结构化产物清单\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | lr-modeling | xgb-modeling | dnn-modeling |\n|------|-------------|--------------|-------------|\n| 算法 | Logistic Regression | XGBoost | MLP (PyTorch) |\n| 特征编码 | WoE 分箱编码 | 原始特征直接输入 | StandardScaler |\n| 可解释性 | 白盒（系数 × WoE = 贡献） | 黑盒（需 SHAP 解释） | 弱 |\n| 非线性能力 | 弱（仅通过分箱引入） | 强（树结构天然支持） | 强（多层激活） |\n| 适用场景 | 评分卡 / 合规 / 白盒 | 高精度 / 特征交互 | 高维复杂交互 |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis` / `univariate-analysis`（特征筛选）\n- **后续**：`lr-tuning`（调参优化）、`model-comparison`（多算法对比）\n- **平行**：与 `xgb-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为 0/1 二分类\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\n3. **特征筛选**：不传 `--features` 时自动按 IV 筛选（阈值 `--iv_threshold`）\n4. **WoE 分箱**：使用 `optbinning` 做最优分箱，每特征最多 `--max_n_bins` 箱\n5. **评分卡公式**：`Score = base_score - factor × ln(odds)`，其中 `factor = pdo / ln(2)`\n6. **不提供调参**：需要调参请切 `lr-tuning`（搜索 WoE 分箱 + LR 正则化参数）\n7. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n\n\n---\n\n## Module 5: LR评分卡调参\n\n# LR 评分卡参数调优 (portable)\n\nLR 评分卡调参的**唯一入口**，基于 `_vendor/tuning/lr_engine.LRTuningEngine`。\n\n核心设计：WoE 分箱参数与 LR 正则化参数**联合搜索**，确保最优组合。\n\n---\n\n## 调优流程\n\n```\n基线 LR 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索 → 最优参数 → 迭代\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下LR\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径 |\n| `--target` / `-t` | ✅ | - | 目标变量列名 |\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\n| `--oot_ratio` | | `0.20` | OOT 占比 |\n| `--val_ratio` | | `0.25` | Val 占比 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列 |\n| `--max_n_bins` | | `8` | 当前 WoE 分箱数 |\n| `--iv_threshold` | | `0.02` | 当前 IV 阈值 |\n| `--C` | | `1.0` | 当前正则化强度倒数 |\n| `--regularization` | | `l2` | 正则化类型 |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 自动调优模式（flag） |\n| `--metric` | | `auc` | 评估指标 |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置路径 |\n\n---\n\n## 搜索空间\n\n| 参数 | 类型 | 范围 | 说明 |\n|------|------|------|------|\n| max_n_bins | int | 3-15 | WoE 分箱数（越大越精细） |\n| iv_threshold | float(log) | 0.005-0.10 | IV 筛选阈值（越低入模特征越多） |\n| C | float(log) | 0.01-100 | 正则化强度倒数（越大正则化越弱） |\n| regularization | categorical | l1/l2/elasticnet | 正则化类型 |\n\n---\n\n## 诊断驱动策略\n\n| 诊断 | C | iv_threshold | max_n_bins |\n|------|---|--------------|------------|\n| 过拟合 | ↓ 收紧 | ↑ 抬高（减少特征） | ↓ 减少 |\n| 欠拟合 | ↑ 放松 | ↓ 降低（更多特征） | ↑ 增大 |\n| 拟合良好 | ±微调 | ±微调 | ±微调 |\n\n---\n\n## 执行方式\n\n### 交互式模式（单轮）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### AUTO 模式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 调优策略\n\n### 策略1：抗过拟合\n\n**适用条件**：Train-OOT Gap > 0.05\n\n**调整方向**：\n- `C`: 当前值 × 0.5（收紧正则化）\n- `iv_threshold`: 当前值 × 1.5（减少入模特征）\n- `max_n_bins`: 当前值 - 1（降低分箱精细度）\n\n### 策略2：增强拟合\n\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\n\n**调整方向**：\n- `C`: 当前值 × 2（放松正则化）\n- `iv_threshold`: 当前值 × 0.5（增加入模特征）\n- `max_n_bins`: 当前值 + 2（提升分箱精细度）\n\n### 策略3：精细微调\n\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\n\n**调整方向**：\n- `C`: 小幅调整 ±20%\n- `max_n_bins`: 微调 ±1\n- 其他参数保持不变\n\n### 策略4：收敛判定\n\n**条件**：连续2轮 OOT 指标提升 < 0.001\n\n**行为**：停止调优，输出最终结果\n\n---\n\n## 输出格式规范\n\n每轮调优结束后，**必须**输出以下结构化信息：\n\n```markdown\n### 第 N 轮 LR 调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| C | 1.0 | 0.5 | 收紧正则化 |\n| iv_threshold | 0.02 | 0.03 | 减少入模特征 |\n| max_n_bins | 8 | 6 | 降低过拟合 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调 C 值，或接受当前结果\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `lr-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\n| `model-comparison` | 多算法对比 | 后续：可与 XGB/DNN 做公平对比 |\n| `xgb-tuning` | XGBoost 调参 | 平行：同数据不同算法的调参 |\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **联合搜索**：WoE 分箱与 LR 参数联合优化，确保最优组合\n3. **收敛判定**：连续2轮提升不足 0.001 自动停止\n4. **最大轮数**：默认最多 5 轮\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 6: XGBoost建模\n\n# XGBoost 建模 (portable)\n\n基于 XGBoost 进行二分类建模，支持自动特征筛选、多方案对比、稳定性分析。可运行在任何 Python 环境，无平台耦合。调参请用 [`xgb-tuning`](./xgb-tuning/SKILL.md)。\n\n**核心流程**：数据加载 → 特征筛选（四大算子）→ 多方案对比 → 最优方案训练 → 三段式评估 → 稳定性分析 → 报告生成\n\n## 参数\n\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`modeling`）。\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 未传 `--val_filter` 时从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定单套特征，逗号分隔 |\n| `--feature_sets` | | - | JSON 多方案；**复杂嵌套优先放到 `--config` 的 `feature_sets` 字段** |\n| `--feature_scheme` | | - | 指定单套自动筛选方案：`full`/`decorr`/`high_iv`/`stable`；不传或传空则走 `--auto_select` 全量对比 |\n| `--auto_select` | | `true` | 自动特征筛选（四大算子全量对比；指定 `--feature_scheme` 时忽略本参数） |\n| `--baseline_filter` | | 同 train | PSI 基准条件 |\n| `--comparison_filter` | | 同 oot | PSI 对比条件 |\n| `--sample_strategy` | | `auto_weight` | `auto_weight` / `undersample` / `none` |\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\n| `--report_output` | | `xgb_modeling_report` | 报告基名 |\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\n| `--config` | | - | JSON 配置文件路径（命令行 > config > 默认） |\n\n> **复杂嵌套参数（如 `feature_sets`）不要用命令行拼转义 JSON**，改走 `--config config.json` 结构化通道。\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n复杂 `feature_sets` 通过 `--config` 传入：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n执行结束后 `<output_dir>/` 下生成：\n\n- `xgb_modeling_report.md` — 建模报告（数据概览、方案对比、最优方案、稳定性分析…）\n- `models/<model_name>.json` — XGBoost 模型文件\n- `models/<model_name>_meta.json` — 模型元数据（特征列表等）\n- `models/<model_name>_card.json` — ModelCard\n- `result.json` — 结构化产物清单（见 PROTOCOL.md）\n\nstdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可获取全部产物路径与 metrics。\n\n## 产物示例（result.json）\n\n```json\n{\n  \"skill\": \"xgb-modeling\",\n  \"status\": \"success\",\n  \"files\": [\n    {\"path\": \".../xgb_modeling_report.md\", \"role\": \"report\"},\n    {\"path\": \".../models/xgb_model_20260512_143000.json\", \"role\": \"model\",\n     \"meta\": {\"feature_count\": 8, \"scheme_name\": \"去共线性\", \"model_type\": \"xgboost\"}},\n    {\"path\": \".../models/xgb_model_20260512_143000_meta.json\", \"role\": \"meta\"}\n  ],\n  \"metrics\": {\n    \"oot_auc\": 0.7823, \"oot_ks\": 0.4215,\n    \"auc_gap\": 0.0214, \"ks_gap\": 0.0312,\n    \"n_features\": 8, \"overall_score_psi\": 0.0423\n  },\n  \"summary\": \"xgb-modeling 完成：最优方案「去共线性」，OOT AUC=0.7823，OOT KS=0.4215，特征数=8，Gap=0.0214\"\n}\n```\n\n## 跨 skill 串联\n\n下游（如 `model-explanation`）通过 `--model_path` 传入上游 result.json 中 `role=model` 的文件路径：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：自动特征筛选建模\n\n不指定特征，自动执行四大算子生成四套方案对比：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：指定特征建模\n\n使用指定的特征列表：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二-b：指定单套自动筛选方案\n\n只跑一种筛选方案（如\"去共线性\"）：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n可选值：`full`(全量入模) / `decorr`(去共线性) / `high_iv`(高预测力) / `stable`(稳定性优先)\n\n### 场景三：多方案对比\n\n传入多套特征方案（**优先用 `--config`**，避免命令行拼 JSON 转义）：\n\n```json\n{\n  \"feature_sets\": {\n    \"方案A\": [\"f1\", \"f2\"],\n    \"方案B\": [\"f1\", \"f3\"]\n  }\n}\n```\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景四：保存模型\n\n训练完成后保存最优模型，供后续 model-explanation 使用：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n模型自动保存，输出：\n- 模型文件：`<output_dir>/models/my_best_model.json`\n- 元数据文件：`<output_dir>/models/my_best_model_meta.json`（含特征列表、参数等）\n\n---\n\n## 报告结构\n\n| 章节 | 内容 |\n|------|------|\n| 执行摘要 | 4 行业务结论：最优方案、Gap 状态、PSI 状态、头部特征风险 |\n| 1. 数据概览 | 样本量、正样本率（Train/Test/OOT） |\n| 2. 特征方案对比 | 各方案 AUC/KS/Gap 横向对比 |\n| 3. 最优方案详情 | AUC/KS/Gini 指标、模型分数 IV 最优分箱、Lift 表、特征重要性、BCR @ Top5/10/20/30%、Brier Score + 校准曲线 |\n| 4. 稳定性分析 | 按月 AUC/KS（含 95% Bootstrap 置信区间）、Mann-Kendall 趋势检验、分数 PSI |\n| 5. 最终模型总结 | 特征列表、综合表现 |\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | xgb-modeling | lr-modeling | dnn-modeling |\n|------|-------------|-------------|--------------|\n| 算法 | XGBoost | Logistic Regression + WoE | MLP (PyTorch) |\n| 特征处理 | 原始值直接输入 | WoE 分箱编码 | StandardScaler |\n| 非线性能力 | 强（树结构） | 弱（仅通过分箱引入） | 强（多层激活） |\n| 可解释性 | 中（需 SHAP） | 强（系数 × WoE） | 弱 |\n| 训练速度 | 快 | 很快 | 慢 |\n| 适用数据量 | 任意 | 任意 | >10k |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\n- **后续**：`xgb-tuning`（调参优化）、`model-explanation`（SHAP 解释）\n- **平行**：与 `lr-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\n\n---\n\n## 依赖\n\n见 `requirements.txt`（核心：`xgboost`, `scikit-learn`, `optbinning`）。\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为 0/1 二分类\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\n3. **自动特征筛选**：需要数据同时满足 IV、PSI、缺失率条件\n4. **样本策略**：强不均衡场景（正样本率 < 2%）建议 `--sample_strategy undersample`，一般场景用默认 `auto_weight`\n5. **不提供调参**：需要调参请切 xgb-tuning（基于 Optuna TPE + 诊断驱动的约束搜索）\n6. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n7. **稳定性分析**：基准月份取自训练集时间段；Bootstrap CI 需样本量 >= 100 才计算\n8. **BCR/校准曲线**：BCR（Bad Capture Rate）反映拒绝 Top K% 人群能捕获多少坏客户；校准曲线反映模型概率输出可信度\n\n\n---\n\n## Module 7: XGBoost调参\n\n# XGBoost 参数调优 (portable)\n\nXGBoost 调参的**唯一入口**，基于 `_vendor/tuning_engine.TuningEngine`。核心设计：\n\n1. **基线参数智能推断** — 根据数据特征推荐合理起点\n2. **模型状态诊断** — 过拟合/欠拟合判定（`diagnose_model`）\n3. **约束式贝叶斯搜索** — 诊断结论定向收缩 Optuna 搜索空间\n4. **用户知识融合** — 接受用户领域经验调整策略\n\n---\n\n## 调优流程\n\n```\n用户需求 → 数据特征分析 → LLM 推断基线参数 → 训练评估 → 诊断分析 → 参数调整 → 迭代直到满意\n                                         ↑                                        ↓\n                                         └───────────── 用户反馈/知识输入 ─────────────┘\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下\"/\"优化一下\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\"/\"一直调到收敛\" | Agent 自动迭代直到收敛，每轮输出进度 |\n\n**默认模式**: 交互式（更安全，用户可控）\n\n### 交互式模式行为规范\n\n1. **单轮调优后必须暂停**，输出结构化诊断报告，等待用户反馈\n2. 用户可能的反馈：\n   - \"继续\" / \"再调一轮\" → 执行下一轮\n   - \"Gap 还是大\" / \"再保守点\" → 调整策略后执行\n   - \"可以了\" / \"停\" → 生成最终报告\n3. **禁止**在交互式模式下连续执行多轮调优\n\n### AUTO 模式行为规范\n\n1. 每轮调优后同样输出完整的结构化诊断报告（格式同交互式模式），然后自动进入下一轮\n2. 收敛条件：Gap < 0.03 或 连续2轮提升 < 0.002\n3. 收敛后自动生成最终报告\n\n---\n\n## 参数说明\n\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`tuning`）。\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--features` / `-f` | ✅ | - | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件（已全面替代旧 `--test_filter`） |\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\n| `--oot_ratio` / `--val_ratio` | | `0.20` / `0.25` | 自动切分比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--params` / `-p` | | 默认参数 | 当前参数（JSON；**推荐放 `--config` 的 `params` 字段**） |\n| `--baseline` / `-b` | | - | 基线参数（JSON；**推荐放 `--config` 的 `baseline` 字段**） |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--prev_val_metric` | | - | 上一轮 val 指标（用于收敛判断） |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 启用自动调优模式（flag） |\n| `--metric` | | `ks` | 评估指标（`auc`/`ks`） |\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\n| `--report_output` / `-o` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\n| `--warm_start` | | - | WarmStartBundle JSON 字符串或文件路径 |\n| `--config` | | - | JSON 配置文件路径（由 `--config` 自动注入，一般无需手传） |\n\n> **`--params` / `--baseline` 传复杂 JSON 时优先放 `--config`**，避免命令行双引号转义问题。\n\n---\n\n## 基线参数智能推断\n\nAgent 应根据 tuner.py 输出的**数据摘要**推断合理的基线参数，而非使用固定默认值。\n\n### 数据摘要字段\n\ntuner.py 会输出以下数据特征供 Agent 分析：\n\n| 字段 | 说明 | 影响参数 |\n|------|------|----------|\n| `train_samples` | 训练集样本量 | max_depth, n_estimators |\n| `oot_samples` | OOT 样本量 | subsample |\n| `n_features` | 特征数量 | colsample_bytree |\n| `pos_rate` | 正样本率 | min_child_weight, scale_pos_weight |\n\n### 推断规则\n\n#### 样本量与树深度\n\n| 训练集样本量 | max_depth 建议 | 理由 |\n|----------------|------------------|------|\n| < 5万 | 3 | 样本少，低复杂度防过拟合 |\n| 5万 - 20万 | 4 | 中等样本，适中复杂度 |\n| 20万 - 100万 | 5 | 样本充足，可稍复杂 |\n| > 100万 | 5-6 | 大样本支撑更高复杂度 |\n\n#### 正样本率与叶节点\n\n| 正样本率 | min_child_weight 建议 | 理由 |\n|----------|--------------------------|------|\n| < 1% | 300+ | 正样本极少，需更大叶节点防止噎声 |\n| 1% - 5% | 100-200 | 不平衡，适当约束 |\n| 5% - 20% | 50-100 | 较平衡，标准约束 |\n| > 20% | 20-50 | 平衡数据，可稍宽松 |\n\n#### 特征数与采样率\n\n| 特征数 | colsample_bytree 建议 | 理由 |\n|----------|---------------------------|------|\n| < 20 | 0.9-1.0 | 特征少，充分利用 |\n| 20 - 50 | 0.7-0.9 | 中等特征，适度采样 |\n| > 50 | 0.5-0.7 | 特征多，增加随机性 |\n\n### 推断示例\n\n```\n数据摘要:\n  训练集: 150,000 样本\n  OOT: 50,000 样本\n  特征数: 35 个\n  正样本率: 2.5%\n\nAgent 推断基线参数:\n  max_depth: 4        <- 样本量中等\n  min_child_weight: 150  <- 正样本率低\n  colsample_bytree: 0.8  <- 特征数中等\n  reg_alpha: 0.3      <- 特征多，适当正则\n  reg_lambda: 1.0\n  learning_rate: 0.05\n  n_estimators: 500\n  subsample: 0.8\n```\n\n---\n\n## 场景化策略\n\nAgent 应根据用户提供的**场景信息**调整调参策略。\n\n### 金融风控场景\n\n**特点**: 模型长期使用，稳定性优先\n\n| 参数 | 建议值 | 理由 |\n|------|--------|------|\n| max_depth | 3-4 | 低复杂度，抗过拟合 |\n| min_child_weight | 150+ | 叶节点要稳定 |\n| reg_alpha | 0.3-0.5 | 强正则化 |\n| reg_lambda | 1.0-2.0 | 强正则化 |\n\n**调参优先级**: Gap 控制 > KS 提升\n\n**终止条件**: Gap < 0.02，即使 KS 略低也接受\n\n### 营销响应场景\n\n**特点**: 短期使用，效果优先\n\n| 参数 | 建议值 | 理由 |\n|------|--------|------|\n| max_depth | 4-5 | 允许较高复杂度 |\n| min_child_weight | 50-100 | 可以稍宽松 |\n| reg_alpha | 0.1-0.2 | 适中正则 |\n\n**调参优先级**: KS 提升 > Gap 控制\n\n**终止条件**: KS 达标，Gap < 0.05 可接受\n\n### 平衡场景（默认）\n\n**特点**: 兼顾效果和稳定性\n\n| 参数 | 建议值 |\n|------|--------|\n| max_depth | 4-5 |\n| min_child_weight | 100 |\n| reg_alpha | 0.1-0.3 |\n| reg_lambda | 0.5-1.0 |\n\n**终止条件**: KS >= 0.30 且 Gap < 0.03\n\n---\n\n## 执行方式\n\n复杂参数（`params`/`baseline`）建议通过 `--config` JSON 文件传入：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n`config.json` 示例：\n\n```json\n{\n  \"params\": {\"max_depth\": 4, \"learning_rate\": 0.05, \"n_estimators\": 500},\n  \"baseline\": {\"max_depth\": 4, \"learning_rate\": 0.1}\n}\n```\n\n### 交互式模式（单轮调优）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### AUTO 模式（自动调优循环）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n脚本通过单出口协议 `[RESULT:{json}]` 输出模型、报告、state 更新；**LLM 不要复述脚本已产出的图表**。\n\n---\n\n## 诊断知识库\n\n### 模型状态诊断\n\n| 诊断结果 | 判定条件 | 说明 |\n|----------|----------|------|\n| **过拟合** | Train-OOT Gap > 0.05 | 训练集表现远超测试集，模型记忆训练数据 |\n| **轻微过拟合** | Gap ∈ [0.04, 0.05] | 存在一定过拟合风险，需关注 |\n| **拟合良好** | Gap ∈ [0.02, 0.04] | 模型泛化能力正常 |\n| **欠拟合** | OOT AUC < 0.55 且 Gap < 0.02 | 模型拟合能力不足 |\n| **收敛** | 连续2轮提升 < 0.001 | 优化空间有限，可停止 |\n\n### 过拟合信号\n\n- Train AUC 持续上升，OOT AUC 下降或停滞\n- Train-OOT Gap 逐轮增大\n- 验证集效果不稳定\n\n### 欠拟合信号\n\n- Train AUC 和 OOT AUC 都较低\n- 增加训练轮数后效果持续提升\n- Gap 很小但整体 AUC 不足\n\n---\n\n## XGBoost 参数语义\n\n| 参数 | 作用 | 取值范围 | 过拟合时 | 欠拟合时 |\n|------|------|----------|----------|----------|\n| `max_depth` | 树深度，控制模型复杂度 | 2-8 | ↓ 减小 | ↑ 增大 |\n| `min_child_weight` | 叶节点最小样本权重 | 10-300 | ↑ 增大 | ↓ 减小 |\n| `reg_alpha` | L1 正则化强度 | 0-2.0 | ↑ 增大 | ↓ 减小 |\n| `reg_lambda` | L2 正则化强度 | 0.1-10 | ↑ 增大 | ↓ 减小 |\n| `subsample` | 样本采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\n| `colsample_bytree` | 特征采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\n| `learning_rate` | 学习率 | 0.005-0.15 | ↓ 减小 | ↑ 增大 |\n| `n_estimators` | 树数量 | 100-1000 | ↓ 减小 | ↑ 增大 |\n\n### 参数调整优先级\n\n**过拟合场景**（按优先级）：\n1. 增大 `reg_alpha` / `reg_lambda`（最直接）\n2. 减小 `max_depth`（控制复杂度）\n3. 增大 `min_child_weight`（限制分裂）\n4. 减小 `subsample` / `colsample_bytree`（增加随机性）\n\n**欠拟合场景**（按优先级）：\n1. 增大 `max_depth`（增加复杂度）\n2. 增加 `n_estimators`（更多迭代）\n3. 减小正则化参数\n4. 适当增大 `learning_rate`\n\n---\n\n## 用户指令理解\n\n| 用户表达 | 参数映射 | 调整幅度 |\n|----------|----------|----------|\n| \"正则化大一点\" | `reg_alpha` ↑ 或 `reg_lambda` ↑ | +50%~100% |\n| \"正则化小一点\" | `reg_alpha` ↓ 或 `reg_lambda` ↓ | -30%~50% |\n| \"树深度深一点\" | `max_depth` ↑ | +1 |\n| \"树深度浅一点\" | `max_depth` ↓ | -1 |\n| \"学习率低一些\" | `learning_rate` ↓ | -30%~50% |\n| \"学习率高一些\" | `learning_rate` ↑ | +30%~50% |\n| \"多训几轮\" | `n_estimators` ↑ | +50%~100% |\n| \"少训几轮\" | `n_estimators` ↓ | -30%~50% |\n| \"防过拟合\" | 综合：正则化↑, 深度↓, subsample↓ | 组合调整 |\n| \"拟合强一点\" | 综合：深度↑, 正则化↓ | 组合调整 |\n| \"更激进一点\" | `learning_rate` ↑, `max_depth` ↑ | 较大幅度 |\n| \"更保守一点\" | `learning_rate` ↓, 正则化↑ | 较小幅度 |\n| \"继续自动调优\" | 从当前参数启动新一轮 AUTO | - |\n| \"就用这个\" / \"确认\" | 结束调优，输出最终配置 | - |\n\n---\n\n## 调优策略\n\n### 策略1：抗过拟合\n\n**适用条件**：Gap > 0.05\n\n**调整方向**：\n- `reg_alpha`: 当前值 × 2（如 0.1 → 0.2）\n- `reg_lambda`: 当前值 × 1.5\n- `max_depth`: 当前值 - 1（最小为 2）\n- `min_child_weight`: 当前值 × 1.5\n\n### 策略2：增强拟合\n\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\n\n**调整方向**：\n- `max_depth`: 当前值 + 1（最大为 8）\n- `n_estimators`: 当前值 × 1.5\n- `reg_alpha`: 当前值 × 0.5\n- `learning_rate`: 当前值 × 1.2\n\n### 策略3：精细微调\n\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\n\n**调整方向**：\n- `learning_rate`: 小幅调整 ±20%\n- `subsample`: 小幅调整 ±10%\n- 其他参数保持不变\n\n### 策略4：收敛判定\n\n**条件**：连续2轮 OOT 指标提升 < 0.001\n\n**行为**：停止调优，输出最终结果\n\n### 策略 5：约束空间下的定向搜索\n\ntuner.py 在 AUTO 模式下每轮调用 `TuningEngine.run_round(diagnosis, tried_directions)` 在诊断约束空间内跑 5 个 Optuna trial，直接取本轮最优参数进入下轮。`tried_directions` 会自动记录每轮参数增减方向及效果，若某个方向未改善，下一轮会自动冻结该维度。Agent **无需手动追踪**，但在每轮报告中应说明\"本轮诊断为 XX → 搜索空间重点是 XX\"，帮助用户理解调优推演。\n\n---\n\n## 输出格式规范\n\n> **核心原则：每轮必须完整输出**\n> 禁止只输出最终调参报告。每一轮调参完成后，不论交互式还是 AUTO 模式，**必须**立即输出该轮的完整诊断分析过程和结果，包括：参数变化及调整理由、训练指标详情、与上一轮的对比、诊断结论、下一步建议。用户需要看到每一轮的诊断推理过程，而非仅看到最终参数。\n\n### 单轮调优输出（每轮必须使用，交互式和 AUTO 模式均适用）\n\n每轮调优结束后，**必须**输出以下结构化信息：\n\n```markdown\n### 第 N 轮调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| max_depth | 4 | 3 | 降低过拟合 |\n| reg_alpha | 0.1 | 0.3 | 增强正则化 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\n| Gap (KS) | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调正则化，或接受当前结果\n```\n\n### 最终报告（调优结束时生成，不能替代逐轮输出）\n\n当用户确认结束或 AUTO 模式收敛时，在逐轮输出完毕后，额外生成完整汇总报告：\n\n> **注意**：最终报告是对逐轮输出的汇总补充，不能替代逐轮输出。即使是 AUTO 模式，也必须先逐轮输出再汇总。\n\n```markdown\n# XGBoost 调参报告\n\n## 1. 调优概览\n\n| 项目 | 内容 |\n|------|------|\n| 执行模式 | 交互式 / AUTO |\n| 总轮数 | 3 |\n| 收敛原因 | Gap < 0.03 达标 / 用户确认停止 |\n\n## 2. 调参推演记录\n\n| 轮次 | 参数 (depth/eta/reg) | OOT KS | OOT AUC | Gap (KS) | 诊断 | 调整决策 |\n|------|---------------------|--------|---------|----------|------|----------|\n| 基线 | 4 / 0.1 / 0.1 | 0.16 | 0.71 | 0.08 | 过拟合 | 降低 depth |\n| R1 | 3 / 0.1 / 0.2 | 0.17 | 0.72 | 0.05 | 轻微过拟合 | 增强正则化 |\n| R2 | 3 / 0.08 / 0.5 | 0.18 | 0.73 | 0.03 | 良好 | 收敛停止 |\n\n## 3. 最终效果\n\n| 指标 | 基线 | 最终 | 提升 |\n|------|------|------|------|\n| OOT KS | 0.16 | 0.18 | +0.02 |\n| OOT AUC | 0.71 | 0.73 | +0.02 |\n| Gap (KS) | 0.08 | 0.03 | -0.05 |\n\n## 4. 最终参数\n\n```json\n{\n  \"max_depth\": 3,\n  \"learning_rate\": 0.08,\n  \"reg_alpha\": 0.5,\n  \"reg_lambda\": 1.0,\n  \"min_child_weight\": 100,\n  \"subsample\": 0.8,\n  \"colsample_bytree\": 0.8,\n  \"n_estimators\": 500\n}\n```\n\n## 5. 调参结论\n\n相比基线模型，最终模型：\n- OOT KS 提升 0.02（0.16 → 0.18）\n- OOT AUC 提升 0.02（0.71 → 0.73）\n- Gap (KS) 降低 0.05（0.08 → 0.03）\n- 稳定性显著改善，可安全部署\n\n如需进一步探索，请给出您的调优建议。\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\n| `model-explanation` | SHAP 解释 | 后续：调参完成后解释最优模型 |\n| `model-comparison` | 多算法对比 | 平行：可与 LR/DNN 调参后做公平对比 |\n| `auto-experiment` | 特征探索 | 区别：本 Skill 调参数，auto-experiment 探索特征 |\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **特征要求**：需提供已筛选的特征列表（`--features` 必填）\n3. **基线参数**：可传入自定义基线参数，否则使用默认值\n4. **收敛判定**：连续2轮提升不足 0.001 自动停止\n5. **最大轮数**：默认最多 5 轮，避免过度调优\n6. **复杂 JSON**：`--params` / `--baseline` 等复杂 JSON 优先通过 `--config config.json` 传入\n7. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 8: DNN深度学习建模\n\n# DNN 深度学习建模 (portable)\n\n基于 PyTorch 实现 MLP (Multi-Layer Perceptron) 进行二分类建模。\n\n**核心流程**：特征标准化 → MLP 训练（BatchNorm + Dropout + Early Stopping） → 概率预测 → 三段式评估\n\n**适用场景**：\n- 高维特征交互建模\n- 特征间存在复杂非线性关系\n- 数据量充足（>10k 样本）\n- 对模型性能有极致追求（可与 XGBoost 做 ensemble）\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动推断 |\n| `--hidden_dims` | | `128,64,32` | 隐藏层维度，逗号分隔 |\n| `--dropout` | | `0.3` | Dropout 比率 |\n| `--learning_rate` | | `0.001` | 学习率 |\n| `--batch_size` | | `512` | 批次大小 |\n| `--epochs` | | `100` | 最大训练轮次 |\n| `--patience` | | `10` | 早停耐心轮数 |\n| `--weight_decay` | | `1e-4` | 权重衰减（L2 正则化） |\n| `--pos_weight` | | `auto` | 正样本权重（auto=自动计算） |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--report_output` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n默认参数运行：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n自定义网络结构：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：默认参数快速建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：自定义网络结构\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：指定特征建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出产物\n\n1. **建模报告**（Markdown）— 含数据切分、网络结构、训练曲线、三段式评估指标、稳定性分析\n2. **模型文件**（.pt）— PyTorch state_dict + 模型配置\n3. **训练日志**（JSON）— 每 epoch 的 loss/AUC/KS 记录\n4. **result.json** — 结构化产物清单\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | dnn-modeling | xgb-modeling | lr-modeling |\n|------|-------------|--------------|-------------|\n| 算法 | MLP (PyTorch) | XGBoost | LR + WoE |\n| 特征处理 | StandardScaler | 原始值 | WoE 分箱 |\n| 非线性能力 | 强（多层激活） | 强（树结构） | 弱 |\n| 可解释性 | 弱 | 中（SHAP） | 强（系数） |\n| 训练速度 | 慢 | 快 | 很快 |\n| 适用数据量 | >10k | 任意 | 任意 |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\n- **后续**：`dnn-tuning`（调参优化）、`model-comparison`（多算法对比）\n- **平行**：与 `xgb-modeling` / `lr-modeling` 可做横向对比\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **数据量**：建议训练样本 > 10k，DNN 在小样本上易过拟合\n3. **缺失值**：脚本自动使用中位数填充 + 添加缺失指示列\n4. **标准化**：自动对数值特征做 StandardScaler 标准化\n5. **早停**：当 val loss 连续 `patience` 轮不下降时自动停止\n6. **不提供调参**：需要调参请切 `dnn-tuning`（搜索网络架构 + 训练参数）\n7. **GPU**：自动检测 CUDA，无 GPU 时回退到 CPU\n8. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n\n\n---\n\n## Module 9: DNN调参\n\n# DNN 深度学习参数调优 (portable)\n\nDNN 调参的**唯一入口**，基于 `_vendor/tuning/dnn_engine.DNNTuningEngine`。\n\n核心设计：搜索期间缩减 epochs（加速），诊断驱动动态约束搜索空间。\n\n---\n\n## 调优流程\n\n```\n基线 DNN 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索(30 epochs) → 最优参数 → 迭代\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下DNN\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\n\n**默认模式**: 交互式（更安全，用户可控）\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\n| `--oot_ratio` | | `0.20` | OOT 占比 |\n| `--val_ratio` | | `0.25` | Val 占比 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--n_layers` | | `3` | 隐藏层数 |\n| `--layer_width` | | `128` | 首层宽度 |\n| `--dropout` | | `0.3` | Dropout 率 |\n| `--learning_rate` | | `0.001` | 学习率 |\n| `--weight_decay` | | `1e-4` | L2 正则化 |\n| `--batch_size` | | `512` | 批次大小 |\n| `--epochs` | | `100` | 完整训练 epochs |\n| `--search_epochs` | | `30` | 搜索期间 epochs（加速） |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 自动调优模式（flag） |\n| `--metric` | | `auc` | 评估指标 |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置路径 |\n\n---\n\n## 搜索空间\n\n| 参数 | 类型 | 范围 | 说明 |\n|------|------|------|------|\n| n_layers | int | 2-4 | 隐藏层数 |\n| layer_width | int | 32-256 | 首层宽度（递减结构） |\n| dropout | float | 0.1-0.5 | Dropout 比率 |\n| learning_rate | float(log) | 1e-4 ~ 0.01 | Adam 学习率 |\n| weight_decay | float(log) | 1e-5 ~ 1e-3 | L2 正则化 |\n| batch_size | categorical | 128/256/512/1024 | 批次大小 |\n\n---\n\n## 诊断驱动策略\n\n| 诊断 | dropout | weight_decay | n_layers | layer_width |\n|------|---------|-------------|----------|-------------|\n| 过拟合 | ↑ 抬高 | ↑ 增强 | ↓ 减少 | ↓ 缩小 |\n| 欠拟合 | ↓ 降低 | ↓ 减弱 | ↑ 增加 | ↑ 增大 |\n| 拟合良好 | ±微调 | ±微调 | ±微调 | ±微调 |\n\n---\n\n## 执行方式\n\n### 交互式模式（单轮调优）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### AUTO 模式（自动调优循环）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 调优策略\n\n### 策略1：抗过拟合\n\n**适用条件**：Train-Val Gap > 0.05\n\n**调整方向**：\n- `dropout`: 当前值 + 0.1（上限 0.5）\n- `weight_decay`: 当前值 × 2\n- `n_layers`: 当前值 - 1（最小为 2）\n- `layer_width`: 当前值 - 32（最小为 32）\n\n### 策略2：增强拟合\n\n**适用条件**：Val AUC < 0.58 且 Gap < 0.03\n\n**调整方向**：\n- `n_layers`: 当前值 + 1（最大为 4）\n- `layer_width`: 当前值 + 32（最大为 256）\n- `weight_decay`: 当前值 × 0.5\n- `learning_rate`: 当前值 × 1.2\n\n### 策略3：精细微调\n\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\n\n**调整方向**：\n- `learning_rate`: 小幅调整 ±20%\n- `dropout`: 小幅调整 ±0.05\n- 其他参数保持不变\n\n### 策略4：收敛判定\n\n**条件**：连续2轮 Val 指标提升 < 0.001\n\n**行为**：停止调优，输出最终结果\n\n---\n\n## 输出格式规范\n\n与 xgb-tuning 保持一致的逐轮诊断报告格式。\n\n每轮调优结束后，**必须**输出以下结构化信息：\n\n```markdown\n### 第 N 轮 DNN 调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| n_layers | 3 | 3 | 不变 |\n| layer_width | 128 | 96 | 降低过拟合 |\n| dropout | 0.3 | 0.4 | 增强正则化 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| Val AUC | 0.72 | 0.73 | +0.01 ✓ |\n| OOT AUC | 0.70 | 0.71 | +0.01 ✓ |\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调 dropout，或接受当前结果\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `dnn-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\n| `model-comparison` | 多算法对比 | 后续：可与 XGB/LR 做公平对比 |\n| `xgb-tuning` | XGBoost 调参 | 平行：同数据不同算法的调参 |\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **搜索加速**：搜索期间使用 `search_epochs=30`，最终模型使用 `epochs=100`\n3. **收敛判定**：连续2轮提升不足 0.001 自动停止\n4. **最大轮数**：默认最多 5 轮\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 10: 多模型效果对比\n\n# 多模型效果对比 (portable)\n\n基于**同一份数据切分**，横向运行多种算法，统一评估并生成**客观事实报告**。\n\n**设计原则（v3 重要变更）**：\n- **只陈述事实，不做主观推荐**：删除了旧版的\"五维加权综合评分\"与\"门禁淘汰\"。主观权重本质上将多个不可比指标压成一个数，丢失信息并引入拍脑袋假设；门禁阈值则不同业务差异巨大。\n- **Pareto 前沿（无主观权重）**：在 OOT AUC / OOT KS / BCR@10% / KS Gap / PSI 五个方向明确的目标上，识别未被任何算法严格优于的候选集。\n- **LLM 推理接手**：报告末尾提供「已知事实清单 + 开放问题」，交由对话中的 AI 结合业务背景推理取舍。\n- 同数据同切分 → 消除数据差异对对比结论的干扰\n- 多维指标原始陈述 → OOT AUC/KS/BCR/Brier + KS Gap + PSI + 特征数 + 可解释性\n- 统计显著性 → DeLong 检验回答\"差距是真的还是采样噪声\"\n\n---\n\n## 推荐工作流：先调参再对比\n\n\"哪个算法好\"这个问题只有在**三个算法都调优后**对比才公平。默认超参下对比只能作为初筛。推荐三步调用：\n\n```\n1. xgb-tuning  → 产出 xgb_tuning_best_*_meta.json\n2. lr-tuning   → 产出 lr_tuning_best_*_meta.json\n3. dnn-tuning  → 产出 dnn_tuning_best_*_meta.json\n4. model-comparison --use_tuned   → 自动扫描上述产物使用最优超参跑对比\n```\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列（用于 OOT 切分与分月表现） |\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\n| `--oot_ratio` | | `0.20` | OOT 占比 |\n| `--val_ratio` | | `0.25` | Val 占比 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定特征，逗号分隔；不传则自动推断 |\n| `--algorithms` | | `xgb,lr,dnn` | 对比算法列表，逗号分隔 |\n| `--scenario` | | `general` | `general` / `scorecard` / `fraud` / `stability_first` |\n| `--use_tuned` | flag | 关 | 自动扫描 models 目录加载最新调参最优参数 |\n| `--tuned_params_file` | | - | 显式指定 `{\"xgb\":{},\"lr\":{},\"dnn\":{}}` JSON |\n| `--config` | | - | 手工覆盖各算法超参的 JSON（优先级高于 tuned） |\n| `--model_name` | | 自动生成 | 产物名称前缀 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n\n---\n\n## 场景预设（`--scenario`）\n\n场景仅作为**业务上下文标签**，供 LLM 推理时使用；不再参与加权评分、不做门禁淘汰。\n\n| 场景 | 描述 |\n|------|------|\n| `general` | 通用；首次对比探索 |\n| `scorecard` | 评分卡 / 白盒合规；LR + WoE 天然占优 |\n| `fraud` | 反欺诈 / 高风险；关注 OOT KS / BCR |\n| `stability_first` | 存量运维；重点关注 PSI 与分月 KS |\n\n---\n\n## 执行方式\n\n默认三算法 + 通用场景：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n评分卡场景（只跑 XGB + LR）：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n使用历史调参最优参数：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 对比维度（原始指标，不做加权）\n\n| 维度 | 字段 | 说明 |\n|------|------|------|\n| **效果** | OOT AUC / KS / Gini / BCR@10% / Precision@10% / Recall@10% / Brier / LogLoss | 全量原始指标陈列 |\n| **泛化** | KS Gap = Train KS - OOT KS | 越小越好；>0.10 标记过拟合风险 |\n| **稳定** | PSI（OOT vs Train 分数分布）+ 分月 KS 波动 σ | 越小越稳；≥0.25 标记显著漂移 |\n| **可解释** | LR 强 / XGB 中 / DNN 弱 | 仅作文本标签，不参与计算 |\n| **简洁** | 入模特征数 | 仅作参考 |\n\n---\n\n## 统计显著性（DeLong 检验）\n\n两两算法 AUC 差异通过 **Fast-DeLong** 做渐近正态检验（O(N log N)，10w+ 样本也秒级完成）：\n\n- `p < 0.05` → 差距统计显著\n- `p ≥ 0.05` → 差距可能是采样波动\n\n---\n\n## 输出产物\n\n1. **对比报告**（Markdown，倒金字塔结构）：\n   - 执行摘要（客观指标速览 + Pareto 前沿标记，**无推荐列**）\n   - 多算法叠加曲线（ROC/KS/Lift）\n   - 数据概览\n   - 详细指标总表（train/val/oot × 8 指标）\n   - **Pareto 前沿候选集**（无主观权重）\n   - DeLong 显著性检验\n   - 稳定性（真实 PSI + 分月 KS）\n   - 样本级一致性（Top-K Jaccard / Spearman / 分歧数）\n   - 跨算法特征重叠（Jaccard + 共识特征）\n   - 每算法独立评估图\n   - **LLM 推理引导**：事实清单 + 开放问题，交由对话中的 AI 推理取舍\n   - 各算法适用场景背景知识\n\n2. **各模型文件**：XGB(.json) / LR(.joblib) / DNN(.pt，含 imputer+scaler 元数据)\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-tuning` / `lr-tuning` / `dnn-tuning` | 调参优化 | 前置：公平对比前需先调参 |\n| `xgb-modeling` / `lr-modeling` / `dnn-modeling` | 基线建模 | 被复用训练对比模型 |\n| `model-explanation` | 模型解释 | 后续：对比完成后解释最优模型 |\n\n---\n\n## 注意事项\n\n1. **公平对比**：\"哪个算法好\"只有在三个算法都调优后对比才公平\n2. **同数据同切分**：本技能确保所有算法使用完全相同的数据切分\n3. **DeLong 检验**：p < 0.05 才认为差距统计显著\n4. **Pareto 前沿**：只识别未被任何算法严格优于的候选集，不做主观排序\n5. **场景标签**：`--scenario` 仅作文本标签，不参与加权评分\n6. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 11: 模型解释\n\n# 模型解释报告 (portable)\n\n基于 SHAP (SHapley Additive exPlanations) 对 XGBoost 模型进行可解释性分析，生成包含可视化图表的 Markdown 报告。\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--model_path` | ✅ | - | XGBoost 模型文件路径 (.json) |\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` | ✅ | - | 目标变量列名 |\n| `--features` | | *auto* | 特征列表，逗号分隔。不传时从 `<model>_meta.json` 自动读取 |\n| `--sample_id` | | - | 单样本解释：样本索引或ID |\n| `--sample_filter` | | - | 单样本解释：pandas query 条件 |\n| `--top_n` | | `20` | 全局解释显示 Top N 特征 |\n| `--interaction_features` | | - | 交互分析特征对，如 `f1,f2` |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--output_name` | | `model_explanation_report` | 报告基名 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n单样本解释：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n特征交互分析：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：全局特征重要性分析\n\n解释模型整体决策逻辑：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n输出：\n- SHAP Summary Plot（特征重要性排序）\n- SHAP Bar Plot（平均绝对 SHAP 值）\n- 特征重要性表格\n\n### 场景二：单样本预测解释\n\n解释特定样本的预测原因：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n输出：\n- SHAP Force Plot（推动预测的正负特征）\n- 瀑布图（特征贡献分解）\n- 该样本特征值与分布对比\n\n### 场景三：特征交互分析\n\n分析两个特征的交互效应：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n输出：\n- SHAP Dependence Plot（特征值 vs SHAP 值）\n- 交互热力图\n\n---\n\n## 跨 skill 串联（推荐流程）\n\n`xgb-modeling` 产物的 `result.json` 中 `role=model` 的 path 可直接喂给 `model-explanation`：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 特征列表来源\n\n1. `--features \"f1,f2,...\"` 显式传入\n2. `config.json` 中 `\"features\": [...]`\n3. **自动发现** `<model>_meta.json`（xgb-modeling 产物自带）\n\n---\n\n## 报告输出结构\n\n生成的 `model_explanation_report.md` 包含以下章节：\n\n| 章节 | 内容 |\n|------|------|\n| 1. 模型概览 | 模型路径、特征数量、样本规模 |\n| 2. 全局特征解释 | SHAP Summary Plot、Top N 特征重要性表 |\n| 3. 单样本解释 | Force Plot、瀑布图、特征值对比（如指定样本） |\n| 4. 特征交互分析 | Dependence Plot、交互效应说明（如指定） |\n| 5. 可视化附件 | 生成的 PNG 图表文件列表 |\n\n---\n\n## 产物目录\n\n```\n<output_dir>/\n├── model_explanation_report.md\n└── assets/\n    ├── shap_summary.png\n    ├── shap_bar.png\n    ├── force_plot_sample_1001.png\n    └── dependence_age_income.png\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-modeling` | 训练模型 | 前置：需先用其训练并保存模型 |\n| `model-comparison` | 多算法对比 | 后续：可与 LR/DNN 模型做对比解释 |\n| `feature-analysis` | 特征分析 | 区别：feature-analysis 分析建模前特征质量 |\n\n---\n\n## 依赖\n\n- `shap`、`matplotlib`（图表）\n- `xgboost`、`pandas`、`numpy`\n\n---\n\n## 注意事项\n\n1. **模型格式**：仅支持 XGBoost JSON 格式模型文件\n2. **数据一致性**：`--data_path` 需与训练时使用的数据字段一致\n3. **样本定位**：`--sample_id` 为数据框的整数索引，非业务ID\n4. **内存占用**：大数据集的全局 SHAP 计算可能耗时较长\n5. **图表依赖**：需要 matplotlib 和 shap 库支持\n6. **base_score 兼容**：XGBoost >= 1.7 的 `base_score` 为数组，脚本会自动修复为标量以兼容 SHAP\n\n\n---\n\n## Module 12: 自主实验循环\n\n# 自主实验循环 (portable)\n\n自动发现数据中的特征分组，执行四阶段渐进式探索实验，每轮完整展示探索逻辑和量化结果。\n\n---\n\n## 核心理念\n\n借鉴 autoresearch 的自主循环思想，升级为**组级探索**：\n\n```\n发现特征组 → 组独立评估 → 组间叠加 → 组级消融 → 精细筛选\n```\n\n---\n\n## 四阶段探索流程\n\n### Phase 1: 特征组独立评估\n- 自动发现数据中的特征分组（按前缀聚合: `firefly_*`, `mob3_*`, `umeng_*` 等）\n- 逐组单独建模，评估每组的独立预测能力\n- 输出各组的独立 AUC/KS 排名\n\n### Phase 2: 组间增量叠加\n- 从 Phase 1 表现最佳的组开始\n- 逐步叠加下一个最强组，观察边际增量\n- 找到最优组合点\n\n### Phase 3: 组级消融分析\n- 从全量特征出发，逐组移除\n- 量化每个组的不可替代性\n- 如果移除后指标不降，说明该组信息已被其他组覆盖\n\n### Phase 4: 组内精细筛选\n- 在最优组合内，逐个尝试移除特征\n- 剔除冗余特征，精简模型\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--exploration` | ✅ | - | 探索方向描述，如 \"不同特征组对mob3逾期的贡献\" |\n| `--max_rounds` | | `5` | 最大实验轮数 |\n| `--metric` | | `ks` | 优化指标（auc/ks） |\n| `--direction` | | `maximize` | 优化方向（maximize/minimize） |\n| `--significance` | | `2.0` | 显著性阈值（MAD倍数） |\n| `--baseline_features` | | - | 基线特征列表，JSON格式（默认使用全量特征） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | - | 训练集筛选条件 |\n| `--val_filter` | | - | 验证集筛选条件 |\n| `--test_filter` | | - | [Deprecated] 等价 `--val_filter`，仅作向后兼容 |\n| `--oot_filter` | | - | OOT测试集条件 |\n| `--val_ratio` | | `0.25` | val 在 train_full 内占比 |\n| `--oot_ratio` | | `0.20` | OOT 在全量内占比 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：探索各特征组贡献\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：探索特定时间窗口特征\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：在已有基线上探索新组\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出内容\n\n> **核心原则：每轮必须完整输出探索逻辑和结果**\n> 禁止只输出最终汇总。每一轮实验完成后，**必须**立即输出：探索策略、推理逻辑、假设描述、新增/移除特征、训练指标详情、与基线的对比、显著性检验、决策理由。\n\n### 数据概览（实验开始前）\n\n- 数据规模、特征数、正样本率\n- 自动发现的特征分组及其统计\n\n### 单轮输出格式（每轮必须使用）\n\n```markdown\n### Round N/总轮数\n\n**Phase X: 探索策略名称**\n\n**探索逻辑**:\n[Phase 1/3/5] 特征组独立评估\n目标: 单独测试「firefly」组的 12 个特征\n逻辑: 先让每个特征组独立上场，获得各组的独立贡献排名\n\n**本轮假设**: 独立评估特征组「firefly」(12个特征)\n\n**模型评估** (共 12 个特征):\n| 指标 | Train | Test | 基线Test | 变化 |\n|------|-------|------|----------|------|\n| AUC | 0.812 | 0.735 | 0.726 | +0.009 |\n\n**Top-5 特征重要性**:\n| # | 特征 | 重要性 |\n|---|------|--------|\n| 1 | firefly_score [NEW] | 0.2341 |\n\n**显著性检验**: [PASS] 2.3x MAD → 改进显著\n**决策**: [+] KEEP - 改进显著\n```\n\n### 最终汇总（所有轮次后输出）\n\n- 实验总览表（Round/阶段/假设/指标/决策）\n- 最终 vs 基线对比\n- 保留和丢弃的特征组/特征列表\n- 下一步建议\n\n---\n\n## 统计显著性检验\n\n使用 MAD (Median Absolute Deviation) 判断改进是否显著：\n\n| 置信度 | 标记 | 含义 |\n|--------|------|------|\n| ≥ 2.0× | [PASS] | 改进可能是真实的 |\n| 1.0-2.0× | [EDGE] | 高于噪声但边缘 |\n| < 1.0× | [FAIL] | 在噪声范围内 |\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-modeling` | 单次训练和评估 | 被本技能复用 |\n| `xgb-tuning` | 超参调优 | 可在循环后使用 |\n| `feature-analysis` | 特征分析 | 辅助假设生成 |\n\n---\n\n## 注意事项\n\n1. **探索方向**：可以是宽泛的（如\"探索各特征组贡献\"），系统会自动发现分组\n2. **轮数建议**：设置为特征组数的2-3倍（如6个组建议10-15轮），以覆盖多个探索阶段\n3. **基线策略**：默认使用全量特征作为基线，也可指定特定特征集\n4. **显著性阈值**：默认2.0×，数据量小时可适当降低\n5. **可打断**：用户可随时停止，已有结果会保留\n6. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 13: 分群建模\n\n# 分群自主探索 (portable)\n\n在用户指定或 AI 自主发现的分群策略下，拆分客群训练子模型，自动探索最优分群方案。\n\n**核心理念**：\n\n```\n探索空间（策略 × 参数 × 组合）\n        │\n        ▼\nTry → Measure → Keep/Discard → Repeat\n        │\n        ▼\n    最优分群方案 + 子模型\n```\n\n---\n\n## 三种分群策略\n\n| 策略 | 说明 | 适用场景 |\n|------|------|---------|\n| **规则分群** | 用户指定规则（如 `age < 30`） | 有业务先验知识 |\n| **聚类分群** | K-Means 等无监督自动发现 | 探索数据内在结构 |\n| **决策树分群** | 有监督找最优分割点 | 直接优化目标变量 |\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--mode` | | `auto` | 模式: `auto`(自主探索) / `manual`(指定策略) |\n| `--max_rounds` | | `5` | 自主探索最大轮数 |\n| `--segment_rules` | | - | 规则分群，JSON格式 |\n| `--segment_col` | | - | 直接指定分群列名 |\n| `--n_clusters` | | `3` | 聚类分群数 |\n| `--tree_depth` | | `2` | 决策树分群深度 |\n| `--tree_features` | | - | 决策树使用的特征，逗号分隔 |\n| `--min_segment_ratio` | | `0.05` | 最小分群占比（<5%会警告） |\n| `--merge_strategy` | | `route` | 汇总策略: `route` / `stacking` |\n| `--metric` | | `ks` | 优化指标（auc/ks） |\n| `--significance` | | `2.0` | 显著性阈值（MAD倍数） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | - | 训练集筛选条件 |\n| `--val_filter` | | - | 验证集筛选条件 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件 |\n\n---\n\n## 执行方式\n\n### 自主探索最优分群\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 用户规则分群\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 聚类自动分群\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 决策树分群\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出内容\n\n### 实时进度（流式输出）\n\n```\n━━━ Round 1/5: 基线（不分群）━━━\n单一模型 AUC: 0.742\n\n━━━ Round 2/5: 用户规则分群 ━━━\n规则: age < 30 | 30-50 | > 50\n分群样本: [12,340 | 18,560 | 14,288]\n子模型 AUC: [0.71 | 0.75 | 0.78]\n汇总 AUC: 0.758 (+2.2%)\n决策: ✅ KEEP\n\n━━━ Round 3/5: 决策树分群 (depth=2) ━━━\n自动分割: income < 5000 → ...\n汇总 AUC: 0.772 (+1.8%)\n决策: ✅ KEEP (新最佳!)\n```\n\n### 最终报告\n\n- 最优分群方案详情\n- 各策略对比表\n- 子模型列表及指标\n- vs 基线提升幅度\n- 分群稳定性分析（PSI）\n\n---\n\n## 评估标准\n\n| 指标 | 说明 | 阈值 |\n|------|------|------|\n| 整体 AUC | 分群模型汇总后效果 | 越高越好 |\n| vs 基线 | 相比不分群的提升 | > 0 |\n| 分群稳定性 | OOT分群比例变化 | PSI < 0.1 |\n| 最小覆盖率 | 最小群占比 | > 5% |\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-modeling` | 单模型训练 | 被复用训练子模型 |\n| `auto-experiment` | 特征探索 | 可在分群后对各群独立优化 |\n| `feature-analysis` | 特征分析 | 辅助选择分群特征 |\n\n---\n\n## 注意事项\n\n1. **分群数量**：建议 2-5 群，太多易过拟合\n2. **最小样本量**：每群建议 > 5% 总样本\n3. **稳定性**：关注 OOT 分群比例是否稳定\n4. **业务可解释**：决策树分群规则更易解释\n5. **组合使用**：可先分群再对各群做特征探索\n\n\n---\n\n## Module 14: DeepModel深度集成\n\n# XGBoost DeepModel — 分群集成建模 (portable)\n\n分群训练多个 XGBoost 子模型，通过 OOF Stacking 融合成主模型，评估集成收益。\n\n---\n\n## 阶段1：训练分群子模型\n\n### 参数说明\n\n> 参数 spec：`_vendor/xgb_cli.py` 中 `domain=deepmodel-sub`。复杂嵌套 JSON（segments / features_per_segment / pos_weight_per_segment）**必须**走 `--config`。\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径 |\n| `--target` / `-t` | ✅ | - | 目标变量列名 |\n| `--segments` | ✅* | - | 分群条件 JSON（**推荐通过 `--config` 的 `segments` 字段**） |\n| `--segment_col` | ✅* | - | 按列唯一值自动分群（与 segments 二选一） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 全局训练集筛选条件 |\n| `--val_filter` | | `val_ratio` 切出 | 全局验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | 自动筛选 | 全局特征列表，逗号分隔 |\n| `--features_per_segment` | | - | 分群差异化特征 JSON（**走 `--config`**） |\n| `--sample_weight_col` | | - | 样本权重列名 |\n| `--pos_weight_per_segment` | | - | 各分群正样本权重 JSON（**走 `--config`**） |\n| `--auto` | | `false` | flag。对 OOT Gap > 0.05 的分群自动调参 |\n| `--output_dir` | | `./outputs/<ts>` | 子模型保存目录 |\n| `--config` | | - | JSON 配置路径 |\n\n### 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码\n\nFile v2.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn74e704j3ygjcygnpf02rdvd185js13\",\n  \"slug\": \"financial-engineer-digital-employee\",\n  \"version\": \"2.0.3\",\n  \"publishedAt\": 1787900843352\n}\n\nFile v2.0.3:skill-card.md\n\n## Description:\n\nA Chinese-language financial engineering workflow guide for data profiling, feature analysis, LR scorecards, XGBoost and DNN modeling, tuning, model explanation, model comparison, segmentation, and DeepModel-style ensemble workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gechengling](https://clawhub.ai/user/gechengling)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nFinancial institution teams and qualified financial modeling professionals use this skill as a methodology guide for preparing controlled datasets, comparing and tuning credit or risk models, interpreting model behavior, and drafting analysis outputs for human review. It does not bundle executable code and its guidance should be applied only in authorized, compliance-governed environments.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may be used with customer, credit, health, financial, insurance, or claims data.\n\nMitigation: Use only institution-approved access controls, retention rules, encryption, and de-identification practices before applying the guidance to sensitive data.\n\nRisk: Financial modeling outputs, recommendations, and report drafts may be mistaken for formal investment, insurance, credit, legal, or compliance advice.\n\nMitigation: Require review and approval by qualified professionals before relying on outputs for decisions or customer-facing use.\n\nRisk: The artifact describes workflows that involve file I/O, API or MCP calls, audit logs, customer notes, and archives even though the skill itself does not execute them.\n\nMitigation: Treat those actions as user-executed operational steps and perform them only in authorized environments with local compliance controls.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gechengling/skills/financial-engineer-digital-employee)\n- [Publisher profile](https://clawhub.ai/user/gechengling)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Configuration, Analysis]\n\n**Output Format:** [Markdown guidance with structured tables and report outlines]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs are advisory and require qualified human review before business use.]\n\n## Skill Version(s):\n\n2.0.3 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.2: 3 files, 27740 bytes\n\nFiles: skill-card.md (2206b), SKILL.md (89695b), _meta.json (154b)\n\nFile v2.0.2:SKILL.md\n\n---\nname: \"Financial Engineer Digital Employee\"\nslug: financial-engineer-digital-employee\ndescription: \"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。\"\nversion: 2.1.0\ncapabilities:\n  - educational-reference\n  - advisory-only\n  - requires-human-review\n  - no-executable-code\n---\n\n# Financial Engineer Digital Employee / 金融工程专家数字员工\n\n> **⚠️ 安全与能力声明（Security & Capability Notice）**\n>\n> - **Type:** Educational reference / analytical framework ONLY（纯方法论参考框架）\n> - **本技能不包含、不提供任何可执行代码、脚本或命令**；原文中的命令/代码示例已全部移除\n> - **本技能不发起任何网络请求、MCP 工具调用或外部 API 调用**\n> - **本技能不创建定时任务、不执行后台作业、不收集任何凭据或 API Key**\n> - **本技能不读取、写入或持久化任何文件（含审计日志）**；所有输出以对话内容呈现，是否留痕/保存由用户及其机构自行决定\n> - 文中提及的数据服务、工具名称、脚本、文件路径均为**工作流设计参考**，实际取数与操作由用户在其自有授权环境中执行，并将结果提供给助手\n> - 所有输出仅供参考，须由具备相应资质的专业人员审核后方可用于实际业务\n> - **本技能不提供投资、法律、保险或税务建议**\n>\n> **ℹ️ 数据来源约定**\n> - 如需行情、财报、舆情等数据，请用户自行通过其授权数据服务获取并粘贴给助手；助手不代为取数\n> - 本技能面向持牌机构的专业岗位人员（研究/投顾/信贷/核保/理赔/财富管理等），仅在明确的专业业务上下文中使用\n## Skill Overview / 技能概览\n\n金融工程专家数字员工，集成以下14项核心能力模块：\n\n1. **Module 1: 数据轮廓速览**\n2. **Module 2: 单变量分析**\n3. **Module 3: 特征深度分析**\n4. **Module 4: LR评分卡建模**\n5. **Module 5: LR评分卡调参**\n6. **Module 6: XGBoost建模**\n7. **Module 7: XGBoost调参**\n8. **Module 8: DNN深度学习建模**\n9. **Module 9: DNN调参**\n10. **Module 10: 多模型效果对比**\n11. **Module 11: 模型解释**\n12. **Module 12: 自主实验循环**\n13. **Module 13: 分群建模**\n14. **Module 14: DeepModel深度集成**\n\n---\n\n\n---\n\n## Module 1: 数据轮廓速览\n\n# 数据洞察报告 (portable)\n\n基于 `scripts/profiler.py` 主脚本，对数据集进行轮廓扫描，生成数据概况报告。\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--output` | | `data_profiling_report.md` | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--output_name` | | `data_profiling_report` | 报告基名（不含扩展名） |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n执行结束后：\n- 产物目录 `<output_dir>/` 下生成：\n  - `report.md` — 数据概况报告\n  - `result.json` — 结构化产物清单（见 PROTOCOL.md）\n- stdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可\n\n---\n\n## 产物示例\n\n```json\n{\n  \"skill\": \"data-profiling\",\n  \"status\": \"success\",\n  \"files\": [\n    {\"path\": \".../report.md\", \"role\": \"report\"}\n  ],\n  \"metrics\": {\"n_rows\": 10000, \"n_cols\": 28, \"n_missing_cols\": 5},\n  \"summary\": \"中等规模数据集（10,000行），28 个字段，数值型为主，发现 2 个高缺失字段\"\n}\n```\n\n---\n\n## 报告输出结构\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 文件名、格式、大小、行列数、字段类型分布饼图 |\n| 2. 字段详情清单 | 每个字段的类型、缺失率、唯一值数、示例值 |\n| 3. 数值特征分析 | 描述性统计（均值/标准差/分位数/偏度/峰度）+ histogram 分布图 |\n| 4. 类别特征分析 | 唯一值数、Top 值占比、集中度 + bar chart |\n| 5. 缺失值分析 | 缺失率排名表格 + 柱状图 |\n| 6. 数据质量 | 重复行、空列、常量列、高缺失列 |\n| 7. 样本预览 | 前 5 行数据展示 |\n\n---\n\n## 自适应展示\n\n当数值/类别特征数量超过 20 个时，统计表格和图表只展示前 20 个，避免报告过长。\n\n---\n\n## 与其他 Skill 的关系\n\n| Skill | 用途区别 |\n|-------|----------|\n| **data-profiling** | 快速了解数据轮廓，不做深度分析 |\n| feature-analysis | 深度特征分析（IV、PSI、相关性等），需要目标变量 |\n| xgb-modeling | 建模全流程，需要目标变量 |\n\n**建议流程**：\n1. 先用 `data-profiling` 了解数据基本情况\n2. 根据洞察结果，决定是否需要 `feature-analysis` 或 `xgb-modeling`\n\n---\n\n## 注意事项\n\n1. **无需目标变量**：本 Skill 不需要提供目标变量，纯数据描述\n2. **快速轻量**：执行速度快，适合大数据集的快速扫描\n3. **自动类型推断**：识别数值型、类别型、布尔型、时间型、文本型字段\n\n\n---\n\n## Module 2: 单变量分析\n\n# 单变量分析 (portable)\n\n基于 `scripts/analyzer.py` 主脚本，对指定特征进行单变量级别的分布分析或预测力评估。\n\n---\n\n## 功能定位\n\n| 模式 | 目标变量 | 核心功能 | 使用场景 |\n|------|:--------:|----------|----------|\n| 数据探索模式 | ❌ 无 | 分布分析、交叉分布 | 刚上传数据、初步了解特征分布 |\n| 特征筛选模式 | ✅ 有 | IV值、分箱表、筛选建议 | 建模前快速筛选特征 |\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--features` | ✅ | - | 待分析特征列名，逗号分隔，或 `\"all\"` |\n| `--target` | | - | 目标变量列名（可选，有则进入筛选模式） |\n| `--exclude_cols` | | - | 排除的列，逗号分隔 |\n| `--binning_method` | | `quantile` | 分箱方式：`quantile`(等频) / `distance`(等距) |\n| `--n_bins` | | `10` | 分箱数量 |\n| `--cross` | | - | 交叉分布的两个特征，逗号分隔 |\n| `--output` | | 自动生成 | 报告输出名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n### 数据探索模式（无目标变量）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 特征筛选模式（有目标变量）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 交叉分布分析\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：数据探索（无目标变量）\n\n查看单特征分布：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n指定等距分箱：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：交叉分布分析\n\n查看两个特征的联合分布：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：特征筛选（有目标变量）\n\n计算 IV 值，评估特征预测力：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 报告输出结构\n\n### 数据探索模式（无目标变量）\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、分析特征数 |\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\n| 3. 分布分析 | 各特征的分箱分布表（区间、样本数、占比）+ 柱状分布图 |\n| 4. 交叉分布 | 两特征联合分布表（可选） |\n| 5. 数据质量标记 | 缺失率过高、低基数等问题标记 |\n\n### 特征筛选模式（有目标变量）\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、正样本率、分析特征数 |\n| 2. 基础统计 | 各特征的均值、中位数、缺失率、基数等 |\n| 3. IV值分析 | 各特征 IV 值排名及分箱明细表 |\n| 4. 数据质量标记 | 缺失率过高、低基数等问题标记 |\n| 5. 筛选建议 | 建议保留/剔除的特征清单 |\n\n---\n\n## 分箱说明\n\n### 等频分箱（quantile）\n\n按数据分位数划分，每箱样本量大致相等。适合分布不均匀的数据。\n\n### 等距分箱（distance）\n\n按数值区间等间隔划分。适合分布均匀的数据。\n\n### 特殊值处理\n\n- **缺失值**：单独一箱，标记为 `Missing`\n- **零值**：当零值占比 > 5% 时单独一箱\n- **负数**：当存在负数时单独处理\n\n---\n\n## 输出示例\n\n### 分布分析表\n\n```\n特征: age | 分箱方式: 等频 | 分箱数: 10\n\n| 区间          | 样本数  | 占比    | 累计占比 |\n|---------------|---------|---------|----------|\n| Missing       | 156     | 1.56%   | 1.56%    |\n| [18, 23)      | 984     | 9.84%   | 11.40%   |\n| [23, 28)      | 1,012   | 10.12%  | 21.52%   |\n| ...           | ...     | ...     | ...      |\n```\n\n### 交叉分布表\n\n```\nage × income 交叉分布\n\n|              | 低收入   | 中收入   | 高收入   | 合计    |\n|--------------|----------|----------|----------|---------|\n| [18, 25)     | 800      | 300      | 134      | 1,234   |\n| [25, 35)     | 500      | 1,200    | 756      | 2,456   |\n| [35, 45)     | 200      | 800      | 1,000    | 2,000   |\n| ...          | ...      | ...      | ...      | ...     |\n```\n\n### IV 分箱明细表（有目标变量）\n\n```\n特征: age | IV = 0.1523\n\n| 区间          | 样本数  | 正样本数 | 正样本率 | WoE     | IV      |\n|---------------|---------|----------|----------|---------|---------|\n| [18, 23)      | 984     | 156      | 15.85%   | 0.32    | 0.0234  |\n| [23, 28)      | 1,012   | 98       | 9.68%    | -0.15   | 0.0089  |\n| ...           | ...     | ...      | ...      | ...     | ...     |\n```\n\n---\n\n## 与 feature-analysis 的关系\n\n| 维度 | univariate-analysis | feature-analysis |\n|------|---------------------|------------------|\n| 定位 | 单特征快速分析 | 全量特征深度分析 |\n| 目标变量 | 可选 | 必须 |\n| 相关性分析 | ❌ | ✅ |\n| PSI稳定性 | ❌ | ✅ |\n| 方案推荐 | ❌ | ✅ 四套方案 |\n| 典型用法 | 建模前快速筛选 | 特征工程完整报告 |\n\n**推荐工作流**：`univariate-analysis`（快速筛选）→ `feature-analysis`（深度分析）\n\n---\n\n## 注意事项\n\n1. **特征数量**：建议单次分析不超过 50 个特征，大量特征请分批处理\n2. **分箱数量**：默认 10 箱，可根据数据量调整（数据量少时建议 5 箱）\n3. **交叉分布**：仅支持两个特征的交叉，建议选择离散或已分箱的特征\n4. **IV 计算**：需要目标变量为 0/1 二分类\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 3: 特征深度分析\n\n# 建模特征分析报告 (portable)\n\n基于 `scripts/analyzer.py` 主脚本，对数据集特征进行全面分析并生成 Markdown 报告。\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--baseline_filter` | | - | PSI 基准数据条件（pandas query） |\n| `--comparison_filter` | | - | PSI 对比数据条件（pandas query） |\n| `--top_n` | | `10` | 输出 IV 排名前 N 的特征分箱明细（默认 10） |\n| `--specified_features` | | - | 指定特征分箱明细，逗号分隔 |\n| `--output` | | `feature_analysis_report.md` | 报告输出名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：基础分析（不含 PSI）\n\n适用于无时间维度的数据集：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：完整分析（含 PSI）\n\n适用于有时间切分条件的数据集：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：单变量深度分析\n\n输出 IV Top N 或指定特征的完整分箱明细表：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 报告输出结构\n\n生成的 `feature_analysis_report.md` 包含以下章节：\n\n| 章节 | 内容 |\n|------|------|\n| 1. 数据概览 | 样本量、特征数、正样本率 |\n| 2. 基础统计分析 | 各特征的均值、标准差、缺失率、偏度、峰度等 |\n| 3. IV值分析 | IV 排名 Top 20、IV 分布统计 |\n| 4. PSI稳定性分析 | PSI 排名、不稳定特征清单 |\n| 5. 相关性分析 | 高相关特征对、共线性处理建议 |\n| 6. 综合建议 | 推荐保留/移除特征 |\n| 7. 建模特征方案 | 四套特征筛选方案（全量/去共线性/高IV/稳定性优先） |\n| 8. 单变量深度分析 | 默认输出 Top 10 特征分箱明细，可通过 `--top_n` 调整 |\n\n---\n\n## 特征筛选方案说明\n\n报告自动生成四套建模特征方案：\n\n| 方案 | 筛选条件 | 适用场景 |\n|------|----------|----------|\n| 方案一：全量入模 | 基础合格池（IV>=0.02, PSI<0.25, 缺失率<50%） | XGBoost/LightGBM 等树模型 |\n| 方案二：去共线性标准 | 基础池 + 贪心去 \\|r\\|>=0.7 | 逻辑回归、评分卡 |\n| 方案三：高预测力精选 | IV>=0.1 + 去共线性 | 特征受限、可解释性要求高 |\n| 方案四：稳定性优先 | PSI<0.1 + 去共线性 | 线上部署、高稳定性要求 |\n\n---\n\n## 与其他 Skill 的关系\n\n| Skill | 用途区别 |\n|-------|----------|\n| **feature-analysis** | 全量特征深度分析+方案推荐，需要目标变量 |\n| data-profiling | 快速了解数据轮廓，不做深度分析 |\n| univariate-analysis | 少量特征快速分析，不含全量相关性和方案推荐 |\n\n**建议流程**：`data-profiling`（快速扫描）→ `feature-analysis`（深度分析+方案推荐）→ `xgb-modeling`（建模）\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为数值型\n2. **PSI 分析**：需同时提供 `baseline_filter` 和 `comparison_filter`，否则跳过\n3. **相关性**：仅对数值型特征有效，非数值列自动跳过\n4. **大数据集**：报告默认展示 IV Top 20，完整数据在文件中\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 4: LR评分卡建模\n\n# LR 评分卡建模 (portable)\n\n基于 WoE (Weight of Evidence) 编码 + Logistic Regression 进行二分类评分卡建模。\n\n**核心流程**：原始特征 → WoE 最优分箱编码 → LR 训练 → 评分卡转换\n\n**适用场景**：\n- 风控评分卡开发（标准 A/B/C 卡）\n- 需要强可解释性的业务场景\n- 监管合规要求模型白盒化\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动按 IV 筛选 |\n| `--max_n_bins` | | `8` | WoE 分箱最大箱数 |\n| `--min_bin_size` | | `0.05` | 最小分箱比例 |\n| `--iv_threshold` | | `0.02` | IV 筛选阈值（低于此值的特征排除） |\n| `--regularization` | | `l2` | 正则化类型：`l1` / `l2` / `elasticnet` |\n| `--C` | | `1.0` | 正则化强度（越小正则化越强） |\n| `--max_iter` | | `1000` | LR 最大迭代次数 |\n| `--base_score` | | `600` | 评分卡基础分 |\n| `--pdo` | | `50` | 评分卡 PDO（分数翻倍点） |\n| `--base_odds` | | `50.0` | 基础 Odds（好坏比） |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--report_output` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n指定特征建模：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：默认参数快速建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：指定特征建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：自定义评分卡参数\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出产物\n\n1. **建模报告**（Markdown）— 含数据切分、WoE分箱表、LR系数表、评分卡转换表、三段式评估指标、稳定性分析\n2. **模型文件**（joblib）— LR 模型 + WoE 编码器序列化\n3. **评分卡表**（JSON）— 可直接用于部署的分箱-分数映射\n4. **result.json** — 结构化产物清单\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | lr-modeling | xgb-modeling | dnn-modeling |\n|------|-------------|--------------|-------------|\n| 算法 | Logistic Regression | XGBoost | MLP (PyTorch) |\n| 特征编码 | WoE 分箱编码 | 原始特征直接输入 | StandardScaler |\n| 可解释性 | 白盒（系数 × WoE = 贡献） | 黑盒（需 SHAP 解释） | 弱 |\n| 非线性能力 | 弱（仅通过分箱引入） | 强（树结构天然支持） | 强（多层激活） |\n| 适用场景 | 评分卡 / 合规 / 白盒 | 高精度 / 特征交互 | 高维复杂交互 |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis` / `univariate-analysis`（特征筛选）\n- **后续**：`lr-tuning`（调参优化）、`model-comparison`（多算法对比）\n- **平行**：与 `xgb-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为 0/1 二分类\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\n3. **特征筛选**：不传 `--features` 时自动按 IV 筛选（阈值 `--iv_threshold`）\n4. **WoE 分箱**：使用 `optbinning` 做最优分箱，每特征最多 `--max_n_bins` 箱\n5. **评分卡公式**：`Score = base_score - factor × ln(odds)`，其中 `factor = pdo / ln(2)`\n6. **不提供调参**：需要调参请切 `lr-tuning`（搜索 WoE 分箱 + LR 正则化参数）\n7. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n\n\n---\n\n## Module 5: LR评分卡调参\n\n# LR 评分卡参数调优 (portable)\n\nLR 评分卡调参的**唯一入口**，基于 `_vendor/tuning/lr_engine.LRTuningEngine`。\n\n核心设计：WoE 分箱参数与 LR 正则化参数**联合搜索**，确保最优组合。\n\n---\n\n## 调优流程\n\n```\n基线 LR 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索 → 最优参数 → 迭代\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下LR\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径 |\n| `--target` / `-t` | ✅ | - | 目标变量列名 |\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\n| `--oot_ratio` | | `0.20` | OOT 占比 |\n| `--val_ratio` | | `0.25` | Val 占比 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列 |\n| `--max_n_bins` | | `8` | 当前 WoE 分箱数 |\n| `--iv_threshold` | | `0.02` | 当前 IV 阈值 |\n| `--C` | | `1.0` | 当前正则化强度倒数 |\n| `--regularization` | | `l2` | 正则化类型 |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 自动调优模式（flag） |\n| `--metric` | | `auc` | 评估指标 |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置路径 |\n\n---\n\n## 搜索空间\n\n| 参数 | 类型 | 范围 | 说明 |\n|------|------|------|------|\n| max_n_bins | int | 3-15 | WoE 分箱数（越大越精细） |\n| iv_threshold | float(log) | 0.005-0.10 | IV 筛选阈值（越低入模特征越多） |\n| C | float(log) | 0.01-100 | 正则化强度倒数（越大正则化越弱） |\n| regularization | categorical | l1/l2/elasticnet | 正则化类型 |\n\n---\n\n## 诊断驱动策略\n\n| 诊断 | C | iv_threshold | max_n_bins |\n|------|---|--------------|------------|\n| 过拟合 | ↓ 收紧 | ↑ 抬高（减少特征） | ↓ 减少 |\n| 欠拟合 | ↑ 放松 | ↓ 降低（更多特征） | ↑ 增大 |\n| 拟合良好 | ±微调 | ±微调 | ±微调 |\n\n---\n\n## 执行方式\n\n### 交互式模式（单轮）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### AUTO 模式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 调优策略\n\n### 策略1：抗过拟合\n\n**适用条件**：Train-OOT Gap > 0.05\n\n**调整方向**：\n- `C`: 当前值 × 0.5（收紧正则化）\n- `iv_threshold`: 当前值 × 1.5（减少入模特征）\n- `max_n_bins`: 当前值 - 1（降低分箱精细度）\n\n### 策略2：增强拟合\n\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\n\n**调整方向**：\n- `C`: 当前值 × 2（放松正则化）\n- `iv_threshold`: 当前值 × 0.5（增加入模特征）\n- `max_n_bins`: 当前值 + 2（提升分箱精细度）\n\n### 策略3：精细微调\n\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\n\n**调整方向**：\n- `C`: 小幅调整 ±20%\n- `max_n_bins`: 微调 ±1\n- 其他参数保持不变\n\n### 策略4：收敛判定\n\n**条件**：连续2轮 OOT 指标提升 < 0.001\n\n**行为**：停止调优，输出最终结果\n\n---\n\n## 输出格式规范\n\n每轮调优结束后，**必须**输出以下结构化信息：\n\n```markdown\n### 第 N 轮 LR 调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| C | 1.0 | 0.5 | 收紧正则化 |\n| iv_threshold | 0.02 | 0.03 | 减少入模特征 |\n| max_n_bins | 8 | 6 | 降低过拟合 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调 C 值，或接受当前结果\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `lr-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\n| `model-comparison` | 多算法对比 | 后续：可与 XGB/DNN 做公平对比 |\n| `xgb-tuning` | XGBoost 调参 | 平行：同数据不同算法的调参 |\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **联合搜索**：WoE 分箱与 LR 参数联合优化，确保最优组合\n3. **收敛判定**：连续2轮提升不足 0.001 自动停止\n4. **最大轮数**：默认最多 5 轮\n5. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 6: XGBoost建模\n\n# XGBoost 建模 (portable)\n\n基于 XGBoost 进行二分类建模，支持自动特征筛选、多方案对比、稳定性分析。可运行在任何 Python 环境，无平台耦合。调参请用 [`xgb-tuning`](./xgb-tuning/SKILL.md)。\n\n**核心流程**：数据加载 → 特征筛选（四大算子）→ 多方案对比 → 最优方案训练 → 三段式评估 → 稳定性分析 → 报告生成\n\n## 参数\n\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`modeling`）。\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 未传 `--val_filter` 时从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定单套特征，逗号分隔 |\n| `--feature_sets` | | - | JSON 多方案；**复杂嵌套优先放到 `--config` 的 `feature_sets` 字段** |\n| `--feature_scheme` | | - | 指定单套自动筛选方案：`full`/`decorr`/`high_iv`/`stable`；不传或传空则走 `--auto_select` 全量对比 |\n| `--auto_select` | | `true` | 自动特征筛选（四大算子全量对比；指定 `--feature_scheme` 时忽略本参数） |\n| `--baseline_filter` | | 同 train | PSI 基准条件 |\n| `--comparison_filter` | | 同 oot | PSI 对比条件 |\n| `--sample_strategy` | | `auto_weight` | `auto_weight` / `undersample` / `none` |\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\n| `--report_output` | | `xgb_modeling_report` | 报告基名 |\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\n| `--config` | | - | JSON 配置文件路径（命令行 > config > 默认） |\n\n> **复杂嵌套参数（如 `feature_sets`）不要用命令行拼转义 JSON**，改走 `--config config.json` 结构化通道。\n\n---\n\n## 执行方式\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n复杂 `feature_sets` 通过 `--config` 传入：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n执行结束后 `<output_dir>/` 下生成：\n\n- `xgb_modeling_report.md` — 建模报告（数据概览、方案对比、最优方案、稳定性分析…）\n- `models/<model_name>.json` — XGBoost 模型文件\n- `models/<model_name>_meta.json` — 模型元数据（特征列表等）\n- `models/<model_name>_card.json` — ModelCard\n- `result.json` — 结构化产物清单（见 PROTOCOL.md）\n\nstdout 末行打印 `result.json` 绝对路径，Agent 读这个文件即可获取全部产物路径与 metrics。\n\n## 产物示例（result.json）\n\n```json\n{\n  \"skill\": \"xgb-modeling\",\n  \"status\": \"success\",\n  \"files\": [\n    {\"path\": \".../xgb_modeling_report.md\", \"role\": \"report\"},\n    {\"path\": \".../models/xgb_model_20260512_143000.json\", \"role\": \"model\",\n     \"meta\": {\"feature_count\": 8, \"scheme_name\": \"去共线性\", \"model_type\": \"xgboost\"}},\n    {\"path\": \".../models/xgb_model_20260512_143000_meta.json\", \"role\": \"meta\"}\n  ],\n  \"metrics\": {\n    \"oot_auc\": 0.7823, \"oot_ks\": 0.4215,\n    \"auc_gap\": 0.0214, \"ks_gap\": 0.0312,\n    \"n_features\": 8, \"overall_score_psi\": 0.0423\n  },\n  \"summary\": \"xgb-modeling 完成：最优方案「去共线性」，OOT AUC=0.7823，OOT KS=0.4215，特征数=8，Gap=0.0214\"\n}\n```\n\n## 跨 skill 串联\n\n下游（如 `model-explanation`）通过 `--model_path` 传入上游 result.json 中 `role=model` 的文件路径：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：自动特征筛选建模\n\n不指定特征，自动执行四大算子生成四套方案对比：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：指定特征建模\n\n使用指定的特征列表：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二-b：指定单套自动筛选方案\n\n只跑一种筛选方案（如\"去共线性\"）：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n可选值：`full`(全量入模) / `decorr`(去共线性) / `high_iv`(高预测力) / `stable`(稳定性优先)\n\n### 场景三：多方案对比\n\n传入多套特征方案（**优先用 `--config`**，避免命令行拼 JSON 转义）：\n\n```json\n{\n  \"feature_sets\": {\n    \"方案A\": [\"f1\", \"f2\"],\n    \"方案B\": [\"f1\", \"f3\"]\n  }\n}\n```\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景四：保存模型\n\n训练完成后保存最优模型，供后续 model-explanation 使用：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n模型自动保存，输出：\n- 模型文件：`<output_dir>/models/my_best_model.json`\n- 元数据文件：`<output_dir>/models/my_best_model_meta.json`（含特征列表、参数等）\n\n---\n\n## 报告结构\n\n| 章节 | 内容 |\n|------|------|\n| 执行摘要 | 4 行业务结论：最优方案、Gap 状态、PSI 状态、头部特征风险 |\n| 1. 数据概览 | 样本量、正样本率（Train/Test/OOT） |\n| 2. 特征方案对比 | 各方案 AUC/KS/Gap 横向对比 |\n| 3. 最优方案详情 | AUC/KS/Gini 指标、模型分数 IV 最优分箱、Lift 表、特征重要性、BCR @ Top5/10/20/30%、Brier Score + 校准曲线 |\n| 4. 稳定性分析 | 按月 AUC/KS（含 95% Bootstrap 置信区间）、Mann-Kendall 趋势检验、分数 PSI |\n| 5. 最终模型总结 | 特征列表、综合表现 |\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | xgb-modeling | lr-modeling | dnn-modeling |\n|------|-------------|-------------|--------------|\n| 算法 | XGBoost | Logistic Regression + WoE | MLP (PyTorch) |\n| 特征处理 | 原始值直接输入 | WoE 分箱编码 | StandardScaler |\n| 非线性能力 | 强（树结构） | 弱（仅通过分箱引入） | 强（多层激活） |\n| 可解释性 | 中（需 SHAP） | 强（系数 × WoE） | 弱 |\n| 训练速度 | 快 | 很快 | 慢 |\n| 适用数据量 | 任意 | 任意 | >10k |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\n- **后续**：`xgb-tuning`（调参优化）、`model-explanation`（SHAP 解释）\n- **平行**：与 `lr-modeling` / `dnn-modeling` 可做横向对比（同数据不同算法）\n\n---\n\n## 依赖\n\n见 `requirements.txt`（核心：`xgboost`, `scikit-learn`, `optbinning`）。\n\n---\n\n## 注意事项\n\n1. **目标变量**：必须为 0/1 二分类\n2. **时间切分**：建议按时间切分，确保 OOT 为未来数据\n3. **自动特征筛选**：需要数据同时满足 IV、PSI、缺失率条件\n4. **样本策略**：强不均衡场景（正样本率 < 2%）建议 `--sample_strategy undersample`，一般场景用默认 `auto_weight`\n5. **不提供调参**：需要调参请切 xgb-tuning（基于 Optuna TPE + 诊断驱动的约束搜索）\n6. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n7. **稳定性分析**：基准月份取自训练集时间段；Bootstrap CI 需样本量 >= 100 才计算\n8. **BCR/校准曲线**：BCR（Bad Capture Rate）反映拒绝 Top K% 人群能捕获多少坏客户；校准曲线反映模型概率输出可信度\n\n\n---\n\n## Module 7: XGBoost调参\n\n# XGBoost 参数调优 (portable)\n\nXGBoost 调参的**唯一入口**，基于 `_vendor/tuning_engine.TuningEngine`。核心设计：\n\n1. **基线参数智能推断** — 根据数据特征推荐合理起点\n2. **模型状态诊断** — 过拟合/欠拟合判定（`diagnose_model`）\n3. **约束式贝叶斯搜索** — 诊断结论定向收缩 Optuna 搜索空间\n4. **用户知识融合** — 接受用户领域经验调整策略\n\n---\n\n## 调优流程\n\n```\n用户需求 → 数据特征分析 → LLM 推断基线参数 → 训练评估 → 诊断分析 → 参数调整 → 迭代直到满意\n                                         ↑                                        ↓\n                                         └───────────── 用户反馈/知识输入 ─────────────┘\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下\"/\"优化一下\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\"/\"一直调到收敛\" | Agent 自动迭代直到收敛，每轮输出进度 |\n\n**默认模式**: 交互式（更安全，用户可控）\n\n### 交互式模式行为规范\n\n1. **单轮调优后必须暂停**，输出结构化诊断报告，等待用户反馈\n2. 用户可能的反馈：\n   - \"继续\" / \"再调一轮\" → 执行下一轮\n   - \"Gap 还是大\" / \"再保守点\" → 调整策略后执行\n   - \"可以了\" / \"停\" → 生成最终报告\n3. **禁止**在交互式模式下连续执行多轮调优\n\n### AUTO 模式行为规范\n\n1. 每轮调优后同样输出完整的结构化诊断报告（格式同交互式模式），然后自动进入下一轮\n2. 收敛条件：Gap < 0.03 或 连续2轮提升 < 0.002\n3. 收敛后自动生成最终报告\n\n---\n\n## 参数说明\n\n> 通用参数 spec 定义在 `_vendor/xgb_cli.py`（domain=`tuning`）。\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--features` / `-f` | ✅ | - | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件（已全面替代旧 `--test_filter`） |\n| `--oot_filter` | | 按时间切出 | OOT 测试集条件 |\n| `--oot_ratio` / `--val_ratio` | | `0.20` / `0.25` | 自动切分比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--params` / `-p` | | 默认参数 | 当前参数（JSON；**推荐放 `--config` 的 `params` 字段**） |\n| `--baseline` / `-b` | | - | 基线参数（JSON；**推荐放 `--config` 的 `baseline` 字段**） |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--prev_val_metric` | | - | 上一轮 val 指标（用于收敛判断） |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 启用自动调优模式（flag） |\n| `--metric` | | `ks` | 评估指标（`auc`/`ks`） |\n| `--model_name` | | 自动生成 | 模型名称（不含扩展名） |\n| `--report_output` / `-o` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | **portable 独有**：产物输出目录 |\n| `--warm_start` | | - | WarmStartBundle JSON 字符串或文件路径 |\n| `--config` | | - | JSON 配置文件路径（由 `--config` 自动注入，一般无需手传） |\n\n> **`--params` / `--baseline` 传复杂 JSON 时优先放 `--config`**，避免命令行双引号转义问题。\n\n---\n\n## 基线参数智能推断\n\nAgent 应根据 tuner.py 输出的**数据摘要**推断合理的基线参数，而非使用固定默认值。\n\n### 数据摘要字段\n\ntuner.py 会输出以下数据特征供 Agent 分析：\n\n| 字段 | 说明 | 影响参数 |\n|------|------|----------|\n| `train_samples` | 训练集样本量 | max_depth, n_estimators |\n| `oot_samples` | OOT 样本量 | subsample |\n| `n_features` | 特征数量 | colsample_bytree |\n| `pos_rate` | 正样本率 | min_child_weight, scale_pos_weight |\n\n### 推断规则\n\n#### 样本量与树深度\n\n| 训练集样本量 | max_depth 建议 | 理由 |\n|----------------|------------------|------|\n| < 5万 | 3 | 样本少，低复杂度防过拟合 |\n| 5万 - 20万 | 4 | 中等样本，适中复杂度 |\n| 20万 - 100万 | 5 | 样本充足，可稍复杂 |\n| > 100万 | 5-6 | 大样本支撑更高复杂度 |\n\n#### 正样本率与叶节点\n\n| 正样本率 | min_child_weight 建议 | 理由 |\n|----------|--------------------------|------|\n| < 1% | 300+ | 正样本极少，需更大叶节点防止噎声 |\n| 1% - 5% | 100-200 | 不平衡，适当约束 |\n| 5% - 20% | 50-100 | 较平衡，标准约束 |\n| > 20% | 20-50 | 平衡数据，可稍宽松 |\n\n#### 特征数与采样率\n\n| 特征数 | colsample_bytree 建议 | 理由 |\n|----------|---------------------------|------|\n| < 20 | 0.9-1.0 | 特征少，充分利用 |\n| 20 - 50 | 0.7-0.9 | 中等特征，适度采样 |\n| > 50 | 0.5-0.7 | 特征多，增加随机性 |\n\n### 推断示例\n\n```\n数据摘要:\n  训练集: 150,000 样本\n  OOT: 50,000 样本\n  特征数: 35 个\n  正样本率: 2.5%\n\nAgent 推断基线参数:\n  max_depth: 4        <- 样本量中等\n  min_child_weight: 150  <- 正样本率低\n  colsample_bytree: 0.8  <- 特征数中等\n  reg_alpha: 0.3      <- 特征多，适当正则\n  reg_lambda: 1.0\n  learning_rate: 0.05\n  n_estimators: 500\n  subsample: 0.8\n```\n\n---\n\n## 场景化策略\n\nAgent 应根据用户提供的**场景信息**调整调参策略。\n\n### 金融风控场景\n\n**特点**: 模型长期使用，稳定性优先\n\n| 参数 | 建议值 | 理由 |\n|------|--------|------|\n| max_depth | 3-4 | 低复杂度，抗过拟合 |\n| min_child_weight | 150+ | 叶节点要稳定 |\n| reg_alpha | 0.3-0.5 | 强正则化 |\n| reg_lambda | 1.0-2.0 | 强正则化 |\n\n**调参优先级**: Gap 控制 > KS 提升\n\n**终止条件**: Gap < 0.02，即使 KS 略低也接受\n\n### 营销响应场景\n\n**特点**: 短期使用，效果优先\n\n| 参数 | 建议值 | 理由 |\n|------|--------|------|\n| max_depth | 4-5 | 允许较高复杂度 |\n| min_child_weight | 50-100 | 可以稍宽松 |\n| reg_alpha | 0.1-0.2 | 适中正则 |\n\n**调参优先级**: KS 提升 > Gap 控制\n\n**终止条件**: KS 达标，Gap < 0.05 可接受\n\n### 平衡场景（默认）\n\n**特点**: 兼顾效果和稳定性\n\n| 参数 | 建议值 |\n|------|--------|\n| max_depth | 4-5 |\n| min_child_weight | 100 |\n| reg_alpha | 0.1-0.3 |\n| reg_lambda | 0.5-1.0 |\n\n**终止条件**: KS >= 0.30 且 Gap < 0.03\n\n---\n\n## 执行方式\n\n复杂参数（`params`/`baseline`）建议通过 `--config` JSON 文件传入：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n`config.json` 示例：\n\n```json\n{\n  \"params\": {\"max_depth\": 4, \"learning_rate\": 0.05, \"n_estimators\": 500},\n  \"baseline\": {\"max_depth\": 4, \"learning_rate\": 0.1}\n}\n```\n\n### 交互式模式（单轮调优）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### AUTO 模式（自动调优循环）\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n脚本通过单出口协议 `[RESULT:{json}]` 输出模型、报告、state 更新；**LLM 不要复述脚本已产出的图表**。\n\n---\n\n## 诊断知识库\n\n### 模型状态诊断\n\n| 诊断结果 | 判定条件 | 说明 |\n|----------|----------|------|\n| **过拟合** | Train-OOT Gap > 0.05 | 训练集表现远超测试集，模型记忆训练数据 |\n| **轻微过拟合** | Gap ∈ [0.04, 0.05] | 存在一定过拟合风险，需关注 |\n| **拟合良好** | Gap ∈ [0.02, 0.04] | 模型泛化能力正常 |\n| **欠拟合** | OOT AUC < 0.55 且 Gap < 0.02 | 模型拟合能力不足 |\n| **收敛** | 连续2轮提升 < 0.001 | 优化空间有限，可停止 |\n\n### 过拟合信号\n\n- Train AUC 持续上升，OOT AUC 下降或停滞\n- Train-OOT Gap 逐轮增大\n- 验证集效果不稳定\n\n### 欠拟合信号\n\n- Train AUC 和 OOT AUC 都较低\n- 增加训练轮数后效果持续提升\n- Gap 很小但整体 AUC 不足\n\n---\n\n## XGBoost 参数语义\n\n| 参数 | 作用 | 取值范围 | 过拟合时 | 欠拟合时 |\n|------|------|----------|----------|----------|\n| `max_depth` | 树深度，控制模型复杂度 | 2-8 | ↓ 减小 | ↑ 增大 |\n| `min_child_weight` | 叶节点最小样本权重 | 10-300 | ↑ 增大 | ↓ 减小 |\n| `reg_alpha` | L1 正则化强度 | 0-2.0 | ↑ 增大 | ↓ 减小 |\n| `reg_lambda` | L2 正则化强度 | 0.1-10 | ↑ 增大 | ↓ 减小 |\n| `subsample` | 样本采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\n| `colsample_bytree` | 特征采样率 | 0.5-1.0 | ↓ 减小 | ↑ 增大 |\n| `learning_rate` | 学习率 | 0.005-0.15 | ↓ 减小 | ↑ 增大 |\n| `n_estimators` | 树数量 | 100-1000 | ↓ 减小 | ↑ 增大 |\n\n### 参数调整优先级\n\n**过拟合场景**（按优先级）：\n1. 增大 `reg_alpha` / `reg_lambda`（最直接）\n2. 减小 `max_depth`（控制复杂度）\n3. 增大 `min_child_weight`（限制分裂）\n4. 减小 `subsample` / `colsample_bytree`（增加随机性）\n\n**欠拟合场景**（按优先级）：\n1. 增大 `max_depth`（增加复杂度）\n2. 增加 `n_estimators`（更多迭代）\n3. 减小正则化参数\n4. 适当增大 `learning_rate`\n\n---\n\n## 用户指令理解\n\n| 用户表达 | 参数映射 | 调整幅度 |\n|----------|----------|----------|\n| \"正则化大一点\" | `reg_alpha` ↑ 或 `reg_lambda` ↑ | +50%~100% |\n| \"正则化小一点\" | `reg_alpha` ↓ 或 `reg_lambda` ↓ | -30%~50% |\n| \"树深度深一点\" | `max_depth` ↑ | +1 |\n| \"树深度浅一点\" | `max_depth` ↓ | -1 |\n| \"学习率低一些\" | `learning_rate` ↓ | -30%~50% |\n| \"学习率高一些\" | `learning_rate` ↑ | +30%~50% |\n| \"多训几轮\" | `n_estimators` ↑ | +50%~100% |\n| \"少训几轮\" | `n_estimators` ↓ | -30%~50% |\n| \"防过拟合\" | 综合：正则化↑, 深度↓, subsample↓ | 组合调整 |\n| \"拟合强一点\" | 综合：深度↑, 正则化↓ | 组合调整 |\n| \"更激进一点\" | `learning_rate` ↑, `max_depth` ↑ | 较大幅度 |\n| \"更保守一点\" | `learning_rate` ↓, 正则化↑ | 较小幅度 |\n| \"继续自动调优\" | 从当前参数启动新一轮 AUTO | - |\n| \"就用这个\" / \"确认\" | 结束调优，输出最终配置 | - |\n\n---\n\n## 调优策略\n\n### 策略1：抗过拟合\n\n**适用条件**：Gap > 0.05\n\n**调整方向**：\n- `reg_alpha`: 当前值 × 2（如 0.1 → 0.2）\n- `reg_lambda`: 当前值 × 1.5\n- `max_depth`: 当前值 - 1（最小为 2）\n- `min_child_weight`: 当前值 × 1.5\n\n### 策略2：增强拟合\n\n**适用条件**：OOT AUC < 0.58 且 Gap < 0.03\n\n**调整方向**：\n- `max_depth`: 当前值 + 1（最大为 8）\n- `n_estimators`: 当前值 × 1.5\n- `reg_alpha`: 当前值 × 0.5\n- `learning_rate`: 当前值 × 1.2\n\n### 策略3：精细微调\n\n**适用条件**：Gap ∈ [0.03, 0.05]，模型状态良好\n\n**调整方向**：\n- `learning_rate`: 小幅调整 ±20%\n- `subsample`: 小幅调整 ±10%\n- 其他参数保持不变\n\n### 策略4：收敛判定\n\n**条件**：连续2轮 OOT 指标提升 < 0.001\n\n**行为**：停止调优，输出最终结果\n\n### 策略 5：约束空间下的定向搜索\n\ntuner.py 在 AUTO 模式下每轮调用 `TuningEngine.run_round(diagnosis, tried_directions)` 在诊断约束空间内跑 5 个 Optuna trial，直接取本轮最优参数进入下轮。`tried_directions` 会自动记录每轮参数增减方向及效果，若某个方向未改善，下一轮会自动冻结该维度。Agent **无需手动追踪**，但在每轮报告中应说明\"本轮诊断为 XX → 搜索空间重点是 XX\"，帮助用户理解调优推演。\n\n---\n\n## 输出格式规范\n\n> **核心原则：每轮必须完整输出**\n> 禁止只输出最终调参报告。每一轮调参完成后，不论交互式还是 AUTO 模式，**必须**立即输出该轮的完整诊断分析过程和结果，包括：参数变化及调整理由、训练指标详情、与上一轮的对比、诊断结论、下一步建议。用户需要看到每一轮的诊断推理过程，而非仅看到最终参数。\n\n### 单轮调优输出（每轮必须使用，交互式和 AUTO 模式均适用）\n\n每轮调优结束后，**必须**输出以下结构化信息：\n\n```markdown\n### 第 N 轮调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| max_depth | 4 | 3 | 降低过拟合 |\n| reg_alpha | 0.1 | 0.3 | 增强正则化 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\n| Gap (KS) | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调正则化，或接受当前结果\n```\n\n### 最终报告（调优结束时生成，不能替代逐轮输出）\n\n当用户确认结束或 AUTO 模式收敛时，在逐轮输出完毕后，额外生成完整汇总报告：\n\n> **注意**：最终报告是对逐轮输出的汇总补充，不能替代逐轮输出。即使是 AUTO 模式，也必须先逐轮输出再汇总。\n\n```markdown\n# XGBoost 调参报告\n\n## 1. 调优概览\n\n| 项目 | 内容 |\n|------|------|\n| 执行模式 | 交互式 / AUTO |\n| 总轮数 | 3 |\n| 收敛原因 | Gap < 0.03 达标 / 用户确认停止 |\n\n## 2. 调参推演记录\n\n| 轮次 | 参数 (depth/eta/reg) | OOT KS | OOT AUC | Gap (KS) | 诊断 | 调整决策 |\n|------|---------------------|--------|---------|----------|------|----------|\n| 基线 | 4 / 0.1 / 0.1 | 0.16 | 0.71 | 0.08 | 过拟合 | 降低 depth |\n| R1 | 3 / 0.1 / 0.2 | 0.17 | 0.72 | 0.05 | 轻微过拟合 | 增强正则化 |\n| R2 | 3 / 0.08 / 0.5 | 0.18 | 0.73 | 0.03 | 良好 | 收敛停止 |\n\n## 3. 最终效果\n\n| 指标 | 基线 | 最终 | 提升 |\n|------|------|------|------|\n| OOT KS | 0.16 | 0.18 | +0.02 |\n| OOT AUC | 0.71 | 0.73 | +0.02 |\n| Gap (KS) | 0.08 | 0.03 | -0.05 |\n\n## 4. 最终参数\n\n```json\n{\n  \"max_depth\": 3,\n  \"learning_rate\": 0.08,\n  \"reg_alpha\": 0.5,\n  \"reg_lambda\": 1.0,\n  \"min_child_weight\": 100,\n  \"subsample\": 0.8,\n  \"colsample_bytree\": 0.8,\n  \"n_estimators\": 500\n}\n```\n\n## 5. 调参结论\n\n相比基线模型，最终模型：\n- OOT KS 提升 0.02（0.16 → 0.18）\n- OOT AUC 提升 0.02（0.71 → 0.73）\n- Gap (KS) 降低 0.05（0.08 → 0.03）\n- 稳定性显著改善，可安全部署\n\n如需进一步探索，请给出您的调优建议。\n```\n\n---\n\n## 与其他技能的关系\n\n| 技能 | 职责 | 关系 |\n|------|------|------|\n| `xgb-modeling` | 基线建模 | 前置：需先用其训练出基线模型 |\n| `model-explanation` | SHAP 解释 | 后续：调参完成后解释最优模型 |\n| `model-comparison` | 多算法对比 | 平行：可与 LR/DNN 调参后做公平对比 |\n| `auto-experiment` | 特征探索 | 区别：本 Skill 调参数，auto-experiment 探索特征 |\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **特征要求**：需提供已筛选的特征列表（`--features` 必填）\n3. **基线参数**：可传入自定义基线参数，否则使用默认值\n4. **收敛判定**：连续2轮提升不足 0.001 自动停止\n5. **最大轮数**：默认最多 5 轮，避免过度调优\n6. **复杂 JSON**：`--params` / `--baseline` 等复杂 JSON 优先通过 `--config config.json` 传入\n7. **产物位置**：以对话内容呈现，由用户自行保存\n\n\n---\n\n## Module 8: DNN深度学习建模\n\n# DNN 深度学习建模 (portable)\n\n基于 PyTorch 实现 MLP (Multi-Layer Perceptron) 进行二分类建模。\n\n**核心流程**：特征标准化 → MLP 训练（BatchNorm + Dropout + Early Stopping） → 概率预测 → 三段式评估\n\n**适用场景**：\n- 高维特征交互建模\n- 特征间存在复杂非线性关系\n- 数据量充足（>10k 样本）\n- 对模型性能有极致追求（可与 XGBoost 做 ensemble）\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件（pandas query） |\n| `--oot_filter` | | 按时间切出 | OOT 跨时间测试集条件 |\n| `--oot_ratio` | | `0.20` | 未传 `--oot_filter` 时按时间切 OOT 的比例 |\n| `--val_ratio` | | `0.25` | 从 train_full 切 val 的比例 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--features` | | - | 指定特征列表，逗号分隔；不传则自动推断 |\n| `--hidden_dims` | | `128,64,32` | 隐藏层维度，逗号分隔 |\n| `--dropout` | | `0.3` | Dropout 比率 |\n| `--learning_rate` | | `0.001` | 学习率 |\n| `--batch_size` | | `512` | 批次大小 |\n| `--epochs` | | `100` | 最大训练轮次 |\n| `--patience` | | `10` | 早停耐心轮数 |\n| `--weight_decay` | | `1e-4` | 权重衰减（L2 正则化） |\n| `--pos_weight` | | `auto` | 正样本权重（auto=自动计算） |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--report_output` | | 自动生成 | 报告输出路径 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置文件路径 |\n\n---\n\n## 执行方式\n\n默认参数运行：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n自定义网络结构：\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 常用场景\n\n### 场景一：默认参数快速建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景二：自定义网络结构\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n### 场景三：指定特征建模\n\n> ⚠️ 原命令/代码示例已按平台安全审查要求移除：本技能不提供可执行代码，相关操作由用户在其自有授权环境中执行。\n\n---\n\n## 输出产物\n\n1. **建模报告**（Markdown）— 含数据切分、网络结构、训练曲线、三段式评估指标、稳定性分析\n2. **模型文件**（.pt）— PyTorch state_dict + 模型配置\n3. **训练日志**（JSON）— 每 epoch 的 loss/AUC/KS 记录\n4. **result.json** — 结构化产物清单\n\n---\n\n## 与其他建模 Skill 的对比\n\n| 维度 | dnn-modeling | xgb-modeling | lr-modeling |\n|------|-------------|--------------|-------------|\n| 算法 | MLP (PyTorch) | XGBoost | LR + WoE |\n| 特征处理 | StandardScaler | 原始值 | WoE 分箱 |\n| 非线性能力 | 强（多层激活） | 强（树结构） | 弱 |\n| 可解释性 | 弱 | 中（SHAP） | 强（系数） |\n| 训练速度 | 慢 | 快 | 很快 |\n| 适用数据量 | >10k | 任意 | 任意 |\n| 评估体系 | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI | AUC/KS/BCR/PSI |\n\n---\n\n## 上下游关系\n\n- **前置**：`data-profiling` → `feature-analysis`（特征筛选）\n- **后续**：`dnn-tuning`（调参优化）、`model-comparison`（多算法对比）\n- **平行**：与 `xgb-modeling` / `lr-modeling` 可做横向对比\n\n---\n\n## 注意事项\n\n1. **数据要求**：目标变量必须为 0/1 二分类\n2. **数据量**：建议训练样本 > 10k，DNN 在小样本上易过拟合\n3. **缺失值**：脚本自动使用中位数填充 + 添加缺失指示列\n4. **标准化**：自动对数值特征做 StandardScaler 标准化\n5. **早停**：当 val loss 连续 `patience` 轮不下降时自动停止\n6. **不提供调参**：需要调参请切 `dnn-tuning`（搜索网络架构 + 训练参数）\n7. **GPU**：自动检测 CUDA，无 GPU 时回退到 CPU\n8. **模型产物**：关键结果以对话内容呈现；模型文件的导出与保存由用户在其自有环境完成（本技能不写文件）\n\n\n---\n\n## Module 9: DNN调参\n\n# DNN 深度学习参数调优 (portable)\n\nDNN 调参的**唯一入口**，基于 `_vendor/tuning/dnn_engine.DNNTuningEngine`。\n\n核心设计：搜索期间缩减 epochs（加速），诊断驱动动态约束搜索空间。\n\n---\n\n## 调优流程\n\n```\n基线 DNN 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索(30 epochs) → 最优参数 → 迭代\n```\n\n---\n\n## 执行模式\n\n| 模式 | 触发条件 | 行为 |\n|------|---------|------|\n| **交互式**（默认） | 用户说\"调参\"/\"帮我调一下DNN\" | 每轮暂停等待用户反馈 |\n| **AUTO** | 用户说\"自动调优\"/\"帮我调到最优\" | Agent 自动迭代直到收敛 |\n\n**默认模式**: 交互式（更安全，用户可控）\n\n---\n\n## 参数说明\n\n| 参数 | 必选 | 默认值 | 说明 |\n|------|:----:|--------|------|\n| `--data_path` / `-d` | ✅ | - | 数据文件路径（parquet/csv） |\n| `--target` / `-t` | ✅ | - | 目标变量列名（0/1 二分类） |\n| `--features` | | 自动推断 | 特征列表，逗号分隔 |\n| `--time_col` | | `busi_dt` | 时间列名 |\n| `--train_filter` | | 自动切分 | 训练集筛选条件 |\n| `--val_filter` | | `val_ratio` 切出 | 验证集筛选条件 |\n| `--oot_filter` | | 按时间切出 | OOT 条件 |\n| `--oot_ratio` | | `0.20` | OOT 占比 |\n| `--val_ratio` | | `0.25` | Val 占比 |\n| `--random_seed` | | `42` | 随机种子 |\n| `--exclude_cols` | | - | 排除列，逗号分隔 |\n| `--n_layers` | | `3` | 隐藏层数 |\n| `--layer_width` | | `128` | 首层宽度 |\n| `--dropout` | | `0.3` | Dropout 率 |\n| `--learning_rate` | | `0.001` | 学习率 |\n| `--weight_decay` | | `1e-4` | L2 正则化 |\n| `--batch_size` | | `512` | 批次大小 |\n| `--epochs` | | `100` | 完整训练 epochs |\n| `--search_epochs` | | `30` | 搜索期间 epochs（加速） |\n| `--round` / `-r` | | `0` | 当前轮次 |\n| `--max_rounds` | | `5` | 最大调优轮数 |\n| `--auto` | | - | 自动调优模式（flag） |\n| `--metric` | | `auc` | 评估指标 |\n| `--model_name` | | 自动生成 | 模型名称 |\n| `--output_dir` | | `./outputs/<ts>` | 产物输出目录 |\n| `--config` | | - | JSON 配置路径 |\n\n---\n\n## 搜索空间\n\n| 参数 | 类型 | 范围 | 说明 |\n|------|------|------|-----\n\nArchive v2.0.1: 3 files, 29273 bytes\n\nFiles: skill-card.md (2779b), SKILL.md (93155b), _meta.json (154b)\n\nArchive v2.0.0: 3 files, 29342 bytes\n\nFiles: skill-card.md (2808b), SKILL.md (92953b), _meta.json (154b)\n\nArchive v1.0.0: 3 files, 5962 bytes\n\nFiles: skill-card.md (2486b), SKILL.md (9597b), _meta.json (154b)","readmeExcerpt":"Skill: Financial Engineer Digital Employee Owner: gechengling Summary: 覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Tags: Financial:2.0.3, financial-engineer-digital-employee:2.0.4, latest:2.0.4 Version history: v2.0.4 | 2026-09-21T05:45:48.007Z | user 2.0.4: 新增全局建模口径与最新动态章节（六道关卡、指标速查与易错点、输出质量自检、保存外发前确认）；8个模块新增输出示例与自检表；安全声明改为与正文一致的表述 v2.0.3 | 2026-08-28T07:07:23.352","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"skill\": \"data-profiling\",\n  \"status\": \"success\",\n  \"files\": [\n    {\"path\": \".../report.md\", \"role\": \"report\"}\n  ],\n  \"metrics\": {\"n_rows\": 10000, \"n_cols\": 28, \"n_missing_cols\": 5},\n  \"summary\": \"中等规模数据集（10,000行），28 个字段，数值型为主，发现 2 个高缺失字段\"\n}"},{"language":"text","snippet":"特征: age | 分箱方式: 等频 | 分箱数: 10\n\n| 区间          | 样本数  | 占比    | 累计占比 |\n|---------------|---------|---------|----------|\n| Missing       | 156     | 1.56%   | 1.56%    |\n| [18, 23)      | 984     | 9.84%   | 11.40%   |\n| [23, 28)      | 1,012   | 10.12%  | 21.52%   |\n| ...           | ...     | ...     | ...      |"},{"language":"text","snippet":"age × income 交叉分布\n\n|              | 低收入   | 中收入   | 高收入   | 合计    |\n|--------------|----------|----------|----------|---------|\n| [18, 25)     | 800      | 300      | 134      | 1,234   |\n| [25, 35)     | 500      | 1,200    | 756      | 2,456   |\n| [35, 45)     | 200      | 800      | 1,000    | 2,000   |\n| ...          | ...      | ...      | ...      | ...     |"},{"language":"text","snippet":"特征: age | IV = 0.1523\n\n| 区间          | 样本数  | 正样本数 | 正样本率 | WoE     | IV      |\n|---------------|---------|----------|----------|---------|---------|\n| [18, 23)      | 984     | 156      | 15.85%   | 0.32    | 0.0234  |\n| [23, 28)      | 1,012   | 98       | 9.68%    | -0.15   | 0.0089  |\n| ...           | ...     | ...      | ...      | ...     | ...     |"},{"language":"text","snippet":"基线 LR 模型 → 诊断分析(过拟合/欠拟合) → 约束空间构造 → Optuna 搜索 → 最优参数 → 迭代"},{"language":"markdown","snippet":"### 第 N 轮 LR 调优结果\n\n**参数变化**:\n| 参数 | 上一轮 | 本轮 | 调整原因 |\n|------|-------|------|----------|\n| C | 1.0 | 0.5 | 收紧正则化 |\n| iv_threshold | 0.02 | 0.03 | 减少入模特征 |\n| max_n_bins | 8 | 6 | 降低过拟合 |\n\n**效果对比**:\n| 指标 | 上一轮 | 本轮 | 变化 |\n|------|-------|------|------|\n| OOT AUC | 0.72 | 0.73 | +0.01 ✓ |\n| OOT KS | 0.17 | 0.18 | +0.01 ✓ |\n| Gap | 0.06 | 0.04 | -0.02 ✓ |\n\n**诊断结论**: 轻微过拟合（Gap 下降但仍 > 0.03）\n\n**下一步建议**: 可继续微调 C 值，或接受当前结果"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: \"Financial Engineer Digital Employee\"\r\nslug: financial-engineer-digital-employee\r\ndescription: \"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。\"\r\nversion: 2.0.4\r\nallowed-tools: []\r\ncapabilities:\r\n  - educational-reference\r\n  - advisory-only\r\n  - requires-human-review\r\n  - illustrative-code-samples\r\n---\r\n\r\n# Financial Engineer Digital Employee / 金融工程专家数字员工\r\n\r\n> **⚠️ SECURITY NOTICE / 安全声明**\r\n> - **Type:** Educational reference / analytical framework ONLY\r\n> - **No bundled executable payload:** this skill ships no runnable package, installer, background task or scheduled job. The commands, scripts and configuration snippets shown in the text are illustrative reference material, to be read and, if useful, run by the user inside their own authorised environment.\r\n> - **No persistent storage, network calls, background execution, or credential collection**\r\n> - **All outputs are for reference only and require human review before real-world application**\r\n> - **This skill does NOT provide financial, legal, or insurance advice**\r\n> - **Users must exercise their own judgment and consult qualified professionals**\r\n>\r\n> **⚠️ 数据安全警告**\r\n> - 本技能仅提供参考框架和分析建议，**不随附可执行程序、安装脚本、后台任务或定时任务**；正文中的命令与代码为**供用户在自有授权环境中参考使用的示意材料**，本技能自身不代为执行\r\n> - 本技能不会主动发起网络请求、不会自动读取或落盘用户的业务数据与个人身份信息（PII）；建模数据由用户在自有授权环境中自行准备\r\n> - **数据最小化**：建模时只使用完成该任务所必需的最小字段集；涉敏字段应先脱敏、泛化或取得授权，能不用就不用\r\n> - **保存/外发前确认**：任何模型文件、评测报告、特征清单与图表，必须先向用户完整预览并经用户明确确认后再写入磁盘或对外发送\r\n> - 所有输出仅为方法论参考，实际决策需由具备相应资质的专业人员作出\r\n\r\n## Skill Overview / 技能概览\r\n\r\n金融工程专家数字员工，集成以下14项核心能力模块：\r\n\r\n1. **Module 1: 数据轮廓速览**\r\n2. **Module 2: 单变量分析**\r\n3. **Module 3: 特征深度分析**\r\n4. **Module 4: LR评分卡建模**\r\n5. **Module 5: LR评分卡调参**\r\n6. **Module 6: XGBoost建模**\r\n7. **Module 7: XGBoost调参**\r\n8. **Module 8: DNN深度学习建模**\r\n9. **Module 9: DNN调参**\r\n10. **Module 10: 多模型效果对比**\r\n11. **Module 11: 模型解释**\r\n12. **Module 12: 自主实验循环**\r\n13. **Module 13: 分群建模**\r\n\r\n## 全局建模口径与最新动态（2026-09-21 新增）\r\n\r\n### 建模与合规动态\r\n\r\n| 动态类型 | 内容摘要 | 发布时间 | 对建模流程的影响 | 应对动作 |\r\n|---------|---------|---------|----------------|---------|\r\n| 模型治理 | 金融机构模型全生命周期管理与可解释要求持续强化 | 2026-Q3 | 模型需可解释、可复现、可审计 | 保留特征清单、参数与版本记录 |\r\n| AI应用 | 银行业保险业AI安全开发应用指导意见落地，高风险场景需可解释可审计 | 2026-06-18 | 评分卡与复杂模型均需解释材料 | 每个模型输出解释与局限性说明 |\r\n| 数据安全 | 个人信息保护与数据最小化要求在建模场景执行细化 | 2026-Q3 | 特征可解释“为什么要这个字段” | 建立字段准入与留痕 |\r\n| 自动化建模 | 自动化特征工程与自动调参工具普及，人工判断价值转向“问题定义” | 2026-Q3 | 调参不再是主要瓶颈 | 把精力放在口径、切分与验证上 |\r\n| 模型监控 | 模型上线后漂移监控成为标配环节 | 2026-Q3 | 一次性建模不够 | 增加监控指标与预警阈值 |\r\n\r\n> **数据截止**: 2026-09-21 | 来源：公开行业信息与监管公开信息\r\n> **声明**: 以上动态供参考，具体以官方最新发布为准\r\n\r\n### 建模流程通用的六道关卡\r\n\r\n| 关卡 | 要回答的问题 | 不通过的处理 |\r\n|------|-------------|-------------|\r\n| 问题定义 | 预测什么、在哪个时点预测、给谁用 | 先回去定义清楚，不要开始建模 |\r\n| 口径与切分 | 训练集/验证集/OOT 如何切，是否有泄漏 | 重做切分，按时间切优先 |\r\n| 特征准入 | 每个字段为什么可用、是否有未来信息 | 剔除无法解释来源的字段 |\r\n| 基线对比 | 比简单基线好多少 | 不优于基线则不值得上线 |\r\n| 稳定性 | 跨时间、跨群的表现是否稳定 | 不稳定的模型限制使用范围 |\r\n| 可解释与留痕 | 能否解释单个预测与整体行为 | 补解释材料后再评审 |\r\n\r\n### 常用指标速查与易错点\r\n\r\n| 指标 | 定义 | 易错点 |\r\n|------|------|--------|\r\n| AUC | 正负样本排序能力的综合度量 | 样本极度不均衡时单独看AUC会乐观 |\r\n"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74e704j3ygjcygnpf02rdvd185js13\",\n  \"slug\": \"financial-engineer-digital-employee\",\n  \"version\": \"2.0.4\",\n  \"publishedAt\": 1789969548007\n}"},{"path":"skill-card.md","content":"## Description:\n\nProvides a financial modeling reference workflow covering data profiling, univariate and feature analysis, LR scorecards, XGBoost and DNN modeling, tuning, interpretation, model comparison, segmentation, and DeepModel integration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gechengling](https://clawhub.ai/user/gechengling)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and financial modeling teams use this skill as an advisory reference for structuring machine learning workflows from dataset review through model comparison, interpretation, and review-ready reporting.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Financial modeling datasets and generated reports or model artifacts may contain sensitive financial data or PII.\n\nMitigation: Use only authorized, minimized datasets; redact or generalize sensitive fields before analysis; review artifacts before saving or sharing.\n\nRisk: Advisory modeling outputs could be mistaken for financial, legal, insurance, or automated decision advice.\n\nMitigation: Require qualified human review before applying outputs to real-world decisions or external communications.\n\nRisk: Illustrative commands and code snippets may be adapted and run in user environments.\n\nMitigation: Run adapted examples only in authorized environments and inspect commands, inputs, outputs, and model artifacts before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gechengling/skills/financial-engineer-digital-employee)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with illustrative shell commands, code and configuration snippets, report outlines, and JSON result examples.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Advisory-only outputs require human review; generated reports, model artifacts, feature lists, and charts may contain sensitive financial or personal data.]\n\n## Skill Version(s):\n\n2.0.4 (source: server release metadata and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Skill: Financial Engineer Digital Employee Owner: gechengling Summary: 覆盖数据探查、单变量分析、特征工程、LR评分卡、XGBoost/DNN建模、超参数调优、模型解释、多模型对比、分群建模、DeepModel集成全流程。从数据到模型上线的一站式机器学习建模能力。 Tags: Financial:2.0.3, financial-engineer-digital-employee:2.0.4, latest:2.0.4 Version history: v2.0.4 | 2026-09-21T05:45:48.007Z | user 2.0.4: 新增全局建模口径与最新动态章节（六道关卡、指标速查与易错点、输出质量自检、保存外发前确认）；8个模块新增输出示例与自检表；安全声明改为与正文一致的表述 v2.0.3 | 2026-08-28T07:07:23.352","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1183,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:30:20.029Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:45:14.268Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}