归属地的判断规则有吗_决策树--规则挖掘应用

本次主要简单介绍下决策树在风控规则中的简单应用,让读者快速入门。在后续的文章中,会逐一介绍决策树的各种算法原理,如信息增益、ID3算法、C4.5算法、C5.0算法等, 希望感兴趣的朋友可以关注下。

前言:

决策树是数据挖掘中十分常用的分类方法,归属于机器学习中的监督学习算法。监督学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是已知分类结果,通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。

一、决策树的含义

决策树,顾名思义,就是用来决策的树。它是一种将数据集合依照某几个显著的属性,进行不断的划分,以后遇到新的数据时,可以利用之前得到的决策树规则进行判断。基于决策树,有许多其他算法如随机森林,gbdt,xgboost等,本质上都是类似的,只不过使用了一些提示算法,区别就是在于如何生成树。下面给出一个简单的例子,来说明决策树的生成思路:

给出如下一组数据,存在3个特征(头发、衣服、出门打扮时间是否超过20分钟),最后判断该人是否为女生,最后一列给出了分类结果。

d94e53405c03e1e19aaa60474e66ab51.png

然后,我们利用这些附带分类结果的样本数据训练出了决策树,图形如下:

182fbb44ad926c7a70285be84aaf05e6.png

二. 决策树的特征

通常,我们拿到一份样本数据,特征是非常多的,但是如果想用决策树生成判断规则,进模型的特征最好不要超过10个,5个以内为最佳,那么这个时候,如何挑选特征进入模型就是需要考虑的问题,一般来说,有以下3种解决方法:

  • 业务经验:风控策略可以基于以往的业务经验,对众多的特征进行归类,如信贷类,可分为授信额度类特征、逾期类特征、查询次数类特征等等,针对每类特征集合可从中挑选出好用的特征,进入模型进行决策树规则的生成。这样做的好处优点在于每条规则都是具有业务意义的,缺点在于每条规则局限于该类特征集合,不利于组合规则的生成。
  • 量化方法:使用IV、信息增益等方法进行特征的筛选,筛选完毕后再入模型,下面介绍一个可直接挑选特征的随机森林代码:
### 建立随机森林函数, 用于挑选特征
# 随机森林筛选变量 
from sklearn.ensemble import RandomForestClassifier
def select_rf(df,target,imp_num=None):
    """
    df:数据集
    target:目标变量的字段名
    imp_num:筛选变量的个数
    
    return:
    rf_fea_imp:变量的特征重要性
    rf_select_col:筛选出的变量
    """
    x = df.drop([target],axis=1)
    y = df[target]
    rfmodel = RandomForestClassifier(random_state=0)
    rfmodel = rfmodel.fit(x,y)
    rf_fea_imp = pd.DataFrame({'col':list(x.columns),
                               'imp':rfmodel.feature_importances_})
    rf_fea_imp = rf_fea_imp.sort_values('imp',ascending=False).reset_index(drop=True).iloc[:imp_num,:]
    rf_select_col = list(rf_fea_imp.col)
    return rf_fea_imp,rf_select_col
  • 决策树参数:可以通过限制模型中的最大叶子节点数、信息增益的阈值、叶子节点最少样本数等参数对模型输出的树的大小进行控制。

三. 决策树的sklearn代码

import pandas as pd
import numpy as np
from sklearn import tree
from sklearn.model_selection import train_test_split
import pandas as pd
import graphviz


# 1. 根据需求,导入数据集(样本命名为X,目标命名为y)
# 2. 拆分数据集合
x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.3)


# 3.声明决策树模型
model=tree.DecisionTreeClassifier(criterion="entropy",random_state=30,
                                  splitter="random",max_depth=5,
                                  min_samples_leaf=10,min_samples_split=10)

# 4.训练模型
model.fit(x_train,y_train)
print("score:",model.score(x_test,y_test))


# 5.输出决策树

dot_data=tree.export_graphviz(model,feature_names=X.feature_names,
                              class_names=['1','2','3'],
                              filled=True,rounded=True,out_file=None)
graph=graphviz.Source(dot_data)

四. 决策树的优缺点

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
  • 缺点:可能会产生过度匹配问题。
  • 适用数据类型:数值型和离散型。

敬请关注

公众号:风控汪的数据分析之路

ce6ab913b9e52acdf8e49cc52a1eef20.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值