有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。
特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法做一个总结。
特征工程包含了 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。三类产品逻辑是这样的:
- 首先提供POS,入门级产品,类似于消费贷。只能用于消费,金额有限,风险最小,客户提供的信息也最少。
- 然后是credit card,在本次竞赛中称为revolving loan。循环授信,主要用于消费。
- 最后才是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