特征工程(I)--探索性数据分析

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。

特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法做一个总结。

特征工程包含了 Data PreProcessing(数据预处理)、Feature Extraction(特征提取)、Feature Selection(特征选择)和 Feature construction(特征构造)等子问题。

Jupyter Notebook 代码连接:feature_engineering_demo_p1_EDA

数据集描述

项目描述

本项目使用Kaggle上的 家庭信用违约风险数据集 (Home Credit Default Risk) ,是一个标准的机器学习分类问题。其目标是使用历史贷款的信息,以及客户的社会经济和财务信息,预测客户是否会违约。

数据由Home Credit(捷信)提供,Home Credit致力于向无银行账户的人群提供信贷,是中东欧以及亚洲领先的消费金融提供商之一。在中东欧(CEE),俄罗斯,独联体国家(CIS)和亚洲各地服务于消费者。

Home Credit有三类产品,信用卡,POS(消费贷),现金贷,三类产品的英文分别是:Revolving loan (credit card),Consumer installment loan (Point of sales loan – POS loan),Installment cash loan。三类产品逻辑是这样的:

  1. 首先提供POS,入门级产品,类似于消费贷。只能用于消费,金额有限,风险最小,客户提供的信息也最少。
  2. 然后是credit card,在本次竞赛中称为revolving loan。循环授信,主要用于消费。
  3. 最后才是cash loan,用户能得到现金,风险最大。

数据文件

数据集包括了8个不同的数据文件,大致可以分为三大类:

  • application_{train|test}:包含每个客户社会经济信息和Home Credit贷款申请信息的主要文件。每行代表一个贷款申请,由SK_ID_CURR唯一标识。训练集30.75万数据,测试集4.87万数据。其中训练集中TARGET=1表示未偿还贷款。通过这两个文件,就能对这个任务做基本的数据分析和建模,也是本篇的主要内容。

用户在征信机构的历史征信记录可以用来作为风险评估的参考,但是征信数据往往不全,因为这些人本身就很少有银行记录。数据集中bureau.csv和 bureau_balance.csv 对应这部分数据。

  • bureau:征信机构提供的客户之前在其他金融机构的贷款申请数据。一个用户(SK_ID_CURR)可以有多笔贷款申请数据(SK_ID_BUREAU)。总计171万数据。
  • bureau_balance:征信机构统计的之前每笔贷款(SK_ID_BUREAU)的每月(MONTHS_BALANCE)的还款欠款记录。共有2729万条数据。

数据集中previous_application.csv, POS_CASH_balance.csv,credit_card_balance.csv,installments_payment.csv这部分数据是来自Home Credit产品的历史使用信息。信用卡在欧洲和美国很流行,但在以上这些国家并非如此。所以数据集中信用卡数据偏少。POS只能买东西,现金贷可以得到现金。三类产品都有申请和还款记录。

  • previous_application:该表是客户在申请这次贷款之前的申请记录。一个用户(SK_ID_CURR)可以有多笔历史数据(SK_ID_PREV)。共计167万条。
  • POS_CASH_balance:以前每月pos流水记录。由SK_ID_PREV和 months_balance唯一标识,共计1000万条数据。
  • credit_card_balance:每月信用卡账单表。由MONTHS_BALANCE和SK_ID_PREV唯一标识,合计384万条数据。
  • installments_payment:分期付款表。由 SK_ID_PREV, name_instalment_version, name_instalment_number 唯一标识,共计1360万条数据。

字段描述见附录。

探索性数据分析

Exploratory Data Analysis(EDA)

本篇主要通过application文件,做基本的数据分析和建模,也是本篇的主要内容。

数据概览

导入必要的包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

# Set global configuration.
warnings.filterwarnings('ignore')
sns.set_style('whitegrid')
pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
pd.options.display.max_colwidth = 100

SEED = 42
df = pd.read_csv('../datasets/Home-Credit-Default-Risk/application_train.csv')
# print(df.head())
print('Training data shape: ', df.shape)
Training data shape:  (307511, 122)
# `SK_ID_CURR` is the unique id of the row.
id_col = "SK_ID_CURR"
target = "TARGET"
df[id_col].nunique() == df.shape[0]
True

在遇到非常多的数据的时候,我们一般先会按照数据的类型分布下手,看看不同的数据类型各有多少

# Number of each type of column
print(df.dtypes.value_counts())
float64    65
int64      41
object     16
Name: count, dtype: int64
print("\nCategorical features:")
print(df.select_dtypes(["object"]).columns.tolist())
print("\nNumerical features:")
print(df.select_dtypes("number").columns.tolist())
Categorical features:
['NAME_CONTRACT_TYPE', 'CODE_GENDER', 'FLAG_OWN_CAR', 'FLAG_OWN_REALTY', 'NAME_TYPE_SUITE', 'NAME_INCOME_TYPE', 'NAME_EDUCATION_TYPE', 'NAME_FAMILY_STATUS', 'NAME_HOUSING_TYPE', 'OCCUPATION_TYPE', 'WEEKDAY_APPR_PROCESS_START', 'ORGANIZATION_TYPE', 'FONDKAPREMONT_MODE', 'HOUSETYPE_MODE', 'WALLSMATERIAL_MODE', 'EMERGENCYSTATE_MODE']

Numerical features:
['SK_ID_CURR', 'TARGET', 'CNT_CHILDREN', 'AMT_INCOME_TOTAL', 'AMT_CREDIT', 'AMT_ANNUITY', 'AMT_GOODS_PRICE', 'REGION_POPULATION_RELATIVE', 'DAYS_BIRTH', 'DAYS_EMPLOYED', 'DAYS_REGISTRATION', 'DAYS_ID_PUBLISH', 'OWN_CAR_AGE', 'FLAG_MOBIL', 'FLAG_EMP_PHONE', 'FLAG_WORK_PHONE', 'FLAG_CONT_MOBILE', 'FLAG_PHONE', 'FLAG_EMAIL', 'CNT_FAM_MEMBERS', 'REGION_RATING_CLIENT', 'REGION_RATING_CLIENT_W_CITY', 'HOUR_APPR_PROCESS_START', 'REG_REGION_NOT_LIVE_REGION', 'REG_REGION_NOT_WORK_REGION', 'LIVE_REGION_NOT_WORK_REGION', 'REG_CITY_NOT_LIVE_CITY', 'REG_CITY_NOT_WORK_CITY', 'LIVE_CITY_NOT_WORK_CITY', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'APARTMENTS_AVG', 'BASEMENTAREA_AVG', 'YEARS_BEGINEXPLUATATION_AVG', 'YEARS_BUILD_AVG', 'COMMONAREA_AVG', 'ELEVATORS_AVG', 'ENTRANCES_AVG', 'FLOORSMAX_AVG', 'FLOORSMIN_AVG', 'LANDAREA_AVG', 'LIVINGAPARTMENTS_AVG', 'LIVINGAREA_AVG', 'NONLIVINGAPARTMENTS_AVG', 'NONLIVINGAREA_AVG', 'APARTMENTS_MODE', 'BASEMENTAREA_MODE', 'YEARS_BEGINEXPLUATATION_MODE', 'YEARS_BUILD_MODE', 'COMMONAREA_MODE', 'ELEVATORS_MODE', 'ENTRANCES_MODE', 'FLOORSMAX_MODE', 'FLOORSMIN_MODE', 'LANDAREA_MODE', 'LIVINGAPARTMENTS_MODE', 'LIVINGAREA_MODE', 'NONLIVINGAPARTMENTS_MODE', 'NONLIVINGAREA_MODE', 'APARTMENTS_MEDI', 'BASEMENTAREA_MEDI', 'YEARS_BEGINEXPLUATATION_MEDI', 'YEARS_BUILD_MEDI', 'COMMONAREA_MEDI', 'ELEVATORS_MEDI', 'ENTRANCES_MEDI', 'FLOORSMAX_MEDI', 'FLOORSMIN_MEDI', 'LANDAREA_MEDI', 'LIVINGAPARTMENTS_MEDI', 'LIVINGAREA_MEDI', 'NONLIVINGAPARTMENTS_MEDI', 'NONLIVINGAREA_MEDI', 'TOTALAREA_MODE', 'OBS_30_CNT_SOCIAL_CIRCLE', 'DEF_30_CNT_SOCIAL_CIRCLE', 'OBS_60_CNT_SOCIAL_CIRCLE', 'DEF_60_CNT_SOCIAL_CIRCLE', 'DAYS_LAST_PHONE_CHANGE', 'FLAG_DOCUMENT_2', 'FLAG_DOCUMENT_3', 'FLAG_DOCUMENT_4', 'FLAG_DOCUMENT_5', 'FLAG_DOCUMENT_6', 'FLAG_DOCUMENT_7', 'FLAG_DOCUMENT_8', 'FLAG_DOCUMENT_9', 'FLAG_DOCUMENT_10', 'FLAG_DOCUMENT_11', 'FLAG_DOCUMENT_12', 'FLAG_DOCUMENT_13', 'FLAG_DOCUMENT_14', 'FLAG_DOCUMENT_15', 'FLAG_DOCUMENT_16', 'FLAG_DOCUMENT_17', 'FLAG_DOCUMENT_18', 'FLAG_DOCUMENT_19', 'FLAG_DOCUMENT_20', 'FLAG_DOCUMENT_21', 'AMT_REQ_CREDIT_BUREAU_HOUR', 'AMT_REQ_CREDIT_BUREAU_DAY', 'AMT_REQ_CREDIT_BUREAU_WEEK', 'AMT_REQ_CREDIT_BUREAU_MON', 'AMT_REQ_CREDIT_BUREAU_QRT', 'AMT_REQ_CREDIT_BUREAU_YEAR']

接下来看下数据集的统计信息

print(df.describe())
          SK_ID_CURR         TARGET   CNT_CHILDREN  AMT_INCOME_TOTAL  \
count  307511.000000  307511.000000  307511.000000      3.075110e+05   
mean   278180.518577       0.080729       0.417052      1.687979e+05   
std    102790.175348       0.272419       0.722121      2.371231e+05   
min    100002.000000       0.000000       0.000000      2.565000e+04   
25%    189145.500000       0.000000       0.000000      1.125000e+05   
50%    278202.000000       0.000000       0.000000      1.471500e+05   
75%    367142.500000       0.000000       1.000000      2.025000e+05   
max    456255.000000       1.000000      19.000000      1.170000e+08   

         AMT_CREDIT    AMT_ANNUITY  AMT_GOODS_PRICE  \
count  3.075110e+05  307499.000000     3.072330e+05   
mean   5.990260e+05   27108.573909     5.383962e+05   
std    4.024908e+05   14493.737315     3.694465e+05   
min    4.500000e+04    1615.500000     4.050000e+04   
25%    2.700000e+05   16524.000000     2.385000e+05   
50%    5.135310e+05   24903.000000     4.500000e+05   
75%    8.086500e+05   34596.000000     6.795000e+05   
max    4.050000e+06  258025.500000     4.050000e+06   

       REGION_POPULATION_RELATIVE     DAYS_BIRTH  DAYS_EMPLOYED  \
count               307511.000000  307511.000000  307511.000000   
mean                     0.020868  -16036.995067   63815.045904   
std                      0.013831    4363.988632  141275.766519   
min                      0.000290  -25229.000000  -17912.000000   
25%                      0.010006  -19682.000000   -2760.000000   
50%                      0.018850  -15750.000000   -1213.000000   
75%                      0.028663  -12413.000000    -289.000000   
max                      0.072508   -7489.000000  365243.000000   

       DAYS_REGISTRATION  DAYS_ID_PUBLISH    OWN_CAR_AGE     FLAG_MOBIL  \
count      307511.000000    307511.000000  104582.000000  307511.000000   
mean        -4986.120328     -2994.202373      12.061091       0.999997   
std          3522.886321      1509.450419      11.944812       0.001803   
min        -24672.000000     -7197.000000       0.000000       0.000000   
25%         -7479.500000     -4299.000000       5.000000       1.000000   
50%         -4504.000000     -3254.000000       9.000000       1.000000   
75%         -2010.000000     -1720.000000      15.000000       1.000000   
max             0.000000         0.000000      91.000000       1.000000   

       FLAG_EMP_PHONE  FLAG_WORK_PHONE  FLAG_CONT_MOBILE     FLAG_PHONE  \
count   307511.000000    307511.000000     307511.000000  307511.000000   
mean         0.819889         0.199368          0.998133       0.281066   
std          0.384280         0.399526          0.043164       0.449521   
min          0.000000         0.000000          0.000000       0.000000   
25%          1.000000         0.000000          1.000000       0.000000   
50%          1.000000         0.000000          1.000000       0.000000   
75%          1.000000         0.000000          1.000000       1.000000   
max          1.000000         1.000000          1.000000       1.000000   

          FLAG_EMAIL  CNT_FAM_MEMBERS  REGION_RATING_CLIENT  \
count  307511.000000    307509.000000         307511.000000   
mean        0.056720         2.152665              2.052463   
std         0.231307         0.910682              0.509034   
min         0.000000         1.000000              1.000000   
25%         0.000000         2.000000              2.000000   
50%         0.000000         2.000000              2.000000   
75%         0.000000         3.000000              2.000000   
max         1.000000        20.000000              3.000000   

       REGION_RATING_CLIENT_W_CITY  HOUR_APPR_PROCESS_START  \
count                307511.000000            307511.000000   
mean                      2.031521                12.063419   
std                       0.502737                 3.265832   
min                       1.000000                 0.000000   
25%                       2.000000                10.000000   
50%                       2.000000                12.000000   
75%                       2.000000                14.000000   
max                       3.000000                23.000000   

       REG_REGION_NOT_LIVE_REGION  REG_REGION_NOT_WORK_REGION  \
count               307511.000000               307511.000000   
mean                     0.015144                    0.050769   
std                      0.122126                    0.219526   
min                      0.000000                    0.000000   
25%                      0.000000                    0.000000   
50%                      0.000000                    0.000000   
75%                      0.000000                    0.000000   
max                      1.000000                    1.000000   

       LIVE_REGION_NOT_WORK_REGION  REG_CITY_NOT_LIVE_CITY  \
count                307511.000000           307511.000000   
mean                      0.040659                0.078173   
std                       0.197499                0.268444   
min                       0.000000                0.000000   
25%                       0.000000                0.000000   
50%                       0.000000                0.000000   
75%                       0.000000                0.000000   
max                       1.000000                1.000000   

       REG_CITY_NOT_WORK_CITY  LIVE_CITY_NOT_WORK_CITY   EXT_SOURCE_1  \
count           307511.000000            307511.000000  134133.000000   
mean                 0.230454                 0.179555       0.502130   
std                  0.421124                 0.383817       0.211062   
min                  0.000000                 0.000000       0.014568   
25%                  0.000000                 0.000000       0.334007   
50%                  0.000000                 0.000000       0.505998   
75%                  0.000000                 0.000000       0.675053   
max                  1.000000                 1.000000       0.962693   

       EXT_SOURCE_2   EXT_SOURCE_3  APARTMENTS_AVG  BASEMENTAREA_AVG  \
count  3.068510e+05  246546.000000    151450.00000     127568.000000   
mean   5.143927e-01       0.510853         0.11744          0.088442   
std    1.910602e-01       0.194844         0.10824          0.082438   
min    8.173617e-08       0.000527         0.00000          0.000000   
25%    3.924574e-01       0.370650         0.05770          0.044200   
50%    5.659614e-01       0.535276         0.08760          0.076300   
75%    6.636171e-01       0.669057         0.14850          0.112200   
max    8.549997e-01       0.896010         1.00000          1.000000   

       YEARS_BEGINEXPLUATATION_AVG  YEARS_BUILD_AVG  COMMONAREA_AVG  \
count                157504.000000    103023.000000    92646.000000   
mean                      0.977735         0.752471        0.044621   
std                       0.059223         0.113280        0.076036   
min                       0.000000         0.000000        0.000000   
25%                       0.976700         0.687200        0.007800   
50%                       0.981600         0.755200        0.021100   
75%                       0.986600         0.823200        0.051500   
max                       1.000000         1.000000        1.000000   

       ELEVATORS_AVG  ENTRANCES_AVG  FLOORSMAX_AVG  FLOORSMIN_AVG  \
count  143620.000000  152683.000000  154491.000000   98869.000000   
mean        0.078942       0.149725       0.226282       0.231894   
std         0.134576       0.100049       0.144641       0.161380   
min         0.000000       0.000000       0.000000       0.000000   
25%         0.000000       0.069000       0.166700       0.083300   
50%         0.000000       0.137900       0.166700       0.208300   
75%         0.120000       0.206900       0.333300       0.375000   
max         1.000000       1.000000       1.000000       1.000000   

        LANDAREA_AVG  LIVINGAPARTMENTS_AVG  LIVINGAREA_AVG  \
count  124921.000000          97312.000000   153161.000000   
mean        0.066333              0.100775        0.107399   
std         0.081184              0.092576        0.110565   
min         0.000000              0.000000        0.000000   
25%         0.018700              0.050400        0.045300   
50%         0.048100              0.075600        0.074500   
75%         0.085600              0.121000        0.129900   
max         1.000000              1.000000        1.000000   

       NONLIVINGAPARTMENTS_AVG  NONLIVINGAREA_AVG  APARTMENTS_MODE  \
count             93997.000000      137829.000000    151450.000000   
mean                  0.008809           0.028358         0.114231   
std                   0.047732           0.069523         0.107936   
min                   0.000000           0.000000         0.000000   
25%                   0.000000           0.000000         0.052500   
50%                   0.000000           0.003600         0.084000   
75%                   0.003900           0.027700         0.143900   
max                   1.000000           1.000000         1.000000   

       BASEMENTAREA_MODE  YEARS_BEGINEXPLUATATION_MODE  YEARS_BUILD_MODE  \
count      127568.000000                 157504.000000     103023.000000   
mean            0.087543                      0.977065          0.759637   
std             0.084307                      0.064575          0.110111   
min             0.000000                      0.000000          0.000000   
25%             0.040700                      0.976700          0.699400   
50%             0.074600                      0.981600          0.764800   
75%             0.112400                      0.986600          0.823600   
max             1.000000                      1.000000          1.000000   

       COMMONAREA_MODE  ELEVATORS_MODE  ENTRANCES_MODE  FLOORSMAX_MODE  \
count     92646.000000   143620.000000   152683.000000   154491.000000   
mean          0.042553        0.074490        0.145193        0.222315   
std           0.074445        0.132256        0.100977        0.143709   
min           0.000000        0.000000        0.000000        0.000000   
25%           0.007200        0.000000        0.069000        0.166700   
50%           0.019000        0.000000        0.137900        0.166700   
75%           0.049000        0.120800        0.206900        0.333300   
max           1.000000        1.000000        1.000000        1.000000   

       FLOORSMIN_MODE  LANDAREA_MODE  LIVINGAPARTMENTS_MODE  LIVINGAREA_MODE  \
count    98869.000000  124921.000000           97312.000000    153161.000000   
mean         0.228058       0.064958               0.105645         0.105975   
std          0.161160       0.081750               0.097880         0.111845   
min          0.000000       0.000000               0.000000         0.000000   
25%          0.083300       0.016600               0.054200         0.042700   
50%          0.208300       0.045800               0.077100         0.073100   
75%          0.375000       0.084100               0.131300         0.125200   
max          1.000000       1.000000               1.000000         1.000000   

       NONLIVINGAPARTMENTS_MODE  NONLIVINGAREA_MODE  APARTMENTS_MEDI  \
count              93997.000000       137829.000000    151450.000000   
mean                   0.008076            0.027022         0.117850   
std                    0.046276            0.070254         0.109076   
min                    0.000000            0.000000         0.000000   
25%                    0.000000            0.000000         0.058300   
50%                    0.000000            0.001100         0.086400   
75%                    0.003900            0.023100         0.148900   
max                    1.000000            1.000000         1.000000   

       BASEMENTAREA_MEDI  YEARS_BEGINEXPLUATATION_MEDI  YEARS_BUILD_MEDI  \
count      127568.000000                 157504.000000     103023.000000   
mean            0.087955                      0.977752          0.755746   
std             0.082179                      0.059897          0.112066   
min             0.000000                      0.000000          0.000000   
25%             0.043700                      0.976700          0.691400   
50%             0.075800                      0.981600          0.758500   
75%             0.111600                      0.986600          0.825600   
max             1.000000                      1.000000          1.000000   

       COMMONAREA_MEDI  ELEVATORS_MEDI  ENTRANCES_MEDI  FLOORSMAX_MEDI  \
count     92646.000000   143620.000000   152683.000000   154491.000000   
mean          0.044595        0.078078        0.149213        0.225897   
std           0.076144        0.134467        0.100368        0.145067   
min           0.000000        0.000000        0.000000        0.000000   
25%           0.007900        0.000000        0.069000        0.166700   
50%           0.020800        0.000000        0.137900        0.166700   
75%           0.051300        0.120000        0.206900        0.333300   
max           1.000000        1.000000        1.000000        1.000000   

       FLOORSMIN_MEDI  LANDAREA_MEDI  LIVINGAPARTMENTS_MEDI  LIVINGAREA_MEDI  \
count    98869.000000  124921.000000           97312.000000    153161.000000   
mean         0.231625       0.067169               0.101954         0.108607   
std          0.161934       0.082167               0.093642         0.112260   
min          0.000000       0.000000               0.000000         0.000000   
25%          0.083300       0.018700               0.051300         0.045700   
50%          0.208300       0.048700               0.076100         0.074900   
75%          0.375000       0.086800               0.123100         0.130300   
max          1.000000       1.000000               1.000000         1.000000   

       NONLIVINGAPARTMENTS_MEDI  NONLIVINGAREA_MEDI  TOTALAREA_MODE  \
count              93997.000000       137829.000000   159080.000000   
mean                   0.008651            0.028236        0.102547   
std                    0.047415            0.070166        0.107462   
min                    0.000000            0.000000        0.000000   
25%                    0.000000            0.000000        0.041200   
50%                    0.000000            0.003100        0.068800   
75%                    0.003900            0.026600        0.127600   
max                    1.000000            1.000000        1.000000   

       OBS_30_CNT_SOCIAL_CIRCLE  DEF_30_CNT_SOCIAL_CIRCLE  \
count             306490.000000             306490.000000   
mean                   1.422245                  0.143421   
std                    2.400989                  0.446698   
min                    0.000000                  0.000000   
25%                    0.000000                  0.000000   
50%                    0.000000                  0.000000   
75%                    2.000000                  0.000000   
max                  348.000000                 34.000000   

       OBS_60_CNT_SOCIAL_CIRCLE  DEF_60_CNT_SOCIAL_CIRCLE  \
count             306490.000000             306490.000000   
mean                   1.405292                  0.100049   
std                    2.379803                  0.362291   
min                    0.000000                  0.000000   
25%                    0.000000                  0.000000   
50%                    0.000000                  0.000000   
75%                    2.000000                  0.000000   
max                  344.000000                 24.000000   

       DAYS_LAST_PHONE_CHANGE  FLAG_DOCUMENT_2  FLAG_DOCUMENT_3  \
count           307510.000000    307511.000000    307511.000000   
mean              -962.858788         0.000042         0.710023   
std                826.808487         0.006502         0.453752   
min              -4292.000000         0.000000         0.000000   
25%              -1570.000000         0.000000         0.000000   
50%               -757.000000         0.000000         1.000000   
75%               -274.000000         0.000000         1.000000   
max                  0.000000         1.000000         1.000000   

       FLAG_DOCUMENT_4  FLAG_DOCUMENT_5  FLAG_DOCUMENT_6  FLAG_DOCUMENT_7  \
count    307511.000000    307511.000000    307511.000000    307511.000000   
mean          0.000081         0.015115         0.088055         0.000192   
std           0.009016         0.122010         0.283376         0.013850   
min           0.000000         0.000000         0.000000         0.000000   
25%           0.000000         0.000000         0.000000         0.000000   
50%           0.000000         0.000000         0.000000         0.000000   
75%           0.000000         0.000000         0.000000         0.000000   
max           1.000000         1.000000         1.000000         1.000000   

       FLAG_DOCUMENT_8  FLAG_DOCUMENT_9  FLAG_DOCUMENT_10  FLAG_DOCUMENT_11  \
count    307511.000000    307511.000000     307511.000000     307511.000000   
mean          0.081376         0.003896          0.000023          0.003912   
std           0.273412         0.062295          0.004771          0.062424   
min           0.000000         0.000000          0.000000          0.000000   
25%           0.000000         0.000000          0.000000          0.000000   
50%           0.000000         0.000000          0.000000          0.000000   
75%           0.000000         0.000000          0.000000          0.000000   
max           1.000000         1.000000          1.000000          1.000000   

       FLAG_DOCUMENT_12  FLAG_DOCUMENT_13  FLAG_DOCUMENT_14  FLAG_DOCUMENT_15  \
count     307511.000000     307511.000000     307511.000000      307511.00000   
mean           0.000007          0.003525          0.002936           0.00121   
std            0.002550          0.059268          0.054110           0.03476   
min            0.000000          0.000000          0.000000           0.00000   
25%            0.000000          0.000000          0.000000           0.00000   
50%            0.000000          0.000000          0.000000           0.00000   
75%            0.000000          0.000000          0.000000           0.00000   
max            1.000000          1.000000          1.000000           1.00000   

       FLAG_DOCUMENT_16  FLAG_DOCUMENT_17  FLAG_DOCUMENT_18  FLAG_DOCUMENT_19  \
count     307511.000000     307511.000000     307511.000000     307511.000000   
mean           0.009928          0.000267          0.008130          0.000595   
std            0.099144          0.016327          0.089798          0.024387   
min            0.000000          0.000000          0.000000          0.000000   
25%            0.000000          0.000000          0.000000          0.000000   
50%            0.000000          0.000000          0.000000          0.000000   
75%            0.000000          0.000000          0.000000          0.000000   
max            1.000000          1.000000          1.000000          1.000000   

       FLAG_DOCUMENT_20  FLAG_DOCUMENT_21  AMT_REQ_CREDIT_BUREAU_HOUR  \
count     307511.000000     307511.000000               265992.000000   
mean           0.000507          0.000335                    0.006402   
std            0.022518          0.018299                    0.083849   
min            0.000000          0.000000                    0.000000   
25%            0.000000          0.000000                    0.000000   
50%            0.000000          0.000000                    0.000000   
75%            0.000000          0.000000                    0.000000   
max            1.000000          1.000000                    4.000000   

       AMT_REQ_CREDIT_BUREAU_DAY  AMT_REQ_CREDIT_BUREAU_WEEK  \
count              265992.000000               265992.000000   
mean                    0.007000                    0.034362   
std                     0.110757                    0.204685   
min                     0.000000                    0.000000   
25%                     0.000000                    0.000000   
50%                     0.000000                    0.000000   
75%                     0.000000                    0.000000   
max                     9.000000                    8.000000   

       AMT_REQ_CREDIT_BUREAU_MON  AMT_REQ_CREDIT_BUREAU_QRT  \
count              265992.000000              265992.000000   
mean                    0.267395                   0.265474   
std                     0.916002                   0.794056   
min                     0.000000                   0.000000   
25%                     0.000000                   0.000000   
50%                     0.000000                   0.000000   
75%                     0.000000                   0.000000   
max                    27.000000                 261.000000   

       AMT_REQ_CREDIT_BUREAU_YEAR  
count               265992.000000  
mean                     1.899974  
std                      1.869295  
min                      0.000000  
25%                      0.000000  
50%                      1.000000  
75%                      3.000000  
max                     25.000000  

数据相关性

data Correlation

查看两两特征之间的相关程度,对特征的处理有指导意义。

# The correlation matrix
corrmat = df.corr(numeric_only=True)

# Upper triangle of correlations
upper = corrmat.where(np.triu(np.ones(corrmat.shape), k=1).astype('bool'))

# Absolute value correlation
correlations = upper.unstack().dropna().sort_index()

correlations.abs().sort_values(ascending=False).head(20)
FLAG_EMP_PHONE                DAYS_EMPLOYED                  0.999755
YEARS_BUILD_MEDI              YEARS_BUILD_AVG                0.998495
OBS_60_CNT_SOCIAL_CIRCLE      OBS_30_CNT_SOCIAL_CIRCLE       0.998490
FLOORSMIN_MEDI                FLOORSMIN_AVG                  0.997241
FLOORSMAX_MEDI                FLOORSMAX_AVG                  0.997034
ENTRANCES_MEDI                ENTRANCES_AVG                  0.996886
ELEVATORS_MEDI                ELEVATORS_AVG                  0.996099
COMMONAREA_MEDI               COMMONAREA_AVG                 0.995978
LIVINGAREA_MEDI               LIVINGAREA_AVG                 0.995596
APARTMENTS_MEDI               APARTMENTS_AVG                 0.995081
BASEMENTAREA_MEDI             BASEMENTAREA_AVG               0.994317
LIVINGAPARTMENTS_MEDI         LIVINGAPARTMENTS_AVG           0.993825
YEARS_BEGINEXPLUATATION_MEDI  YEARS_BEGINEXPLUATATION_AVG    0.993825
LANDAREA_MEDI                 LANDAREA_AVG                   0.991610
NONLIVINGAPARTMENTS_MEDI      NONLIVINGAPARTMENTS_AVG        0.990768
NONLIVINGAREA_MEDI            NONLIVINGAREA_AVG              0.990444
YEARS_BUILD_MEDI              YEARS_BUILD_MODE               0.989463
YEARS_BUILD_MODE              YEARS_BUILD_AVG                0.989444
FLOORSMIN_MEDI                FLOORSMIN_MODE                 0.988406
FLOORSMAX_MEDI                FLOORSMAX_MODE                 0.988237
dtype: float64
fig, axs = plt.subplots(figsize=(10, 10))
sns.heatmap(corrmat, vmax=0.9, square=True)
axs.set_title('Correlations', size=15)
plt.show()

目标变量相关性

Continuous Features

# Find correlations with the target and sort
print('Most Positive Correlations:\n', correlations["TARGET"].tail(15))
print('\nMost Negative Correlations:\n', correlations["TARGET"].head(15))
Most Positive Correlations:
 SK_ID_CURR   -0.002108
dtype: float64

Most Negative Correlations:
 SK_ID_CURR   -0.002108
dtype: float64
# Extract the EXT_SOURCE variables and show correlations
cont_features = ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']

fig = plt.figure(figsize=(5, 8))
plt.subplots_adjust(right=1.5)

for i, source in enumerate(cont_features):
    
    # Distribution of feature in dataset
    ax = fig.add_subplot(3, 1, i + 1)
    sns.kdeplot(x=source, data=df, 
                hue=target, 
                common_norm=False,
                fill=True, 
                ax=ax)
    
    # Label the plots
    plt.title(f'Distribution of {source} by Target Value')
    plt.xlabel(f'{source}')
    plt.ylabel('Density')
    
plt.tight_layout(h_pad = 2.5)

# Extract the EXT_SOURCE variables and show correlations
cont_features = ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']

for source in cont_features:
    # Calculate the correlation coefficient between the variable and the target
    corr = df[target].corr(df[source])
    
    # Calculate medians for repaid vs not repaid
    avg_repaid = df.loc[df[target] == 0, source].median()
    avg_not_repaid = df.loc[df[target] == 1, source].median()
      
    # print out the correlation
    print('\nThe correlation between %s and the TARGET is %0.4f' % (source, corr))
    # Print out average values
    print('Median value for loan that was not repaid = %0.4f' % avg_not_repaid)
    print('Median value for loan that was repaid =     %0.4f' % avg_repaid)
The correlation between EXT_SOURCE_1 and the TARGET is -0.1553
Median value for loan that was not repaid = 0.3617
Median value for loan that was repaid =     0.5175

The correlation between EXT_SOURCE_2 and the TARGET is -0.1605
Median value for loan that was not repaid = 0.4404
Median value for loan that was repaid =     0.5739

The correlation between EXT_SOURCE_3 and the TARGET is -0.1789
Median value for loan that was not repaid = 0.3791
Median value for loan that was repaid =     0.5460

Categorical Features

cat_features = df.select_dtypes(["object"]).columns

fig = plt.figure(figsize=(16, 16))
for i, feature in enumerate(cat_features):    
    ax = fig.add_subplot(4, 4, i+1)
    sns.countplot(x=feature, data=df, 
                hue=df[target].map(lambda x:str(x)), 
                fill=True, 
                ax=ax)
    
    ax.set_xlabel(feature)
    ax.set_ylabel('App Count')    
    ax.legend(loc='upper center')

plt.show()

目标变量分布

对于分类问题的目标变量,在sklearn中需要编码为数值型

sklearn.preprocessing预处理
LabelEncoder目标变量序数编码
LabelBinarizer二分类目标数值化
MultiLabelBinarizer多标签目标数值化

检查目标变量分布

# `TARGET` is the target variable we are trying to predict (0 or 1):
# 1 = Not Repaid 
# 0 = Repaid
target = 'TARGET'

print(f"percentage of default : {df[target].mean():.2%}")
print(df[target].value_counts())
percentage of default : 8.07%
TARGET
0    282686
1     24825
Name: count, dtype: int64

现实中,样本(类别)样本不平衡(class-imbalance)是一种常见的现象,一般地,做分类算法训练时,如果样本类别比例(Imbalance Ratio)(多数类vs少数类)严重不平衡时,分类算法将开始做出有利于多数类的预测。一般有以下几种方法:权重法、采样法、数据增强、损失函数、集成方法、评估指标。

方法函数python包
SMOTESMOTEimblearn.over_sampling
ADASYNADASYNimblearn.over_sampling
Bagging算法BalancedBaggingClassifierimblearn.ensemble
Boosting算法EasyEnsembleClassifierimblearn.ensemble
损失函数Focal Lossself-define

我们可以用imbalance-learn这个Python库实现诸如重采样和模型集成等大多数方法。

对于回归任务,假设预测目标为客户的贷款额度AMT_CREDIT

df['AMT_CREDIT'].describe()
count    3.075110e+05
mean     5.990260e+05
std      4.024908e+05
min      4.500000e+04
25%      2.700000e+05
50%      5.135310e+05
75%      8.086500e+05
max      4.050000e+06
Name: AMT_CREDIT, dtype: float64

我们画出AMT_CREDIT的分布图和QQ图。

Quantile-Quantile图是一种常用的统计图形,用来比较两个数据集之间的分布。它是由标准正态分布的分位数为横坐标,样本值为纵坐标的散点图。如果QQ图上的点在一条直线附近,则说明数据近似于正态分布,且该直线的斜率为标准差,截距为均值。

import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import probplot, norm

def norm_comparison_plot(series):
    series = pd.Series(series)
    mu, sigma = norm.fit(series)
    kurt, skew = series.kurt(), series.skew()
    print(f"Kurtosis: {kurt:.2f}", f"Skewness: {skew:.2f}", sep='\t')
    
    fig = plt.figure(figsize=(10, 4))
    # Now plot the distribution
    ax1 = fig.add_subplot(121)
    ax1.set_title('Distribution')
    ax1.set_ylabel('Frequency')
    sns.distplot(series, fit=norm, ax=ax1)
    ax1.legend(['dist','kde','norm'],f'Normal dist. ($\mu=$ {mu:.2f} and $\sigma=$ {sigma:.2f} )', loc='best')
    # Get also the QQ-plot
    ax2 = fig.add_subplot(122)
    probplot(series, plot=plt)

可以看到 AMT_CREDIT 的分布呈偏态,许多回归算法都有正态分布假设,因此我们尝试对数变换,让数据接近正态分布。

norm_comparison_plot(np.log1p(df['AMT_CREDIT']))
plt.show()
Kurtosis: -0.29	Skewness: -0.34

可以看到经过对数变换后,基本符合正态分布了。

sklearn.compose 中的 TransformedTargetRegressor 是专门为回归任务设置的目标变换。对于简单的变换,TransformedTargetRegressor在拟合回归模型之前变换目标变量,预测时则通过逆变换映射回原始值。

from sklearn.linear_model import LinearRegression
from sklearn.compose import TransformedTargetRegressor
from sklearn.preprocessing import FunctionTransformer

reg = TransformedTargetRegressor(regressor=LinearRegression(), 
      transformer=FunctionTransformer(np.log1p))

附录:数据集字段描述

TableRow中文描述
applicationSK_ID_CURR此次申请的ID
applicationTARGET申请人本次申请的还款风险:1-风险较高;0-风险较低
applicationNAME_CONTRACT_TYPE贷款类型:cash(现金)还是revolving(周转金,一次申请,多次循环提取)
applicationCODE_GENDER申请人性别
applicationFLAG_OWN_CAR申请人是否有车
applicationFLAG_OWN_REALTY申请人是否有房
applicationCNT_CHILDREN申请人子女个数
applicationAMT_INCOME_TOTAL申请人收入状况
applicationAMT_CREDIT此次申请的贷款金额
applicationAMT_ANNUITY贷款年金
applicationAMT_GOODS_PRICE如果是消费贷款,改字段表示商品的实际价格
applicationNAME_TYPE_SUITE申请人此次申请的陪同人员
applicationNAME_INCOME_TYPE申请人收入类型
applicationNAME_EDUCATION_TYPE申请人受教育程度
applicationNAME_FAMILY_STATUS申请人婚姻状况
applicationNAME_HOUSING_TYPE申请人居住状况(租房,已购房,和父母一起住等)
applicationREGION_POPULATION_RELATIVE申请人居住地人口密度,已标准化
applicationDAYS_BIRTH申请人出生日(距离申请当日的天数,负值)
applicationDAYS_EMPLOYED申请人当前工作的工作年限(距离申请当日的天数,负值)
applicationDAYS_REGISTRATION申请人最近一次修改注册信息的时间(距离申请当日的天数,负值)
applicationDAYS_ID_PUBLISH申请人最近一次修改申请贷款的身份证明文件的时间(距离申请当日的天数,负值)
applicationOWN_CAR_AGE申请人车龄
applicationFLAG_MOBIL申请人是否提供个人电话(1-yes,0-no)
applicationFLAG_EMP_PHONE申请人是否提供家庭电话(1-yes,0-no)
applicationFLAG_WORK_PHONE申请人是否提供工作电话(1-yes,0-no)
applicationFLAG_CONT_MOBILE申请人个人电话是否能拨通(1-yes,0-no)
applicationFLAG_PHONE是否提供家庭电话
applicationFLAG_EMAIL申请人是否提供电子邮箱(1-yes,0-no)
applicationOCCUPATION_TYPE申请人职务
applicationCNT_FAM_MEMBERS家庭成员数量
applicationREGION_RATING_CLIENT本公司对申请人居住区域的评分等级(1,2,3)
applicationREGION_RATING_CLIENT_W_CITY在考虑所在城市的情况下,本公司对申请人居住区域的评分等级(1,2,3)
applicationWEEKDAY_APPR_PROCESS_START申请人发起申请日是星期几
applicationHOUR_APPR_PROCESS_START申请人发起申请的hour
applicationREG_REGION_NOT_LIVE_REGION申请人提供的的永久地址和联系地址是否匹配(1-不匹配,2-匹配,区域级别的)
applicationREG_REGION_NOT_WORK_REGION申请人提供的的永久地址和工作地址是否匹配(1-不匹配,2-匹配,区域级别的)
applicationLIVE_REGION_NOT_WORK_REGION申请人提供的的联系地址和工作地址是否匹配(1-不匹配,2-匹配,区域级别的)
applicationREG_CITY_NOT_LIVE_CITY申请人提供的的永久地址和联系地址是否匹配(1-不匹配,2-匹配,城市级别的)
applicationREG_CITY_NOT_WORK_CITY申请人提供的的永久地址和工作地址是否匹配(1-不匹配,2-匹配,城市级别的)
applicationLIVE_CITY_NOT_WORK_CITY申请人提供的的联系地址和工作地址是否匹配(1-不匹配,2-匹配,城市级别的)
applicationORGANIZATION_TYPE申请人工作所属组织类型
applicationEXT_SOURCE_1外部数据源1的标准化评分
applicationEXT_SOURCE_2外部数据源2的标准化评分
applicationEXT_SOURCE_3外部数据源3的标准化评分
applicationAPARTMENTS_AVG申请人居住环境各项指标的标准化评分
applicationBASEMENTAREA_AVG居住信息
applicationYEARS_BEGINEXPLUATATION_AVG居住信息
applicationYEARS_BUILD_AVG居住信息
applicationCOMMONAREA_AVG居住信息
applicationELEVATORS_AVG居住信息
applicationENTRANCES_AVG居住信息
applicationFLOORSMAX_AVG居住信息
applicationFLOORSMIN_AVG居住信息
applicationLANDAREA_AVG居住信息
applicationLIVINGAPARTMENTS_AVG居住信息
applicationLIVINGAREA_AVG居住信息
applicationNONLIVINGAPARTMENTS_AVG居住信息
applicationNONLIVINGAREA_AVG居住信息
applicationAPARTMENTS_MODE居住信息
applicationBASEMENTAREA_MODE居住信息
applicationYEARS_BEGINEXPLUATATION_MODE居住信息
applicationYEARS_BUILD_MODE居住信息
applicationCOMMONAREA_MODE居住信息
applicationELEVATORS_MODE居住信息
applicationENTRANCES_MODE居住信息
applicationFLOORSMAX_MODE居住信息
applicationFLOORSMIN_MODE居住信息
applicationLANDAREA_MODE居住信息
applicationLIVINGAPARTMENTS_MODE居住信息
applicationLIVINGAREA_MODE居住信息
applicationNONLIVINGAPARTMENTS_MODE居住信息
applicationNONLIVINGAREA_MODE居住信息
applicationAPARTMENTS_MEDI居住信息
applicationBASEMENTAREA_MEDI居住信息
applicationYEARS_BEGINEXPLUATATION_MEDI居住信息
applicationYEARS_BUILD_MEDI居住信息
applicationCOMMONAREA_MEDI居住信息
applicationELEVATORS_MEDI居住信息
applicationENTRANCES_MEDI居住信息
applicationFLOORSMAX_MEDI居住信息
applicationFLOORSMIN_MEDI居住信息
applicationLANDAREA_MEDI居住信息
applicationLIVINGAPARTMENTS_MEDI居住信息
applicationLIVINGAREA_MEDI居住信息
applicationNONLIVINGAPARTMENTS_MEDI居住信息
applicationNONLIVINGAREA_MEDI居住信息
applicationFONDKAPREMONT_MODE居住信息
applicationHOUSETYPE_MODE居住信息
applicationTOTALAREA_MODE居住信息
applicationWALLSMATERIAL_MODE居住信息
applicationEMERGENCYSTATE_MODE居住信息
applicationOBS_30_CNT_SOCIAL_CIRCLE客户的社会关系中有30天逾期
applicationDEF_30_CNT_SOCIAL_CIRCLE客户的社会关系中有30天逾期
applicationOBS_60_CNT_SOCIAL_CIRCLE客户的社会关系中有60天逾期
applicationDEF_60_CNT_SOCIAL_CIRCLE客户的社会关系中有60天逾期
applicationDAYS_LAST_PHONE_CHANGE申请人最近一次修改手机号码的时间(距离申请当日的天数,负值)
applicationFLAG_DOCUMENT_2申请人是否额外提供了2号文件
applicationFLAG_DOCUMENT_3申请人是否额外提供了3号文件
applicationFLAG_DOCUMENT_4申请人是否额外提供了4号文件
applicationFLAG_DOCUMENT_5申请人是否额外提供了5号文件
applicationFLAG_DOCUMENT_6申请人是否额外提供了6号文件
applicationFLAG_DOCUMENT_7申请人是否额外提供了7号文件
applicationFLAG_DOCUMENT_8申请人是否额外提供了8号文件
applicationFLAG_DOCUMENT_9申请人是否额外提供了9号文件
applicationFLAG_DOCUMENT_10申请人是否额外提供了10号文件
applicationFLAG_DOCUMENT_11申请人是否额外提供了11号文件
applicationFLAG_DOCUMENT_12申请人是否额外提供了12号文件
applicationFLAG_DOCUMENT_13申请人是否额外提供了13号文件
applicationFLAG_DOCUMENT_14申请人是否额外提供了14号文件
applicationFLAG_DOCUMENT_15申请人是否额外提供了15号文件
applicationFLAG_DOCUMENT_16申请人是否额外提供了16号文件
applicationFLAG_DOCUMENT_17申请人是否额外提供了17号文件
applicationFLAG_DOCUMENT_18申请人是否额外提供了18号文件
applicationFLAG_DOCUMENT_19申请人是否额外提供了19号文件
applicationFLAG_DOCUMENT_20申请人是否额外提供了20号文件
applicationFLAG_DOCUMENT_21申请人是否额外提供了21号文件
applicationAMT_REQ_CREDIT_BUREAU_HOUR申请人发起申请前1个小时以内,被查询征信的次数
applicationAMT_REQ_CREDIT_BUREAU_DAY申请人发起申请前一天以内,被查询征信的次数
applicationAMT_REQ_CREDIT_BUREAU_WEEK申请人发起申请前一周以内,被查询征信的次数
applicationAMT_REQ_CREDIT_BUREAU_MON申请人发起申请前一月以内,被查询征信的次数
applicationAMT_REQ_CREDIT_BUREAU_QRT申请人发起申请前一个季度以内,被查询征信的次数
applicationAMT_REQ_CREDIT_BUREAU_YEAR申请人发起申请前一年以内,被查询征信的次数
bureauSK_ID_CURR此次申请的ID
bureauSK_BUREAU_IDSK_BUREAU_ID
bureauCREDIT_ACTIVE信用卡状态
bureauCREDIT_CURRENCY信用货币类型,currency1-4,共四个特征
bureauDAYS_CREDIT客户在申请日前多少天申请的征信机构信用
bureauCREDIT_DAY_OVERDUE申请贷款时客户的逾期天数
bureauDAYS_CREDIT_ENDDATE客户的在征信机构还有多少天的信用时间
bureauDAYS_ENDDATE_FACT客户在征信机构关闭了多久的信用
bureauAMT_CREDIT_MAX_OVERDUE客户到目前为止的最大逾期额度
bureauCNT_CREDIT_PROLONG在征信机构有几次延期
bureauAMT_CREDIT_SUM客户当前在信用机构的信用额度
bureauAMT_CREDIT_SUM_DEBT客户在信用机构的当前债务
bureauAMT_CREDIT_SUM_LIMIT信用卡的信用限额
bureauAMT_CREDIT_SUM_OVERDUE客户在信用机构的违约之和
bureauCREDIT_TYPE信用机构的信用类型,车贷、房贷、信用卡、经营贷等
bureauDAYS_CREDIT_UPDATE信用机构的最近一次信息更新是多少天前
bureauAMT_ANNUITY每年要还的贷款额度
bureau_balanceSK_BUREAU_IDSK_BUREAU_ID
bureau_balanceMONTHS_BALANCE距今的月份
bureau_balanceSTATUSC代表closed、X是未知、0是无逾期、1是逾期在1-30天、2是逾期31-60天、3是逾期61-90天、4是逾期91-120天、5是逾期120天以上。
POS_CASH_balanceSK_ID_PREVSK_ID_PREV
POS_CASH_balanceSK_ID_CURRSK_ID_CURR
POS_CASH_balanceMONTHS_BALANCE距今的月份
POS_CASH_balanceCNT_INSTALMENT贷款期数
POS_CASH_balanceCNT_INSTALMENT_FUTURE贷款剩余期数
POS_CASH_balanceNAME_CONTRACT_STATUS合同状态,Active、Signed、Complete
POS_CASH_balanceSK_DPD当月逾期了多少天
POS_CASH_balanceSK_DPD_DEF忽略金额比较低的贷款,逾期了多少天
credit_card_balanceSK_ID_PREVSK_ID_PREV
credit_card_balanceSK_ID_CURRSK_ID_CURR
credit_card_balanceMONTHS_BALANCE距今的月份
credit_card_balanceAMT_BALANCEBalance during the month of previous credit
credit_card_balanceAMT_CREDIT_LIMIT_ACTUALCredit card limit during the month of the previous credit
credit_card_balanceAMT_DRAWINGS_ATM_CURRENTAmount drawing at ATM during the month of the previous credit
credit_card_balanceAMT_DRAWINGS_CURRENTAmount drawing during the month of the previous credit
credit_card_balanceAMT_DRAWINGS_OTHER_CURRENTAmount of other drawings during the month of the previous credit
credit_card_balanceAMT_DRAWINGS_POS_CURRENTAmount drawing or buying goods during the month of the previous credit
credit_card_balanceAMT_INST_MIN_REGULARITYMinimal installment for this month of the previous credit
credit_card_balanceAMT_PAYMENT_CURRENTHow much did the client pay during the month on the previous credit
credit_card_balanceAMT_PAYMENT_TOTAL_CURRENTHow much did the client pay during the month in total on the previous credit
credit_card_balanceAMT_RECEIVABLE_PRINCIPALAmount receivable for principal on the previous credit
credit_card_balanceAMT_RECIVABLEAmount receivable on the previous credit
credit_card_balanceAMT_TOTAL_RECEIVABLETotal amount receivable on the previous credit
credit_card_balanceCNT_DRAWINGS_ATM_CURRENTNumber of drawings at ATM during this month on the previous credit
credit_card_balanceCNT_DRAWINGS_CURRENTNumber of drawings during this month on the previous credit
credit_card_balanceCNT_DRAWINGS_OTHER_CURRENTNumber of other drawings during this month on the previous credit
credit_card_balanceCNT_DRAWINGS_POS_CURRENTNumber of drawings for goods during this month on the previous credit
credit_card_balanceCNT_INSTALMENT_MATURE_CUMNumber of paid installments on the previous credit
credit_card_balanceNAME_CONTRACT_STATUS合同状态,Active、Signed、Complete
credit_card_balanceSK_DPD当月逾期了多少天
credit_card_balanceSK_DPD_DEF忽略金额比较低的贷款,逾期了多少天
previous_applicationSK_ID_PREVSK_ID_PREV
previous_applicationSK_ID_CURRSK_ID_CURR
previous_applicationNAME_CONTRACT_TYPE合同类型是现金还是循环贷
previous_applicationAMT_ANNUITY每年要还的贷款额度
previous_applicationAMT_APPLICATION之前的贷款申请了多少钱数值
previous_applicationAMT_CREDIT客户的贷款信贷额度
previous_applicationAMT_DOWN_PAYMENT之前贷款的首付款
previous_applicationAMT_GOODS_PRICE对于消费贷来说,这个字段是要买的商品价格,从数据看每个贷款都对应某个商品,难道业务全部是消费贷吗
previous_applicationWEEKDAY_APPR_PROCESS_START周几申请的贷款,一般工作日多
previous_applicationHOUR_APPR_PROCESS_START几点申请的贷款
previous_applicationFLAG_LAST_APPL_PER_CONTRACT有时一个合同会被错误的提交多次申请,这个字段用来标志是不是一个贷款的最后一次申请
previous_applicationNFLAG_LAST_APPL_IN_DAY是不是当天的最后一次申请
previous_applicationNFLAG_MICRO_CASH是不是小微金融贷
previous_applicationRATE_DOWN_PAYMENT归一化的贷款首付比例
previous_applicationRATE_INTEREST_PRIMARY主要贷款利息的归一化值
previous_applicationRATE_INTEREST_PRIVILEGED优惠贷款利息的归一化值
previous_applicationNAME_CASH_LOAN_PURPOSE贷款用途
previous_applicationNAME_CONTRACT_STATUS合同状态,Active、Signed、Complete
previous_applicationDAYS_DECISION相对于当前贷款,上一次申请的决定是什么时候做的
previous_applicationNAME_PAYMENT_TYPE客户选择上一次贷款的付款方式,现金、电子支付、XNA
previous_applicationCODE_REJECT_REASON被拒原因,XAP、HC、LIMIT
previous_applicationNAME_TYPE_SUITE办理贷款的时候是谁跟着一起来的:孩子、家人、配偶、自己、…
previous_applicationNAME_CLIENT_TYPE客户是新客还是老客
previous_applicationNAME_GOODS_CATEGORY贷款是为了买什么类型的东西
previous_applicationNAME_PORTFOLIOpos、cash、cards、xna
previous_applicationNAME_PRODUCT_TYPEx-sell、walk-in、xna
previous_applicationCHANNEL_TYPE获客渠道,country wide、contact center、stone、AP+(cash loan)
previous_applicationSELLERPLACE_AREA销售区域的面积
previous_applicationNAME_SELLER_INDUSTRY卖家(应该是客户要买商品的卖家)的行业,消费电子、衣服、工业等
previous_applicationCNT_PAYMENT之前贷款分为多少期还款
previous_applicationNAME_YIELD_GROUP贷款利息,small、medium、high
previous_applicationPRODUCT_COMBINATION产品组合、 PRODUCT_COMBINATION、Cash X-Sell: low、Cash、POS household with interest
previous_applicationDAYS_FIRST_DRAWING相对于当前申请日期,上一次贷款的首次发放时间
previous_applicationDAYS_FIRST_DUE相对于当前申请日期,上一次贷款的首次逾期时间
previous_applicationDAYS_LAST_DUE_1ST_VERSION第一次逾期
previous_applicationDAYS_LAST_DUE最近一次逾期
previous_applicationDAYS_TERMINATION到期日期
previous_applicationNFLAG_INSURED_ON_APPROVAL之前的申请有没有要求保险
installments_paymentsSK_ID_PREVSK_ID_PREV
installments_paymentsSK_ID_CURRSK_ID_CURR
installments_paymentsNUM_INSTALMENT_VERSION分期付款
installments_paymentsNUM_INSTALMENT_NUMBER分期付款期数
installments_paymentsDAYS_INSTALMENT相对于当前申请日期,之前的贷款应该在什么时间支付
installments_paymentsDAYS_ENTRY_PAYMENT相对于当前申请日期,之前贷款的实际支付时间
installments_paymentsAMT_INSTALMENT贷款分期的约定付款金额
installments_paymentsAMT_PAYMENT分期的实际付款金额

参考文献:

Home Credit Default Risk - 1 之基础篇
Home Credit Default Risk 之FeatureTools篇
Feature Engineering for House Prices
Credit Fraud信用卡欺诈数据集,如何处理非平衡数据
Predict Future Sales 预测未来销量, Kaggle 比赛,LB 0.89896 排名6%
feature-engine 将特征工程中常用的方法进行了封装
分享关于人工智能的内容

特征工程系列:特征筛选的原理与实现(上) 7.23
特征工程系列:特征筛选的原理与实现(下) 7.23
特征工程系列:数据清洗 8.1
特征工程系列:特征预处理(上) 8.8
特征工程系列:特征预处理(下) 8.16
特征工程系列:特征构造之概览篇 10.8
特征工程系列:聚合特征构造以及转换特征构造 10.12
特征工程系列:笛卡尔乘积特征构造以及遗传编程特征构造 10.15
特征工程系列:GBDT特征构造以及聚类特征构造 10.30
特征工程系列:时间特征构造以及时间序列特征构造 11.11
特征工程系列:自动化特征构造 12.10
特征工程系列:空间特征构造以及文本特征构造 12.10

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值