天天看點

公積金貸款逾期預測Baseline分享

今天老肥和大家分享的是山東省第二屆資料應用創新創業大賽-日照分賽場-公積金貸款逾期預測的baseline, 這個賽題是結構化資料的分類問題,相對來說入門門檻較低,那就一起來看看吧!

賽事介紹

山東省第二屆資料應用創新創業大賽以“數聚賦能,智惠山東”為主題,鼓勵企業、社會組織和個人積極探索開展大資料創新應用,加快推進公共資料資源開發利用,在資料供給方和資料需求方之間形成常态化對接機制,推動數字經濟、數字社會融合發展,促進發揮資料“優政、惠民、興業”作用,助力“數字山東”建設。公積金貸款逾期預測是本次創新創業大賽算法賽的其中一題。

公積金貸款逾期預測Baseline分享

比賽資料

本題的目标是從真實場景和實際應用出發,利用個人的基本身份資訊、個人的住房公積金繳存和貸款等資料資訊,來建立準确的風險控制模型,來預測使用者是否會逾期還款。

賽題一共提供了40000帶标簽訓練集樣本,15000不帶标簽的測試集樣本,需要注意的是本賽題測試樣本包含幹擾樣本(幹擾樣本不參與得分計算),未可得知這些樣本究竟是真樣本但不參與評測還是本身就是代碼生成的假樣本,這可能會在很大程度上影響樣本的分布。資料僅有一張表,一共有19個基本特征,且均不包含任何缺失值。

評價标準

本賽題成績排名根據測試集的在公積金逾期風險監控中,需要盡可能做到盡可能少的誤傷和盡可能準确地探測,使用了“在FPR較低時的TPR權重平均值”作為平均名額,這個名額的波動性非常大,而且幾乎不能直接優化,于是我采取AUC名額來優化我的模型。

Baseline方案

我的思路也非常簡單,主要就是兩塊内容,分别是對類别特征和數值特征的處理。我們首先将所有類别特征字段做目标編碼,并統計所有類别特征的頻數,将頻數極小的類别特征歸為一類;數值特征提取出偏離特征,即單個個體與分組之間的距離。

def kfold_mean(df_train, df_test, target, target_mean_list):
    folds = StratifiedKFold(n_splits=5)

    mean_of_target = df_train[target].mean()

for fold_, (trn_idx, val_idx) in tqdm(
            enumerate(folds.split(df_train, y=df_train['label']))):
        tr_x = df_train.iloc[trn_idx, :]
        vl_x = df_train.iloc[val_idx, :]

for col in target_mean_list:
            df_train.loc[vl_x.index, f'{col}_target_enc'] = vl_x[col].map(
                tr_x.groupby(col)[target].mean())

for col in target_mean_list:
        df_train[f'{col}_target_enc'].fillna(mean_of_target, inplace=True)

        df_test[f'{col}_target_enc'] = df_test[col].map(
            df_train.groupby(col)[f'{col}_target_enc'].mean())

        df_test[f'{col}_target_enc'].fillna(mean_of_target, inplace=True)
return pd.concat([df_train, df_test], ignore_index=True)      

模型采用了lightgbm,采用auc名額和預設參數以五折交叉驗證的形式訓練,不知是否是評價名額的關系,本方案的線上線下成績gap較大。

最終該baseline方案可以獲得0.5左右的線上分數。顯然,改進的方案有很多,使用公積金貸款的相關知識來做特征工程就是一個不錯的方向。

完整的代碼我已經上傳,在背景回複「公積金」即可。

——END——

公積金貸款逾期預測Baseline分享

繼續閱讀