【教程】如何利用bbbrisk一步一步實現評分卡

利用bbbrisk一步一步實現評分卡

  • 一、什么是評分卡
    • 1.1.什么是評分卡
    • 1.2.評分卡有哪些
  • 二、評分卡怎么弄出來的
    • 2.1.如何制作評分卡
    • 2.2.制作評分卡的流程
  • 三、變量的分箱
    • 3.1.數據介紹
    • 3.2.變量自動分箱
    • 3.3.變量的篩選
  • 四、構建評分卡
    • 4.1.評分卡實現代碼
    • 4.2.評分卡表
    • 4.3.閾值表與分數分布圖

一、什么是評分卡

1.1.什么是評分卡

評分卡,一般是指用于小貸客戶質量評分的評分卡表。
評分卡樣式如下:
什么是評分卡
來了一個新客戶,先根據客戶的數據,判斷客戶在各個特征上屬于哪一組
然后在評分卡表中找到對應的分數,對所有特征得分求和,并加上基本分,就是客戶的總評分
假設客戶在rev、due30、due90、city上的組別為【0、3、1、1】
那么客戶在rev、due30、due90、city上的得分為【28、-30、-20、5】
則客戶的總得分為28-30-20+5+780=763

1.2.評分卡有哪些

針對評分的使用不同場景,一般分為A、B、C、F卡

  • A卡:Application scorecard,申請評分卡
    A卡用申請數據,建立模型,評估用戶是否會壞賬
    作用:用于審批放款
  • B卡:Behavior scorecard,行為評分卡
    C卡作用于借貸中的客戶。加入貸后還款等行為數據
    多種作用:可用于老客戶提額
  • C卡:Collection scorecard,催收評分卡
    作用于借貸中的客戶
    作用:預測用戶是否會逾期,提前催收
  • F卡:(Fraud scorecard):欺詐評級評分卡
    作用于申請階段,針對欺詐客戶的判斷

二、評分卡怎么弄出來的

2.1.如何制作評分卡

評分卡建模的思路與流程如下: 先在原始數據中,衍生并選擇出建模的變量, 然后用建模變量與好壞客戶標簽建立邏輯回歸模型。這樣就能通過建模變量預測樣本是壞客戶的概率,最后,把邏輯回歸模型的線性部分抽取出來,生成評分卡。
最后的最后,還需要分析當前業務應以哪個分數作為拒絕客戶的臨界值,以臨界值作為評分閾值。

2.2.制作評分卡的流程

評分卡流程

  1. 建模數據準備
    數據準備主要是建模之前,對原始數據進行分箱與變量分析
    篩選出與客戶質量相關的變量,作為建模的輸入特征
  2. 建模
    (1)數據預處理:歸一化,并預留測試數據
    (2)用逐步回歸選出盡量少的特征(同時保持建模效果)
    (3)訓練邏輯回歸模型
    (4)檢驗AUC是否達標,并檢查系數是否都為正
  3. 制作評分卡
    制作評分卡也俗稱“模型轉評分”
    將3中得到的邏輯回歸模型,制作成評分卡表
  4. 確定評分閾值
    確定生產上判定為壞客戶的分數閾值
    當分數低于該閾值時,就拒絕客戶

三、變量的分箱

在構建評分卡之前,需要先對變量進行分析與分箱,并選擇出有效的變量作為建模變量。

3.1.數據介紹

bbbrisk自帶的小貸數據共包含10個變量與客戶好壞標簽,數據包含的10變量和標簽如下:
數據介紹
數據共2萬條,示例如下:
數據示例

3.2.變量自動分箱

變量的分箱可以使用算法進行自動分箱,常用的分箱算法有:等頻分箱、等距分箱、決策樹分箱、KS分箱和卡方分箱等等。
bbbrisk包提供了bins.autoBin函數來對多個變量進行自動分箱,具體代碼如下:

import  bbbrisk  as br# 加載數據                                                                     
data = br.datasets.load_bloan()                                      # 加載數據
x = data.iloc[:,:-1]                                                 # 變量數據
y = data['is_bad']                                                   # 標簽數據# 自動分箱
bin_sets  = br.bins.batch.autoBins(x, y,enum_var=['city','marital']) # 自動分箱,如果有枚舉變量,必須指出哪些是枚舉變量
bin_stats = br.bins.batch.bin_stats(x,y,bin_sets)                    # 統計各個變量的分箱情況
br.display.pd.set(width=300,max_colwidth=30,max_rows=30)             # 美化pandas的顯示方式
for var in bin_stats:                                                # 逐個變量打印分箱結果print('\n變量'+var+'的分箱結果:\n',bin_stats[var])               # 打印當前變量的分箱統計結果# 選擇iv足夠大的變量
select_bin_set = {}                                                  # 初始化選擇的變量的分箱
for var,stat in bin_stats.items():                                   # 逐個變量循環if (stat['iv'].iloc[-1]>0.1):                                    # 當前變量的iv值是否滿足要求select_bin_set[var] =  bin_sets[var]                         # 如果滿足,則添加到選擇池
print('\n iv > 0.1 的變量與分箱結果:\n',select_bin_set)              # 最終選擇的變量的分箱

通過以上的代碼,就對變量進行分箱了,它的結果如下:
rev變量分箱結果
age變量分箱結果

loan_num變量分箱結果

3.3.變量的篩選

一般來說,需要通過iv值來篩選出有效的變量。
IV全稱為信息價值(Information Value),它常在評分卡中用于篩選變量。IV的原理是通過評估好、壞樣本在變量分布上的差異,從而評估變量對y的信息價值。
IV值越高,變量的價值越高,一般來說,IV值與變量對好壞客戶的區分度的關系如下:
IV < 0.02 :幾乎沒有區分度,
0.02 <= IV < 0.1 :有微弱的區分度;
0.1 <= IV < 0.3 :有明顯的區分度;
0.3 <= IV :較強的區分度
通考上述的值,來篩選出有效的變量。在本例中,所有變量都是有效的。

四、構建評分卡

在完成變量分箱后,就可以直接使用bbbrisk的評分卡包來構建評分卡,以及打印相關報告
如果沒有bbbrisk的包,需要先通過pip安裝

pip install bbbrisk

4.1.評分卡實現代碼

用bbbrisk構建評分卡的具體代碼如下:

import bbbrisk as br#加載數據                                                              
data = br.datasets.load_bloan()                                        # 加載數據
x = data.iloc[:,:-1]                                                   # 變量數據
y = data['is_bad']                                                     # 標簽數據# 構建評分卡
bin_sets  = br.bins.batch.autoBins(x, y,enum_var=['city','marital'])   # 自動分箱,必須指出哪些是枚舉變量
model,card = br.model.scoreCard(x,y,bin_sets)                          # 構建評分卡
score      = card.predict(x[card.var])                                 # 用評分卡進行評分
# 打印結果
print('\n-----【 模型性能評估 】----')
print('* 模型訓練AUC:',model.train_auc)                                # 打印模型訓練數據集的AUC
print('* 模型測試AUC:',model.test_auc)                                 # 打印模型測試數據集的AUC
print('* 模型訓練KS:',model.train_ks)                                  # 打印模型訓練數據集的KS
print('* 模型測試KS:',model.test_ks)                                   # 打印模型測試數據集的KSprint('\n--------【 模型 】---------')                                 
print('* 模型使用的變量:',model.var)                                   # 模型最終使用的變量
print('* 模型權重:',model.w)                                           # 模型的變量權重
print('* 模型閾值:',model.b)                                           # 模型的閾值print('\n--------【 評分卡 】---------')    
print('\n* 特征得分featureScore:   \n' ,card.featureScore      )       # 特征得分
print('\n* 基礎得分baseScore:        ' ,card.baseScore         )       # 基礎分

運行結果如下:

運行結果
可以看到,通過簡單的代碼,就可以得到評分卡模型的AUC/KS,以及模型的參數、評分卡表。

4.2.評分卡表

card.featureScore和card.baseScore里分別存放了特征得分與基礎,兩者合并后就是最終的評分卡表,如下:
評分卡表

4.3.閾值表與分數分布圖

閾值表與分數分布圖,可以進一步使用report.get_threshold_tb來計算閾值表,以及用report.draw_score_disb則用于繪制分數分布圖。代碼如下:

# 計算閾值表與分數分布圖
thd_tb    = br.report.get_threshold_tb(score,y,bin_step=10)                    # 閾值表
br.report.draw_score_disb(score,y,bin_step=10,figsize=(14, 4))                 # 分數分布

評分閾值表的結果如下:
評分閾值表
樣本的分數分布結果如下:
分數分布
好了,以上就是如何制作一個評分卡了。
更多可以參考:
【1】老餅講解-評分卡
【2】bbbrisk評分卡API說明

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74193.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74193.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI日報 - 2025年4月2日

&#x1f31f; 今日概覽&#xff08;60秒速覽&#xff09; ▎&#x1f916; AGI突破 | 研究揭示零RL訓練可誘發模型頓悟&#xff0c;Anthropic發布Claude 3.5內部機制研究&#xff0c;簡化語言模型推理優化新方法提出。 DeepSeek-R1無需額外指令即可深度推理&#xff1b;Anthro…

探索 Kubernetes 網絡穿透:如何從外部訪問 K8s Pod 地址

文章目錄 探索 Kubernetes 網絡穿透&#xff1a;如何從外部訪問 K8s Pod 地址為什么需要外部訪問 Pod 地址&#xff1f;常見的網絡穿透方案NodePortLoadBalancerIngressPort-ForwardHostNetworkkt-connect&#xff1a;為開發調試提供便捷穿透 實踐建議與注意事項各方案對比表總…

深入理解 Apache Dagster:數據管道編排實戰指南

本文系統介紹了 Apache Dagster 的核心概念與實踐方法&#xff0c;涵蓋環境搭建、管道定義、運行調試及高級功能&#xff0c;幫助開發者快速掌握這一現代化數據編排工具&#xff0c;提升數據工程效率。 1. 背景與核心優勢 隨著數據驅動應用的復雜化&#xff0c;傳統工具在可維…

Minio集群部署

Minio集群部署 資源規劃 IP服務規劃配置192.168.116.138minio-116核32G磁盤10T192.168.116.139minio-216核32G磁盤10T192.168.116.140minio-316核32G磁盤10T192.168.116.141minio-416核32G磁盤10T192.168.116.128nginx代理8核16G磁盤500G 基本環境配置 下面命令minio4臺設備…

操作系統高頻(六)linux內核

操作系統高頻&#xff08;六&#xff09;linux內核 1.內核態&#xff0c;用戶態的區別??? 內核態和用戶態的區別主要在于權限和安全性。 權限&#xff1a;內核態擁有最高的權限&#xff0c;可以訪問和執行所有的系統指令和資源&#xff0c;而用戶態的權限相對較低&#x…

強大而易用的JSON在線處理工具

強大而易用的JSON在線處理工具&#xff1a;程序員的得力助手 在當今的軟件開發世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;已經成為了數據交換的通用語言。無論是前端還是后端開發&#xff0c;我們都經常需要處理、驗證和轉換JSON數據。今天&a…

【學習記錄】pytorch載入模型的部分參數

需要從PointNet網絡框架中提取encoder部分的參數&#xff0c;然后賦予自己的模型。因此&#xff0c;需要從一個已有的.pth文件讀取部分參數&#xff0c;加載到自定義模型上面。做了一些嘗試&#xff0c;記錄如下。 關于模型保存與載入 torch.save(): 使用Python的pickle實用程…

【藍橋杯14天沖刺課題單】Day 8

1.題目鏈接&#xff1a;19714 數字詩意 這道題是一道數學題。 先考慮奇數&#xff0c;已知奇數都可以表示為兩個相鄰的數字之和&#xff0c;2k1k(k1) &#xff0c;那么所有的奇數都不會被計入。 那么就需要考慮偶數什么情況需要被統計。根據打表&#xff0c;其實可以發現除了…

鴻蒙ArkTS開發:微信/系統來電通話監聽功能實現

本文將介紹如何在鴻蒙應用中使用ArkTS實現通話監聽和錄音功能&#xff0c;利用harmony-utils工具庫簡化開發流程。 工具庫地址 一、功能概述 本實現包含以下核心功能&#xff1a; 通話狀態監聽&#xff1a;檢測來電、去電和通話中狀態 音頻流監控&#xff1a;通過麥克風使用…

NFS 重傳次數速率監控

這張圖展示的是 NFS 重傳次數速率監控&#xff0c;具體解釋如下&#xff1a; 1. 指標含義 監控指標 node_nfs_rpc_retransmissions_total 統計 NFS&#xff08;網絡文件系統&#xff09;通信中 RPC&#xff08;遠程過程調用&#xff09;的重傳次數&#xff0c;rate(node_nfs_…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的國際化:支持多語言的 RESTful API

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開篇整…

黑帽SEO之搜索引擎劫持-域名劫持原理分析

問題起源 這是在《Web安全深度剖析》的第二章“深入HTTP請求流程”的2.3章節“黑帽SEO之搜索引擎劫持”提到的內容&#xff0c;但是書中描述并不詳細&#xff0c;沒有講如何攻擊達到域名劫持的效果。 書中對SEO搜索引擎劫持的現象描述如下&#xff1a;直接輸入網站的域名可以進…

theos工具來編譯xcode的swiftUI項目為ipa文件

Theos 是一個開源的開發工具套件&#xff0c;主要用于為 iOS/macOS 平臺開發和編譯 越獄插件&#xff08;Tweaks&#xff09;、動態庫、命令行工具等。它由 Dustin Howett 創建&#xff0c;并被廣泛用于越獄社區的開發中。但這里我主要使用它的打包ipa功能&#xff0c;因為我的…

25.4.1學習總結【Java】

動態規劃題 2140. 解決智力問題https://leetcode.cn/problems/solving-questions-with-brainpower/ 給你一個下標從 0 開始的二維整數數組 questions &#xff0c;其中 questions[i] [pointsi, brainpoweri] 。 這個數組表示一場考試里的一系列題目&#xff0c;你需要 按順…

計算機網絡知識點匯總與復習——(二)物理層

Preface 計算機網絡是考研408基礎綜合中的一門課程&#xff0c;它的重要性不言而喻。然而&#xff0c;計算機網絡的知識體系龐大且復雜&#xff0c;各類概念、協議和技術相互關聯&#xff0c;讓人在學習時容易迷失方向。在進行復習時&#xff0c;面對龐雜的的知識點&#xff0c…

string的底層原理

一.構造函數 我們來看一下&#xff0c;string的底層就是一個字符型指針和一個size來表示string的大小&#xff0c;capacity來表示分配的內存大小。 我們來看我們注釋掉的第一個構造函數&#xff0c;我們是通過初始化列表來初始化size的大小&#xff0c;再通過size的大小來初始化…

Python FastAPI + Celery + RabbitMQ 分布式圖片水印處理系統

FastAPI 服務器Celery 任務隊列RabbitMQ 作為消息代理定時任務處理 首先創建項目結構&#xff1a; c:\Users\Administrator\Desktop\meitu\ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── celery_app.py │ ├── tasks.py │ └── config.py…

【藍橋杯】每日練習 Day18

目錄 前言 動態求連續區間和 分析 代碼 數星星 分析 代碼 星空之夜 分析 代碼 前言 接下來是今天的題目&#xff08;本來是有四道題的但是有一道題是前面講過&#xff08;逆序數的&#xff0c;感興趣的小伙伴可以去看我歸并排序的那一篇&#xff09;的我就不再過多贅…

基于銀河麒麟桌面服務器操作系統的 DeepSeek本地化部署方法【詳細自用版】

一、3種方式使用DeepSeek 1.本地部署 服務器操作系統環境進行,具體流程如下(桌面環境步驟相同): 本例所使用銀河麒麟高級服務器操作系統版本信息: (1)安裝ollama 方式一:按照ollama官網的下載指南,執行如下命令: curl -fsSL https://ollama.com/install.sh | sh方…

Python入門(7):Python序列結構-字典

字典Dictionary 字典(dictionary)和列表類似&#xff0c;也是可變序列&#xff0c;不過與列表不同&#xff0c;它是無序的可變序列&#xff0c;保存的為容是以“鍵-值對”的形式存放的。 Python 中的字典相當于 Java 或者 C中的 Map 對象。在C#中,就是Dictionary<TKey,TVa…