偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

集成學(xué)習(xí)算法(Ensemble Method)淺析

開發(fā) 開發(fā)工具 算法
個性化推薦系統(tǒng)是達觀數(shù)據(jù)在金融、電商、媒體、直播等行業(yè)的主要產(chǎn)品之一。在達觀數(shù)據(jù)的個性化推薦系統(tǒng)架構(gòu)中,可 以簡單地分為5層架構(gòu),每層處理相應(yīng)的數(shù)據(jù)輸出給下一層使用。

個性化推薦系統(tǒng)是達觀數(shù)據(jù)在金融、電商、媒體、直播等行業(yè)的主要產(chǎn)品之一。在達觀數(shù)據(jù)的個性化推薦系統(tǒng)架構(gòu)中,可 以簡單地分為5層架構(gòu),每層處理相應(yīng)的數(shù)據(jù)輸出給下一層使用,分別是:

  • 數(shù)據(jù)處理層

作為推薦系統(tǒng)***端的數(shù)據(jù)處理層,主要功能是首先將客戶上傳上來的一些無用的噪聲數(shù)據(jù)進行清理過濾,將推薦系 統(tǒng)所需要用到的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)存儲層中;

  • 數(shù)據(jù)存儲層

對于item的數(shù)據(jù)一般存入在Mysql中,隨著數(shù)據(jù)量越來越大的item的數(shù)據(jù),相比Mysql的擴展性來說,HBase和Hive 是一個更好的選擇,Hive可以方便離線分析時操作。而對于實時模塊,以及一些用進程同步相關(guān)的模塊,實時性要求 比較高的,redis就可以派上用場了,作為緩存,生產(chǎn)者生產(chǎn)數(shù)據(jù)寫入redis供消費者讀?。?/p>

  • 生成候選集

通過一系列的基礎(chǔ)算法如協(xié)同過濾,content-base,點擊反饋,熱門等數(shù)據(jù)給每個用戶生成個性化的候選集;

  • 融合候選集

將各個算法生成的候選集的item按照一系列規(guī)則進行融合過濾。

  • 重排序

將融合過濾后的item集合用一定的算法重新排序,將排序后的結(jié)果輸出到用戶,這邊主要常用到機器學(xué)習(xí)相關(guān)模型和 算法,如LR和GBDT。

本文將著重淺析一下重排序用到的集成學(xué)習(xí)算法(Ensemble Method)。

集成學(xué)習(xí)概述

集成學(xué)習(xí)算法本身不算一種單獨的機器學(xué)習(xí)算法,而是通過構(gòu)建并結(jié)合多個機器學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)??梢哉f是集百家 之所長,能在機器學(xué)習(xí)算法中擁有較高的準(zhǔn)確率,不足之處就是模型的訓(xùn)練過程可能比較復(fù)雜,效率不是很高。目前常見 的集成學(xué)習(xí)算法主要有2種:基于Bagging的算法和基于Boosting的算法,基于Bagging的代表算法有隨機森林,而基于Boosting的代表算法則有Adaboost、GBDT、XGBOOST等。

基于Bagging算法

Bagging算法(裝袋法)是bootstrap  aggregating的縮寫,它主要對樣本訓(xùn)練集合進行隨機化抽樣,通過反復(fù)的抽樣訓(xùn)練新的模型,最終在這些模型的基礎(chǔ)上取平均。

  • 基本思想

1.給定一個弱學(xué)習(xí)算法,和一個訓(xùn)練集;

2.單個弱學(xué)習(xí)算法準(zhǔn)確率不高;

3.將該學(xué)習(xí)算法使用多次,得出預(yù)測函數(shù)序列,進行投票;

4.***結(jié)果準(zhǔn)確率將得到提高。

以隨機森林為例來詳解

  • 隨機森林基本原理

隨機森林由LeoBreiman(2001)提出,從原始訓(xùn)練樣本集N中有放回地重復(fù)隨機抽取k個樣本生成新的訓(xùn)練樣本集     合,然后根據(jù)自助樣本集生成k個分類樹組成隨機森林,新數(shù)據(jù)的分類結(jié)果按分類樹投票多少形成的分數(shù)而定。其實質(zhì) 是對決策樹算法的一種改進,將多個決策樹合并在一起,每棵樹的建立依賴于一個獨立抽取的樣品,森林中的每棵樹   具有相同的分布,分類誤差取決于每一棵樹的分類能力和它們之間的相關(guān)性。特征選擇采用隨機的方法去分裂每一個   節(jié)點,然后比較不同情況下產(chǎn)生的誤差。能夠檢測到的內(nèi)在估計誤差、分類能力和相關(guān)性決定選擇特征的數(shù)目。單棵   樹的分類能力可能很小,但在隨機產(chǎn)生大量的決策樹后,一個測試樣品可以通過每一棵樹的分類結(jié)果經(jīng)統(tǒng)計后選擇最   可能的分類。

  • 隨機森林算法過程

1.從訓(xùn)練數(shù)據(jù)中選取n個數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)輸入,一般情況下n是遠小于整體的訓(xùn)練數(shù)據(jù)N的,這樣就會造成有一部 分數(shù)據(jù)是無法被取到的,這部分數(shù)據(jù)稱為袋外數(shù)據(jù),可以使用袋外數(shù)據(jù)做誤差估計。

2.選取了輸入的訓(xùn)練數(shù)據(jù)的之后,需要構(gòu)建決策樹,具體方法是每一個分裂結(jié)點從整體的特征集M中選取m個特征構(gòu) 建,一般情況下m遠小于M。

3.在構(gòu)造每棵決策樹的過程中,按照選取最小的基尼指數(shù)進行分裂節(jié)點的選取進行決策樹的構(gòu)建。決策樹的其他結(jié)點 都采取相同的分裂規(guī)則進行構(gòu)建,直到該節(jié)點的所有訓(xùn)練樣例都屬于同一類或者達到樹的***深度。

4.重復(fù)第2步和第3步多次,每一次輸入數(shù)據(jù)對應(yīng)一顆決策樹,這樣就得到了隨機森林,可以用來對預(yù)測數(shù)據(jù)進行決 策。

5.輸入的訓(xùn)練數(shù)據(jù)選擇好了,多棵決策樹也構(gòu)建好了,對待預(yù)測數(shù)據(jù)進行預(yù)測,比如說輸入一個待預(yù)測數(shù)據(jù),然后多 棵決策樹同時進行決策,***采用多數(shù)投票的方式進行類別的決策。

  • 隨機森林注意點

1.在構(gòu)建決策樹的過程中是不需要剪枝的。

2.整個森林的樹的數(shù)量和每棵樹的特征需要人為進行設(shè)定。

3.構(gòu)建決策樹的時候分裂節(jié)點的選擇是依據(jù)最小基尼系數(shù)的。

基于Boosting算法

提升算法(Boosting)是常用的有效的統(tǒng)計學(xué)習(xí)算法,屬于迭代算法,它通過不斷地使用一個弱學(xué)習(xí)器彌補前一個弱學(xué)習(xí)器 的“不足”的過程,來串行地構(gòu)造一個較強的學(xué)習(xí)器,這個強學(xué)習(xí)器能夠使目標(biāo)函數(shù)值足夠小。

  • 基本思想

1.先賦予每個訓(xùn)練樣本相同的概率;

2.然后進行T次迭代,每次迭代后,對分類錯誤的樣本加大權(quán)重(重采樣),使得在下一次的迭代中更加關(guān)注這些樣本。

Boosting系列算法里***算法主要有AdaBoost算法和提升樹(boosting  tree)系列算法。提升樹系列算法里面應(yīng)用最廣泛的是梯度提升樹(Gradient Boosting Tree)。

以AdaBoost算法作為代表算法來詳解

  • 基本原理

Adaboost(adaptive boosting: boosting + 單層決策樹)是boosting中較為代表的算法,基本思想是通過訓(xùn)練數(shù)據(jù)的分布構(gòu)造一個分類器,然后通過誤差率求出這個若弱分類器的權(quán)重,通過更新訓(xùn)練數(shù)據(jù)的分布,迭代進行,直到達到   迭代次數(shù)或者損失函數(shù)小于某一閾值。

假設(shè)訓(xùn)練數(shù)據(jù)集為

  • 算法過程

Bagging和Boosting算法異同

Bagging算法與Boosting算法的核心都是將一系列弱學(xué)習(xí)器的算法按照特定的結(jié)合策略組合成強學(xué)習(xí)器的過程。兩者之  間的區(qū)別在于以下幾點上:

1.樣本選擇:

  • Bagging:訓(xùn)練集是在原始集中有放回選取的,從原始集中選出的各輪訓(xùn)練集之間是獨立的.
  • Boosting:每一輪的訓(xùn)練集不變,只是訓(xùn)練集中每個樣例在分類器中的權(quán)重發(fā)生變化.而權(quán)值是根據(jù)上一輪的分類結(jié)果 進行調(diào)整。

2.樣例權(quán)重:

  • Bagging:使用均勻取樣,每個樣例的權(quán)重相等。
  • Boosting:根據(jù)錯誤率不斷調(diào)整樣例的權(quán)值,錯誤率越大則權(quán)重越大.

3.預(yù)測函數(shù):

  • Bagging:所有預(yù)測函數(shù)的權(quán)重相等。
  • Boosting:每個弱分類器都有相應(yīng)的權(quán)重,對于分類誤差小的分類器會有更大的權(quán)重。

4.并行計算:

  • Bagging:各個預(yù)測函數(shù)可以并行生成。
  • Boosting:各個預(yù)測函數(shù)只能順序生成,因為后一個模型參數(shù)需要前一輪模型的結(jié)果。

集成學(xué)習(xí)之結(jié)合策略

以上部分我們主要關(guān)注與學(xué)習(xí)器本身,對于學(xué)習(xí)器之間的結(jié)合策略并未涉及到,這一小節(jié)主要介紹常見的結(jié)合策略,主要 有平均法,投票法,學(xué)習(xí)法。

  • 平均法

對于數(shù)值類的回歸預(yù)測問題,通常使用的結(jié)合策略是平均法,也就是說,對于若干和弱學(xué)習(xí)器的輸出進行平均得到最 終的預(yù)測輸出。最簡單的平均是算術(shù)平均,也就是說最終預(yù)測為

  • 投票法

  • 學(xué)習(xí)法

上兩節(jié)的方法都是對弱學(xué)習(xí)器的結(jié)果做平均或者投票,相對比較簡單,但是可能學(xué)習(xí)誤差較大,于是就有了學(xué)習(xí)法這種方 法,對于學(xué)習(xí)法,代表方法是stacking,當(dāng)使用stacking的結(jié)合策略時,我們不是對弱學(xué)習(xí)器的結(jié)果做簡單的邏輯處理,  而是再加上一層學(xué)習(xí)器,也就是說,我們將訓(xùn)練集弱學(xué)習(xí)器的學(xué)習(xí)結(jié)果作為輸入,將訓(xùn)練集的輸出作為輸出,重新訓(xùn)練一 個學(xué)習(xí)器來得到最終結(jié)果。

在這種情況下,我們將弱學(xué)習(xí)器稱為初級學(xué)習(xí)器,將用于結(jié)合的學(xué)習(xí)器稱為次級學(xué)習(xí)器。對于測試集,我們首先用初級學(xué) 習(xí)器預(yù)測一次,得到次級學(xué)習(xí)器的輸入樣本,再用次級學(xué)習(xí)器預(yù)測一次,得到最終的預(yù)測結(jié)果。

總結(jié)

Bagging和Boosting都是把若干個分類器整合為一個分類器的集成學(xué)習(xí)方法,只是整合的方式不一樣,最終得到不一樣  的效果。下面是將決策樹與這些算法框架進行結(jié)合所得到的新的算法:

1.Bagging + 決策樹 = 隨機森林

2.AdaBoost + 決策樹 = 提升樹

3.Gradient Boosting + 決策樹 = GBDT

其中GBDT在達觀數(shù)據(jù)個性化推薦重排序?qū)拥玫胶芎玫貞?yīng)用。

作者:陳祥龍

達觀數(shù)據(jù)數(shù)據(jù)挖掘工程師,畢業(yè)于復(fù)旦大學(xué)計算機科學(xué)與技術(shù)專業(yè),現(xiàn)主要負責(zé)大型私有化推薦項目部署工作。

 【本文為51CTO專欄作者“達觀數(shù)據(jù)”的原創(chuàng)稿件,轉(zhuǎn)載可通過51CTO專欄獲取聯(lián)系】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2024-08-12 00:00:05

集成學(xué)習(xí)典型算法代碼

2022-08-28 20:50:29

算法模型機器學(xué)習(xí)

2024-09-09 23:04:04

2009-08-24 09:55:24

C#集成開發(fā)環(huán)境

2009-08-11 13:54:54

約瑟夫環(huán)算法C#算法

2012-07-02 09:59:35

IBM PureSys專家集成系統(tǒng)

2022-12-30 08:00:00

深度學(xué)習(xí)集成模型

2009-07-14 13:08:55

WebWork與Spr

2011-06-10 14:33:38

Qt VC.NET

2009-07-03 09:08:23

JSP標(biāo)記學(xué)習(xí)筆記

2009-07-03 09:08:23

JSP標(biāo)記學(xué)習(xí)筆記

2009-08-27 17:33:51

Interface接口

2023-05-28 23:26:16

多模態(tài)機器學(xué)習(xí)大腦

2011-06-03 17:14:35

iphone Objective

2009-12-31 13:45:32

2010-01-27 15:46:15

學(xué)習(xí)C++效率

2009-09-14 17:10:57

LINQ模糊查詢

2018-02-09 11:08:49

區(qū)塊鏈算法主流

2009-08-11 09:19:52

C#選擇排序C#算法

2021-01-19 07:02:26

算法數(shù)據(jù)結(jié)構(gòu)堆排序
點贊
收藏

51CTO技術(shù)棧公眾號