成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

梯度提升算法決策過程的逐步可視化

人工智能 機器學習
梯度提升算法是最常用的集成機器學習技術之一,該模型使用弱決策樹序列來構建強學習器。這也是XGBoost和LightGBM模型的理論基礎,所以在這篇文章中,我們將從頭開始構建一個梯度增強模型并將其可視化。

梯度提升算法是最常用的集成機器學習技術之一,該模型使用弱決策樹序列來構建強學習器。這也是XGBoost和LightGBM模型的理論基礎,所以在這篇文章中,我們將從頭開始構建一個梯度增強模型并將其可視化。

梯度提升算法介紹

梯度提升算法(Gradient Boosting)是一種集成學習算法,它通過構建多個弱分類器,然后將它們組合成一個強分類器來提高模型的預測準確率。

梯度提升算法的原理可以分為以下幾個步驟:

  1. 初始化模型:一般來說,我們可以使用一個簡單的模型(比如說決策樹)作為初始的分類器。
  2. 計算損失函數的負梯度:計算出每個樣本點在當前模型下的損失函數的負梯度。這相當于是讓新的分類器去擬合當前模型下的誤差。
  3. 訓練新的分類器:用這些負梯度作為目標變量,訓練一個新的弱分類器。這個弱分類器可以是任意的分類器,比如說決策樹、線性模型等。
  4. 更新模型:將新的分類器加入到原來的模型中,可以用加權平均或者其他方法將它們組合起來。
  5. 重復迭代:重復上述步驟,直到達到預設的迭代次數或者達到預設的準確率。

由于梯度提升算法是一種串行算法,所以它的訓練速度可能會比較慢,我們以一個實際的例子來介紹:

假設我們有一個特征集Xi和值Yi,要計算y的最佳估計

圖片

我們從y的平均值開始

圖片

每一步我們都想讓F_m(x)更接近y|x。

圖片

在每一步中,我們都想要F_m(x)一個更好的y給定x的近似。

首先,我們定義一個損失函數

然后,我們向損失函數相對于學習者Fm下降最快的方向前進:

因為我們不能為每個x計算y,所以不知道這個梯度的確切值,但是對于訓練數據中的每一個x_i,梯度完全等于步驟m的殘差:r_i!

所以我們可以用弱回歸樹h_m來近似梯度函數g_m,對殘差進行訓練:

然后,我們更新學習器

這就是梯度提升,我們不是使用損失函數相對于當前學習器的真實梯度g_m來更新當前學習器F_{m},而是使用弱回歸樹h_m來更新它。

圖片

也就是重復下面的步驟

1、計算殘差:

圖片

2、將回歸樹h_m擬合到訓練樣本及其殘差(x_i, r_i)上

3、用步長\alpha更新模型

圖片

看著很復雜對吧,下面我們可視化一下這個過程就會變得非常清晰了

決策過程可視化

這里我們使用sklearn的moons 數據集,因為這是一個經典的非線性分類數據

import numpy as np
import sklearn.datasets as ds
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

from sklearn import tree
from itertools import product,islice
import seaborn as snsmoonDS = ds.make_moons(200, noise = 0.15, random_state=16)
moon = moonDS[0]
color = -1*(moonDS[1]*2-1)

df =pd.DataFrame(moon, columns = ['x','y'])
df['z'] = color
df['f0'] =df.y.mean()
df['r0'] = df['z'] - df['f0']
df.head(10)

讓我們可視化數據:

下圖可以看到,該數據集是可以明顯的區分出分類的邊界的,但是因為他是非線性的,所以使用線性算法進行分類時會遇到很大的困難。

那么我們先編寫一個簡單的梯度增強模型:

def makeiteration(i:int):
"""Takes the dataframe ith f_i and r_i and approximated r_i from the features, then computes f_i+1 and r_i+1"""
clf = tree.DecisionTreeRegressor(max_depth=1)
clf.fit(X=df[['x','y']].values, y = df[f'r{i-1}'])
df[f'r{i-1}hat'] = clf.predict(df[['x','y']].values)

eta = 0.9
df[f'f{i}'] = df[f'f{i-1}'] + eta*df[f'r{i-1}hat']
df[f'r{i}'] = df['z'] - df[f'f{i}']
rmse = (df[f'r{i}']**2).sum()
clfs.append(clf)
rmses.append(rmse)

上面代碼執行3個簡單步驟:

將決策樹與殘差進行擬合:

clf.fit(X=df[['x','y']].values, y = df[f'r{i-1}'])
df[f'r{i-1}hat'] = clf.predict(df[['x','y']].values)

然后,我們將這個近似的梯度與之前的學習器相加:

df[f'f{i}'] = df[f'f{i-1}'] + eta*df[f'r{i-1}hat']

最后重新計算殘差:

df[f'r{i}'] = df['z'] - df[f'f{i}']

步驟就是這樣簡單,下面我們來一步一步執行這個過程。

第1次決策

圖片

Tree Split for 0 and level 1.563690960407257

圖片

第2次決策

Tree Split for 1 and level 0.5143677890300751

第3次決策

Tree Split for 0 and level -0.6523728966712952

圖片

第4次決策

圖片

Tree Split for 0 and level 0.3370491564273834

圖片

第5次決策

圖片

Tree Split for 0 and level 0.3370491564273834

圖片

第6次決策

圖片

Tree Split for 1 and level 0.022058885544538498

圖片

第7次決策

圖片

Tree Split for 0 and level -0.3030575215816498

圖片

第8次決策

圖片

Tree Split for 0 and level 0.6119407713413239

圖片

第9次決策

圖片

可以看到通過9次的計算,基本上已經把上面的分類進行了區分

圖片

我們這里的學習器都是非常簡單的決策樹,只沿著一個特征分裂!但整體模型在每次決策后邊的越來越復雜,并且整體誤差逐漸減小。

plt.plot(rmses)

圖片

這也就是上圖中我們看到的能夠正確區分出了大部分的分類

如果你感興趣可以使用下面代碼自行實驗:

??https://github.com/trenaudie/GradientBoostingVisualized/blob/main/fromScratch.ipynb??


責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2017-09-11 13:33:44

大數據數據可視化決策樹

2016-09-30 16:12:47

GBDT算法決策樹

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2020-11-02 13:54:41

Python可視化決策樹

2018-07-13 15:53:26

大數據

2017-09-15 10:23:06

可視化Bug數據分析

2017-10-14 13:54:26

數據可視化數據信息可視化

2009-04-21 14:26:41

可視化監控IT管理摩卡

2022-08-26 09:15:58

Python可視化plotly

2018-07-05 11:47:49

施耐德

2017-11-21 13:00:20

機器學習決策樹可視化

2018-10-17 12:03:45

可視化設計圖表

2011-10-21 09:50:03

NHibernate

2024-08-20 14:31:16

2015-08-20 10:06:36

可視化

2022-09-08 11:19:53

Vue可視化插件

2020-04-10 14:20:47

算法可視化Github

2010-06-09 15:09:57

IP網絡

2017-02-23 09:42:53

大數據數據可視化技術誤區

2022-03-01 10:29:44

Kubernetes容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美片网站免费 | 午夜免费在线观看 | 国产三级精品三级在线观看四季网 | 激情五月婷婷 | 亚洲免费在线观看 | www.一区二区 | 免费毛片网站 | 欧美国产日韩在线观看 | 亚洲 自拍 另类 欧美 丝袜 | 色婷婷国产精品 | 九一精品 | 日韩影院在线观看 | 三级特黄特色视频 | 亚洲视频免费在线播放 | 一区日韩| 久久精品免费一区二区 | 九九在线视频 | 亚洲一区二区三区在线免费 | 日韩久久综合网 | 亚洲精品乱码 | 成人国产精品久久久 | 一区视频在线 | 中文字幕 国产 | 亚洲 欧美 另类 综合 偷拍 | 精品国产不卡一区二区三区 | 91麻豆精品一区二区三区 | 免费黄色片在线观看 | 国产综合网站 | 国产一区在线看 | 国产成人99久久亚洲综合精品 | 91视频观看 | www.久久久久久久久 | 麻豆精品久久 | 三级成人片 | 国产 欧美 日韩 一区 | 午夜影院网站 | 最新免费黄色网址 | 国产高清精品一区二区三区 | www国产成人免费观看视频,深夜成人网 | 精品国产91 | 欧美成年人网站 |