特征工程(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文件,做基本的数据分析和建模,也是本篇的主要内容。

数据概览

导入必要的包

python 复制代码
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
python 复制代码
df = pd.read_csv('../datasets/Home-Credit-Default-Risk/application_train.csv')
# print(df.head())
python 复制代码
print('Training data shape: ', df.shape)
python 复制代码
# `SK_ID_CURR` is the unique id of the row.
id_col = "SK_ID_CURR"
df[id_col].nunique() == df.shape[0]

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

python 复制代码
# Number of each type of column
print(df.dtypes.value_counts())
python 复制代码
print("\nCategorical features:")
print(df.select_dtypes(["object"]).columns.tolist())
print("\nNumerical features:")
print(df.select_dtypes("number").columns.tolist())

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

python 复制代码
print(df.describe())

数据相关性

data Correlation

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

python 复制代码
# 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)
python 复制代码
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

python 复制代码
# 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))
python 复制代码
# 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)
python 复制代码
# 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)

Categorical Features

python 复制代码
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 多标签目标数值化

检查目标变量分布

python 复制代码
# `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())

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

方法 函数 python包
SMOTE SMOTE imblearn.over_sampling
ADASYN ADASYN imblearn.over_sampling
Bagging算法 BalancedBaggingClassifier imblearn.ensemble
Boosting算法 EasyEnsembleClassifier imblearn.ensemble
损失函数 Focal Loss self-define

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

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

python 复制代码
df['AMT_CREDIT'].describe()

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

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

python 复制代码
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 的分布呈偏态,许多回归算法都有正态分布假设,因此我们尝试对数变换,让数据接近正态分布。

python 复制代码
norm_comparison_plot(np.log1p(df['AMT_CREDIT']))
plt.show()

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

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

python 复制代码
from sklearn.linear_model import LinearRegression
from sklearn.compose import TransformedTargetRegressor
from sklearn.preprocessing import FunctionTransformer

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

附录:数据集字段描述

Table Row 中文描述
application SK_ID_CURR 此次申请的ID
application TARGET 申请人本次申请的还款风险:1-风险较高;0-风险较低
application NAME_CONTRACT_TYPE 贷款类型:cash(现金)还是revolving(周转金,一次申请,多次循环提取)
application CODE_GENDER 申请人性别
application FLAG_OWN_CAR 申请人是否有车
application FLAG_OWN_REALTY 申请人是否有房
application CNT_CHILDREN 申请人子女个数
application AMT_INCOME_TOTAL 申请人收入状况
application AMT_CREDIT 此次申请的贷款金额
application AMT_ANNUITY 贷款年金
application AMT_GOODS_PRICE 如果是消费贷款,改字段表示商品的实际价格
application NAME_TYPE_SUITE 申请人此次申请的陪同人员
application NAME_INCOME_TYPE 申请人收入类型
application NAME_EDUCATION_TYPE 申请人受教育程度
application NAME_FAMILY_STATUS 申请人婚姻状况
application NAME_HOUSING_TYPE 申请人居住状况(租房,已购房,和父母一起住等)
application REGION_POPULATION_RELATIVE 申请人居住地人口密度,已标准化
application DAYS_BIRTH 申请人出生日(距离申请当日的天数,负值)
application DAYS_EMPLOYED 申请人当前工作的工作年限(距离申请当日的天数,负值)
application DAYS_REGISTRATION 申请人最近一次修改注册信息的时间(距离申请当日的天数,负值)
application DAYS_ID_PUBLISH 申请人最近一次修改申请贷款的身份证明文件的时间(距离申请当日的天数,负值)
application OWN_CAR_AGE 申请人车龄
application FLAG_MOBIL 申请人是否提供个人电话(1-yes,0-no)
application FLAG_EMP_PHONE 申请人是否提供家庭电话(1-yes,0-no)
application FLAG_WORK_PHONE 申请人是否提供工作电话(1-yes,0-no)
application FLAG_CONT_MOBILE 申请人个人电话是否能拨通(1-yes,0-no)
application FLAG_PHONE 是否提供家庭电话
application FLAG_EMAIL 申请人是否提供电子邮箱(1-yes,0-no)
application OCCUPATION_TYPE 申请人职务
application CNT_FAM_MEMBERS 家庭成员数量
application REGION_RATING_CLIENT 本公司对申请人居住区域的评分等级(1,2,3)
application REGION_RATING_CLIENT_W_CITY 在考虑所在城市的情况下,本公司对申请人居住区域的评分等级(1,2,3)
application WEEKDAY_APPR_PROCESS_START 申请人发起申请日是星期几
application HOUR_APPR_PROCESS_START 申请人发起申请的hour
application REG_REGION_NOT_LIVE_REGION 申请人提供的的永久地址和联系地址是否匹配(1-不匹配,2-匹配,区域级别的)
application REG_REGION_NOT_WORK_REGION 申请人提供的的永久地址和工作地址是否匹配(1-不匹配,2-匹配,区域级别的)
application LIVE_REGION_NOT_WORK_REGION 申请人提供的的联系地址和工作地址是否匹配(1-不匹配,2-匹配,区域级别的)
application REG_CITY_NOT_LIVE_CITY 申请人提供的的永久地址和联系地址是否匹配(1-不匹配,2-匹配,城市级别的)
application REG_CITY_NOT_WORK_CITY 申请人提供的的永久地址和工作地址是否匹配(1-不匹配,2-匹配,城市级别的)
application LIVE_CITY_NOT_WORK_CITY 申请人提供的的联系地址和工作地址是否匹配(1-不匹配,2-匹配,城市级别的)
application ORGANIZATION_TYPE 申请人工作所属组织类型
application EXT_SOURCE_1 外部数据源1的标准化评分
application EXT_SOURCE_2 外部数据源2的标准化评分
application EXT_SOURCE_3 外部数据源3的标准化评分
application APARTMENTS_AVG 申请人居住环境各项指标的标准化评分
application BASEMENTAREA_AVG 居住信息
application YEARS_BEGINEXPLUATATION_AVG 居住信息
application YEARS_BUILD_AVG 居住信息
application COMMONAREA_AVG 居住信息
application ELEVATORS_AVG 居住信息
application ENTRANCES_AVG 居住信息
application FLOORSMAX_AVG 居住信息
application FLOORSMIN_AVG 居住信息
application LANDAREA_AVG 居住信息
application LIVINGAPARTMENTS_AVG 居住信息
application LIVINGAREA_AVG 居住信息
application NONLIVINGAPARTMENTS_AVG 居住信息
application NONLIVINGAREA_AVG 居住信息
application APARTMENTS_MODE 居住信息
application BASEMENTAREA_MODE 居住信息
application YEARS_BEGINEXPLUATATION_MODE 居住信息
application YEARS_BUILD_MODE 居住信息
application COMMONAREA_MODE 居住信息
application ELEVATORS_MODE 居住信息
application ENTRANCES_MODE 居住信息
application FLOORSMAX_MODE 居住信息
application FLOORSMIN_MODE 居住信息
application LANDAREA_MODE 居住信息
application LIVINGAPARTMENTS_MODE 居住信息
application LIVINGAREA_MODE 居住信息
application NONLIVINGAPARTMENTS_MODE 居住信息
application NONLIVINGAREA_MODE 居住信息
application APARTMENTS_MEDI 居住信息
application BASEMENTAREA_MEDI 居住信息
application YEARS_BEGINEXPLUATATION_MEDI 居住信息
application YEARS_BUILD_MEDI 居住信息
application COMMONAREA_MEDI 居住信息
application ELEVATORS_MEDI 居住信息
application ENTRANCES_MEDI 居住信息
application FLOORSMAX_MEDI 居住信息
application FLOORSMIN_MEDI 居住信息
application LANDAREA_MEDI 居住信息
application LIVINGAPARTMENTS_MEDI 居住信息
application LIVINGAREA_MEDI 居住信息
application NONLIVINGAPARTMENTS_MEDI 居住信息
application NONLIVINGAREA_MEDI 居住信息
application FONDKAPREMONT_MODE 居住信息
application HOUSETYPE_MODE 居住信息
application TOTALAREA_MODE 居住信息
application WALLSMATERIAL_MODE 居住信息
application EMERGENCYSTATE_MODE 居住信息
application OBS_30_CNT_SOCIAL_CIRCLE 客户的社会关系中有30天逾期
application DEF_30_CNT_SOCIAL_CIRCLE 客户的社会关系中有30天逾期
application OBS_60_CNT_SOCIAL_CIRCLE 客户的社会关系中有60天逾期
application DEF_60_CNT_SOCIAL_CIRCLE 客户的社会关系中有60天逾期
application DAYS_LAST_PHONE_CHANGE 申请人最近一次修改手机号码的时间(距离申请当日的天数,负值)
application FLAG_DOCUMENT_2 申请人是否额外提供了2号文件
application FLAG_DOCUMENT_3 申请人是否额外提供了3号文件
application FLAG_DOCUMENT_4 申请人是否额外提供了4号文件
application FLAG_DOCUMENT_5 申请人是否额外提供了5号文件
application FLAG_DOCUMENT_6 申请人是否额外提供了6号文件
application FLAG_DOCUMENT_7 申请人是否额外提供了7号文件
application FLAG_DOCUMENT_8 申请人是否额外提供了8号文件
application FLAG_DOCUMENT_9 申请人是否额外提供了9号文件
application FLAG_DOCUMENT_10 申请人是否额外提供了10号文件
application FLAG_DOCUMENT_11 申请人是否额外提供了11号文件
application FLAG_DOCUMENT_12 申请人是否额外提供了12号文件
application FLAG_DOCUMENT_13 申请人是否额外提供了13号文件
application FLAG_DOCUMENT_14 申请人是否额外提供了14号文件
application FLAG_DOCUMENT_15 申请人是否额外提供了15号文件
application FLAG_DOCUMENT_16 申请人是否额外提供了16号文件
application FLAG_DOCUMENT_17 申请人是否额外提供了17号文件
application FLAG_DOCUMENT_18 申请人是否额外提供了18号文件
application FLAG_DOCUMENT_19 申请人是否额外提供了19号文件
application FLAG_DOCUMENT_20 申请人是否额外提供了20号文件
application FLAG_DOCUMENT_21 申请人是否额外提供了21号文件
application AMT_REQ_CREDIT_BUREAU_HOUR 申请人发起申请前1个小时以内,被查询征信的次数
application AMT_REQ_CREDIT_BUREAU_DAY 申请人发起申请前一天以内,被查询征信的次数
application AMT_REQ_CREDIT_BUREAU_WEEK 申请人发起申请前一周以内,被查询征信的次数
application AMT_REQ_CREDIT_BUREAU_MON 申请人发起申请前一月以内,被查询征信的次数
application AMT_REQ_CREDIT_BUREAU_QRT 申请人发起申请前一个季度以内,被查询征信的次数
application AMT_REQ_CREDIT_BUREAU_YEAR 申请人发起申请前一年以内,被查询征信的次数
bureau SK_ID_CURR 此次申请的ID
bureau SK_BUREAU_ID SK_BUREAU_ID
bureau CREDIT_ACTIVE 信用卡状态
bureau CREDIT_CURRENCY 信用货币类型,currency1-4,共四个特征
bureau DAYS_CREDIT 客户在申请日前多少天申请的征信机构信用
bureau CREDIT_DAY_OVERDUE 申请贷款时客户的逾期天数
bureau DAYS_CREDIT_ENDDATE 客户的在征信机构还有多少天的信用时间
bureau DAYS_ENDDATE_FACT 客户在征信机构关闭了多久的信用
bureau AMT_CREDIT_MAX_OVERDUE 客户到目前为止的最大逾期额度
bureau CNT_CREDIT_PROLONG 在征信机构有几次延期
bureau AMT_CREDIT_SUM 客户当前在信用机构的信用额度
bureau AMT_CREDIT_SUM_DEBT 客户在信用机构的当前债务
bureau AMT_CREDIT_SUM_LIMIT 信用卡的信用限额
bureau AMT_CREDIT_SUM_OVERDUE 客户在信用机构的违约之和
bureau CREDIT_TYPE 信用机构的信用类型,车贷、房贷、信用卡、经营贷等
bureau DAYS_CREDIT_UPDATE 信用机构的最近一次信息更新是多少天前
bureau AMT_ANNUITY 每年要还的贷款额度
bureau_balance SK_BUREAU_ID SK_BUREAU_ID
bureau_balance MONTHS_BALANCE 距今的月份
bureau_balance STATUS C代表closed、X是未知、0是无逾期、1是逾期在1-30天、2是逾期31-60天、3是逾期61-90天、4是逾期91-120天、5是逾期120天以上。
POS_CASH_balance SK_ID_PREV SK_ID_PREV
POS_CASH_balance SK_ID_CURR SK_ID_CURR
POS_CASH_balance MONTHS_BALANCE 距今的月份
POS_CASH_balance CNT_INSTALMENT 贷款期数
POS_CASH_balance CNT_INSTALMENT_FUTURE 贷款剩余期数
POS_CASH_balance NAME_CONTRACT_STATUS 合同状态,Active、Signed、Complete
POS_CASH_balance SK_DPD 当月逾期了多少天
POS_CASH_balance SK_DPD_DEF 忽略金额比较低的贷款,逾期了多少天
credit_card_balance SK_ID_PREV SK_ID_PREV
credit_card_balance SK_ID_CURR SK_ID_CURR
credit_card_balance MONTHS_BALANCE 距今的月份
credit_card_balance AMT_BALANCE Balance during the month of previous credit
credit_card_balance AMT_CREDIT_LIMIT_ACTUAL Credit card limit during the month of the previous credit
credit_card_balance AMT_DRAWINGS_ATM_CURRENT Amount drawing at ATM during the month of the previous credit
credit_card_balance AMT_DRAWINGS_CURRENT Amount drawing during the month of the previous credit
credit_card_balance AMT_DRAWINGS_OTHER_CURRENT Amount of other drawings during the month of the previous credit
credit_card_balance AMT_DRAWINGS_POS_CURRENT Amount drawing or buying goods during the month of the previous credit
credit_card_balance AMT_INST_MIN_REGULARITY Minimal installment for this month of the previous credit
credit_card_balance AMT_PAYMENT_CURRENT How much did the client pay during the month on the previous credit
credit_card_balance AMT_PAYMENT_TOTAL_CURRENT How much did the client pay during the month in total on the previous credit
credit_card_balance AMT_RECEIVABLE_PRINCIPAL Amount receivable for principal on the previous credit
credit_card_balance AMT_RECIVABLE Amount receivable on the previous credit
credit_card_balance AMT_TOTAL_RECEIVABLE Total amount receivable on the previous credit
credit_card_balance CNT_DRAWINGS_ATM_CURRENT Number of drawings at ATM during this month on the previous credit
credit_card_balance CNT_DRAWINGS_CURRENT Number of drawings during this month on the previous credit
credit_card_balance CNT_DRAWINGS_OTHER_CURRENT Number of other drawings during this month on the previous credit
credit_card_balance CNT_DRAWINGS_POS_CURRENT Number of drawings for goods during this month on the previous credit
credit_card_balance CNT_INSTALMENT_MATURE_CUM Number of paid installments on the previous credit
credit_card_balance NAME_CONTRACT_STATUS 合同状态,Active、Signed、Complete
credit_card_balance SK_DPD 当月逾期了多少天
credit_card_balance SK_DPD_DEF 忽略金额比较低的贷款,逾期了多少天
previous_application SK_ID_PREV SK_ID_PREV
previous_application SK_ID_CURR SK_ID_CURR
previous_application NAME_CONTRACT_TYPE 合同类型是现金还是循环贷
previous_application AMT_ANNUITY 每年要还的贷款额度
previous_application AMT_APPLICATION 之前的贷款申请了多少钱数值
previous_application AMT_CREDIT 客户的贷款信贷额度
previous_application AMT_DOWN_PAYMENT 之前贷款的首付款
previous_application AMT_GOODS_PRICE 对于消费贷来说,这个字段是要买的商品价格,从数据看每个贷款都对应某个商品,难道业务全部是消费贷吗
previous_application WEEKDAY_APPR_PROCESS_START 周几申请的贷款,一般工作日多
previous_application HOUR_APPR_PROCESS_START 几点申请的贷款
previous_application FLAG_LAST_APPL_PER_CONTRACT 有时一个合同会被错误的提交多次申请,这个字段用来标志是不是一个贷款的最后一次申请
previous_application NFLAG_LAST_APPL_IN_DAY 是不是当天的最后一次申请
previous_application NFLAG_MICRO_CASH 是不是小微金融贷
previous_application RATE_DOWN_PAYMENT 归一化的贷款首付比例
previous_application RATE_INTEREST_PRIMARY 主要贷款利息的归一化值
previous_application RATE_INTEREST_PRIVILEGED 优惠贷款利息的归一化值
previous_application NAME_CASH_LOAN_PURPOSE 贷款用途
previous_application NAME_CONTRACT_STATUS 合同状态,Active、Signed、Complete
previous_application DAYS_DECISION 相对于当前贷款,上一次申请的决定是什么时候做的
previous_application NAME_PAYMENT_TYPE 客户选择上一次贷款的付款方式,现金、电子支付、XNA
previous_application CODE_REJECT_REASON 被拒原因,XAP、HC、LIMIT
previous_application NAME_TYPE_SUITE 办理贷款的时候是谁跟着一起来的:孩子、家人、配偶、自己、...
previous_application NAME_CLIENT_TYPE 客户是新客还是老客
previous_application NAME_GOODS_CATEGORY 贷款是为了买什么类型的东西
previous_application NAME_PORTFOLIO pos、cash、cards、xna
previous_application NAME_PRODUCT_TYPE x-sell、walk-in、xna
previous_application CHANNEL_TYPE 获客渠道,country wide、contact center、stone、AP+(cash loan)
previous_application SELLERPLACE_AREA 销售区域的面积
previous_application NAME_SELLER_INDUSTRY 卖家(应该是客户要买商品的卖家)的行业,消费电子、衣服、工业等
previous_application CNT_PAYMENT 之前贷款分为多少期还款
previous_application NAME_YIELD_GROUP 贷款利息,small、medium、high
previous_application PRODUCT_COMBINATION 产品组合、 PRODUCT_COMBINATION、Cash X-Sell: low、Cash、POS household with interest
previous_application DAYS_FIRST_DRAWING 相对于当前申请日期,上一次贷款的首次发放时间
previous_application DAYS_FIRST_DUE 相对于当前申请日期,上一次贷款的首次逾期时间
previous_application DAYS_LAST_DUE_1ST_VERSION 第一次逾期
previous_application DAYS_LAST_DUE 最近一次逾期
previous_application DAYS_TERMINATION 到期日期
previous_application NFLAG_INSURED_ON_APPROVAL 之前的申请有没有要求保险
installments_payments SK_ID_PREV SK_ID_PREV
installments_payments SK_ID_CURR SK_ID_CURR
installments_payments NUM_INSTALMENT_VERSION 分期付款
installments_payments NUM_INSTALMENT_NUMBER 分期付款期数
installments_payments DAYS_INSTALMENT 相对于当前申请日期,之前的贷款应该在什么时间支付
installments_payments DAYS_ENTRY_PAYMENT 相对于当前申请日期,之前贷款的实际支付时间
installments_payments AMT_INSTALMENT 贷款分期的约定付款金额
installments_payments AMT_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

相关推荐
技术无疆6 小时前
【Python】Arrow使用指南:轻松管理日期与时间
开发语言·人工智能·python·深度学习·机器学习·数据挖掘·python3.11
PhyliciaFelicia8 小时前
基于R语言机器学习遥感数据处理与模型空间预测
开发语言·深度学习·随机森林·机器学习·数据分析·r语言
bin91539 小时前
【EXCEL数据处理】000014 案例 EXCEL分类汇总、定位和创建组。附多个操作案例。
信息可视化·数据挖掘·数据分析·excel·数据可视化·数据图表·excel 数据分析
技术猿188702783519 小时前
淘宝商品详情API接口多线程调用:解锁数据分析行业的效率新篇章
数据挖掘·数据分析
bin915310 小时前
【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换,和文本日期格式转换。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化
凭栏落花侧14 小时前
数据揭秘:分类与预测技术在商业洞察中的应用与实践
人工智能·算法·机器学习·分类·数据挖掘·conda·pip
chusheng184014 小时前
Python 如何使用 Pandas 进行数据分析
python·数据分析·pandas
一峰说15 小时前
数据分析powerbi DAX日常笔记(一)
笔记·数据分析·powerbi
卿卿55315 小时前
powerbi计算销售额同比增长率
数据分析·powerbi
卿卿55315 小时前
powerbi计算销售额累计同比增长率——dax
数据分析·powerbi