ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

skope-rules 进阶:用 score_top_rules 与 predict_top_rules 构建业务风险评分系统

skope-rules 进阶:用 score_top_rules 与 predict_top_rules 构建业务风险评分系统 skope-rules 进阶用 score_top_rules 与 predict_top_rules 构建业务风险评分系统【免费下载链接】skope-rulesmachine learning with logical rules in Python项目地址: https://gitcode.com/gh_mirrors/sk/skope-rulesskope-rules 是一个基于 scikit-learn 的 Python 机器学习库专为逻辑规则学习而设计它把复杂的分类任务提炼成一条条形如IF 条件 THEN 风险的可读规则既保留决策树的直观解释性又具备随机森林的建模能力。本文聚焦它的两个进阶方法score_top_rules与predict_top_rules手把手教你搭建一套可落地、可审计、可解释的业务风险评分系统例如信贷违约风险、欺诈交易识别等场景。什么是 skope-rules为可解释而生的规则学习库在风控、医疗、金融等强监管领域模型不仅要预测得准更要说得清。skope-rules 的核心思想很简单通过集成多棵决策树从每棵树的路径中抽取候选规则再用袋外Out-of-Bag样本评估每条规则的精确率与召回率最终保留下满足precision_min与recall_min阈值的高质量规则并对相似规则做去重。整个流程清晰可见Bagging 训练决策树与回归树 → 抽取逻辑规则 → 精确率/召回率过滤 → 语义去重。最终产出的是类似下面的可读规则LIMIT_BAL 100000 and PAY_1 0 and AGE 35这意味着当客户信用额度低于 10 万、上月还款状态异常且年龄小于 35 岁时模型判定其违约风险较高——每一条规则都能直接翻译成业务语言。为什么业务风险评分更需要可解释模型黑盒模型如深度神经网络、大型集成模型虽然精度高但在业务落地中会遇到三个现实难题监管合规监管机构要求对拒贷、风控决策给出明确依据人工复核风控人员需要快速判断模型结论是否合理规则一眼可读持续迭代业务专家能根据规则直接提出优化建议而不是猜模型在想什么。skope-rules 恰好命中这些痛点这也是它被广泛用于规则评分卡类系统的原因。五个核心方法一张表看懂SkopeRules训练完成后主要提供五个推理方法定义见 skrules/skope_rules.py 的SkopeRules类方法返回值含义适用场景predict(X)0/1 二分类结果常规分类decision_function(X)规则按精确率加权的总分连续风险分rules_vote(X)命中的规则条数快速统计覆盖度score_top_rules(X)按规则精度排序的排名分风险评分核心predict_top_rules(X, n_rules)仅用最精确 N 条规则的 0/1 结果高精度准入决策其中后两个方法就是构建风险评分系统的关键。score_top_rules 原理规则越精确风险分越高score_top_rules的思想非常巧妙它不再给每条规则加权求和而是按规则表现排序给命中高精度规则的样本更高的分。具体来说训练完成后所有规则按表现从好到差排列。某个样本命中了排名第 k 的规则就获得len(rules) - k分若命中多条规则则取其中的最高分np.maximum逻辑。于是命中最精确规则的样本 → 得分最高只命中弱规则的样本 → 得分较低一条规则都没命中的样本 → 得分为 0视为低风险。from skrules import SkopeRules clf SkopeRules(n_estimators30, precision_min0.6, recall_min0.04) clf.fit(X_train, y_train) risk_score clf.score_top_rules(X_test) # 每个样本一个风险排名分这个分数的妙处在于它天然是离散的、可解释的。风控人员看到分数 23就知道样本命中了第 23 精确的规则可以立刻定位到具体规则逐条审查。上图展示了decision_function在二维特征空间上的表现蓝色深浅代表风险分数高低红点风险样本集中在高分区规则把高风险区圈得明明白白。predict_top_rules只信任最精确的 N 条规则predict_top_rules(X, n_rules)则解决了另一个业务问题当你想严格控制误伤率时只让最可靠的几条规则参与决策。它的实现基于score_top_rules当样本的风险排名分超过len(rules_) - n_rules时判为 1等价于只要命中最精确的前 N 条规则中的任意一条就触发风险预警。# 只用最精确的 3 条规则做准入判断 hard_decision clf.predict_top_rules(X_test, n_rules3)这在业务上非常实用n_rules越小召回越严、精度越高适合高风险直接拦截n_rules越大覆盖面越广适合次级风险进入人工队列。你可以根据精确率-召回率曲线灵活调整这个参数实现风控松紧度的旋钮式控制。实战用 score_top_rules 构建信贷违约风险评分系统下面用项目自带的信用卡违约数据集skrules/datasets/credit_data.py 的load_credit_data()共 3 万条样本、约 22% 违约率完整走一遍流程。第一步加载数据并训练模型from skrules import SkopeRules from skrules.datasets import load_credit_data dataset load_credit_data() X, y dataset.data, dataset.target # y1 表示违约 clf SkopeRules( max_depth3, n_estimators20, max_depth_duplication3, # 语义去重深度 precision_min0.6, recall_min0.04, # 只保留高精度规则 feature_nameslist(X.columns), random_state1, ) clf.fit(X_train, y_train)第二步输出规则先看模型学到了什么for rule in clf.rules_[:5]: print(rule[0])你会看到类似PAY_1 0 and LIMIT_BAL 210000的规则——上月还款逾期 额度不高 高风险业务上完全说得通。第三步计算风险分并评估risk_score clf.score_top_rules(X_test) # 离散风险排名分 precision, recall, _ precision_recall_curve(y_test, risk_score)第二张图是核心结论图中蓝色散点代表 skope-rules 规则评分在不同阈值下的表现绿色虚线是随机森林。可以看到每一个蓝点都对应一个由若干条可读规则组成的分类器其性能与随机森林相当却完全可解释——这正是规则风险评分系统的价值所在。风险分分级从分数到业务动作拿到score_top_rules的分数后可以按分位数或业务经验切分成风险等级高分段命中 Top 规则→ 直接拒绝或强风控中分段命中中等规则→ 进入人工复核队列并附上命中的规则清单低分段未命中规则→ 自动通过或低强度风控。由于每条规则都可读系统还能自动生成拒绝原因说明直接展示给审核人员甚至作为面向客户的告知依据这在信贷场景中极具落地价值。调参技巧与注意事项precision_min/recall_min这两个参数决定规则的质量下限。风控场景建议调高precision_min如 0.6~0.8宁可召回低一点也要保证命中的规则足够可靠max_depth控制规则长度深度越大规则越细、解释成本越高一般 2~4 即可n_estimators候选树的数量越多规则候选越丰富但训练时间线性增长max_depth_duplication开启后会对相似规则做语义去重减少冗余、提升规则多样性max_samples建议小于 1.0否则无法用袋外样本评估规则容易过拟合代码中会给出明确警告。另外要注意skope-rules 假设目标类标注为 1、正常样本为 0其他标签会被自动映射数据极度不平衡时建议配合sample_weight或调整阈值使用。小结skope-rules 用一套轻量、优雅的设计把机器学习与业务可解释这两件事统一了起来。通过score_top_rules获取可解释的离散风险分、用predict_top_rules精确控制参与决策的规则数量你可以在几分钟内搭建出一套既能精准识别风险、又能逐条解释依据的业务风险评分系统。如果你正在做风控、反欺诈或任何需要说得出理由的分类任务这套进阶玩法值得立刻上手一试。【免费下载链接】skope-rulesmachine learning with logical rules in Python项目地址: https://gitcode.com/gh_mirrors/sk/skope-rules创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表