风控建模六:变量相关性分析及筛选方法

风控建模六:变量相关性分析及筛选方法

不论是开发逻辑回归评分卡,还是GBM机器学习模型,变量的相关性分析和筛选都是必不可少的一步,因为这个过程会帮助我们优化模型结构、丰富模型维度、增强模型鲁棒性,也可以帮助我们在建模开始前对所有变量的维度有个整体的把握。本篇介绍的是对Applied Predictive Modeling一书中的变量相关性分析方法的实践操作。

一、变量相关性分析

变量相关性分析这里使用了pyecharts中的热力图对变量相关矩阵进行了一个展现,但为了更方便我们整体把握所有变量的相关维度,这里先使用Kmeans对所有变量进行了一个聚类(不同于常规使用Kmeans时对样本进行聚类,这里是对特征进行聚类,目的是把高相关的变量分到一类中),根据聚类结果对变量进行了排序,然后计算相关矩阵并展示,这样可以达到的效果就是相互之间高相关的变量都会被排在一起,在图中我们就可以根据高相关区块去很容易发现哪些变量之前同质性很强,而且整个变量池中大概有几个高相关区块(如图)。

在这里插入图片描述

二、变量相关性筛选

变量相关性剔除方法有很多,业务实操中主要使用的方法有这么几种:

  • 相关性高的两个变量,随便删除一个,保留一个;这种方法显然看着就不严谨不科学;
  • 相关性高的两个变量,删除缺失率高的那个变量;相比第一种方法有进步,但根据缺失率这个指标删变量,不一定对最后的模型效果有改善;
  • 相关性高的两个变量,删除IV值低的那个;这个方法合理,但是耗时,尤其是在变量池很大的时候,需要先对每个变量分箱计算IV。我们更希望的是相关性处理放在IV值筛选之前,这样可以大大减少我们需要计算IV值的变量数,从而优化特征处理过程;
  • 相关性高的两个变量,删除GBM模型重要性低的那个;弊端同上;
  • 相关性高的两个变量,删除和其它变量整体相关更高的那个,这个方法就是我们今天要介绍的,其目的就是在一定的相关阈值之下,尽量多地保留变量,其具体算法过程如下:
  1. 计算所有变量的相关矩阵;
  2. 挑选出相关系数最高的一对变量A和B;
  3. 分别对A和B计算其与其它变量相关系数的平均值 α \alpha α β \beta β
  4. 如果 α > β \alpha>\beta α>β,删除变量A,否则删除B。
  5. 重复2-4步直到所有变量两两之间的相关系数低于给定阈值。

三、代码实现

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from pyecharts.charts import HeatMap
import pyecharts.options as opts
from copy import copy

class cal_corr:
    
    def __init__(self, df, n_clusters=5, threshold=0.7):
        #对所有变量矩阵先进行处理
        self.df = self.handle_df(df.copy())
        #Kmeans聚类的时候指定聚成几类
        self.n_clusters = n_clusters
        #相关性筛选时的阈值
        self.threshold = threshold
        #变量的相关矩阵存下来
        self.corr = None
        
    @property
    def corr_matrix(self):
    	#变量的相关矩阵
        return self.corr
    
    @property
    
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值