美文网首页
信用评分卡的初级探索及疑问

信用评分卡的初级探索及疑问

作者: 巴拉巴拉_9515 | 来源:发表于2019-03-30 16:43 被阅读0次

    对于整体情况的评分常用的方法有层次分析法,模糊分析法。
    近期发现金融行业常用的评分卡模型,经过初步探索以后有了一定的理解,同时也存在一些待解决的疑问。

    一、有监督数据

    评分卡模型是有监督的打分模型,所以训练模型的数据集需要包含特征和二分类标签。以GiveMeSomeCredit数据集为例,第一列target为我们的目标标签,1表示存在违约,0表示无违约情况。


    .

    二、特征提取

    特征之间不宜存在强的相关关系,否则会影响算法的结果。
    并不是所有特征都对target起重要作用的,通过计算IV值判断每个特征的影响权重。
    评分卡算法有三个关键词:分箱、WOE、IV

    2.1 分箱

    分箱就是把每个特征划分为几个等级。比如年龄特征经过分箱以后为20-30、31-50、51-70、71-100五类。
    分箱的目的是为了使模型更加稳定。
    分箱的方法分为有监督分箱(卡方分箱、cart分箱等)和无监督分箱(等距划分、等频划分)两种,有监督分箱效果会更好。

    2.2、WOE证据权重

    2.3 IV信息价值

    2.4、计算案例

    以年龄这一特征为例,对年龄采用等频分箱后,分为九个等级:21-33、34-39、40-45、46-49、50-53、...,代入公式计算出每个层级的WOE,基于WOE计算出特征的IV值。

    2.5、特征价值

    显然有些特征对target的影响程度不高,不必作为模型训练参数,可以删除。


    .

    三、逻辑回归

    把符合IV条件的特征的WOE值作为模型训练数据,target为目标值,训练逻辑回归模型。


    特征
    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import train_test_split
    x = train_X.drop('target',axis = 1)
    y = train_X['target']
    train_x,test_x,train_y,test_y = train_test_split(x,y,test_size = 0.3,random_state = 0)
    train = pd.concat([train_y,train_x], axis =1)
    test = pd.concat([test_y,test_x], axis =1)
    train = train.reset_index(drop=True)
    test = test.reset_index(drop=True)
    lr = LogisticRegression(penalty= 'l1')
    lr.fit(train_x,train_y)
    

    回归模型验证的AUC值为0.83,效果还是不错的,标明这些特征能够比较好的预测target的值。

    ROC验证

    .

    四、得分计算

    4.1、得分计算原理

    4.2、PDO和P0的定义

    计算score的前提是需要自定义PDO和P0的值,这个值定义的依据是什么?应该如何科学的定义?(还不知道)

    def cal_base(pdo, p0, lr):
        B = pdo / math.log(2)
        A = p0 - B / math.log(pdo)
        base = round(A + B * lr.intercept_[0], 0)
        print('base',base)
    

    以下为PDO=100,600,700,800,900,1000;P0=5,10,20对应的基础得分。

    4.4、计算每个变量每个等级的分值

    #计算分值函数
    def compute_score(coe, woe, factor):
        scores = []
        for w in woe:
            score = round(coe * w * factor, 0)
            scores.append(score)
        return scores
    

    当设置PDO的值为20、p0为600,可以计算出A,B值,同时推出基础分A+BW0为: 314.0,计算出的评分卡分值如下:

    五个特征及对应分组的分值

    当有新的人员数据生成是,可根据评分卡判断新成员的得分。以某一批新成员数据为例,经该评分卡判断后,这批成员的最高得分为604.0,最低得分为429.0(基础分314)

    新成员得分分布

    五、问题小结

    1、PDO、p0是随便设置的吗?
    2、怎么设置阈值,超过这个阈值就接受,不超过就不接受借贷服务。
    3、不同的分箱手段带来的AUC值的变动

    参考资料

    [1]数据集来源于kaggle平台:https://www.kaggle.com/c/GiveMeSomeCredit/data
    [2]参考代码(学习资源):https://github.com/htbeker/Application_score_card/blob/master/appliaction_score_card.py
    [3]分箱的优点 https://blog.csdn.net/hxcaifly/article/details/80203663
    [4]评分卡理论 https://blog.csdn.net/sscc_learning/article/details/78591210

    相关文章

      网友评论

          本文标题:信用评分卡的初级探索及疑问

          本文链接:https://www.haomeiwen.com/subject/tjojbqtx.html