99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀信用卡通不過?用數(shù)據(jù)分析技術(shù),帶你深度解析信用卡評分體系
信用卡通不過?用數(shù)據(jù)分析技術(shù),帶你深度解析信用卡評分體系
2018-06-23
收藏

信用卡通不過?用數(shù)據(jù)分析技術(shù),帶你深度解析信用卡評分體系

隨著互聯(lián)網(wǎng)金融時代的到來,信用評分體系顯得越發(fā)重要,本文就解讀信用卡評分體系是如何建立的。

客戶信息涉及到很多因素,因此許多因素?zé)o法在機(jī)器學(xué)習(xí)模型中進(jìn)行探討,這里收集了大部分互聯(lián)網(wǎng)金融公司在信用卡申請時能獲取到的信息。

目標(biāo)

1. 使用機(jī)器學(xué)習(xí)構(gòu)建信用卡評分模型,獲得自變量分箱結(jié)果;

2. 并由評分模型得出最優(yōu)的cutoff值,并對模型進(jìn)行評價;

3. 再由新的樣本集對評分卡進(jìn)行測試,輸出預(yù)測結(jié)果。

數(shù)據(jù)

我使用了Kaggle的兩個數(shù)據(jù)集。

Kaggle數(shù)據(jù)集鏈接:

https://www.kaggle.com/yuzijuan/credit-card-scoring/data

環(huán)境和工具:

Rstudio,plyr,rJava,smbinning,prettyR

我首先對兩個數(shù)據(jù)集進(jìn)行探索性分析,剔除掉無法納入模型的變量,例如ID,取值為空的變量,取值僅為一類的變量等;再探索配偶收入變量問題時,由于值絕大部分為0,將該變量變?yōu)槎诸愖兞浚≈禐橛惺杖肱c無收入;針對異常值過大的變量,采用蓋帽法,用99分位點(diǎn)值代替極大異常值,有1分位點(diǎn)值代替極小異常值等等方法,數(shù)據(jù)清洗完后,再用smbinning包進(jìn)行cart分箱,帶入評分卡模型,獲得評分卡,最后將其運(yùn)用到測試集上。

開始

首先,導(dǎo)入必要的庫和數(shù)據(jù)集,進(jìn)行探索性數(shù)據(jù)分析,并剔除掉無法納入模型的變量。

導(dǎo)入庫

導(dǎo)入數(shù)據(jù)

剔除無法納入模型的變量

由于評分卡模型一般分?jǐn)?shù)越高,表示信用越好,故需要將信用好的類別得分記為1,信用不好的類別得分記為0。

為更有效分箱,獲取了因子型變量集factorval和數(shù)值型變量集numericval,分別進(jìn)行分箱處理。

數(shù)值型變量分箱

為更有效進(jìn)行數(shù)據(jù)處理,對異常值可以進(jìn)行蓋帽法處理,代碼如下:

以年齡數(shù)值型變量舉例說明,首先查看數(shù)據(jù)分布情況,由于是因變量為二分類,自變量為數(shù)值型,用t檢驗(yàn)來檢驗(yàn)兩分布是否有顯著性差別,有顯著性差別才能進(jìn)行分箱,否則分箱結(jié)果無意義。

分布情況如上圖所示,可以對其進(jìn)行蓋帽法后再t檢驗(yàn)和分箱處理。t檢驗(yàn)的原假設(shè)為兩分類組的均值相等,結(jié)果表明原假設(shè)被拒絕,認(rèn)為兩分布具有顯著性差別,可以進(jìn)行分箱。

用的是smbinning包,這個包中采用的是CART回歸樹進(jìn)行屬性劃分,數(shù)值型用函數(shù)smbinning(),由樹的結(jié)果可知,劃分點(diǎn)為19,22,32,37,46、59六個值,劃分為7個屬性區(qū)間。

AGE的IV值為0.2004,對AGE的WOE值畫圖,得到分布呈現(xiàn)單調(diào)趨勢,表明分箱結(jié)果良好,可以納入模型。

用AGE進(jìn)行分箱的代碼如下:

類推其他連續(xù)變量。通過調(diào)用numericalval可知共有7個數(shù)值型變量,由于兩個數(shù)值型變量取值過于集中,后續(xù)將作為分類變量處理,故得到5個變量的IV值。

因子型變量分箱

以性別分類變量舉例說明,首先對性別變量中的異常值進(jìn)行處理,這種類別變量一般將異常值歸為多數(shù)這類。查看分布情況可知女性的守信情況似乎比男性好一些。性別變量的WOE值區(qū)分得也很明顯。

在進(jìn)行分箱之前同數(shù)值型變量一樣,要檢驗(yàn)兩分布是否有顯著性差別,由于因變量和自變量均為分類變量,故用卡方檢驗(yàn)。原假設(shè)為兩分布之間無顯著性差別,卡方檢驗(yàn)結(jié)果表明拒絕原假設(shè),認(rèn)為兩樣本有顯著性差別,可以進(jìn)行分箱。

分類變量分箱也采用的是smbinning包,不過smbinning包中就是用原分類值進(jìn)行屬性劃分,未對劃分屬性處理,分類變量用的函數(shù)是smbinning.factor(),最后得到SEX的IV值為0.0274。具體執(zhí)行代碼如下:

再以配偶收入舉例說明,這個變量原本是數(shù)值型變量,由于取值過于集中到0,故將該變量轉(zhuǎn)化為分類型變量再處理,處理方式是將取值為0的作為無收入,將取值大于0的作為有收入。

得到混淆矩陣可以看出,有收入的似乎比無收入的守信情況好一些,WOE圖的區(qū)別也較為明顯。

通過卡方檢驗(yàn)也可以看出,是否有收入對信用好否有顯著性影響,可以進(jìn)行分箱操作。最后分箱得到IV值為0.0206。具體代碼如下:

類推到其他因子型變量,計(jì)算出得到所有變量的IV值,存入creditivs中。

建立評分卡

得到所有可分箱變量的IV值,一般認(rèn)為IV值大于等于0.02的對構(gòu)建評分卡具有一定的幫助,故以0.02為分界點(diǎn)得到滿足條件的變量。最后納入評分卡模型的變量分別是年齡、工作時長(月)、個人收入、性別、婚姻狀態(tài)、是否有自用手機(jī)、配偶是否有收入。

最后7個自變量的IV值的分布情況如下,可以看到年齡、婚姻狀態(tài)、工作時長、是否有自用手機(jī)這幾個變量的IV值較大,表明這幾個變量對預(yù)測結(jié)果影響較大。

數(shù)值型分箱變量用函數(shù)smbinning.gen(),因子型變量用函數(shù)smbinning.factor.gen(),可以生成分箱后的結(jié)果,分箱后生成的新列并因變量得到data2數(shù)據(jù)集,通過邏輯回歸,建立評分卡模型。通過邏輯回歸結(jié)果可以看出分箱后的變量都較為顯著,表示分箱結(jié)果優(yōu)良。

生成評分卡是用函數(shù)smbinning.scaling(),通過調(diào)節(jié)pdo,score,odds三個參數(shù),使得評分卡最大值與最小值位于一個較好的范圍。這里評分卡的區(qū)間為(389,888)。

最后保存為新的csv文件,評分卡就做好了。具體代碼如下:

評分卡展示如下,points表示為評分卡的分值。如年齡在45歲的客戶,得分為166分。

最后,你總得告訴領(lǐng)導(dǎo)或者同事,到底大于等于多少時,我們認(rèn)為是好客戶,這時還有最后一步,就是求cutoff值,將訓(xùn)練數(shù)據(jù)通過函數(shù)smbinning.scoring.gen()可以得到客戶的得分,由于訓(xùn)練數(shù)據(jù)本身有是否違約這個變量,那么cutoff值有兩種選擇方式,第一種基于業(yè)務(wù)發(fā)展現(xiàn)狀,即公司是需要盈利增收,還是公司需要控制風(fēng)險,然后商議討論選擇一個cutoff值。下圖為客戶得分與客戶違約的箱體圖,1表示好客戶,0表示壞客戶,可以看出好客戶的得分值會高于壞客戶的得分值。

對客戶得分與客戶違約做t檢驗(yàn),檢驗(yàn)結(jié)果表明,兩分布具備顯著性差別,可以認(rèn)為好客戶和壞客戶的得分會有顯著性差別。壞客戶的得分集中在578分附近,好客戶得分集中于620分附近。

第二種獲得cutoff值的方式就是電腦自動計(jì)算最優(yōu)cutoff值,用的函數(shù)smbinning.metrics(),從輸出的報告可以看出,最優(yōu)cutoff值為615,這樣劃分的話,ROC曲線的AUC值為0.657,不算特別優(yōu)良,準(zhǔn)確率(precision)達(dá)到87.8%。

具體執(zhí)行代碼如下:

預(yù)測

針對新樣本,我選擇用Excel工具獲得信用評分,使用VLOOKUP函數(shù)可以很方便地得到想要的數(shù)據(jù),評分展示如下,選擇cutoff值為615,這里認(rèn)為(600,620)的客戶為關(guān)注客戶,信用情況中等,620分以上的客戶信用情況良好,600分以下的客戶信用情況堪憂。

分別用!、√、×來表示中等、優(yōu)良、較差的信用情況。

結(jié)語

本案例不足之處在于:

1. 未對職業(yè)代碼、商店等級代碼等信息進(jìn)行提煉,可能會忽略掉一些有可能對模型有影響的變量。

2. Smbinning包在數(shù)值型變量分箱這一塊很強(qiáng)大,但是對分類變量分箱結(jié)果不太盡如人意,可以考慮其他分箱方法。

3. 可以整合更多模型,從而提高預(yù)測準(zhǔn)確率。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }