信用风险
(1)People:贷款人状况,包括历史还款表现、当前负债情况、资金饥渴度等;
贷后是指客户借款后银行持续跟进客户的信用情况,如果发现信用评分降低或者某些指标达到风险预警指标的阈值,说明风险升高,则会进行冻结额度甚至提前进行贷款收回.特别是对于逾期客户.
风险建模步骤
在进行信用评估时如何选择客户属性、如何确定评分或评级规则呢?这就需要进行风险建模,通过分析历史数据来确定哪些特征或指标对客户的违约相关性大,可以了解客户的还款能力以及还款意愿.并通过一定方法来建立评分和评级的规则.那风险建模主要分为以下步骤:
通过对变量的分割、分组和合并转换,分析每个变量对于结果的相关性,剔除掉预测能力较弱的变量,筛选出符合实际业务需求、具有较强预测能力的变量.检测变量预测能力的方法有:WOE(weight of Evidence) 、IV(informationvalue)等.
在信用风险建模中,目前评分卡建模还是主要的方式,除了申请评分(A卡(Application score card))还有B卡(Behavior score card)行为评分卡、C卡(Collection score card)催收评分卡.B卡主要进行客户贷后管理,如何进行风险预警,C卡进行催收管理,确定如何催收以及催收方式和时间点.信用风险模型中还有一个是反欺诈模型,它主要是识别假冒身份、虚假信息、批量薅羊毛等欺诈行为.随着机器学习和大数据的发展,其它的一些建模方式如决策树、深度神经网络也越来越多的应用到了风险建模中.
信用风险模型是数据仓库支持的重要数据应用之一,在风险建模分析阶段,数据仓库是建模样本数据以及衍生指标加工的主要提供者,业务人员一般在自助分析平台进行数据分析和建模,模型建立完成并部署后,会基于数据仓库数据进行模型效果的监控.在贷后管理中,风险集市也会进行贷后指标的加工.另外风险模型以及预警中会经常使用到外部数据,这部分数据也是通过数据仓库进行对接、加工和存储.
IV 与 WOE:
IV表示一个变量的预测能力:
IV还可以用来挑选变量,IV就越大,它就越应该进入到入模变量列表中.
Psi
def calculate_psi(expected, actual, buckets=10): # test, base
def psi(expected_array, actual_array, buckets):
def scale_range(input, min, max):
input += -(np.min(input))
input /= np.max(input) / (max - min)
input += min
return input
#?按照概率值分10段
breakpoints = np.arange(0, buckets + 1) / (buckets) * 100
breakpoints = scale_range(breakpoints, np.min(expected_array), np.max(expected_array))
expected_percents = np.histogram(expected_array, breakpoints)[0] / len(expected_array)
# print(expected_percents)
actual_percents = np.histogram(actual_array, breakpoints)[0] / len(actual_array)
def sub_psi(test, base): # test,base
if base == 0:
base = 0.0001
if test == 0:
test = 0.0001
value = (test - base) * np.log(test / base)
return(value)
psi_value = np.sum(sub_psi(expected_percents[i], actual_percents[i]) for i in range(0, len(expected_percents)))
return(psi_value)
if len(expected.shape) == 1:
psi_values = np.empty(len(expected.shape))
else:
psi_values = np.empty(expected.shape[0])
for i in range(0, len(psi_values)):
if len(psi_values) == 1:
psi_values = psi(expected, actual, buckets)
psi_values[i] = psi(expected[:,i], actual[:,i], buckets)
return(psi_values)
toad函数里面有个 类似于woe 统计各段的好坏,好坏比, 累计好坏比,KS的一个数为
toad.metrics.KS_bucket
此函数中有两个参数,可以 是等频分,也可以 是等距分箱,但此分箱均是以分数的最大最小值 为基础划分的.
我想把整成0~1区间的,所以对原函数进行了修改.
split的第一个参数是分隔符.
如果省略第一个参数,默认把所有的空格、制表符、回车符当作分隔符,并过滤掉空串.这个也是你第一种写法的效果.
line.split('\t''\n')
'\t'和'\n'是两个字符串,会自动进行拼接,形成'\t\n'作为分隔符.而在你输入的字符串中,不包含这样的字串,所以就分割的结果就是原串.
split('\t')
以'\t'作为分隔符,分割的结果就是第三种写法.
split不支持同时使用多种字符做分隔符,如果想实现这样的效果,可以用re,例如:
a
'wowofbfwjowoefbwfoweojbwoefja'
import re
re.split('[ab]', a)
['wowof', 'fwjowoef', 'wfoweoj', 'woefj', '']
以上就是土嘎嘎小编为大家整理的pythonwoe函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!