用一条完整策略线,串起你的项目作品集
学完前面所有模块,最后要把它变成求职竞争力。第一步:做一个完整项目作品集。不要堆 5 个零散项目,而是用一条线串:从 M1 样本(四类矩阵拒绝推断)→ M2 特征(WOE 分箱防泄漏)→ M3 规则(决策树挖准入调优)→ M4 额度(风险×需求矩阵)→ M5 监控(PSI/KS)→ M6 上线(UAT回退)。一条全链路,证明你能独立负责一条策略线。作品集交付物:样本处理说明 特征字典 规则决策表 额度矩阵 监控报表 UAT 报告。这就是你的实战证据,比简历上写熟悉风控有力得多。M2 特征WOE 分箱实战WOEWeight of Evidence分箱是风控特征工程的核心步骤用于衡量每个分箱内好坏样本的区分度。下面给出一个可运行的 Python 示例演示如何对连续变量进行分箱并计算 WOE 与 IV。import pandas as pd import numpy as np 模拟样本数据年龄与是否逾期1坏样本0好样本 df pd.DataFrame({ age: [23, 35, 41, 28, 52, 33, 47, 26, 38, 45], bad: [1, 0, 0, 1, 0, 0, 1, 1, 0, 0] }) 等频分箱按分位数切成 3 箱 df[age_bin] pd.qcut(df[age], q3, duplicatesdrop) 统计每个分箱的好坏样本数 grouped df.groupby(age_bin, observedTrue)[bad].agg([sum, count]) grouped[good] grouped[count] - grouped[sum] 计算 WOE 和 IV total_bad grouped[sum].sum() total_good grouped[good].sum() grouped[bad_rate] grouped[sum] / total_bad grouped[good_rate] grouped[good] / total_good grouped[woe] np.log(grouped[good_rate] / grouped[bad_rate]) grouped[iv] (grouped[good_rate] - grouped[bad_rate]) * grouped[woe] print(grouped[[sum, good, woe, iv]]) print(f总 IV {grouped[iv].sum():.4f})输出结果说明每个分箱会输出好坏样本数、WOE 值和 IV 贡献。WOE 绝对值越大说明该分箱区分好坏样本的能力越强总 IV 大于 0.1 通常认为该特征有预测力。若某分箱 WOE 单调递增或递减说明变量与风险呈线性关系可直接入模。应用到作品集在「特征字典」中为每个连续变量附上分箱边界、WOE 表和 IV 值并标注「防泄漏」处理如分箱只用训练集统计量验证集直接映射。这能直观展示你对特征工程和过拟合控制的掌握。M3 规则决策树挖准入实战决策树可以从数据中自动挖掘可解释的准入规则替代人工拍脑袋设定阈值。下面演示如何用决策树生成规则并输出规则文本用于风控决策表。from sklearn.tree import DecisionTreeClassifier, export_text import pandas as pd 模拟特征收入、负债率、历史逾期次数 df pd.DataFrame({ income: [8000, 12000, 6000, 15000, 9000, 11000, 7000, 13000], debt_ratio: [0.3, 0.2, 0.5, 0.1, 0.4, 0.25, 0.45, 0.15], overdue_cnt: [0, 1, 2, 0, 1, 0, 3, 0], approve: [1, 1, 0, 1, 0, 1, 0, 1] # 1准入0拒绝 }) X df[[income, debt_ratio, overdue_cnt]] y df[approve] 训练决策树限制深度保证可解释性 clf DecisionTreeClassifier(max_depth3, random_state42) clf.fit(X, y) 输出规则文本 rules export_text(clf, feature_names[income, debt_ratio, overdue_cnt]) print(rules)输出结果说明决策树会输出类似「income 7500 → 拒绝」的分支规则。每条从根到叶的路径就是一条准入规则例如「收入大于 7500 且负债率小于 0.35 → 准入」。通过限制树深度规则保持简洁可解释便于业务审核和上线部署。应用到作品集把决策树输出的规则整理成「规则决策表」每条规则标注支持样本数和拒绝率。再结合调优如调整 max_depth、min_samples_leaf对比不同规则集的通过率与坏账率展示你具备规则挖掘和参数调优的完整能力。常见问题与排查在制作风控项目作品集时以下三个问题最容易出现也最容易被面试官追问。提前准备好解决思路和检查清单能让你的作品集更经得起推敲。问题一样本不平衡问题表现坏样本占比过低如不足 5%模型倾向把所有样本判为好样本导致 KS、AUC 虚高但实际区分能力不足。解决思路先做样本分层抽样保证训练集和验证集的好坏比例一致。对少数类使用过采样如 SMOTE或对多数类欠采样但要在验证集上保持真实分布。评估指标不要只看准确率重点看 KS、AUC、坏样本召回率Recall和提升度Lift。检查清单训练集与验证集的好坏样本比例是否一致是否在验证集上使用了与训练集相同的采样策略最终报告是否同时给出 KS、AUC 和坏样本召回率问题二特征泄漏问题表现特征里混入了未来信息或标签信息导致训练时表现极好上线后效果断崖式下跌。典型如用「当前逾期状态」预测「未来是否逾期」。解决思路严格按时间切分样本训练集用历史数据验证集用之后的数据避免时间穿越。WOE 分箱、缺失值填充、标准化等统计量只在训练集上计算验证集直接映射。对每个特征做「信息时间戳」审查确认特征取值不晚于样本观察时点。检查清单每个特征是否都标注了数据生成时间且早于标签定义时点分箱边界、均值、标准差等是否只来自训练集是否用「时间外验证」或「滚动窗口验证」复测过模型效果问题三规则过拟合问题表现决策树深度过大或规则过细训练集上通过率与坏账率都很理想但换一批样本后规则失效泛化能力差。解决思路限制决策树深度如 max_depth3和叶子节点最小样本数如 min_samples_leaf50保证规则简洁可解释。用交叉验证或独立验证集评估规则集对比训练集与验证集的通过率、坏账率差异。对规则做业务合理性审查剔除「数据巧合」型规则保留有业务逻辑支撑的规则。检查清单训练集与验证集的通过率、坏账率差异是否在可接受范围如 2% 以内每条规则是否都能用业务语言解释清楚是否记录了调优过程如不同 max_depth 下的效果对比