天天看點

天池龍珠金融風控訓練營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。

繼續閱讀