天天看点

天池龙珠金融风控训练营Task04学习笔记前言学习知识点概要学习内容学习问题与解答学习思考与总结

天池龙珠金融风控训练营Task04学习笔记

  • 前言
  • 学习知识点概要
  • 学习内容
    • 数据集的划分
    • 逻辑回归(Logistic Regression,LR)模型
    • 决策树模型
    • 集成模型
    • 模型对比与性能评估
  • 学习问题与解答
  • 学习思考与总结

前言

前面的学习也只是完成认识数据、处理数据、分类数据的步骤,接下来的模型构建就是机器学习的中心内容。Task03已经帮我们进行建立了特征工程,我们接下来就是利用特征工程帮助各个参数来进行接下来的训练,从而完成一整套机器学习处理金融风控的流程。

本章的学习难度十分大,为了能够理解机器学习的各种模型,我也按照训练营的指示自行去阅读相关的链接,并且尝试能够理解机器学习的各种模型和代码。目前我对这些模型都有个大概的了解,由于要想能够完全理解还是比较困难,我只大概总结一下我的想法和思路,针对我自行细看的模型给出我自己的理解和总结。

金融风控学习地址:https://tianchi.aliyun.com/specials/activity/promotion/aicampfr

学习知识点概要

  • 数据集的划分
  • 逻辑回归(Logistic)模型:
  • 决策树模型
  • 集成模型
    • 基于bagging思想的集成模型
    • 随机森林模型
    • 基于boosting思想的集成模型
    • XGBoost模型
    • LightGBM模型
    • CatBoost模型
  • 模型对比与性能评估:
    • 回归模型/树模型/集成模型;
    • 模型评估方法;
    • 模型评价结果;
    • 模型调参:
  • 贪心调参方法;
  • 网格调参方法;
  • 贝叶斯调参方法;

学习内容

数据集的划分

  • 对于整个数据集,我们要把它分为训练集和测试集。训练集是用来训练我们的机器来进行未来的预测,测试集是用已经训练好的机器来测试它的预测准确度,由此来评判我们的模型构建是否成功。
  • 划分的方法为:
    • 留出法
    • 交叉验证法
    • 自助法(有放回,使用数据少的情况)
  • 机器学习模型分为线性和非线性两种

    - 典型的线性分类器有感知机,LDA,逻辑斯特回归,SVM(线性核)

    - 典型的非线性分类器有朴素贝叶斯,kNN,决策树,SVM(非线性核)

逻辑回归(Logistic Regression,LR)模型

  • 对数据集实现二分类的问题
  • 逻辑回归的表达式可以由下图进行确立,其中把z换成θTx,函数g称为Logistic函数
    • 天池龙珠金融风控训练营Task04学习笔记前言学习知识点概要学习内容学习问题与解答学习思考与总结
  • Sigmoid函数的图像如图:
  • 天池龙珠金融风控训练营Task04学习笔记前言学习知识点概要学习内容学习问题与解答学习思考与总结
  • 当z>0时,Sigmoid函数大于0.5;当z<0时,Sigmoid函数小于0.5。所以,我们可以将拟合曲线的函数值带入Sigmoid函数,观察ϕ(z)与0.5的大小确定其类标号。
  • Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数。

决策树模型

决策树模型我在博弈论的选修课上学过一点点。大概就是决策者(这里指机器)每在一个分支上,仅对目前的情况进行判断,寻找最优的选择。提到决策树就不得不说说贪心算法。

  • 贪心算法:求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。
  • 基本步骤:
    • 步骤1:从某个初始解出发;
    • 步骤2:采用迭代的过程,当可以向目标前进一步时,就根据局部最优策略,得到一部分解,缩小问题规模;
    • 步骤3:将所有解综合起来。
  • 贪心算法优缺点:
    • 优点:简单,高效,省去了为了找最优解可能需要穷举操作,通常作为其它算法的辅助算法来使用;
    • 缺点:不从总体上考虑其它可能情况,每次选取局部最优解,不再进行回溯处理,所以很少情况下得到最优解。
    • 一个经典的例子就是:需要找给顾客41分钱,现在的货币只有 25 分、20分、10 分、5 分和 1 分四种硬币;基于硬币最少原则,该怎么办?按照贪心算法的三个步骤:
      • 1.41分,局部最优化原则,先找给顾客25分;
      • 2.此时,41-25=16分,还需要找给顾客10分,然后5分,然后1分;
      • 3.最终,找给顾客一个25分,一个10分,一个5分,一个1分,共四枚硬币。
      • 但是,如果给他2个20分,加一个1分,是不是
      • 三枚硬币就可以了呢?

决策树在开头已经分析,本质上是一种贪心算法。但对于整体的数据集而言,决策树按照所有的特征属性进行划分操作,对所有划分操作的结果集的“纯度”进行比较,选择“纯度”越高的特征属性作为当前需 要分割的数据集进行分割操作,持续迭代,直到得到最终结果。因此决策树能够较好地解决单纯使用贪心算法只对局部分析的局限。

建立决策树的主要是以下三种算法

• ID3 离散

• C4.5 离散或连续

• CART(Classification And Regression Tree) 离散或连续

集成模型

集成模型不太会,我只单单懂得随机森林模型的概念型的东西。

  • 随机森林模型

    从字面上的意思上理解,就是随机选择几棵数组成一个随机生成的森林。那么我们上面分析了决策树的算法,随机森林形象来讲就是随机抽取几棵决策树来作为集成模型。每棵决策数都有其相应的分类器(classifier),随机森林就是集成所有的分类器组成一个总分类器。随机森林具有样本随机和特征随机的特点,因此其预测的准确率是所有算法当中最高的。

  • 随机森林大致过程如下:

    1)从样本集中有放回随机采样选出n个样本;

    2)从所有特征中随机选择k个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合);

    3)重复以上两步m次,即生成m棵决策树,形成随机森林;

    4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。

    原文链接:https://blog.csdn.net/y0367/article/details/51501780

模型对比与性能评估

回到我们的金融风控主题,在task01中我们选用AUC、KS、f1-score作为我们的模型评判标准。AUC(Area Under ROC Curve)是ROC与X,Y轴所围得曲线的面积。ROC曲线重新回顾一下:

天池龙珠金融风控训练营Task04学习笔记前言学习知识点概要学习内容学习问题与解答学习思考与总结

TPR是True Positive Ratio, 真正率

FPR是False Positive Ratio, 假正率

  • 对于ROC曲线中的四个点:

点(0,1):即FPR=0, TPR=1,意味着FN=0且FP=0,将所有的样本都正确分类;

点(1,0):即FPR=1,TPR=0,最差分类器,避开了所有正确答案;

点(0,0):即FPR=TPR=0,FP=TP=0,分类器把每个实例都预测为负类;

点(1,1):分类器把每个实例都预测为正类

学完task04就把task01留下的疑问给解决了。

OK,后续就是建模的流程

  • 分离数据集
# 数据集划分
X_train_split, X_val, y_train_split, y_val = train_test_split(X_train, y_train, test_size=0.2)
train_matrix = lgb.Dataset(X_train_split, label=y_train_split)
valid_matrix = lgb.Dataset(X_val, label=y_val)
           
  • 如果我们选用Lightgbm进行建模:(不得不提python的库真的良心,连分类器都不用写了)
"""使用训练集数据进行模型训练"""
from sklearn.model_selection import train_test_split
import lightgbm as lgb
model = lgb.train(params, train_set=train_matrix, valid_sets=valid_matrix, num_boost_round=20000, verbose_eval=1000, early_stopping_rounds=200)
           
  • 利用已经训练好的机器,对测试集进行测试:
"""预测并计算roc的相关指标"""
val_pre_lgb = model.predict(X_val, num_iteration=model.best_iteration)
fpr, tpr, threshold = metrics.roc_curve(y_val, val_pre_lgb)
roc_auc = metrics.auc(fpr, tpr)
print('未调参前lightgbm单模型在验证集上的AUC:{}'.format(roc_auc))
           
  • 模型调参

    分为三类:

    • 贪心调参:像贪心算法一样,基于局部最优化调参,但可能忽略全局最优化
    • 网格搜索:sklearn 提供GridSearchCV用于进行网格搜索,只需要把模型的参数输进去,就能给出最优化的结果和参数。具体流程不会。。。。
    • 贝叶斯调参:给定优化的目标函数(可以是广义的函数),通过不断地添加样本点来更新目标函数的后验分布(高斯过程,直到后验分布基本贴合于真实分布)。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。

具体怎么弄不太会,只基于训练营做了个简单的小归纳。。。

最后把模型保存到本地就好了。。。但上述的过程自己也是蒙蒙的。。

"""保存模型到本地"""
  # 保存模型
  import pickle
  pickle.dump(final_model_lgb, open('dataset/model_lgb_best.pkl', 'wb'))
           

学习问题与解答

1.Logistics Regression分为线性和非线性还是没整明白(训练营说:不能用Logistic回归去解决非线性问题,因为Logistic的决策面是线性的;)

2.模型较为复杂,短时间内理解起来压力很大。

学习思考与总结

终于把4个tasks给过了一遍。难度感觉是几何倍的上升啊。我觉得task04的模型给出的太多,3天掌握起来难度真的有点大(虽然实际上自己学起来并没有3天,但还是有一天半的时间在认真学习各种模型)。但整个流程走下来,我对金融风控的了解增加了不少,我也第一次知道机器学习能够应用的领域是如此的广泛。

在这个task的学习中,我基本掌握了logistics、knn、决策树的算法,其他算法我只是稍微看了一下(其实就是看不懂)。但庆幸的是,网上的学习资源非常丰富,在期间我寻找到许多十分有用的学习资源,极大地帮助我对算法的理解。

总而言之,我作为一名机器学习的小白,在这4个tasks中确实学到了很多东西,也认识到自己目前的水平还是太差,后续的比赛我会尽我自己最大的努力,尽力能够拿到好(can)成(yu)绩(jiang)T.T。

继续阅读