<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>文章</title>
        <link>https://sray-s-blog.pages.dev/</link>
        <description>Sray's Blog - 杂谈</description>
        <lastBuildDate>Thu, 09 Jul 2026 14:12:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, Sray's Blog</copyright>
        <item>
            <title><![CDATA[KS 和 AUC：它们之间到底有没有数学关系]]></title>
            <link>https://sray-s-blog.pages.dev/article/ks-auc-math-relationship</link>
            <guid>https://sray-s-blog.pages.dev/article/ks-auc-math-relationship</guid>
            <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[KS 和 AUC 之间有没有数学约束关系？本文从 ROC 曲线、Mann-Whitney U 统计量等角度深入分析。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-381e6cbb1a3281afbea2c7c6e90029b4"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><blockquote class="notion-quote notion-block-381e6cbb1a3281f5a56cdf07b9994efe"><div><b>原文来源：</b> 微信公众号「风控建模」| 作者：小溪1005 | 发布于 2026-06-14</div></blockquote><blockquote class="notion-quote notion-block-381e6cbb1a3281289765f3eecb673383"><div><b>原文链接：</b> https://mp.weixin.qq.com/s/6CaTkC2MnoYqMhggcGeH2g</div></blockquote><hr class="notion-hr notion-block-381e6cbb1a3281f28f7dc25882d01a50"/><div class="notion-text notion-block-381e6cbb1a3281258f4ae3e1c3daaa8e">前两天群里有朋友问：</div><div class="notion-text notion-block-381e6cbb1a3281a9b307e27438f190d4"><b>KS 和 AUC 之间，有没有数学上的约束关系？</b></div><div class="notion-text notion-block-381e6cbb1a3281d2a055ddbc2d5599ef">第一反应是：应该有吧，它俩不都是从同一组 TPR、FPR 里算出来的吗？</div><div class="notion-text notion-block-381e6cbb1a32812ab860e0d4197e4ac1">后来有位群友给出了挺长的一段分析，观点听起来很有数学味道：</div><blockquote class="notion-quote notion-block-381e6cbb1a3281ba8849e91f6460ac5e"><div>&quot;ROC 的 TPR 和 KS 的 TPR 映射不同&quot;&quot;范围公式暗含连续、凸的理想假设&quot;&quot;数据离散就失效&quot;&quot;代码说明不了什么&quot;&quot;推导第一步就错了&quot;</div></blockquote><div class="notion-text notion-block-381e6cbb1a3281ce9817f045a441a2c7">这段分析其实结论里有不少对的地方，但有几处论据，可以再一起商榷一下。今天就借这个话题，把 ROC、AUC、KS 三者的关系捋一捋。</div><hr class="notion-hr notion-block-381e6cbb1a328197bf11e2e5a96ac2ae"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a3281ecb27ee747a5082c5c" data-id="381e6cbb1a3281ecb27ee747a5082c5c"><span><div id="381e6cbb1a3281ecb27ee747a5082c5c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a3281ecb27ee747a5082c5c" title="一、&quot;ROC 的 TPR 和 KS 的 TPR 映射不同&quot;，这点可以再想想"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">一、&quot;ROC 的 TPR 和 KS 的 TPR 映射不同&quot;，这点可以再想想</span></span></h3><div class="notion-text notion-block-381e6cbb1a3281b294edf27385ae3b4d">对方的核心观点之一是：</div><blockquote class="notion-quote notion-block-381e6cbb1a328126872be6453f2d3657"><div>&quot;ROC 的 TPR 非 KS 的 TPR，只是恰好公式和排序一致罢了，映射不一样。&quot;&quot;国内一直把两个 TPR 等同，推导第一步就错了。&quot;</div></blockquote><div class="notion-text notion-block-381e6cbb1a32811c91b0c0a555ee899e">这里其实有个小小的循环：既然已经承认&quot;公式和排序一致&quot;，那结论也就包含在前提里了。</div><div class="notion-text notion-block-381e6cbb1a328131af62f03dacec125e">因为 ROC 和 KS 用的，本来就是<b>同一组 (TPR, FPR)</b>：</div><ul class="notion-list notion-list-disc notion-block-381e6cbb1a3281d39e78d23f2c2a5039"><li><b>ROC 曲线</b>：以 FPR 为横轴、TPR 为纵轴</li></ul><ul class="notion-list notion-list-disc notion-block-381e6cbb1a328184bec1f33521090361"><li><b>KS 曲线</b>：以阈值（或分位数）为横轴，把 TPR、FPR 两条线画出来</li></ul><div class="notion-text notion-block-381e6cbb1a3281189f78edbb8eb051c0">同一组数，换两种坐标画出来而已。给定阈值 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span> 和 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span> 是唯一确定的；ROC 不过是把横轴从&quot;阈值&quot;换成了&quot;FPR&quot;，本质是一次<b>坐标变换</b>。</div><blockquote class="notion-quote notion-block-381e6cbb1a328124b521cb6c5c1fe20d"><div><b>小结：</b> 并不存在&quot;两个不同的 TPR&quot;，它们是同一份数据的两种画法。</div></blockquote><hr class="notion-hr notion-block-381e6cbb1a328169b32cd263b28473da"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a3281948f0bdea52e59b107" data-id="381e6cbb1a3281948f0bdea52e59b107"><span><div id="381e6cbb1a3281948f0bdea52e59b107" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a3281948f0bdea52e59b107" title="二、&quot;AUC、KS 需要 ROC 连续且凸&quot;，这里的因果，或许说反了"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">二、&quot;AUC、KS 需要 ROC 连续且凸&quot;，这里的因果，或许说反了</span></span></h3><div class="notion-text notion-block-381e6cbb1a3281989dfbf7ede366b965">很多人对 AUC 的第一印象是&quot;曲线下面积&quot;，于是自然联想到&quot;面积 → 积分 → 需要连续&quot;。</div><div class="notion-text notion-block-381e6cbb1a3281718921f311044f583c">但 AUC 还有一个<b>等价、而且更本质</b>的定义：</div><span role="button" tabindex="0" class="notion-equation notion-equation-block"><span></span></span><div class="notion-text notion-block-381e6cbb1a32812fbe2bf5b7397545e1">这就是 <b>Mann–Whitney U 统计量</b>，它本来就是为离散、有限样本设计的非参数统计量，靠<b>求和</b>计算，并不需要连续性，也不需要可积。</div><div class="notion-text notion-block-381e6cbb1a32812eb686c8eab4818da9">至于&quot;凸&quot;：ROC 凸不凸，反映的是<b>模型排序质量的好坏</b>（有没有局部矛盾），它和&quot;公式能不能算&quot;是两件事。一条带凹陷、带平局斜段的 ROC，AUC 和 KS <b>照样能精确算出来</b>。</div><blockquote class="notion-quote notion-block-381e6cbb1a3281bd92dcecb7d1026788"><div><b>小结：</b> 连续和凸，可能并不是 AUC/KS 的前提——恰恰相反，它们本来就是为离散数据准备的。</div></blockquote><hr class="notion-hr notion-block-381e6cbb1a3281abaeccce2666751520"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a328165b8b9d97379df1c72" data-id="381e6cbb1a328165b8b9d97379df1c72"><span><div id="381e6cbb1a328165b8b9d97379df1c72" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a328165b8b9d97379df1c72" title="三、&quot;数据离散/有平局/有跳跃，公式就失效&quot;——可以用代码验证"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">三、&quot;数据离散/有平局/有跳跃，公式就失效&quot;——可以用代码验证</span></span></h3><div class="notion-text notion-block-381e6cbb1a32815f887ad13f59ea2cca">对方提到：&quot;数据有限、分数离散、排序有平局或跳跃，假设被破坏，公式自然失效。&quot;</div><div class="notion-text notion-block-381e6cbb1a32813dbe48eff38fbd3a56">这个判断对不对，其实很容易验证。构造一组<b>比较极端</b>的数据：大量平局、明显跳跃、排序还带矛盾。</div><div class="notion-text notion-block-381e6cbb1a3281249b3dc86d31569fbf"><b>运行结果：</b></div><div class="notion-text notion-block-381e6cbb1a3281f0b9fcfc3a53e20dbe">AUC、KS 都能算出确定、可复现的数值。平局再多、跳跃再大，sklearn 照样能算——因为它算的本来就是离散公式。</div><div class="notion-text notion-block-381e6cbb1a3281b6bf50eadd3e9103bf">关于&quot;代码说明不了什么&quot;这句，有点可惜，因为代码恰恰是<b>最能把问题说清楚</b>的方式：如果&quot;公式因离散而失效&quot;这个判断成立，那应该能举出一组让 AUC 算不出来的离散数据。如果找不到，&quot;失效&quot;这个说法可能就需要重新斟酌了。</div><hr class="notion-hr notion-block-381e6cbb1a3281598e13f40709d138e0"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a32816eb58beed4b67d2019" data-id="381e6cbb1a32816eb58beed4b67d2019"><span><div id="381e6cbb1a32816eb58beed4b67d2019" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a32816eb58beed4b67d2019" title="四、&quot;AUC 与 KS 走势接近只是经验现象&quot;——对，但原因可能不太一样"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">四、&quot;AUC 与 KS 走势接近只是经验现象&quot;——对，但原因可能不太一样</span></span></h3><div class="notion-text notion-block-381e6cbb1a32818bb132f694e35d62bd">对方说：&quot;AUC 与 KS 走势接近只是模型好时的经验现象，不是数学必然。&quot;&quot;两者不是恒等关系&quot;——这句完全同意。</div><div class="notion-text notion-block-381e6cbb1a328146a6b7e616a20d9cc1">但背后的原因，可能不是&quot;连续性失效&quot;，而是更朴素的一点：</div><table class="notion-simple-table notion-block-381e6cbb1a32812abd11c5469770e7d4"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-381e6cbb1a328159b108f128fb1a9e83"><td class="" style="width:120px"><div class="notion-simple-table-cell">指标</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">本质</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">度量什么</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281a5a2f2f805988e88b6"><td class="" style="width:120px"><div class="notion-simple-table-cell">AUC</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">整条 ROC 下的**面积**</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">累积的整体排序能力</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281b88a53f1e2a171cfa1"><td class="" style="width:120px"><div class="notion-simple-table-cell">KS</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">**单点极值**</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">正负分布的最大分离度</div></td></tr></tbody></table><div class="notion-text notion-block-381e6cbb1a32815b89fcc1af814b7ca9">一个是<b>面积（累积量）</b>，一个是<b>单点极值</b>。两个度量维度不同的统计量，本来就不该恒等——哪怕数据完美连续，AUC 和 KS 也不会相等。这跟离散、平局其实关系不大。</div><div class="notion-text notion-block-381e6cbb1a3281d981a6f6d5d71cfe34">不过，&quot;不恒等&quot;也不等于&quot;没关系&quot;。事实上，二者之间存在一个<b>严格成立的上界约束</b>：</div><span role="button" tabindex="0" class="notion-equation notion-equation-block"><span></span></span><div class="notion-text notion-block-381e6cbb1a3281b89c67c847dc5b5234">也就是说，KS 是 ROC 上某一点到对角线的最大距离，AUC 是整条曲线的累积，<b>两者在几何上被同一条 ROC 牢牢绑定着</b>，并不是&quot;毫无关联的两回事&quot;。</div><hr class="notion-hr notion-block-381e6cbb1a3281c2b83ec9aad3a6e954"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a3281109763e4d5ad7517c2" data-id="381e6cbb1a3281109763e4d5ad7517c2"><span><div id="381e6cbb1a3281109763e4d5ad7517c2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a3281109763e4d5ad7517c2" title="五、&quot;分箱 KS 更稳健&quot;，这个结论很对，原因可以补充一下"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">五、&quot;分箱 KS 更稳健&quot;，这个结论很对，原因可以补充一下</span></span></h3><div class="notion-text notion-block-381e6cbb1a3281648a2ae625b25574e2">对方说：&quot;只取最大值意义有限，金融行业要用 10/20 等频分箱评估 KS 才稳健。&quot;</div><div class="notion-text notion-block-381e6cbb1a328176a858cb772a29d1a8">这个结论<b>完全赞同</b>，实务中确实是这么做的。只是原因和&quot;连续性假设&quot;关系不大，更多是两个很实在的考虑：</div><ul class="notion-list notion-list-disc notion-block-381e6cbb1a3281519df9e2603c9d7b3a"><li><b>统计稳健性</b>：单点最大 KS 是一个点估计，对样本扰动、异常值比较敏感，换一批样本可能就跳了；分箱看的是整体分布，更稳。</li></ul><ul class="notion-list notion-list-disc notion-block-381e6cbb1a3281a7b5fce461f76dfc96"><li><b>可监控性</b>：风控更关心模型在<b>各个分数段</b>是否稳定（配合 PSI 一起监控），分箱天然契合这个需求；而单点 KS 把信息压成一个数字，丢掉了分段视角。</li></ul><div class="notion-text notion-block-381e6cbb1a32814abd4ec5d4761e0448">更准确的表述可能是：</div><blockquote class="notion-quote notion-block-381e6cbb1a328129bcc0d3afbcf04435"><div>&quot;单点 KS 对扰动敏感、且丢失分段信息，因此工程上用等频分箱评估分数分布的整体稳定性。&quot;</div></blockquote><div class="notion-text notion-block-381e6cbb1a32814e8145f004b741bea8">这样说既准确，也不需要借助&quot;连续性假设&quot;&quot;可积性&quot;这些其实用不上的概念。</div><hr class="notion-hr notion-block-381e6cbb1a32817b9d35fbd19cf0c457"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a3281068c13c696cde98d30" data-id="381e6cbb1a3281068c13c696cde98d30"><span><div id="381e6cbb1a3281068c13c696cde98d30" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a3281068c13c696cde98d30" title="六、小结"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">六、小结</span></span></h3><table class="notion-simple-table notion-block-381e6cbb1a3281d480ead54b939d759b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-381e6cbb1a3281afbe2bdb7678ee7e8b"><td class="" style="width:120px"><div class="notion-simple-table-cell">观点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">看法</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281499a14c54e9d87d5a0"><td class="" style="width:120px"><div class="notion-simple-table-cell">ROC 的 TPR ≠ KS 的 TPR，映射不同</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🤔 可能是同一组数据的两种画法</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a32811b9aced7d8527a17a0"><td class="" style="width:120px"><div class="notion-simple-table-cell">AUC/KS 需要连续、凸</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🤔 因果或许说反了，二者本为离散设计</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281b68c54dc879a83a46f"><td class="" style="width:120px"><div class="notion-simple-table-cell">数据离散/平局使公式失效</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🤔 可用代码验证，sklearn 照算不误</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281e4ac81e527c1a81eb8"><td class="" style="width:120px"><div class="notion-simple-table-cell">代码说明不了什么</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🤔 代码恰恰最能说清问题</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a32818c9cb3df83f1a51f92"><td class="" style="width:120px"><div class="notion-simple-table-cell">AUC 与 KS 不恒等</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ 对，原因是&quot;面积 vs 极值&quot;</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281258a89dbea4bb44e52"><td class="" style="width:120px"><div class="notion-simple-table-cell">分箱 KS 更稳健</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ 很对，源于统计稳健性 + 可监控性</div></td></tr><tr class="notion-simple-table-row notion-block-381e6cbb1a3281278cf9dd31db07c30e"><td class="" style="width:120px"><div class="notion-simple-table-cell">高风险场景要更严谨</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ 完全认同，方向可微调</div></td></tr></tbody></table><div class="notion-text notion-block-381e6cbb1a3281db8319ecdbce37b8c6">写这篇文章，并不是想争个对错。那位朋友的<b>工程直觉其实很好</b>——分箱评估 KS、强调稳健性、提醒高风险场景要谨慎，这些都很对，也是大家平时在用的做法。</div><div class="notion-text notion-block-381e6cbb1a3281378b79de5242d62609">只是想补充一点：<b>这些好结论，用准确的数学语言去表达，会更站得住脚。</b></div><div class="notion-text notion-block-381e6cbb1a328141a786e9c248b6797e">KS 和 AUC 确实被同一条 ROC 曲线约束着（<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，严格成立、不依赖连续性）；但它们也确实不是一一对应，这两点并不矛盾。</div><hr class="notion-hr notion-block-381e6cbb1a32819aa006dafdc03cd49b"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-381e6cbb1a3281aab341ea4f0588a770" data-id="381e6cbb1a3281aab341ea4f0588a770"><span><div id="381e6cbb1a3281aab341ea4f0588a770" class="notion-header-anchor"></div><a class="notion-hash-link" href="#381e6cbb1a3281aab341ea4f0588a770" title="附：上界不等式的严格推导"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">附：上界不等式的严格推导</span></span></h3><div class="notion-text notion-block-381e6cbb1a3281f29b9add846e1ede7b">给感兴趣的朋友。这个上界<b>严格、紧、且离散连续通吃</b>。</div><div class="notion-text notion-block-381e6cbb1a32816b8e6deee26aa6e01c"><b>命题：</b> 对任意 ROC 曲线（离散或连续均可），有 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>。</div><div class="notion-text notion-block-381e6cbb1a328197a877c68b82053342"><b>证明：</b></div><div class="notion-text notion-block-381e6cbb1a3281e2b2f6f2a20a847e4d">记 ROC 为单调不减函数 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，满足 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>。</div><div class="notion-text notion-block-381e6cbb1a32812fb638cebe58e97733">由 KS 定义，对所有 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span> 有 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，同时显然 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>，<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span>。</div><div class="notion-text notion-block-381e6cbb1a32812bb794f20611e8ee90">两条上界的交点在 <span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span> 处，于是：</div><ul class="notion-list notion-list-disc notion-block-381e6cbb1a32819cbdc2fb596b2c6d31"><li>第一段积分：<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span></li></ul><ul class="notion-list notion-list-disc notion-block-381e6cbb1a32815c9e59ef54dea1b4e7"><li>第二段积分：<span role="button" tabindex="0" class="notion-equation notion-equation-inline"><span></span></span></li></ul><div class="notion-text notion-block-381e6cbb1a328155afdacc80f98dd48f">相加并化简即可得到：</div><span role="button" tabindex="0" class="notion-equation notion-equation-block"><span></span></span><div class="notion-text notion-block-381e6cbb1a3281cc95c4c0690402180e"><b>等价形式：</b></div><span role="button" tabindex="0" class="notion-equation notion-equation-block"><span></span></span><hr class="notion-hr notion-block-381e6cbb1a32813a9bdde569500f4ad3"/><div class="notion-text notion-block-381e6cbb1a32815e8456df72f864a331"><em>本文转载自微信公众号「风控建模」，作者小溪1005，已获授权。如有不当请联系删除。</em></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vibe Coding 核心心法：管 Agent，如带团队（转载）]]></title>
            <link>https://sray-s-blog.pages.dev/article/vibe-coding-manage-agent-like-team</link>
            <guid>https://sray-s-blog.pages.dev/article/vibe-coding-manage-agent-like-team</guid>
            <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[转载自九老师。Vibe Coding 本质是利用 Agent 编码，把 Agent 当人来管，管 Agent 如带团队。从 IC 到 TL 的角色转变、Context Rot 上下文腐烂、Agentic Engineering 编排者思维。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-361e6cbb1a32814d82a0e369ff90485c"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-block-361e6cbb1a328135ac38f7c093cf1433"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="📌">📌</span></div><div class="notion-callout-text">本文转载自「Recsys Frontier」，作者：九老师
原文链接：https://blog.recsys-frontier.com/article/vibe-coding-like-man-team
许可协议：CC BY-NC-SA 4.0（注明出处，非商业用途，相同方式共享）</div></div><hr class="notion-hr notion-block-361e6cbb1a328159b0c3f90b4904db46"/><div class="notion-text notion-block-361e6cbb1a328191942ac239dd001d66">这不是一篇教大家怎么实操文章，不谈具体的工具和技术，我们来谈谈Vibe Coding的心法。</div><div class="notion-text notion-block-361e6cbb1a3281be96b8c559656a5ad7">Vibe Coding 本质是利用 Agent 编码，Agent 背后是 LLM，LLM 是人类的“幽灵”，这出自 Karpathy 2025 年终总结：&quot;we&#x27;re not evolving animals. We&#x27;re summoning ghosts.&quot;，语言是人类世界的投影，LLM 是人类的幽灵。</div><div class="notion-text notion-block-361e6cbb1a32811faf14e882b07227a8">工具和技术层出不穷，这是历史上从未出现过的新技术，没有人有经验。但是人性是一致的，拿捏住 Agent 的“人性”，把 Agent 当人来管，会让 Vibe Coding 从迷茫走向有迹可循。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281b1ba71e6e5f6ec5371" data-id="361e6cbb1a3281b1ba71e6e5f6ec5371"><span><div id="361e6cbb1a3281b1ba71e6e5f6ec5371" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281b1ba71e6e5f6ec5371" title="先说清楚什么是 Vibe Coding"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">先说清楚什么是 Vibe Coding</span></span></h3><div class="notion-text notion-block-361e6cbb1a32817dad08e92cb13349e9">2025 年 2 月 2 日，Andrej Karpathy 发了一条推文，随手造了一个词：</div><blockquote class="notion-quote notion-block-361e6cbb1a3281b08b5dff2c8c37d581"><div>There&#x27;s a new kind of coding I call &quot;vibe coding&quot;, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.</div></blockquote><div class="notion-text notion-block-361e6cbb1a328159ab8af0c70a134a6a">他描述自己用 Cursor 和 SuperWhisper 做项目，几乎不碰键盘，对着 AI 说话就行。&quot;Accept All&quot;，不看 diff，有报错就把错误信息粘进去，通常就修好了。代码越长越超出他自己的理解范围，有些 bug 修不了就绕过去，或者随便改改直到它消失。</div><div class="notion-text notion-block-361e6cbb1a32815c99bdefa793f61ec4">&quot;我在做一个项目或网页应用，但其实并不算是在写代码——我只是观察情况、动嘴指令、运行程序、复制粘贴，然后它基本上就能跑通了。&quot;</div><div class="notion-text notion-block-361e6cbb1a3281efaf77fc7dee45ef6c">这条推文被看了 450 万次，&quot;vibe coding&quot;成了 2025 年最火的年度词汇之一。但一年过去了，大部分人对它的理解依然是模糊的——很多人把它和 AI 编程混为一谈了。</div><div class="notion-text notion-block-361e6cbb1a3281fcbaefc6ccfa3ebdb6">AI 编程是什么？它范围更广，包含你用 Copilot、Cursor 之类的工具辅助写代码。AI 帮你补全、帮你生成函数、帮你重构。但你依然在看每一行 diff，依然在 review 每一个实现细节。AI 只是让你写得更快了。你还是那个写代码的人。</div><div class="notion-text notion-block-361e6cbb1a328170b1e7c7ac4a9f0c5d">Vibe coding 完全不同——你不看代码。你输入一个想法，看产出。跑起来了吗？行为符合预期吗？对了就往前走，不对就换一种说法再试。代码具体怎么实现的，你不关心，甚至可能看不懂。</div><div class="notion-text notion-block-361e6cbb1a32810f8890fc412cd3c42c">我理解这种不适，因为我自己也经历过。但后来我逐渐意识到，这种不适感，我并不是第一次体验。上一次有这种感觉，是我开始带团队的时候。Vibe coding 给我的感觉，和团队管理一模一样。这个类比一旦建立起来，很多事情就突然说得通了。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281a1b9c1ec12cbefed3b" data-id="361e6cbb1a3281a1b9c1ec12cbefed3b"><span><div id="361e6cbb1a3281a1b9c1ec12cbefed3b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281a1b9c1ec12cbefed3b" title="当你不再写代码，你的角色变成了什么"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">当你不再写代码，你的角色变成了什么</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281549840c0529500d54a">Vibe coding 的时候，你同时开着三个 Agent session。一个在重构模块，一个在写测试，一个在调 UI。你不需要盯着每个 session 的每一步，但你需要能快速切进去——看产出、做判断、给方向——然后切到下一个。这不就是一个一线 team leader 的日常吗？</div><div class="notion-text notion-block-361e6cbb1a328167bdbef2439954636f">第一次从 IC 转到 TL，最难受的不是工作内容变了，而是你不再拥有对过程的控制。以前所有的代码都经过你的手，你知道每一行写了什么。现在你要把键盘交给别人，看着他用你觉得“不够完美”的方式实现了同样的功能——你得忍住，因为结果是能跑对的。</div><div class="notion-text notion-block-361e6cbb1a328130938bf5c71295dbc5">你的价值不再是去执行、去把代码写对，而是去想清楚你到底要什么，以及去审查这是不是你想要的结果。你需要的不再是高效的执行能力，而是快速的切换与反馈。你需要有对和技术结果的高度的品位。</div><div class="notion-text notion-block-361e6cbb1a3281048f29fc192cbc85a1">同一个瓶颈，同一种解法：异步协作。对齐目标和验收标准，放手让人去执行，到 checkpoint 看结果，有 blocker 再介入。最好的 vibe coder 和最好的 TL 做的事情是一样的——他们从来不站在工位后面盯着你写每一行代码。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281eda64dc4fb13955126" data-id="361e6cbb1a3281eda64dc4fb13955126"><span><div id="361e6cbb1a3281eda64dc4fb13955126" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281eda64dc4fb13955126" title="你校验的不是代码，是结果"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">你校验的不是代码，是结果</span></span></h3><div class="notion-text notion-block-361e6cbb1a32814183dde867effcd1e3">传统编程有一个隐含假设：代码写完，应该一次通过。写之前想清楚，写的时候小心翼翼，写完了跑一遍测试，过了就提交。整个流程的核心是对过程的信心——我写的代码我知道对不对。</div><div class="notion-text notion-block-361e6cbb1a32813e9ccfc9c3a36b4b67">Vibe coding 彻底放弃了这个假设。你不看代码，你当然不可能对过程有信心。Agent 会幻觉，而且幻觉得很自信——可能只是它没执行好，它就宣称这个方案是失败的。那怎么办？回去看代码？那就退回 AI 编程了。你校验的对象变了。不是代码对不对，是结果对不对。</div><div class="notion-text notion-block-361e6cbb1a3281169cfae964b2d466a8">我遇到过一个典型场景：Agent 告诉我“这个功能实现不了，建议换架构”。我没有去翻它的代码看哪里写错了。我开了一个新 session，把同样的需求重新描述了一遍。它做出来了。我不关心第一个 session 的代码哪里写错了，我只关心：结果能不能出来。能出来，就往前走。出不来，换个方式再试。</div><div class="notion-text notion-block-361e6cbb1a32816abf4fd5ba2025f07a">这是理念上的根本转变：你不再追求一次写对，你追求的是结果不断逼近正确。效率不来自一次做对，来自反馈和迭代速度。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328180bb06e8e4bf9cfc43" data-id="361e6cbb1a328180bb06e8e4bf9cfc43"><span><div id="361e6cbb1a328180bb06e8e4bf9cfc43" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328180bb06e8e4bf9cfc43" title="你的瓶颈：上下文切换与反馈速度"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">你的瓶颈：上下文切换与反馈速度</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281ca822bf55abdba815d">一个一线 leader 的团队管理，更像是 multi-session 的单 Agent 管理，都是放弃了代码的控制权，转而把中心放在了任务的拆解，结果的预期管理和多轮的验收反馈。</div><div class="notion-text notion-block-361e6cbb1a32818590a8d8804b1ffea8">回到那个画面：三个 session 同时跑。你是唯一的人类，它们都在等你的反馈。这时候你最大的瓶颈是什么？上下文切换的速度和并行处理事情的能力。Agent 很快。一个 session 跑完可能只要几分钟。但如果你是串行思维——处理完 session A 才去看 session B——你就成了整个系统的吞吐量瓶颈。三个 Agent 并行在跑，被你一个人卡成了串行。</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-361e6cbb1a32812383fad016f1f9a8fd" data-id="361e6cbb1a32812383fad016f1f9a8fd"><span><div id="361e6cbb1a32812383fad016f1f9a8fd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a32812383fad016f1f9a8fd" title="任务的描述与拆解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">任务的描述与拆解</span></span></h4><div class="notion-text notion-block-361e6cbb1a3281c3a8eefcc464ec9606">你给 Agent 的 prompt 就是你给下属的需求文档。描述模糊，产出就模糊。描述精确，产出就精确。很多人 vibe coding 效果差，不是 Agent 不行，是他们的需求描述不行。</div><div class="notion-text notion-block-361e6cbb1a3281db968ecdc927793d33">给 Agent 一个模糊大目标——“帮我重构这个模块”——它会茫然或者乱来。把大目标拆成具体小任务——“先把这三个函数抽成一个 class，保持接口不变，加上单元测试”——它才能精确执行。拆解任务的能力，本质上就是工程设计的能力。你不再亲手做，但你要知道该怎么做，才能把活拆对。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281b28718f18050c201d8" data-id="361e6cbb1a3281b28718f18050c201d8"><span><div id="361e6cbb1a3281b28718f18050c201d8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281b28718f18050c201d8" title="Context Rot（上下文腐烂）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Context Rot（上下文腐烂）</span></span></h3><div class="notion-text notion-block-361e6cbb1a32819e9367f30001407669">一个 Agent session 走偏了，你会看到一个熟悉的模式：每次修复都引入新的问题，每次“快好了”之后都冒出新的 bug。它在一个错误的方向上越陷越深。继续纠偏还是推倒重来？这是沉没成本的陷阱。</div><div class="notion-text notion-block-361e6cbb1a328110a098f5964e050668">大多数时候，果断关掉这个 session，用更好的描述开一个全新的，反而更快。因为这个 Agent 的上下文已经被错误污染过了，拖着满是错误的长上下文，只会让 LLM 降智。</div><ul class="notion-list notion-list-disc notion-block-361e6cbb1a328189a325efedc3d73c10"><li>Anthropic 官方 Best Practices：“如果你在同一个会话中就同一个问题纠正了 Claude 两次以上，那么上下文就已经充斥了失败的尝试。” 直接建议 /clear 重开。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a328197a9def6a8c3e4aecd"><li>Sourcegraph 工程师发现：Claude Sonnet 宣传有 20 万 token 限制，但上下文窗口质量在 14.7 万至 15.2 万 token 左右就会出现下降。有效上下文大约只有标称值的 75%。</li></ul><div class="notion-text notion-block-361e6cbb1a3281f0bcffeb3eda2e4b45">每次 clear session，就是送走一个已经“污染”的幽灵，再召唤一个全新的。Karpathy 说得对，我们不是在进化动物，我们是在召唤幽灵——幽灵没有记忆积累，没有成长曲线，它只有当下这一次召唤的状态。接受这一点，你才能果断地 kill session 而不觉得浪费。好的管理者果断止损，好的 vibe coder 也是。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281c08d86def1fe7a302e" data-id="361e6cbb1a3281c08d86def1fe7a302e"><span><div id="361e6cbb1a3281c08d86def1fe7a302e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281c08d86def1fe7a302e" title="Agentic Engineering"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Agentic Engineering</span></span></h3><div class="notion-text notion-block-361e6cbb1a328103937bdc2e2680fc2f">2026 年 2 月 4 日，vibe coding 一周年。Karpathy 自己发了一条回顾帖，给这个概念做了升级。他说，vibe coding 是早期的、实验性的玩法。而现在专业级别的开发已经演化到了下一个阶段，他给它起了个新名字：Agentic Engineering。</div><blockquote class="notion-quote notion-block-361e6cbb1a328163b357e759ee8e5a83"><div>&#x27;Agentic&#x27; because the new default is that you are not writing the code directly 99% of the time, you are orchestrating agents who do.</div></blockquote><div class="notion-text notion-block-361e6cbb1a3281afa64ce36f685b5db3">Orchestrating agents：编排 Agent。从 vibe coding 到 agentic engineering，变的是名字，不变的本质是：你不再是那个写代码的人，你是那个让 Agent 写出正确代码的人。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328125b5edce79f2d954ab" data-id="361e6cbb1a328125b5edce79f2d954ab"><span><div id="361e6cbb1a328125b5edce79f2d954ab" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328125b5edce79f2d954ab" title="从反馈者到编排者"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">从反馈者到编排者</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281509ce5dfaae7dace80">Orchestrate 这个词最早就是交响乐团的指挥（orchestra conductor）——不演奏任何乐器，但协调所有乐手的节奏、力度和进场顺序。前面讲的都是你直接带着几个 Agent session 干活。你是 TL，Agent 是你的下属。但如果任务足够复杂，光靠反馈已经不够了。你需要规划谁先做什么、谁的产出喂给谁、什么时候该合并、什么时候该回退。这时候你的角色就从反馈者变成了编排者。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328135bbaacc92ada9cc49" data-id="361e6cbb1a328135bbaacc92ada9cc49"><span><div id="361e6cbb1a328135bbaacc92ada9cc49" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328135bbaacc92ada9cc49" title="“组织架构”升级"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">“组织架构”升级</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281e48e85c1cc1f7b3f1a">无论人和 Agent，组织架构升级的本质是：把“人来判断”变成“机制来判断”。你不再亲自验收每个 Executor 的产出。你要建立一个 Sub-team，让它具备两个能力：自主做日常规划决策，以及内建纠错机制。</div><div class="notion-text notion-block-361e6cbb1a3281459feee8ba65943723">我把一个子任务拆成至少 3 个角色：Planner 规划任务，Executor 执行任务，Reviewer 审查过程和结论。</div><ul class="notion-list notion-list-disc notion-block-361e6cbb1a3281c39bb9eef8c1d29057"><li>Planner（sub-Leader）负责对抗 Agent“人性”里的短视和畏难，避免 Executor 目标不清晰。Planner 需要长期记忆，他需要记住全局视图，哪些路径试过了，哪些结论已经被验证了，当前的优先级是什么。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a32817f8fa6eb90d23d400e"><li>Executor 是每次编码执行的时候才 Spawn 出来的，避免了长上下文后的“变蠢”和偏离目标。它积累的不是经验，是偏见。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a3281648b08d5696cd92611"><li>Reviewer 在处理复杂的多变量问题时候，Review 代码和结论。没有 Reviewer，结论层层汇报上去，可能 Orchestrator 误认为目标达到了。</li></ul><div class="notion-text notion-block-361e6cbb1a3281cd8cd6e91286967342">这个架构解决了两个核心问题：自主决策（Planner 拆解任务，Reviewer 验收结果，日常循环不需要你介入）和纠错机制（Executor 产出有问题，Reviewer 会拦住）。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a3281108946e963bc447457" data-id="361e6cbb1a3281108946e963bc447457"><span><div id="361e6cbb1a3281108946e963bc447457" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a3281108946e963bc447457" title="新晋TL的忌讳"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">新晋TL的忌讳</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281738d18f67214616b99">现实中最常见的问题是：这个 Sub-TL 忍不住自己下场干活。如果你用过 Claude Code 的多 Agent 的 Team 模式，你会发现：理论上有一个 main agent 在做调度，但它经常忍不住自己下场写代码。一旦它开始执行，它就被阻塞了。你在终端那边干等着，整个交互节奏崩掉。</div><div class="notion-text notion-block-361e6cbb1a328112bdafec781214d6e0">带过团队的人一定见过同款 TL——技术最强，从 IC 晋升上来，遇到问题的第一反应是“我自己来比较快”。然后呢？他写代码的那两个小时，三个人等他 review，两个人等他拍方案。他个人产出了，但团队吞吐量反而下降了。同一种病。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328100b135ef63c8f8687c" data-id="361e6cbb1a328100b135ef63c8f8687c"><span><div id="361e6cbb1a328100b135ef63c8f8687c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328100b135ef63c8f8687c" title="用最贵的 Agent，还要知“Agent”善任"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">用最贵的 Agent，还要知“Agent”善任</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281589a3acadce5d0fbeb">团队招聘，同样的预算，招更多便宜的人，还是少量贵的人？很多时候答案是后者。Agent 也完全一样。一个弱模型出现一次幻觉，你花半小时排查、纠偏、重跑。贵的那个一次就对了。你的时间才是整个系统里最贵的资源。</div><div class="notion-text notion-block-361e6cbb1a3281aca6dde9905a4febb2">关键角色永远用最好的。Planner 和 Reviewer 用最强的模型，Executor 可以用成本更低的。做判断的地方不省钱，做执行的地方可以控制成本。</div><ul class="notion-list notion-list-disc notion-block-361e6cbb1a328166b41ce23085c47a3f"><li>Claude：负责出方案、规划、架构设计、需求拆解。思考快、创造性强、写方案条理清晰。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a32813cbab2dd34b2c38816"><li>Codex：负责坚定执行、写代码、改 bug、实现细节。一旦拿到清晰方案，执行力爆表。</li></ul><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328132bbcde843c68c1330" data-id="361e6cbb1a328132bbcde843c68c1330"><span><div id="361e6cbb1a328132bbcde843c68c1330" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328132bbcde843c68c1330" title="光有好人还不够，还得有好环境"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">光有好人还不够，还得有好环境</span></span></h3><div class="notion-text notion-block-361e6cbb1a3281e69335f640815285e7">你一定见过这种情况：一个公认很强的工程师，换了一家公司之后表现平平。不是他能力退化了，是新公司的基础设施太差。再好的人，在这种环境里也只能发挥出三成功力。Agent 也完全一样。</div><div class="notion-text notion-block-361e6cbb1a32812b97e3e9d9bdf5da33">Anthropic 在 2026 年初发布了一篇关于 Agent 评估体系的长文，里面有一个让人警醒的发现：基础设施配置对 Agent 表现的影响，有时候比换一个模型还大。有时甚至超过不同顶级模型之间的差距，实验中最高能差 6 个百分点。</div><div class="notion-text notion-block-361e6cbb1a3281f78a5cf45b93c11211">对应到 vibe coding，你给 Agent 的工作环境就是：CLAUDE.md 写得够不够清楚？架构设计文档做充分的整理？工具脚手架有没有沉淀？项目结构是不是易于理解？任务描述有没有歧义？工具链是否稳定？这些不是 Agent 的问题，是你的问题。好的 vibe coder 也一样——Agent 表现差的时候，先审视环境，再怀疑模型。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-361e6cbb1a328113a89ac712c3636e53" data-id="361e6cbb1a328113a89ac712c3636e53"><span><div id="361e6cbb1a328113a89ac712c3636e53" class="notion-header-anchor"></div><a class="notion-hash-link" href="#361e6cbb1a328113a89ac712c3636e53" title="放弃代码过程，拥抱未来"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">放弃代码过程，拥抱未来</span></span></h3><div class="notion-text notion-block-361e6cbb1a32815db491efe3d2e925aa">Vibe coding 要求你放弃对过程的掌控，转而通过机制设计、结果审查、反复试错来达成目标。最初的程序员是写汇编的，然后用汇编做出来了 C 语言，就很少有人写汇编了。现在只不过是用自然语言替代了高级编程语言。放弃代码过程，也可以理解成是换了一种“编程语言”。</div><div class="notion-text notion-block-361e6cbb1a32811c9625e7b6b64bdd74">但放弃过程控制，不等于放弃质量要求。它是把质量保障的方式，从过程审查转移到了机制设计。</div><ul class="notion-list notion-list-disc notion-block-361e6cbb1a328123881bc93813d501d2"><li>执行前铺好轨道——Planner 规划、Reviewer 审查、CLAUDE.md 作为每个新 Agent 的 onboarding 文档。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a3281b3873df9bba7bceb42"><li>执行后验收结果——不看代码怎么写的，只看产出是不是你要的。</li></ul><ul class="notion-list notion-list-disc notion-block-361e6cbb1a3281f38f3af062157840ab"><li>中间接受快速试错——效率不来自一次做对，而来自迭代速度。</li></ul><div class="notion-text notion-block-361e6cbb1a3281648673e2204f0106fb">传统开发像外科手术，每一刀都要精准。Vibe coding 更像雕塑，你不断塑形、修正、打磨，直到它变成你想要的样子。你不需要预先知道每一刀怎么切，但你得知道最终的形状。</div><div class="notion-text notion-block-361e6cbb1a3281558fb0fab3f3863085">所以 vibe coding 真正需要的能力，和写代码关系不大。它需要品味——知道什么是好的结果，即使你不知道怎么实现。需要判断力——什么时候信任产出，什么时候质疑，什么时候 kill session。需要系统思维——怎么设计机制让 Agent 团队自运转。需要表达力——你描述需求的清晰度直接决定产出质量。</div><div class="notion-text notion-block-361e6cbb1a32816c8c30c8748e5d6930">你会发现，Vibe Coding 和“怎么写代码”无关，但和“怎么带团队”高度重合。而你管的这个团队，恰好是 Agent 组成的。</div><hr class="notion-hr notion-block-361e6cbb1a32812c9ce3edc4445accd2"/><div class="notion-callout notion-block-361e6cbb1a3281b18568e2f4bd0a463f"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="📎">📎</span></div><div class="notion-callout-text">原文作者：九老师 | 来源：Recsys Frontier
原文链接：https://blog.recsys-frontier.com/article/vibe-coding-like-man-team
本文采用 CC BY-NC-SA 4.0 许可协议，转载请注明出处。</div></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ 信贷风控建模实战：从特征工程到模型交付的完整流程]]></title>
            <link>https://sray-s-blog.pages.dev/article/jdjt-v3-credit-risk-modeling</link>
            <guid>https://sray-s-blog.pages.dev/article/jdjt-v3-credit-risk-modeling</guid>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[本文记录了 JDJT V3 风控建模项目的完整技术方案与实验结果，涵盖数据处理、特征工程、模型训练、评估体系和交付物管理。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-35ee6cbb1a32811683a9f8bbf123f9ca"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-35ee6cbb1a32819d851efa9c109e3f4f" data-id="35ee6cbb1a32819d851efa9c109e3f4f"><span><div id="35ee6cbb1a32819d851efa9c109e3f4f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32819d851efa9c109e3f4f" title=" 信贷风控建模实战：从特征工程到模型交付的完整流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default"> 信贷风控建模实战：从特征工程到模型交付的完整流程</span></span></span></h2><blockquote class="notion-quote notion-block-35ee6cbb1a328154860afaf945bc0e79"><div><span class="notion-default">本文记录了 风控建模项目的完整技术方案与实验结果，涵盖数据处理、特征工程、模型训练、评估体系和交付物管理。</span></div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a3281b59c47f7fffbec9ab1" data-id="35ee6cbb1a3281b59c47f7fffbec9ab1"><span><div id="35ee6cbb1a3281b59c47f7fffbec9ab1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281b59c47f7fffbec9ab1" title="项目背景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">项目背景</span></span></span></h3><div class="notion-text notion-block-35ee6cbb1a32814f992ed7d6d371054a"><span class="notion-default">信贷风控模型的核心目标是：在用户申请时点，基于三方数据和业务特征，预测其未来逾期风险。与通用机器学习任务不同，风控建模有几个硬约束：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32817eb467f471b8c5fad8"><li><span class="notion-default"><b>标签观察窗成熟度</b></span><span class="notion-default">：不同逾期标签需要不同的观察期，未成熟的样本不能混入</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32818db225db437e0e1828"><li><span class="notion-default"><b>申请时点一致性</b></span><span class="notion-default">：所有特征必须在申请决策时可见，严禁信息穿越</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281f7a2c9e9c52e60bfac"><li><span class="notion-default"><b>时间外推验证</b></span><span class="notion-default">：模型必须在未来的 OOT（Out-of-Time）样本上验证泛化能力</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281389d30fd933f2aa4e8"><li><span class="notion-default"><b>主体隔离</b></span><span class="notion-default">：同一客户多次复借时，需要评估模型对新客的泛化能力</span></li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a3281a7ac63d542d1bfbab6" data-id="35ee6cbb1a3281a7ac63d542d1bfbab6"><span><div id="35ee6cbb1a3281a7ac63d542d1bfbab6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281a7ac63d542d1bfbab6" title="数据与标签体系"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">数据与标签体系</span></span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a32812faebede781b824e52" data-id="35ee6cbb1a32812faebede781b824e52"><span><div id="35ee6cbb1a32812faebede781b824e52" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32812faebede781b824e52" title="输入数据"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">输入数据</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a328152a52bc6b9c151b388"><span class="notion-default">建模输入为聚合后的 </span><span class="notion-default"><code class="notion-inline-code">df_merge</code></span><span class="notion-default">，一行对应一个申请/合同维度样本，包含：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328135b7a0ff9a95de8996"><li><span class="notion-default">申请侧基础字段</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281fb85edddd43ab62b4f"><li><span class="notion-default">贷中衍生特征</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328178a116e6bdeab5a1bf"><li><span class="notion-default"><code class="notion-inline-code">resp_msg</code></span><span class="notion-default"> 三方 JSON 数据（主要特征来源）</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281a1ac8ee895965cc8cf"><li><span class="notion-default">合同维度贷后标签</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281ceab3fed9116bf2bf3"><li><span class="notion-default">标签成熟度字段</span></li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a328154849ee5df275d11d5" data-id="35ee6cbb1a328154849ee5df275d11d5"><span><div id="35ee6cbb1a328154849ee5df275d11d5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328154849ee5df275d11d5" title="风险标签"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">风险标签</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a3281b4a028e24a8daeeae5"><span class="notion-default">每个标签独立建模，不做多任务混合训练：</span></div><table class="notion-simple-table notion-block-35ee6cbb1a328133b506e9f44eb3d369"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a328128bc30c95a74b6b661"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">标签</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">含义</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">成熟度字段</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281a58f92f07592ce8c20"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">首期 D1+ 逾期</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd_valid</code></span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281e384ecefd14ec5dbac"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd_d7</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">首期 D7+ 逾期</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd_d7_valid</code></span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32817d9d84ede4206ac57e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd_m1</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">首期 D30+ 逾期</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_fpd_m1_valid</code></span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a328172ae99f05a6943ffff"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_3m_m1</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">前三期任一期 D30+</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_3m_m1_valid</code></span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32817a9e54f6b9ba8bbb8a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_m2_plus</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">合同周期内 D60+</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_full_valid</code></span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281a4abafed2d96a668ba"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_m3_plus</code></span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">合同周期内 D90+</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default"><code class="notion-inline-code">y_full_valid</code></span></div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a3281538a94f3454569c343" data-id="35ee6cbb1a3281538a94f3454569c343"><span><div id="35ee6cbb1a3281538a94f3454569c343" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281538a94f3454569c343" title="样本规模"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">样本规模</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a32817e9d9ee1e231a2324e"><span class="notion-default">最终建模样本量约 90 万行 × 3000 个候选特征，属于典型的高维稀疏场景。</span></div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a3281cfac60eba522044960" data-id="35ee6cbb1a3281cfac60eba522044960"><span><div id="35ee6cbb1a3281cfac60eba522044960" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281cfac60eba522044960" title="特征工程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">特征工程</span></span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a3281319bf4d8e1455652ba" data-id="35ee6cbb1a3281319bf4d8e1455652ba"><span><div id="35ee6cbb1a3281319bf4d8e1455652ba" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281319bf4d8e1455652ba" title="resp_msg 全量展开"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">resp_msg 全量展开</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a3281acb78af25c8ee9c6ea"><span class="notion-default"><code class="notion-inline-code">resp_msg</code></span><span class="notion-default"> 是三方数据的 JSON 字段，包含丰富的风险信号。采用&quot;全量展开，后续筛选&quot;策略：</span></div><div class="notion-text notion-block-35ee6cbb1a3281fc9c2df361c2eebed8"><span class="notion-default">展开后的字段分为三层：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32819aabc9e7baf0b43c28"><li><span class="notion-default"><b>可直接候选层</b></span><span class="notion-default">：申请时点明确可见、业务含义清晰</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281b5b6bec3429741b508"><li><span class="notion-default"><b>待审查层</b></span><span class="notion-default">：口径不稳定、来源不清晰</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32815880bcfd5f6372393b"><li><span class="notion-default"><b>禁止入模层</b></span><span class="notion-default">：贷后字段、审批后字段、外部回填字段</span></li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a3281c3bcc3c524cb29dff1" data-id="35ee6cbb1a3281c3bcc3c524cb29dff1"><span><div id="35ee6cbb1a3281c3bcc3c524cb29dff1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281c3bcc3c524cb29dff1" title="变量筛选流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">变量筛选流程</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a3281aaa43eff3ae86f76d7"><span class="notion-default">关键指标口径：</span></div><table class="notion-simple-table notion-block-35ee6cbb1a32813a968beeb519cee34b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a3281098834c9a48e9981c9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">指标</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">计算样本</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">用途</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32819ca93be4daa14b51cd"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">IV</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">衡量变量区分能力</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a328196868bef926cbc4ae4"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">单变量 AUC</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">衡量变量单独排序能力</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32814ba5d7ed62d4dabae2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">月度稳定性</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">衡量开发期内变量波动</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32812ab574c58bb3ef368c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Valid PSI</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Valid vs Train</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定性观察</span></div></td></tr></tbody></table><div class="notion-text notion-block-35ee6cbb1a3281ba8881d4dd43bd978b"><span class="notion-default">单变量 AUC 使用方向无关口径：</span><span class="notion-default"><code class="notion-inline-code">single_auc = max(raw_auc, 1 - raw_auc)</code></span><span class="notion-default">，避免负相关强变量被误杀。</span></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a32815bbbe2d23d737e37d2" data-id="35ee6cbb1a32815bbbe2d23d737e37d2"><span><div id="35ee6cbb1a32815bbbe2d23d737e37d2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32815bbbe2d23d737e37d2" title="内存优化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">内存优化</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a32819fb4f4c451a2750004"><span class="notion-default">由于数据规模达到 90 万行 × 3000 特征，直接复制宽表会导致内存不足。采用低内存改造：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32813e825bdd00cd8b7399"><li><span class="notion-default">上下文构建阶段只保留窄控制表</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281ec8161e3d31c926722"><li><span class="notion-default">切分阶段只保存行索引和必要控制字段</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281599337c8635cf35c72"><li><span class="notion-default">变量筛选只在抽样行上 materialize 全量候选特征</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281258ea8cc007af0f236"><li><span class="notion-default">模型训练阶段只 materialize 最终入模变量</span></li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a3281b0be4cdb98a370b875" data-id="35ee6cbb1a3281b0be4cdb98a370b875"><span><div id="35ee6cbb1a3281b0be4cdb98a370b875" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281b0be4cdb98a370b875" title="实验设计"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">实验设计</span></span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a328167aacbdffe48175e87" data-id="35ee6cbb1a328167aacbdffe48175e87"><span><div id="35ee6cbb1a328167aacbdffe48175e87" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328167aacbdffe48175e87" title="切分策略"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">切分策略</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a328175a4becf404f8fb2b3"><span class="notion-default">支持两种开发期切分：</span></div><table class="notion-simple-table notion-block-35ee6cbb1a3281fc8617fdf1774e1ad8"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a32819098e8e3a373f2dfb1"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">策略</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">说明</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">适用场景</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281cb861feb0c9d233559"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">开发期内按天抽样切分 Train/Valid</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">模型横向比较、调参</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32813d8365d27abdc11dd6"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">B</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">开发期尾部时间窗作为 Valid</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">时间稳定性验证</span></div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a3281b4a9aededee8c9140c" data-id="35ee6cbb1a3281b4a9aededee8c9140c"><span><div id="35ee6cbb1a3281b4a9aededee8c9140c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281b4a9aededee8c9140c" title="主体隔离"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">主体隔离</span></span></span></h4><table class="notion-simple-table notion-block-35ee6cbb1a32817c9300edd35fed784f"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a3281e88d5efe65479ea96e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">口径</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">说明</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32812e93cac9013ea1a347"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">C1</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">不做客户隔离，贴近真实业务流量</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32819f9cdbe8b457f42c49"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">C2</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">OOT Test 做客户隔离，检查新客泛化能力</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32812fa1afe9eaef43eac5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">C3</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train/Valid/Test 全流程客户隔离</span></div></td></tr></tbody></table><div class="notion-text notion-block-35ee6cbb1a328160ab03ee1ba63e8651"><span class="notion-default">主实验采用 C1，稳健性分析补充 C2。</span></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a32815a9e4ec3999bcde5ec" data-id="35ee6cbb1a32815a9e4ec3999bcde5ec"><span><div id="35ee6cbb1a32815a9e4ec3999bcde5ec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32815a9e4ec3999bcde5ec" title="两阶段实验"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">两阶段实验</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a32810282a5d4380d659464"><span class="notion-default"><b>第一阶段：基线实验</b></span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281c18ee7f04e03894509"><li><span class="notion-default">不做 Optuna 调参</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281dcb0bde9fdb0076895"><li><span class="notion-default">快速比较：目标标签 × 模型类型 × 切分策略 × 不平衡策略</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281b38787edfd19fe0ad5"><li><span class="notion-default">筛选较优候选组合</span></li></ul><div class="notion-text notion-block-35ee6cbb1a3281628a7ec1afdff2c9dc"><span class="notion-default"><b>第二阶段：Top 候选精调</b></span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281f2ae3dc68afd6b30fe"><li><span class="notion-default">只对第一阶段 Top 候选做 Optuna 超参数搜索</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328122ac8cda8894b0f4ca"><li><span class="notion-default">调参目标：</span><span class="notion-default"><code class="notion-inline-code">OOT AUC - penalty(Train-Valid gap) - penalty(Valid-OOT gap)</code></span></li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a328123a89aec061bce9622" data-id="35ee6cbb1a328123a89aec061bce9622"><span><div id="35ee6cbb1a328123a89aec061bce9622" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328123a89aec061bce9622" title="实验结果"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">实验结果</span></span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a328147bc02e8d0c9eaaa34" data-id="35ee6cbb1a328147bc02e8d0c9eaaa34"><span><div id="35ee6cbb1a328147bc02e8d0c9eaaa34" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328147bc02e8d0c9eaaa34" title="最佳模型汇总"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">最佳模型汇总</span></span></span></h4><table class="notion-simple-table notion-block-35ee6cbb1a328177a510f88cc4b9bfed"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a328131be3ee37fae9b4430"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">标签</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">最佳模型</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">切分</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">不平衡策略</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train AUC</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Valid AUC</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">OOT AUC</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">KS</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">特征数</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281e2a542d8fef34f3feb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">XGBoost</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">class_weight</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.624</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.604</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.585</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.125</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">104</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32810fa6dfc6adec9ac956"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd_d7</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">LightGBM</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">B</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">none</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.717</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.649</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.598</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.155</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">125</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32812787cdf8351a5cd90c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd_m1</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">XGBoost</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">none</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.639</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.619</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.599</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.177</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">121</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281c0a7d7d545bbabc65a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_3m_m1</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">XGBoost</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">none</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.652</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.644</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.625</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.194</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">118</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281609b92c3b63930b94f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_m2_plus</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">LightGBM</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">none</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.835</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.812</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.794</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.463</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">125</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281b9bbabdb23c89dcc33"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_m3_plus</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">LightGBM</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">A</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">class_weight</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.857</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.833</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.816</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.559</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">128</span></div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a3281beaeb8e6d45761547e" data-id="35ee6cbb1a3281beaeb8e6d45761547e"><span><div id="35ee6cbb1a3281beaeb8e6d45761547e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281beaeb8e6d45761547e" title="泛化差距分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">泛化差距分析</span></span></span></h4><table class="notion-simple-table notion-block-35ee6cbb1a32811da85df43ed1c1b83a"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-35ee6cbb1a3281d7a417eb837d527624"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">标签</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Train-Valid Gap</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">Valid-OOT Gap</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">评估</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281778d89d1f293685e99"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.020</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.019</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32817988dfd85aefdd74be"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd_d7</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.067</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.051</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">过拟合风险</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281ed8b9ed24bbf06b80d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_fpd_m1</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.021</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.019</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a32819b9e93c0816066af68"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_3m_m1</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.007</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.020</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281cdbf21ef65fec14af9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_m2_plus</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.022</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.018</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定</span></div></td></tr><tr class="notion-simple-table-row notion-block-35ee6cbb1a3281619d41d5591dfe331b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">y_m3_plus</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.024</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">0.017</span></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><span class="notion-default">稳定</span></div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a32818592a1fb48f5233f4a" data-id="35ee6cbb1a32818592a1fb48f5233f4a"><span><div id="35ee6cbb1a32818592a1fb48f5233f4a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32818592a1fb48f5233f4a" title="关键发现"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">关键发现</span></span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-35ee6cbb1a328162b6c3ec0cdcc7919f" style="list-style-type:decimal"><li><span class="notion-default"><b>短期标签预测难度大</b></span><span class="notion-default">：y_fpd、y_fpd_m1 的 OOT AUC 在 0.58-0.60 区间，接近随机水平</span></li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-35ee6cbb1a3281e6a4fbcda3891d3fa2" style="list-style-type:decimal"><li><span class="notion-default"><b>长期标签效果好</b></span><span class="notion-default">：y_m2_plus、y_m3_plus 的 OOT AUC 超过 0.79，KS 超过 0.46</span></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-35ee6cbb1a32819cb410fd5fa312d535" style="list-style-type:decimal"><li><span class="notion-default"><b>y_fpd_d7 过拟合</b></span><span class="notion-default">：Train-Valid Gap 达到 0.067，需要关注模型稳定性</span></li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-35ee6cbb1a3281c88ffbc571a04c7a5b" style="list-style-type:decimal"><li><span class="notion-default"><b>泛化差距可控</b></span><span class="notion-default">：除 y_fpd_d7 外，所有模型的 Train-Valid/Valid-OOT Gap 都在 0.03 以内</span></li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-35ee6cbb1a32811f81b5e042508f77cc" data-id="35ee6cbb1a32811f81b5e042508f77cc"><span><div id="35ee6cbb1a32811f81b5e042508f77cc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32811f81b5e042508f77cc" title="最佳模型超参数"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">最佳模型超参数</span></span></span></h4><div class="notion-text notion-block-35ee6cbb1a3281b0ae79cf2509155edc"><span class="notion-default"><b>y_fpd (XGBoost)</b></span></div><div class="notion-text notion-block-35ee6cbb1a3281f785bee8b0dbf23a10"><span class="notion-default"><b>y_m2_plus (LightGBM)</b></span></div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a328108a013f6086fcf00a6" data-id="35ee6cbb1a328108a013f6086fcf00a6"><span><div id="35ee6cbb1a328108a013f6086fcf00a6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328108a013f6086fcf00a6" title="代码架构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">代码架构</span></span></span></h3><div class="notion-text notion-block-35ee6cbb1a32819e850afe69191cf7d1"><span class="notion-default">项目按职责拆分为以下模块：</span></div><div class="notion-text notion-block-35ee6cbb1a328168b60fdf636d151cf8"><span class="notion-default">最小使用方式：</span></div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a328110abe5c90e5441c78f" data-id="35ee6cbb1a328110abe5c90e5441c78f"><span><div id="35ee6cbb1a328110abe5c90e5441c78f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a328110abe5c90e5441c78f" title="交付物"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">交付物</span></span></span></h3><div class="notion-text notion-block-35ee6cbb1a3281bd928ec9cdb65a88f6"><span class="notion-default">每个最终模型输出：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32815ea882c057ab47a24e"><li><span class="notion-default"><code class="notion-inline-code">model_bundle.pkl</code></span><span class="notion-default"> - 模型包</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328167b4f7ca2578845a04"><li><span class="notion-default"><code class="notion-inline-code">model_meta.json</code></span><span class="notion-default"> - 模型元信息</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281d7a2e3c3669d49b4da"><li><span class="notion-default"><code class="notion-inline-code">best_params.json</code></span><span class="notion-default"> - 最佳超参数</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32818eb208c5119f291c51"><li><span class="notion-default"><code class="notion-inline-code">final_model_feature_list.csv</code></span><span class="notion-default"> - 入模变量清单</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328125a563d9a1a2f11063"><li><span class="notion-default"><code class="notion-inline-code">feature_screening_reason_report.csv</code></span><span class="notion-default"> - 变量筛选原因</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32818f8139c98ab23bf26c"><li><span class="notion-default"><code class="notion-inline-code">model_layer.pmml</code></span><span class="notion-default"> - PMML 导出（可选）</span></li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a3281bc942ac6d3fab41127" data-id="35ee6cbb1a3281bc942ac6d3fab41127"><span><div id="35ee6cbb1a3281bc942ac6d3fab41127" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a3281bc942ac6d3fab41127" title="业务验证方向"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">业务验证方向</span></span></span></h3><div class="notion-text notion-block-35ee6cbb1a32810e916ede837240f877"><span class="notion-default">当前模型已具备基本区分能力，下一步需要补充：</span></div><ol start="1" class="notion-list notion-list-numbered notion-block-35ee6cbb1a32816c83f9dbc493163748" style="list-style-type:decimal"><li><span class="notion-default"><b>固定通过率下坏账率对比</b></span><span class="notion-default">：在 30%/40%/50% 通过率下，坏账率下降多少</span></li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-35ee6cbb1a32814d9629e197cf78f139" style="list-style-type:decimal"><li><span class="notion-default"><b>收益/损失 proxy 模拟</b></span><span class="notion-default">：不同 cutoff 下的预期收益和损失</span></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-35ee6cbb1a32813b8a7bd2ca4c19768d" style="list-style-type:decimal"><li><span class="notion-default"><b>分群验证</b></span><span class="notion-default">：新老客、渠道、产品维度的分群效果</span></li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-35ee6cbb1a3281e78e8bc3836ed6fb9b" style="list-style-type:decimal"><li><span class="notion-default"><b>上线监控</b></span><span class="notion-default">：分数 PSI、关键变量 PSI、月度 AUC/KS</span></li></ol><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-35ee6cbb1a32816295d8d007ab65fed2" data-id="35ee6cbb1a32816295d8d007ab65fed2"><span><div id="35ee6cbb1a32816295d8d007ab65fed2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32816295d8d007ab65fed2" title="总结"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><span class="notion-default">总结</span></span></span></h3><div class="notion-text notion-block-35ee6cbb1a3281fdb55fd4ccdecd4a42"><span class="notion-default">本项目构建了一套面向信贷风控的时间外推建模框架，核心特点：</span></div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281eabe51d270181a5fea"><li><span class="notion-default"><b>标签成熟度过滤</b></span><span class="notion-default">：避免未成熟样本造成的标签偏误</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32816c82f0d01d5abf5138"><li><span class="notion-default"><b>两阶段实验</b></span><span class="notion-default">：先基线筛选，再精调最优</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a328145b8bef9ccae8fc332"><li><span class="notion-default"><b>泛化差距惩罚</b></span><span class="notion-default">：调参目标同时考虑 OOT 效果和泛化差距</span></li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32816c99b1ded5d13a4dcd"><li><span class="notion-default"><b>完整交付链路</b></span><span class="notion-default">：从特征筛选到模型导出的可复现流程</span></li></ul><div class="notion-text notion-block-35ee6cbb1a3281c7b089e48075c8cb85"><span class="notion-default">实验结果显示，长期逾期标签（y_m2_plus、y_m3_plus）的预测效果较好（OOT AUC &gt; 0.79），而短期标签（y_fpd、y_fpd_m1）仍有提升空间，可能需要引入更多实时特征或调整标签定义。</span></div><hr class="notion-hr notion-block-35ee6cbb1a3281d9940cc134d3fba0ca"/><div class="notion-text notion-block-35ee6cbb1a32810a9a15f32f6d1a9679"><span class="notion-default">*项目代码：JDJT_V3*</span></div><div class="notion-text notion-block-35ee6cbb1a3281d89252d7173853e42a"><span class="notion-default">*建模框架：LR / LightGBM / XGBoost + Optuna*</span></div><div class="notion-text notion-block-35ee6cbb1a3281338dbfc14c2c3ecc38"><span class="notion-default">*验证方式：时间外推 OOT + 主体隔离*</span></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Welcome to Risk Frontier]]></title>
            <link>https://sray-s-blog.pages.dev/article/welcome</link>
            <guid>https://sray-s-blog.pages.dev/article/welcome</guid>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Risk Frontier的第一篇文章，记录关于AI实践的探索之路]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-35ee6cbb1a32810b9ddac30d4e2783dd"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-35ee6cbb1a3281f39c83cfd33d6d97de">欢迎来到 Risk Frontier！这是一个关于风控技术与AI实践的博客。</div><div class="notion-text notion-block-35ee6cbb1a3281adb35fc999a236ea50">Risk（风险）+ Frontier（前沿），我们探索风险管理的最前沿技术。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-35ee6cbb1a32814195cefaf896c1d5fa" data-id="35ee6cbb1a32814195cefaf896c1d5fa"><span><div id="35ee6cbb1a32814195cefaf896c1d5fa" class="notion-header-anchor"></div><a class="notion-hash-link" href="#35ee6cbb1a32814195cefaf896c1d5fa" title="关于博客"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">关于博客</span></span></h3><div class="notion-text notion-block-35ee6cbb1a328196922cc1780271f938">这个博客将分享风控建模、机器学习、大数据处理等领域的实践经验和技术思考。</div><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a32811cad22f98c2f266044"><li>风控模型开发与优化</li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281129642f31281e4d336"><li>机器学习在金融领域的应用</li></ul><ul class="notion-list notion-list-disc notion-block-35ee6cbb1a3281669e44ff04897564f9"><li>数据分析与可视化实践</li></ul><div class="notion-text notion-block-35ee6cbb1a328141a2f5f21561894865">Stay curious, keep learning!</div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>