阿里云天池學習賽【金融風控-貸款違約預測】
- 賽題資料及背景
- 學習目標
- 賽題概況
- 資料概況
- 預測指標
- 預測指標的直接引入
- sklearn里的常見評測指標
- 經驗總結
賽題資料及背景
阿里云天池學習賽【金融風控-貸款違約預測】
https://tianchi.aliyun.com/competition/entrance/531830/introduction
學習目標
1.理解賽題資料和目標
2.清楚評分體系
賽題概況
比賽要求參賽選手根據給定的資料集,建立模型,預測金融風險,
賽題以預測金融風險為任務,資料集報名后可見并可下載,該資料來自某信貸平臺的貸款記錄,總資料量超過120w,包含47列變數資訊,其中15列為匿名變數,為了保證比賽的公平性,將會從中抽取80萬條作為訓練集,20萬條作為測驗集A,20萬條作為測驗集B,同時會對employmentTitle、purpose、postCode和title等資訊進行脫敏,
資料概況
- id 為貸款清單分配的唯一信用證標識
- loanAmnt 貸款金額
- term 貸款期限(year)
- interestRate 貸款利率
- installment 分期付款金額
- grade 貸款等級
- subGrade 貸款等級之子級
- employmentTitle 就業職稱
- employmentLength 就業年限(年)
- homeOwnership 借款人在登記時提供的房屋所有權狀況
- annualIncome 年收入
- verificationStatus 驗證狀態
- issueDate 貸款發放的月份
- purpose 借款人在貸款申請時的貸款用途類別
- postCode 借款人在貸款申請中提供的郵政編碼的前3位數字
- regionCode 地區編碼
- dti 債務收入比
- delinquency_2years 借款人過去2年信用檔案中逾期30天以上的違約事件數
- ficoRangeLow 借款人在貸款發放時的fico所屬的下限范圍
- ficoRangeHigh 借款人在貸款發放時的fico所屬的上限范圍
- openAcc 借款人信用檔案中未結信用額度的數量
- pubRec 貶損公共記錄的數量
- pubRecBankruptcies 公開記錄清除的數量
- revolBal 信貸周轉余額合計
- revolUtil 回圈額度利用率,或借款人使用的相對于所有可用回圈信貸的信貸金額
- totalAcc 借款人信用檔案中當前的信用額度總數
- initialListStatus 貸款的初始串列狀態
- applicationType 表明貸款是個人申請還是與兩個共同借款人的聯合申請
- earliesCreditLine 借款人最早報告的信用額度開立的月份
- title 借款人提供的貸款名稱
- policyCode 公開可用的策略_代碼=1新產品不公開可用的策略_代碼=2
- n系列匿名特征 匿名特征n0-n14,為一些貸款人行為計數特征的處理
預測指標
競賽采用AUC作為評價指標,AUC(Area Under Curve)被定義為 ROC曲線 下與坐標軸圍成的面積,
預測指標的直接引入
因個人專業知識有限,不能很好的給大家解釋AUC的定義
小白如何快速進行對自己預測的結果進行評價是個很重要的問題
這里推薦給大家一個如何快速進行評價的方法
引入sklearn.metrics 里面提供了大部分評價的方法可以直接進行預測結果的評估
sklearn里的常見評測指標
| 評價指標 分類問題(Classification) | 函式(評價指標詳細內容點擊查看官方檔案) | 評價側重點 |
|---|---|---|
| accuracy | metrics.accuracy_score | 正確預測的樣本數占總預測樣本數的比值 |
| average_precision | metrics.average_precision_score | 所有預測為正確樣本的樣本中有多少是真正的正確樣本 |
| f1 | metrics.f1_score | F值是精確率1和召回率2的均值 |
| f1_micro | metrics.f1_score | 通過先計算總體的TP3,FN4和FP5的數量,再計算F1 |
| f1_macro | metrics.f1_score | 先計算出每個類別的F1值,然后去平均,比如下面多分類問題,總共有1,2,3,4這4個類別,我們可以先算出1的F1,2的F1,3的F1,4的F1,然后再取平均(F1+F2+F3+4)/4 |
| f1_weighted | metrics.f1_score | 先計算出每個類別的F1值,然后與對應類別標簽所占的樣本比例相乘,然后相加最后得到f1_weighted |
| f1_samples | metrics.f1_score | 計算每個實體的指標,并找到其平均值 |
| neg_log_loss | metrics.log_loss | 即log_loss(y_true,y_pred),它將生成一個正分數-分數越小,性能越好, |
| precision etc. | metrics.precision_score | 精確度1計算 |
| recall etc. | metrics.recall_score | 召回率2計算 |
| roc_auc | metrics.roc_auc_score | 根據預測分數計算 特性曲線(ROC AUC) 下的面積,(本次比賽所用評價指標) |
| 評價指標 聚類問題(Clustering) | 函式(評價指標詳細內容點擊查看官方檔案) | 評價側重點 |
|---|---|---|
| adjusted_rand_score | metrics.adjusted_rand_score | 通過考慮所有樣本對并計算在預測的聚類和真實的聚類中分配在相同或不同聚類中的對來計算兩個聚類之間的相似性度量 |
| 評價指標 回歸問題(Regression) | 函式(評價指標詳細內容點擊查看官方檔案) | 評價側重點 |
|---|---|---|
| neg_mean_absolute_error | metrics.mean_absolute_error | 平均絕對誤差回歸損失 |
| neg_mean_squared_error | metrics.mean_squared_error | 均方誤差回歸損失 |
| neg_median_absolute_error | metrics.median_absolute_error | 中值絕對誤差回歸損失 |
| r2 | metrics.r2_score | R ^ 2(確定系數)回歸得分函式, |
本次比賽使用的評價指標是 roc_auc 使用方法如下
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)
# 評價分數為0.75
其他評價指標函式的詳細資訊,可點擊對應函式名稱查閱詳細的解釋檔案,這里就不再贅述
經驗總結
- 在開始比賽之前對賽題的目標,評價指標進行了解,
- 比賽什么時候開始,什么時候結束,什么時候換B榜資料,
A榜:提交預測結果檔案,回傳分數進行排名,僅作初步判斷
B榜:最終線上成績與排名以B榜成績與排名為準
采用AB榜的主要原因是考察機器學習模型的泛化能力
簡單來說就是測驗集被劃分成A與B,提交“測驗集”的所有預測結果(包含A和B),排行榜上僅顯示測驗集A的成績,即A榜,最終成績還是需要看B榜成績, - 和該比賽有沒有類似的比賽可以參考借鑒,
- 線上提交結果的次數往往是有限的,提前了解每日可以提交的次數,有的比賽可能會限制總提交次數,
- 比賽使用的是什么評價指標,可以選擇相同的評價指標作為線下驗證的方式,
- 可以將訓練集按照比例再次劃分為訓練集與測驗集,提升模型的泛化能力,
END
by xiaoc【Datawhale學習群名稱:南山有鳶】
精確率:所有預測為正確樣本的樣本中有多少是真正的正確樣本,可理解為查準率,
Precision = TP/(TP+FP)
即正確預測的正例數 /預測正例總數 ?? ??召回率:實際正樣本中,分類器能預測出多少,與真正率相等,可理解為查全率,
Recall = TP/(TP+FN)
即正確預測的正例數 /實際正例總數 ?? ??真陽性(TP): 預測為正, 實際也為正 ??
假陰性(FN): 預測為負,實際為正 ??
假陽性(FP): 預測為正, 實際為負 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/34465.html
標籤:其他
上一篇:6種展示代碼的絕佳方式
下一篇:大學兩年經歷
