集成學習之參數調整策略

1 Random Forest和Gradient Tree Boosting參數詳解

  在sklearn.ensemble庫中,我們可以找到Random Forest分類和回歸的實現:RandomForestClassifier和RandomForestRegression,Gradient Tree Boosting分類和回歸的實現:GradientBoostingClassifier和GradientBoostingRegression。有了這些模型后,立馬上手操練起來?少俠請留步!且聽我說一說,使用這些模型時常遇到的問題:

? ? ? 1、明明模型調教得很好了,可是效果離我的想象總有些偏差?——模型訓練的第一步就是要定好目標,往錯誤的方向走太多也是后退。

? ? ? 2、憑直覺調了某個參數,可是居然沒有任何作用,有時甚至起到反作用?——定好目標后,接下來就是要確定哪些參數是影響目標的,其對目標是正影響還是負影響,影響的大小。

? ? ? 3、感覺訓練結束遙遙無期,sklearn只是個在小數據上的玩具?——雖然sklearn并不是基于分布式計算環境而設計的,但我們還是可以通過某些策略提高訓練的效率。

? ? ? 4、模型開始訓練了,但是訓練到哪一步了呢?——飽暖思淫欲啊,目標,性能和效率都得了滿足后,我們有時還需要有別的追求,例如訓練過程的輸出,袋外得分計算等等。

  通過總結這些常見的問題,我們可以把模型的參數分為4類:目標類、性能類、效率類和附加類。下表詳細地展示了4個模型參數的意義:


? ? ? 不難發現,基于bagging的Random Forest模型和基于boosting的Gradient Tree Boosting模型有不少共同的參數,然而某些參數的默認值又相差甚遠。在《使用sklearn進行集成學習——理論》一文中,我們對bagging和boosting兩種集成學習技術有了初步的了解。Random Forest的子模型都擁有較低的偏差,整體模型的訓練過程旨在降低方差,故其需要較少的子模型(n_estimators默認值為10)且子模型不為弱模型(max_depth的默認值為None),同時,降低子模型間的相關度可以起到減少整體模型的方差的效果(max_features的默認值為auto)。另一方面,Gradient Tree Boosting的子模型都擁有較低的方差,整體模型的訓練過程旨在降低偏差,故其需要較多的子模型(n_estimators默認值為100)且子模型為弱模型(max_depth的默認值為3),但是降低子模型間的相關度不能顯著減少整體模型的方差(max_features的默認值為None)。

2 如何調參?

  聰明的讀者應當要發問了:”博主,就算你列出來每個參數的意義,然并卵啊!我還是不知道無從下手啊!”

  參數分類的目的在于縮小調參的范圍,首先我們要明確訓練的目標,把目標類的參數定下來。接下來,我們需要根據數據集的大小,考慮是否采用一些提高訓練效率的策略,否則一次訓練就三天三夜,法國人孩子都生出來了。然后,我們終于進入到了重中之重的環節:調整那些影響整體模型性能的參數。

2.1 調參的目標:偏差和方差的協調

  同樣在集成學習理論中,我們已討論過偏差和方差是怎樣影響著模型的性能——準確度。調參的目標就是為了達到整體模型的偏差和方差的大和諧!進一步,這些參數又可分為兩類:過程影響類及子模型影響類。在子模型不變的前提下,某些參數可以通過改變訓練的過程,從而影響模型的性能,諸如:“子模型數”(n_estimators)、“學習率”(learning_rate)等。另外,我們還可以通過改變子模型性能來影響整體模型的性能,諸如:“最大樹深度”(max_depth)、“分裂條件”(criterion)等。正由于bagging的訓練過程旨在降低方差,而boosting的訓練過程旨在降低偏差,過程影響類的參數能夠引起整體模型性能的大幅度變化。一般來說,在此前提下,我們繼續微調子模型影響類的參數,從而進一步提高模型的性能。

2.2 參數對整體模型性能的影響

  假設模型是一個多元函數F,其輸出值為模型的準確度。我們可以固定其他參數,從而對某個參數對整體模型性能的影響進行分析:是正影響還是負影響,影響的單調性?

  對Random Forest來說,增加“子模型數”(n_estimators)可以明顯降低整體模型的方差,且不會對子模型的偏差和方差有任何影響。模型的準確度會隨著“子模型數”的增加而提高。由于減少的是整體模型方差公式的第二項,故準確度的提高有一個上限。在不同的場景下,“分裂條件”(criterion)對模型的準確度的影響也不一樣,該參數需要在實際運用時靈活調整。調整“最大葉節點數”(max_leaf_nodes)以及“最大樹深度”(max_depth)之一,可以粗粒度地調整樹的結構:葉節點越多或者樹越深,意味著子模型的偏差越低,方差越高;同時,調整“分裂所需最小樣本數”(min_samples_split)、“葉節點最小樣本數”(min_samples_leaf)及“葉節點最小權重總值”(min_weight_fraction_leaf),可以更細粒度地調整樹的結構:分裂所需樣本數越少或者葉節點所需樣本越少,也意味著子模型越復雜。一般來說,我們總采用bootstrap對樣本進行子采樣來降低子模型之間的關聯度,從而降低整體模型的方差。適當地減少“分裂時考慮的最大特征數”(max_features),給子模型注入了另外的隨機性,同樣也達到了降低子模型之間關聯度的效果。但是一味地降低該參數也是不行的,因為分裂時可選特征變少,模型的偏差會越來越大。在下圖中,我們可以看到這些參數對Random Forest整體模型性能的影響:

? ? ? 對Gradient Tree Boosting來說,“子模型數”(n_estimators)和“學習率”(learning_rate)需要聯合調整才能盡可能地提高模型的準確度:想象一下,A方案是走4步,每步走3米,B方案是走5步,每步走2米,哪個方案可以更接近10米遠的終點?同理,子模型越復雜,對應整體模型偏差低,方差高,故“最大葉節點數”(max_leaf_nodes)、“最大樹深度”(max_depth)等控制子模型結構的參數是與Random Forest一致的。類似“分裂時考慮的最大特征數”(max_features),降低“子采樣率”(subsample),也會造成子模型間的關聯度降低,整體模型的方差減小,但是當子采樣率低到一定程度時,子模型的偏差增大,將引起整體模型的準確度降低。還記得“初始模型”(init)是什么嗎?不同的損失函數有不一樣的初始模型定義,通常,初始模型是一個更加弱的模型(以“平均”情況來預測),雖說支持自定義,大多數情況下保持默認即可。在下圖中,我們可以看到這些參數對Gradient Tree Boosting整體模型性能的影響:

2.3 一個樸實的方案:貪心的坐標下降法

  到此為止,我們終于知道需要調整哪些參數,對于單個參數,我們也知道怎么調整才能提升性能。然而,表示模型的函數F并不是一元函數,這些參數需要共同調整才能得到全局最優解。也就是說,把這些參數丟給調參算法(諸如Grid Search)咯?對于小數據集,我們還能這么任性,但是參數組合爆炸,在大數據集上,或許我的子子孫孫能夠看到訓練結果吧。實際上網格搜索也不一定能得到全局最優解,而另一些研究者從解優化問題的角度嘗試解決調參問題。

  坐標下降法是一類優化算法,其最大的優勢在于不用計算待優化的目標函數的梯度。我們最容易想到一種特別樸實的類似于坐標下降法的方法,與坐標下降法不同的是,其不是循環使用各個參數進行調整,而是貪心地選取了對整體模型性能影響最大的參數。參數對整體模型性能的影響力是動態變化的,故每一輪坐標選取的過程中,這種方法在對每個坐標的下降方向進行一次直線搜索(line search)。首先,找到那些能夠提升整體模型性能的參數,其次確保提升是單調或近似單調的。這意味著,我們篩選出來的參數是對整體模型性能有正影響的,且這種影響不是偶然性的,要知道,訓練過程的隨機性也會導致整體模型性能的細微區別,而這種區別是不具有單調性的。最后,在這些篩選出來的參數中,選取影響最大的參數進行調整即可。

  無法對整體模型性能進行量化,也就談不上去比較參數影響整體模型性能的程度。是的,我們還沒有一個準確的方法來量化整體模型性能,只能通過交叉驗證來近似計算整體模型性能。然而交叉驗證也存在隨機性,假設我們以驗證集上的平均準確度作為整體模型的準確度,我們還得關心在各個驗證集上準確度的變異系數,如果變異系數過大,則平均值作為整體模型的準確度也是不合適的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456939.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中tkinter的使用-下

00表格數據 import tkinter from tkinter import ttkwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")#表格 tree ttk.Treeview(win) tree.pack() #列 tree["columns"] ("姓名","年齡","身高&…

計算機科學和建筑設計結合,智能化建筑中計算機科學與技術的應用

4494 科技創新 建筑工程技術與設計2018年5月上【摘要】隨著我國經濟的發展,計算機科學技術已經逐漸應用到各個領域。將計算機科學與建筑相結合,為建筑業的發展提供了契機。本文介紹了計算機科學技術在智能化建筑中的應用,以期其為加快我國智能…

符號

符號:; 多個命令的分隔符/ 根或者路徑的分隔符> 或1>標準輸出重定向(數據流朝著箭頭的方向流動),覆蓋原來的文件>>或1>>追加重定向(數據流朝著箭頭的方向流動),再原來的文件…

Random Forest算法中的參數詳解

本篇不是介紹RF的,關于RF網上有很多通俗易懂的解釋 西瓜書與統計學習方法等很多教材中的解釋也都足夠 本篇僅針對如何使用sklearn中的RandomForestClassifier作記錄 一、代碼怎么寫 [python] view plaincopy print?class sklearn.ensemble.RandomForestClassifier(…

python中自動化辦公 【筆記】

00讀取csv文件 import csv def readCsv(path):infolist []with open (path,"r") as f:allFileInfo csv.reader(f)print(allFileInfo)for row in allFileInfo:infolist.append(row)return infolistpath r"D:\xiazaipan\第1章 Python語言基礎\15、自動化辦公與…

Python爬蟲:一些常用的爬蟲技巧總結

1、基本抓取網頁 get方法 import urllib2 url "http://www.baidu.com" respons urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2url "http://abcde.com" form {name:abc,password:1234} form_data urllib.urlenco…

微型計算機選用要點,微型計算機原理以及應用考試_new要點分析.doc

微型計算機原理以及應用第一章:1.微機的主要的特點是:(1)體積小、重量輕;(2)價格低廉;(3)可靠性高、結構靈活(4)應用面廣2.微型機的分類:按微處理器規模分類:單片機 、個人計算機、 …

到底什么是API經濟

編者按:這是一篇兩年前的文章,作者為原CA TECH的中國區技術總監。他在文章中闡述的問題,今天讀來依舊讓人振聾發聵。但遺憾的是,國人在API成為一種服務的概念上似乎還停留在遙遠的PC時代,說白了還都只是一些低端的數據…

解決Linux下vi或vim操作Found a swap file by the name

在linux下用vi或vim打開 文件時 E325: ATTENTION Found a swap file by the name ".1.py.swp" owned by: liu dated: Sat Apr 20 17:37:19 2019 file name: ~liu/1.py modified: YES user name: liu host name: localhos…

給未來的自己一封信計算機,給未來的自己的一封信范文(精選5篇)

給未來的自己的一封信范文(精選5篇)在日常生活或是工作學習中,大家總免不了要接觸或使用書信吧,書信一般包括稱呼、問候語、正文、祝語、署名、日期六個部分。你知道書信怎樣寫才規范嗎?下面是小編為大家收集的給未來的自己的一封信范文(精選…

matlab神經網絡函數

1.設計函數 solvein 設計線性網絡; solverb 設計徑向基網絡; solverbe 設計精確的徑向基網絡; solvehop 設計Hopfield網絡。 2.傳遞函數 hardlim 硬限幅傳遞函數; hardl…

GBDT算法簡介

在網上看到一篇GBDT介紹非常好的文章,GBDT大概是非常好用又非常好用的算法之一了吧(哈哈 兩個好的意思不一樣) GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一種迭代的決策樹算法,該算…

DevExpress Chart空間Y軸歸一化(線性歸一化函數)

數據的標準化(normalization)是將數據按比例縮放,使之落入一個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值,便于不同單位或量級的指標能夠進行比較…

Linux samba的配置和使用

推薦局域網內使用 不推薦遠程服務器 一、安裝Samba服務 yum -y install samba # 查看yum源中Samba版本 yum list | grep samba # 查看samba的安裝情況 rpm -qa | grep samba Samba服務器安裝完之后, 會生成配置文件目錄/etc/samba, /etc/samba/smb.conf是samba的核心配置文件.…

23期PHP基礎班第四天

轉載于:https://www.cnblogs.com/lihang666/p/6078982.html

SVM和SVR簡介

1、支持向量機( SVM )是一種比較好的實現了結構風險最小化思想的方法。它的機器學習策略是結構風險最小化原則 為了最小化期望風險,應同時最小化經驗風險和置信范圍) 支持向量機方法的基本思想: ( 1 &#…

gojs實現最短路徑尋址實例

2019獨角獸企業重金招聘Python工程師標準>>> JS function init() {if (window.goSamples) goSamples(); // init for these samples -- you dont need to call thisvar $ go.GraphObject.make; // for conciseness in defining templatesmyDiagram $(go.Diagram,…

河南王牌計算機專業,河南計算機專業實力突出的7所大學,鄭大位列次席,榜首實至名歸...

鄭州大學是省內唯一的211建設高校,整體辦學實力在國內同類高校之中名列前茅,雖然沒有能夠在學科評估之中取得A類學科,但學校有化學、考古學、材料科學與工程等多個學科獲評B,學校計算機科學與技術學科取得了C的成績,雖…

Linux中配置ftp服務器

1. 先用rpm -qa| grep vsftpd命令檢查是否已經安裝,如果ftp沒有安裝,使用yum -y install vsftpd 安裝,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start / service vsftpd restart 啟動要讓FTP每次開機自動啟動,運行命令:…

機器學習中各類算法的優缺點比較

1決策樹(Decision Trees)的優缺點 決策樹的優點: 一、 決策樹易于理解和解釋.人們在通過解釋后都有能力去理解決策樹所表達的意義。 二、 對于決策樹,數據的準備往往是簡單或者是不必要的.其他的技術往往要求先把數據一般化&am…