女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

sekJ_AI_class_v ? 2019-09-23 08:52 ? 次閱讀

GradientBoost算法 python實(shí)現(xiàn),該系列文章主要是對(duì)《統(tǒng)計(jì)學(xué)習(xí)方法》的實(shí)現(xiàn)。

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

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

提升樹(shù)利用加法模型與前向分步算法實(shí)現(xiàn)學(xué)習(xí)的優(yōu)化過(guò)程,當(dāng)損失函數(shù)為平方損失和指數(shù)損失函數(shù)時(shí),每一步優(yōu)化都較為簡(jiǎn)單。但對(duì)一般損失函數(shù)來(lái)說(shuō),每一步的優(yōu)化并不容易。Fredman為了解決這一問(wèn)題,便提出了梯度提升(Gradient Boosting)方法。

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

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

注:該步通過(guò)估計(jì)使損失函數(shù)極小化的常數(shù)值,得到一個(gè)根結(jié)點(diǎn)的樹(shù)。

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

Gradient Boost算法案例 python實(shí)現(xiàn)(馬疝病數(shù)據(jù))

(代碼可以左右滑動(dòng)看)

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

第一步:構(gòu)建數(shù)據(jù)

# 創(chuàng)建模擬數(shù)據(jù)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()

線性回歸模型來(lái)擬合數(shù)據(jù)

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()

線性回歸模型旨在將預(yù)測(cè)與實(shí)際產(chǎn)出之間的平方誤差最小化,從我們的殘差模式可以清楚地看出,殘差之和約為0:

梯度提升法使用一組串聯(lián)的決策樹(shù)來(lái)預(yù)測(cè)y

下面從只有一個(gè)估計(jì)量的梯度提升回歸模型和一個(gè)只有深度為1的樹(shù)開(kāi)始:

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決策樹(shù)在x<50??和x>50處被拆分,其中:

if x<50 ,y=56;

if x>=50,y=250.

這樣的拆分結(jié)果肯定是不好的,下面用一個(gè)估計(jì)量時(shí),30-40之間的殘差很。猜想:如果使用兩個(gè)估計(jì)量,把第一棵樹(shù)的殘差輸入下一棵樹(shù)中,有怎樣的效果?驗(yàn)證代碼如下:

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()

如上圖,當(dāng)有連個(gè)估計(jì)量時(shí),第二棵樹(shù)是在30處拆分的,如果我們繼續(xù)增加估計(jì)量,我們得到Y(jié)分布的一個(gè)越來(lái)越接近的近似值:

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()

上面是改變估計(jì)量,保持樹(shù)深度的效果,下面保持估計(jì)量為10,改變樹(shù)的深度.

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()

上兩圖可以看到如何通過(guò)增加估計(jì)量和最大深度來(lái)擬合y值。不過(guò)有點(diǎn)過(guò)擬合了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4698

    瀏覽量

    94719
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86163

原文標(biāo)題:機(jī)器學(xué)習(xí)筆記系列(十三) | GradientBoost算法 python實(shí)現(xiàn)

文章出處:【微信號(hào):AI_class_vip,微信公眾號(hào):人工智能學(xué)研社】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    《MATLAB優(yōu)化算法案例分析與應(yīng)用》

    《MATLAB優(yōu)化算法案例分析與應(yīng)用》清華大學(xué)出版社《MATLAB優(yōu)化算法案例分析與應(yīng)用》這本書(shū),給大家推薦一下這本書(shū)清華大學(xué)出版社《MATLAB優(yōu)化算法案例分析與應(yīng)用》這本書(shū),給大家推薦一下這本書(shū)
    發(fā)表于 10-10 12:34

    機(jī)器學(xué)習(xí)新手必學(xué)的三種優(yōu)化算法(牛頓法、梯度下降法、最速下降法)

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

    集成學(xué)習(xí)和Boosting提升方法

    李航《統(tǒng)計(jì)學(xué)習(xí)方法》——第八章Boosting提升方法【補(bǔ)充集成學(xué)習(xí)】+習(xí)題答案
    發(fā)表于 06-05 09:49

    梯度更新算法的選擇

    深度學(xué)習(xí)入門(mén)(四)梯度更新算法的選擇(附執(zhí)行代碼)
    發(fā)表于 06-09 11:02

    基礎(chǔ)算法案

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

    一種改進(jìn)的梯度投影算法

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

    機(jī)器學(xué)習(xí):隨機(jī)梯度下降和批量梯度下降算法介紹

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

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

    編輯:祝鑫泉 一 概述 梯度下降算法Gradient Descent Optimization )是神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練最常用的優(yōu)化算法。對(duì)于深度學(xué)習(xí)模型,基本都是采用
    發(fā)表于 12-04 18:17 ?1955次閱讀

    改進(jìn)深度學(xué)習(xí)算法的光伏出力預(yù)測(cè)方法

    為提高光伏出力的預(yù)測(cè)精度,提出了一種改進(jìn)深度學(xué)習(xí)算法的光伏出力預(yù)測(cè)方法。首先,針對(duì)傳統(tǒng)的深度學(xué)習(xí)算法采用批量梯度下降(batch gradient
    發(fā)表于 12-17 10:42 ?8次下載
    改進(jìn)深度學(xué)習(xí)<b class='flag-5'>算法</b>的光伏出力預(yù)測(cè)<b class='flag-5'>方法</b>

    GBDT算法原理以及實(shí)例理解

    GBDT 的全稱(chēng)是 Gradient Boosting Decision Tree,梯度提升樹(shù),在傳統(tǒng)機(jī)器學(xué)習(xí)算法中,GBDT算的上TOP3
    的頭像 發(fā)表于 04-28 16:47 ?2.8w次閱讀
    GBDT<b class='flag-5'>算法</b>原理以及實(shí)例理解

    將淺層神經(jīng)網(wǎng)絡(luò)作為“弱學(xué)習(xí)者”的梯度Boosting框架

    1. 簡(jiǎn)介 本文提出了一種新的梯度Boosting框架,將淺層神經(jīng)網(wǎng)絡(luò)作為“弱學(xué)習(xí)者”。在此框架下,我們考慮一般的損失函數(shù),并給出了分類(lèi)、回歸和排序的具體實(shí)例。針對(duì)經(jīng)典梯度boosting
    的頭像 發(fā)表于 05-03 18:21 ?2875次閱讀
    將淺層神經(jīng)網(wǎng)絡(luò)作為“弱學(xué)習(xí)者”的<b class='flag-5'>梯度</b><b class='flag-5'>Boosting</b>框架

    基于并行Boosting算法的雷達(dá)目標(biāo)跟蹤檢測(cè)系統(tǒng)

    基于并行Boosting算法的雷達(dá)目標(biāo)跟蹤檢測(cè)系統(tǒng)
    發(fā)表于 06-30 14:25 ?31次下載

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

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

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

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

    xgboost與LightGBM的優(yōu)勢(shì)對(duì)比

    Gradient Boosting) 是一種基于梯度提升決策樹(shù)(GBDT)的優(yōu)化分布式梯度提升
    的頭像 發(fā)表于 01-19 11:18 ?959次閱讀