在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

梯度提升方法(Gradient Boosting)算法案例

sekJ_AI_class_v ? 2019-09-23 08:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

GradientBoost算法 python實現,該系列文章主要是對《統計學習方法》的實現。

完整的筆記和代碼以上傳到Github,地址為(覺得有用的話,歡迎Fork,請給作者個Star):

https://github.com/Vambooo/lihang-dl

提升樹利用加法模型與前向分步算法實現學習的優化過程,當損失函數為平方損失和指數損失函數時,每一步優化都較為簡單。但對一般損失函數來說,每一步的優化并不容易。Fredman為了解決這一問題,便提出了梯度提升(Gradient Boosting)方法。

梯度提升法利用最速下降的近似方法,這里的關鍵是利用損失函數的負梯度在當前模型的值r_{mi}作為回歸問題提升樹算法中的殘差的近似值,擬合一個回歸樹。

梯度提升方法(Gradient Boosting)算法

注:該步通過估計使損失函數極小化的常數值,得到一個根結點的樹。

梯度提升方法(Gradient Boosting)算法案例

Gradient Boost算法案例 python實現(馬疝病數據)

(代碼可以左右滑動看)

import pandas as pdimport numpy as npimportmatplotlib.pyplotaspltfrom sklearn import ensemblefrom sklearn import linear_model

第一步:構建數據

# 創建模擬數據xx = np.arange(0, 60)y=[ x / 2 + (x // 10) % 2 * 20 * x / 5 + np.random.random() * 10 for x in xx]
x = pd.DataFrame({'x': x})
# Plot mock dataplt.figure(figsize=(10, 5))plt.scatter(x, y)plt.show()

線性回歸模型來擬合數據

linear_regressor=linear_model.LinearRegression()linear_regressor.fit(x, y)
plt.figure(figsize=(10, 5))plt.title("Linear Regression")plt.scatter(x, y)plt.plot(x, linear_regressor.predict(x), color='r')plt.show()

線性回歸模型旨在將預測與實際產出之間的平方誤差最小化,從我們的殘差模式可以清楚地看出,殘差之和約為0:

梯度提升法使用一組串聯的決策樹來預測y

下面從只有一個估計量的梯度提升回歸模型和一個只有深度為1的樹開始:

params = {    'n_estimators': 1,    'max_depth': 1,    'learning_rate': 1,    'criterion': 'mse'}
gradient_boosting_regressor = ensemble.GradientBoostingRegressor(**params)
gradient_boosting_regressor.fit(x, y)
plt.figure(figsize=(10, 5))plt.title('Gradient Boosting model (1 estimators, Single tree split)')plt.scatter(x, y)plt.plot(x, gradient_boosting_regressor.predict(x), color='r')plt.show()

從上圖可以看到深度1決策樹在x<50??和x>50處被拆分,其中:

if x<50 ,y=56;

if x>=50,y=250.

這樣的拆分結果肯定是不好的,下面用一個估計量時,30-40之間的殘差很。猜想:如果使用兩個估計量,把第一棵樹的殘差輸入下一棵樹中,有怎樣的效果?驗證代碼如下:

params['n_estimators'] = 2
gradient_boosting_regressor = ensemble.GradientBoostingRegressor(**params)
gradient_boosting_regressor.fit(x, y)
plt.figure(figsize=(10, 5))plt.title('Gradient Boosting model (1 estimators, Single tree split)')plt.scatter(x, y)plt.plot(x, gradient_boosting_regressor.predict(x), color='r')plt.show()

如上圖,當有連個估計量時,第二棵樹是在30處拆分的,如果我們繼續增加估計量,我們得到Y分布的一個越來越接近的近似值:

f, ax = plt.subplots(2, 2, figsize=(15, 10))
for idx, n_estimators in enumerate([5, 10, 20, 50]):    params['n_estimators'] = n_estimators
    gradient_boosting_regressor = ensemble.GradientBoostingRegressor(**params)
    gradient_boosting_regressor.fit(x, y)    subplot = ax[idx // 2][idx % 2]    subplot.set_title('Gradient Boosting model ({} estimators, Single tree split)'.format(n_estimators))    subplot.scatter(x, y)    subplot.plot(x, gradient_boosting_regressor.predict(x), color='r')plt.show()

上面是改變估計量,保持樹深度的效果,下面保持估計量為10,改變樹的深度.

params['n_estimators'] = 10
f, ax = plt.subplots(2, 2, figsize=(15, 10))
for idx, max_depth in enumerate([1, 2, 3, 5]):    params['max_depth'] = max_depth
    gradient_boosting_regressor = ensemble.GradientBoostingRegressor(**params)
    gradient_boosting_regressor.fit(x, y)    subplot = ax[idx // 2][idx % 2]    subplot.set_title('Gradient Boosting model (10 estimators, {} max tree splits)'.format(max_depth))    subplot.scatter(x, y)    subplot.plot(x, gradient_boosting_regressor.predict(x), color='r')plt.show()

上兩圖可以看到如何通過增加估計量和最大深度來擬合y值。不過有點過擬合了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4707

    瀏覽量

    95186
  • python
    +關注

    關注

    56

    文章

    4826

    瀏覽量

    86544

原文標題:機器學習筆記系列(十三) | GradientBoost算法 python實現

文章出處:【微信號:AI_class_vip,微信公眾號:人工智能學研社】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    《MATLAB優化算法案例分析與應用》

    《MATLAB優化算法案例分析與應用》清華大學出版社《MATLAB優化算法案例分析與應用》這本書,給大家推薦一下這本書清華大學出版社《MATLAB優化算法案例分析與應用》這本書,給大家推薦一下這本書
    發表于 10-10 12:34

    機器學習新手必學的三種優化算法(牛頓法、梯度下降法、最速下降法)

    角度來理解它們。本文介紹的核心算法包括:牛頓法(Newton’s Method)最速下降法(Steep Descent)梯度下降法(Gradient Descent)如果想對這些算法
    發表于 05-07 08:30

    集成學習和Boosting提升方法

    李航《統計學習方法》——第八章Boosting提升方法【補充集成學習】+習題答案
    發表于 06-05 09:49

    梯度更新算法的選擇

    深度學習入門(四)梯度更新算法的選擇(附執行代碼)
    發表于 06-09 11:02

    基礎算法案

    基礎算法案例1.特殊回文數問題描述:左邊往右邊看,右邊往左邊看,都是同一個數叫做回文數,比如19291就是一個回文數,那么我們輸入一個兩位及以上的數字,返回回文數,案例如下:def is_pal
    發表于 07-23 06:51

    一種改進的梯度投影算法

    的Barzilai-Borwein (B-B)梯度投影(Barzilai-Borwein Gradient Projection for Sparse Reconstruction,GPSR-BB)算法的基礎上,采用預測校正
    發表于 11-27 18:09 ?0次下載

    機器學習:隨機梯度下降和批量梯度下降算法介紹

    隨機梯度下降(Stochastic gradient descent) 批量梯度下降(Batch gradient descent) 梯度
    發表于 11-28 04:00 ?9257次閱讀
    機器學習:隨機<b class='flag-5'>梯度</b>下降和批量<b class='flag-5'>梯度</b>下降<b class='flag-5'>算法</b>介紹

    一文看懂常用的梯度下降算法

    編輯:祝鑫泉 一 概述 梯度下降算法Gradient Descent Optimization )是神經網絡模型訓練最常用的優化算法。對于深度學習模型,基本都是采用
    發表于 12-04 18:17 ?1988次閱讀

    改進深度學習算法的光伏出力預測方法

    為提高光伏出力的預測精度,提出了一種改進深度學習算法的光伏出力預測方法。首先,針對傳統的深度學習算法采用批量梯度下降(batch gradient
    發表于 12-17 10:42 ?8次下載
    改進深度學習<b class='flag-5'>算法</b>的光伏出力預測<b class='flag-5'>方法</b>

    GBDT算法原理以及實例理解

    GBDT 的全稱是 Gradient Boosting Decision Tree,梯度提升樹,在傳統機器學習算法中,GBDT算的上TOP3
    的頭像 發表于 04-28 16:47 ?2.9w次閱讀
    GBDT<b class='flag-5'>算法</b>原理以及實例理解

    將淺層神經網絡作為“弱學習者”的梯度Boosting框架

    1. 簡介 本文提出了一種新的梯度Boosting框架,將淺層神經網絡作為“弱學習者”。在此框架下,我們考慮一般的損失函數,并給出了分類、回歸和排序的具體實例。針對經典梯度boosting
    的頭像 發表于 05-03 18:21 ?2926次閱讀
    將淺層神經網絡作為“弱學習者”的<b class='flag-5'>梯度</b><b class='flag-5'>Boosting</b>框架

    基于并行Boosting算法的雷達目標跟蹤檢測系統

    基于并行Boosting算法的雷達目標跟蹤檢測系統
    發表于 06-30 14:25 ?31次下載

    基于 Boosting 框架的主流集成算法介紹(上)

    本文是決策樹的第三篇,主要介紹基于 Boosting 框架的主流集成算法,包括 XGBoost 和 LightGBM。 XGBoost
    的頭像 發表于 02-17 15:57 ?1274次閱讀
    基于 <b class='flag-5'>Boosting</b> 框架的主流集成<b class='flag-5'>算法</b>介紹(上)

    基于 Boosting 框架的主流集成算法介紹(中)

    本文是決策樹的第三篇,主要介紹基于 Boosting 框架的主流集成算法,包括 XGBoost 和 LightGBM。 XGBoost
    的頭像 發表于 02-17 15:58 ?990次閱讀
    基于 <b class='flag-5'>Boosting</b> 框架的主流集成<b class='flag-5'>算法</b>介紹(中)

    xgboost與LightGBM的優勢對比

    Gradient Boosting) 是一種基于梯度提升決策樹(GBDT)的優化分布式梯度提升
    的頭像 發表于 01-19 11:18 ?1161次閱讀
    主站蜘蛛池模板: 午夜在线观看视频 | h在线免费视频 | 五月天在线播放 | 国产精品午夜剧场 | 四虎必出精品亚洲高清 | 欧美一级高清片欧美国产欧美 | 亚洲天堂va| 91成人免费 | 就爱干草视频 | 午夜小视频免费 | 精品国产中文一级毛片在线看 | seetube18日本第一次 | 欧美二级 | 狼人 成人 综合 亚洲 | 女人精aaaa片一级毛片女女 | 国产在线啪 | 91黄色影院| baoyu污污网站入口免费 | 色综网| 91福利视频免费 | 日韩精品免费一级视频 | 久久亚洲精品国产亚洲老地址 | 成人午夜小视频手机在线看 | 四虎影库网址 | 色视频免费在线观看 | 高清xxx| 求网址你懂的手机在线观看网站 | 日本免费不卡一区 | 亚洲午夜久久久精品影院视色 | 精品亚洲成a人片在线观看 精品亚洲大全 | 午夜影剧院 | ts人妖系列在线专区 | 色偷偷免费 | 亚洲一级免费毛片 | 福利你懂的 | 狠狠色噜噜狠狠狠97影音先锋 | 黄色一级一毛片 | 成人午夜大片免费7777 | 黄床大片| 欧美三级一级片 | 手机看片福利盒子久久青 |