支持向量机(Support Vector Machine,SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务。
基本原理
SVM的主要目标是找到一个最优的超平面,该超平面能够将不同类别的数据点尽可能分开,并且使离该超平面最近的数据点(称为支持向量)到超平面的距离最大化。这个距离称为间隔(Margin)。
- 对于线性可分的数据,SVM试图周到一个线性超平面,通过求解一个凸二次规划问题实现。
- 对于线性不可分的数据,SVM将原始特征空间映射到一个更高维的特征空间,使得在高维空间中数据变得线性可分。
信用风险评估应用场景
金融机构在评估客户的信用风险时,会考虑众多因素,比如客户的收入水平、资产状况、信用历史、债务情况等。这些因素构成了高位的输入数据。SVM可以根据历史客户数据,建立信用风险分类模型。
数据收集与准备
- 数据收集
明确了客户信息的维度,ID(序号),Label(是否违约),AGE(年龄),GENDER(性别),MARITAL_STATUS(婚姻状况),MONTHLY_INCOME_WHITHOUT_TAX(税前月收入),LOANTYPE(贷款类型),GAGE_TOTLE_PRICE(抵押物总价),APPLY_AMOUNT(申请贷款金额),APPLY_TERM_TIME(贷适用期限),APPLY_INTEREST_RATE(申请利率),PAYMENT_TYPE(贷款还款方式) - 数据清洗
检查数据中缺失值、重复值和异常值。通过对原始数据的检查,未发现明显发现重复值和异常值。
-
检查缺失值
print(data.isna().sum())
检查结果
税前收入(MONTHLY_INCOME_WITHOUT_TAX)存在缺失值的情况,因为整体样本较小,所以尽量不对存在缺失值的记录进行删除。在缺失值补充情况下,因为存在税前收入为0的同类情况,从业务角度来看,缺失的情况可以默认为0是比较合理的情况。所以对缺失值都赋值为0。此外,因为ID属性不包含任何有用信息,应予以移除。data=data.drop(columns=['ID']).fillna(0)
-
检查重复值
print(data[data.duplicated(keep=False)])
结果:
未发现有重复数据
特征工程
- 特征选择
挑选对信贷分类有重要影响的特征,因为数据维度较少,通过业务经验分析,所有已有的属性都可能与信贷违约存在潜在关系,所以不进行筛选。 - 特征编码
对一些非数值型特征,进行编码处理,将其转换为数值型数据,以便 SVM 算法处理。
print(data['GENDER'].unique())
print(data['MARITAL_STATUS'].unique())
print(data['LOANTYPE'].unique())
print(data['PAYMENT_TYPE'].unique())
性别、婚姻状况、贷款类型、还款方式这四个属性为非数值特征,需要进行编码处理。其中,性别、贷款类型以及还款方式都是二分类离散变量,婚姻状况是多分类离散变量。
① 对二分类离散变量处理
将性别、贷款类型以及还款方式映射为0和1。
data['GENDER'] = data['GENDER'].map({
'Female': 1, 'Male': 0})
data['LOANTYPE'] = data['LOANTYPE'].map({