色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    4608

    瀏覽量

    92844
  • python
    +關注

    關注

    56

    文章

    4793

    瀏覽量

    84631

原文標題:機器學習筆記系列(十三) | 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 ?8888次閱讀
    機器學習:隨機<b class='flag-5'>梯度</b>下降和批量<b class='flag-5'>梯度</b>下降<b class='flag-5'>算法</b>介紹

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

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

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

    為提高光伏出力的預測精度,提出了一種改進深度學習算法的光伏出力預測方法。首先,針對傳統的深度學習算法采用批量梯度下降(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.8w次閱讀
    GBDT<b class='flag-5'>算法</b>原理以及實例理解

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

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

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

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

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

    本文是決策樹的第三篇,主要介紹基于 Boosting 框架的主流集成算法,包括 XGBoost 和 LightGBM。 XGBoost
    的頭像 發表于 02-17 15:58 ?2806次閱讀
    基于 <b class='flag-5'>Boosting</b> 框架的主流集成<b class='flag-5'>算法</b>介紹(下)
    主站蜘蛛池模板: 扒开女人下面使劲桶动态图| 国产成人一区二区三中文 | 99久久精品国产高清一区二区| 被黑人做的白浆直流| 国产伦精品一区二区三区精品| 久久丫线这里只精品| 肉肉高潮液体高干文H| 亚洲伊人久久大香线蕉综合图片| 99久久国产露脸精品竹菊传煤| 国产AV精品国语对白国产| 久久强奷乱码老熟女| 涩涩爱涩涩电影网站| 中文字幕在线视频免费观看| 动漫AV纯肉无码AV电影网| 久久99精品AV99果冻传媒| 日本美女毛茸茸| 樱花草在线影视WWW日本动漫| 伧理片午夜伧理片| 久久才是精品亚洲国产| 日日操夜夜摸| 中文国产成人精品久久免费| 国产福利一区二区精品| 免费视频久久只有精品| 亚洲国产在线精品国自产拍五月 | 99午夜视频| 狠狠综合久久综合88亚洲| 欧美一区二区三区播放| 一级毛片两人添下面| 国产不卡一卡2卡三卡4卡网站| 美女18毛片免费视频| 亚洲毛片网| 国产成人啪精品视频免费网| 两个奶头被吃得又翘又痛| 亚洲精品久久久无码一区二区 | 芒果视频看片在线观看| 亚洲成片在线看| 动漫美女被吸奶| 美国特级成人毛片| 一本道的mv中文字幕| 国产精品一库二库三库 | 欧美亚洲国内日韩自拍视频|