金融风控训练营赛题理解学习笔记

 

一、学习知识点概要

  1. 分类问题:理解分类问题的实质及求解思路
  2. AUC指标:掌握AUC指标的意义
  3. KS统计量:理解KS统计量的含义
  4. 应用Python代码实现

二、学习内容

2.1 分类问题

分类即通过分析由属性描述的数据集元组(即样本、实例或对象)来构造模型,用于对未知数据类别的预测和分析。

在分类模型求解过程中会涉及到训练集测试集,其定义及作用如下。

1)每个训练元组都有一个特定的类标签与之对应,即对于样本数据X,其中x是其训练元组,y是对应的类标签,X就可以记为X(x,y),其中x一般包含多个属性,是多维向量。用于建模的数据元组的集合形成了训练集,通过匹配一些参数来建立一个分类器,主要用于训练模型。

2)对于建立好的分类模型,由于该模型是根据训练集中的数据进行修正、拟合,对于其他数据集可能存在偏差,因此需要通过测试集来测试模型的准确性。主要用于检验模型的性能。

2.2 AUC指标

AUC是机器学习内的一种模型评估指标,被定义为ROC曲线下与坐标轴围成的面积,而ROC曲线又与混淆矩阵相关。

  • 混淆矩阵(通常每一行代表实际值,每一列代表预测值)

金融风控训练营赛题理解学习笔记

如图所示,TP表示实际为正,预测也为正的样例数;FN表示实际为正,预测为负的样例数;FP表示实际为负,预测为正的样例数;TN表示实际为负,预测也为负的样例数。

为得到AUC指标,在混淆矩阵基础上给出了准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1_Score、PR曲线、ROC曲线,其定义如下:

  • 准确率:即预测正确的样本所占的比例。准确率是分类中最常见的很直观的评价指标,通常来说,准确率越高,分类模型越好。

金融风控训练营赛题理解学习笔记

  • 精确率(查准率):即在预测为正的样本中,预测正确的正样本所占的比例。

金融风控训练营赛题理解学习笔记

  • 召回率(查全率):即在实际为正的样本中,预测正确的正样本所占的比例。

金融风控训练营赛题理解学习笔记

  • F1_Score:权衡精确率和召回率的指标。一般来说,精确率高则召回率低,召回率高则精确率低。

金融风控训练营赛题理解学习笔记

  • P-R曲线:描述精确率和召回率变化的曲线。根据精确率与召回率的关系可知P-R曲线的大致趋势如下,一般精确率越高、召回率越高,即曲线越靠右上,模型越好。

金融风控训练营赛题理解学习笔记

  • ROC曲线

首先需要引入两个概念:真正例率(TPR)表示在实际为正的样本中,正确预测为正样本所占的比例、假正例率(FPR)表示在实际为负的样本中,错误预测为正样本所占的比例。

金融风控训练营赛题理解学习笔记                           金融风控训练营赛题理解学习笔记

以FPR为横坐标,TPR为纵坐标,可以得到ROC曲线大致趋势如下:

金融风控训练营赛题理解学习笔记

我们会希望在所有实际为正的样本中,正确预测为正的样本数越多越好,即TPR越大越好;在所有实际为负的样本中,错误预测为正的样本数越少越好,即FPR越小越好。曲线越靠左上,模型越好。此时,ROC曲线一般处于直线y=x上方,AUC作为ROC曲线下方与坐标轴围成的面积,其取值范围必然在(0.5,1),AUC的评判标准可参考如下:

AUC 效果
0.5-0.7 较差
0.7-0.85 一般
0.85-0.95 很好
0.95-1 非常好

2.3 KS统计量

在风控中,KS常用于评估模型区分度。区分度越大,说明模型的风险排序能力越强。假设对于一个样本x=(0.2,0.5,0.6,0.1,0.3),定义大于某个阈值为正,否则为负,若取0.4为阈值,则该样本存在2个正样本,3个负样本,若取0.7为阈值,则该样本均为负样本。由此可见,对于不同的阈值,对于正负的划分也会不同,需要引入KS值将正负样本很好地区分开来,公式如下

金融风控训练营赛题理解学习笔记

一般来说,KS值越大,模型的区分能力越强,其评判标准可参考如下:

KS 区分度
<0.2 不建议采用
0.2-0.4 较好
0.4-0.5 良好
0.5-0.6 很好
0.6-0.75 非常好
>0.75 过高,可能存在问题

2.4 Python代码实现

  • 读取数据:可先将数据源下载至电脑(路径C://Users//Administrator//Desktop//train.csv)
import pandas as pd
train=pd.read_csv("C://Users//Administrator//Desktop//train.csv")
  • 分类指标运算实例(混淆矩阵、精确率、准确率、召回率、F1_Score、P-R曲线、ROC曲线、KS值、AUC值)
## 混淆矩阵
import numpy as np
from sklearn.metrics import confusion_matrix
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('混淆矩阵:\n',confusion_matrix(y_true, y_pred))

## accuracy
from sklearn.metrics import accuracy_score
print('ACC:',accuracy_score(y_true, y_pred))

## Precision,Recall,F1-score
from sklearn import metrics
print('Precision',metrics.precision_score(y_true, y_pred))
print('Recall',metrics.recall_score(y_true, y_pred))
print('F1-score:',metrics.f1_score(y_true, y_pred))

## P-R曲线
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
precision, recall, thresholds = precision_recall_curve(y_true, y_pred)
plt.plot(precision, recall)

## ROC曲线
from sklearn.metrics import roc_curve
FPR,TPR,thresholds=roc_curve(y_true, y_pred)
plt.title('ROC')
plt.plot(FPR, TPR,'b')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')

KS=abs(FPR-TPR).max()
print('KS值:',KS)    ## KS值

## AUC
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))

三、学习问题与解答

  • 分类模型(分类器)有哪些?

分类器常见的构造方法可以分为3大类:数理统计方法机器学习方法神经网络方法等。

数理统计方法:包括贝叶斯法和非参数法。常见的临近学习或基于事例的学习(Instance-Based Learning,IBL)属于非参数方法。k-最邻近算法(k-Nearest Neighborhors,简称kNN)就是属于非参数方法。

机器学习方法:决策树法和规则归纳法。

神经网络方法:BP算法。

四、学习思考与总结

本次学习充分理解了分类问题的实质及其模型的评估方法,掌握了关于分类模型的评估标准,对于题目也有了大致理解,但是具体需要应用什么模型以及各类模型的优缺点还不太了解,需要后续继续进行研究。

上一篇:逻辑回归实现申请评分卡


下一篇:推荐系统评价指标:AUC和GAUC