91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

機器學習模型的集成方法總結(jié):Bagging, Boosting, Stacking, Voting, Blending

穎脈Imgtec ? 2022-10-19 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來源:DeepHub IMBA

作者:Abhay Parashar


機器學習人工智能的一個分支領(lǐng)域,致力于構(gòu)建自動學習和自適應的系統(tǒng),它利用統(tǒng)計模型來可視化、分析和預測數(shù)據(jù)。一個通用的機器學習模型包括一個數(shù)據(jù)集(用于訓練模型)和一個算法(從數(shù)據(jù)學習)。但是有些模型的準確性通常很低產(chǎn)生的結(jié)果也不太準確,克服這個問題的最簡單的解決方案之一是在機器學習模型上使用集成學習。

491d77e0-4f2b-11ed-b116-dac502259ad0.png

集成學習是一種元方法,通過組合多個機器學習模型來產(chǎn)生一個優(yōu)化的模型,從而提高模型的性能。集成學習可以很容易地減少過擬合,避免模型在訓練時表現(xiàn)更好,而在測試時不能產(chǎn)生良好的結(jié)果。

總結(jié)起來,集成學習有以下的優(yōu)點:

  • 增加模型的性能
  • 減少過擬合
  • 降低方差
  • 與單個模型相比,提供更高的預測精度。
  • 可以處理線性和非線性數(shù)據(jù)。

集成技術(shù)可以用來解決回歸和分類問題

下面我們將介紹各種集成學習的方法:

Voting

Voting是一種集成學習,它將來自多個機器學習模型的預測結(jié)合起來產(chǎn)生結(jié)果。在整個數(shù)據(jù)集上訓練多個基礎(chǔ)模型來進行預測。每個模型預測被認為是一個“投票”。得到多數(shù)選票的預測將被選為最終預測。

4937d0f4-4f2b-11ed-b116-dac502259ad0.png

有兩種類型的投票用于匯總基礎(chǔ)預測-硬投票和軟投票。

494ccacc-4f2b-11ed-b116-dac502259ad0.png

硬投票選擇投票數(shù)最高的預測作為最終預測,而軟投票將每個模型中每個類的概率結(jié)合起來,選擇概率最高的類作為最終預測。

在回歸問題中,它的工作方式有些不同,因為我們不是尋找頻率最高的類,而是采用每個模型的預測并計算它們的平均值,從而得出最終的預測。

 from sklearn.ensemble import VotingClassifier
 
 ## Base Models
 from sklearn.tree import DecisionTreeClassifier
 from sklearn.linear_model import LogisticRegression
 from sklearn.naive_bayes import GaussianNB
 from sklearn.neighbors import KNeighborsClassifier
 from sklearn.svm import SVC
 
 
 ensemble_voting = VotingClassifier(
    estimators = [('dtc',DecisionTreeClassifier(random_state=42)),
                  ('lr', LogisticRegression()),
                  ('gnb', GaussianNB()),
                  ('knn',KNeighborsClassifier()),
                  ('svc',SVC())],
    voting='hard')
 ensemble_voting.fit(X_train,y_train)


Bagging

Bagging是采用幾個弱機器學習模型,并將它們的預測聚合在一起,以產(chǎn)生最佳的預測。它基于bootstrap aggregation,bootstrap 是一種使用替換方法從集合中抽取隨機樣本的抽樣技術(shù)。aggregation則是利用將幾個預測結(jié)合起來產(chǎn)生最終預測的過程。

隨機森林是利用Bagging的最著名和最常用的模型之一。它由大量的決策樹組成,這些決策樹作為一個整體運行。它使用Bagging和特征隨機性的概念來創(chuàng)建每棵獨立的樹。每棵決策樹都是從數(shù)據(jù)中隨機抽取樣本進行訓練。在隨機森林中,我們最終得到的樹不僅接受不同數(shù)據(jù)集的訓練,而且使用不同的特征來預測結(jié)果。

498584d4-4f2b-11ed-b116-dac502259ad0.png

Bagging通常有兩種類型——決策樹的集合(稱為隨機森林)和決策樹以外的模型的集合。兩者的工作原理相似,都使用聚合方法生成最終預測,唯一的區(qū)別是它們所基于的模型。在sklearn中,我們有一個BaggingClassifier類,用于創(chuàng)建除決策樹以外的模型。

 ## Bagging Ensemble of Same Classifiers (Decision Trees)
 from sklearn.ensemble import RandomForestClassifier  
 classifier= RandomForestClassifier(n_estimators= 10, criterion="entropy")  
 classifier.fit(x_train, y_train)
 
 
 ## Bagging Ensemble of Different Classifiers
 from sklearn.ensemble import BaggingClassifier
 from sklearn.svm import SVC
 clf = BaggingClassifier(base_estimator=SVC(),
                          n_estimators=10, random_state=0)
 clf.fit(X_train,y_train)


Boosting

增強集成方法通過重視先前模型的錯誤,將弱學習者轉(zhuǎn)化為強學習者。Boosting以順序的方式實現(xiàn)同構(gòu)ML算法,每個模型都試圖通過減少前一個模型的誤差來提高整個過程的穩(wěn)定性。

4998b054-4f2b-11ed-b116-dac502259ad0.png

在訓練n+1模型時,數(shù)據(jù)集中的每個數(shù)據(jù)點都被賦予了相等的權(quán)重,這樣被模型n錯誤分類的樣本就能被賦予更多的權(quán)重(重要性)。誤差從n個學習者傳遞給n+1個學習者,每個學習者都試圖減少誤差。

ADA Boost是使用Boost生成預測的最基本模型之一。ADA boost創(chuàng)建一個決策樹樁森林(一個樹樁是一個只有一個節(jié)點和兩個葉子的決策樹),不像隨機森林創(chuàng)建整個決策樹森林。它給分類錯誤的樣本分配更高的權(quán)重,并繼續(xù)訓練模型,直到得到較低的錯誤率。

 from sklearn.tree import DecisionTreeClassifier
 from sklearn.ensemble import AdaBoostClassifier
 
 dt = DecisionTreeClassifier(max_depth=2, random_state=0)
 adc = AdaBoostClassifier(base_estimator=dt, n_estimators=7, learning_rate=0.1, random_state=0)
 
 adc.fit(x_train, y_train)


Stacking

Stacking也被稱為疊加泛化,是David H. Wolpert在1992年提出的集成技術(shù)的一種形式,目的是通過使用不同的泛化器來減少錯誤。

49b10410-4f2b-11ed-b116-dac502259ad0.png

疊加模型利用來自多個基礎(chǔ)模型的預測來構(gòu)建元模型,用于生成最終的預測。堆疊模型由多層組成,其中每一層由幾個機器學習模型組成,這些模型的預測用于訓練下一層模型。

在疊加過程中,將數(shù)據(jù)分為訓練集和測試集兩部分。訓練集會被進一步劃分為k-fold?;A(chǔ)模型在k-1部分進行訓練,在k??部分進行預測。這個過程被反復迭代,直到每一折都被預測出來。然后將基本模型擬合到整個數(shù)據(jù)集,并計算性能。這個過程也適用于其他基本模型。

來自訓練集的預測被用作構(gòu)建第二層或元模型的特征。這個第二級模型用于預測測試集。

 from sklearn.neighbors import KNeighborsClassifier
 from sklearn.tree import DecisionTreeClassifier
 from sklearn.svm import SVC
 from sklearn.linear_model import LogisticRegression
 from sklearn.ensemble import StackingClassifier
 
 base_learners = [
                  ('l1', KNeighborsClassifier()),
                  ('l2', DecisionTreeClassifier()),
                  ('l3',SVC(gamma=2, C=1)))
                ]
 model = StackingClassifier(estimators=base_learners, final_estimator=LogisticRegression(),cv=5)
 model.fit(X_train, y_train)


Blending

Blending是從Stacking派生出來另一種形式的集成學習技術(shù),兩者之間的唯一區(qū)別是它使用來自一個訓練集的保留(驗證)集來進行預測。簡單地說,預測只針對保留的數(shù)據(jù)集。保留的數(shù)據(jù)集和預測用于構(gòu)建第二級模型。

49c731d6-4f2b-11ed-b116-dac502259ad0.png

 import numpy as np
 from sklearn.datasets import make_classification
 from sklearn.model_selection import train_test_split
 from sklearn.metrics import accuracy_score
 
 ## Base Models
 from sklearn.neighbors import KNeighborsClassifier
 from sklearn.tree import DecisionTreeClassifier
 from sklearn.svm import SVC
 
 ## Meta Learner
 from sklearn.linear_model import LogisticRegression
 
 ## Creating Sample Data
 X,y = make_classification(n_samples=10000, n_features=20, n_informative=15, n_redundant=5, random_state=42)
 
 ## Training a Individual Logistic Regression Model
 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
 logrec = LogisticRegression()
 logrec.fit(X_train,y_train)
 pred = logrec.predict(X_test)
 score = accuracy_score(y_test, pred)
 print('Base Model Accuracy: %.3f' % (score*100))
 
 ## Defining Base Models
 def base_models():
  models = list()
  models.append(('knn', KNeighborsClassifier()))
  models.append(('dt', DecisionTreeClassifier()))
  models.append(('svm', SVC(probability=True)))
  return models
 
 ## Fitting Ensemble Blending Model
 ## Step 1:Splitting Data Into Train, Holdout(Validation) and Test Sets
 X_train_full, X_test, y_train_full, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
 X_train, X_val, y_train, y_val = train_test_split(X_train_full, y_train_full, test_size=0.33, random_state=1)
 
 ## Step 2: train base models on train set and make predictions on validation set
 models = base_models()
 meta_X = list()
 for name, model in models:
    # training base models on train set
 model.fit(X_train, y_train)
 # predict on hold out set
 yhat = model.predict_proba(X_val)
    # storing predictions
 meta_X.append(yhat)
 # horizontal stacking predictions
 meta_X = np.hstack(meta_X)
 
 ## Step 3: Creating Blending Meta Learner
 blender = LogisticRegression()
 ## training on base model predictions
 blender.fit(meta_X, y_val)
 
 ## Step 4: Making predictions using blending meta learner
 meta_X = list()
 for name, model in models:
  yhat = model.predict_proba(X_test)
  meta_X.append(yhat)
 meta_X = np.hstack(meta_X)
 y_pred = blender.predict(meta_X)
 
 # Evaluate predictions
 score = accuracy_score(y_test, y_pred)
 print('Blending Accuracy: %.3f' % (score*100))
 ---------------------------------
 Base Model Accuracy: 82.367
 Blending Accuracy: 96.733

總結(jié)

在閱讀完本文之后,您可能想知道是否有選擇一個更好的模型最好的方法或者如果需要的話,使用哪種集成技術(shù)呢?

在這個問題時,我們總是建議從一個簡單的個體模型開始,然后使用不同的建模技術(shù)(如集成學習)對其進行測試。在某些情況下,單個模型可能比集成模型表現(xiàn)得更好,甚至好很多。

需要說明并且需要注意的一點是:集成學習絕不應該是第一選擇,而應該是最后一個選擇。原因很簡單:訓練一個集成模型將花費很多時間,并且需要大量的處理能力。

回到我們的問題,集成模型旨在通過組合同一類別的幾個基本模型來提高模型的可預測性。每種集成技術(shù)都是最好的,有助于提高模型性能。

如果你正在尋找一種簡單且易于實現(xiàn)的集成方法,那么應該使用Voting。如果你的數(shù)據(jù)有很高的方差,那么你應該嘗試Bagging。如果訓練的基礎(chǔ)模型在模型預測中有很高的偏差,那么可以嘗試不同的Boosting技術(shù)來提高準確性。如果有多個基礎(chǔ)模型在數(shù)據(jù)上表現(xiàn)都很好好,并且不知道選擇哪一個作為最終模型,那么可以使用Stacking 或Blending的方法。當然具體哪種方法表現(xiàn)得最好還是要取決于數(shù)據(jù)和特征分布。

最后集成學習技術(shù)是提高模型精度和性能的強大工具,它們很容易減少數(shù)據(jù)過擬合和欠擬合的機會,尤其在參加比賽時這是提分的關(guān)鍵。

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

    關(guān)注

    66

    文章

    8554

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    機器學習特征工程:分類變量的數(shù)值化處理方法

    編碼是機器學習流程里最容易被低估的環(huán)節(jié)之一,模型沒辦法直接處理文本形式的分類數(shù)據(jù),尺寸(Small/Medium/Large)、顏色(Red/Blue/Green)、城市、支付方式等都是典型的分類
    的頭像 發(fā)表于 02-10 15:58 ?346次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>特征工程:分類變量的數(shù)值化處理<b class='flag-5'>方法</b>

    強化學習會讓自動駕駛模型學習更快嗎?

    是一種讓機器通過“試錯”學會決策的辦法。與監(jiān)督學習不同,監(jiān)督學習是有人提供示范答案,讓模型去模仿;而強化學習不會把每一步的“正確答案”都告訴
    的頭像 發(fā)表于 01-31 09:34 ?656次閱讀
    強化<b class='flag-5'>學習</b>會讓自動駕駛<b class='flag-5'>模型</b><b class='flag-5'>學習</b>更快嗎?

    機器學習和深度學習中需避免的 7 個常見錯誤與局限性

    無論你是剛?cè)腴T還是已經(jīng)從事人工智能模型相關(guān)工作一段時間,機器學習和深度學習中都存在一些我們需要時刻關(guān)注并銘記的常見錯誤。如果對這些錯誤置之不理,日后可能會引發(fā)諸多麻煩!只要我們密切關(guān)注
    的頭像 發(fā)表于 01-07 15:37 ?206次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>和深度<b class='flag-5'>學習</b>中需避免的 7 個常見錯誤與局限性

    基于ETAS嵌入式AI工具鏈將機器學習模型部署到量產(chǎn)ECU

    AI在汽車行業(yè)的應用日益深化,如何將機器學習領(lǐng)域的先進模型(如虛擬傳感器)集成到ECU軟件中,已成為業(yè)界面臨的核心挑戰(zhàn)。
    的頭像 發(fā)表于 12-24 10:55 ?6132次閱讀
    基于ETAS嵌入式AI工具鏈將<b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>模型</b>部署到量產(chǎn)ECU

    復合機器人3C行業(yè)集成方案:智能制造的創(chuàng)新引擎

    在3C行業(yè)競爭日益激烈的今天,企業(yè)對生產(chǎn)效率、柔性制造和智能化水平提出了更高要求。富唯智能推出的復合機器人3C行業(yè)集成方案,正是針對這一需求而設(shè)計的先進解決方案。該方案集協(xié)作機器人、移動機器
    的頭像 發(fā)表于 09-04 17:44 ?943次閱讀
    復合<b class='flag-5'>機器</b>人3C行業(yè)<b class='flag-5'>集成方</b>案:智能制造的創(chuàng)新引擎

    如何使用單片機直接輸出4-20mA?GP210高集成方案。

    如何使用單片機直接輸出4-20mA?GP210高集成方案。
    的頭像 發(fā)表于 08-15 17:30 ?1247次閱讀
    如何使用單片機直接輸出4-20mA?GP210高<b class='flag-5'>集成方</b>案。

    超小型Neuton機器學習模型, 在任何系統(tǒng)級芯片(SoC)上解鎖邊緣人工智能應用.

    Neuton 是一家邊緣AI 公司,致力于讓機器 學習模型更易于使用。它創(chuàng)建的模型比競爭對手的框架小10 倍,速度也快10 倍,甚至可以在最先進的邊緣設(shè)備上進行人工智能處理。在這篇博文
    發(fā)表于 07-31 11:38

    FPGA在機器學習中的具體應用

    隨著機器學習和人工智能技術(shù)的迅猛發(fā)展,傳統(tǒng)的中央處理單元(CPU)和圖形處理單元(GPU)已經(jīng)無法滿足高效處理大規(guī)模數(shù)據(jù)和復雜模型的需求。FPGA(現(xiàn)場可編程門陣列)作為一種靈活且高效的硬件加速平臺
    的頭像 發(fā)表于 07-16 15:34 ?2907次閱讀

    通過NVIDIA Cosmos模型增強機器人學習

    通用機器人的時代已經(jīng)到來,這得益于機械電子技術(shù)和機器人 AI 基礎(chǔ)模型的進步。但目前機器人技術(shù)的發(fā)展仍面臨一個關(guān)鍵挑戰(zhàn):機器人需要大量的訓練
    的頭像 發(fā)表于 07-14 11:49 ?1100次閱讀
    通過NVIDIA Cosmos<b class='flag-5'>模型</b>增強<b class='flag-5'>機器人學習</b>

    模型推理顯存和計算量估計方法研究

    方法。 一、引言 大模型推理是指在已知輸入數(shù)據(jù)的情況下,通過深度學習模型進行預測或分類的過程。然而,大模型的推理過程對顯存和計算資源的需求較
    發(fā)表于 07-03 19:43

    邊緣計算中的機器學習:基于 Linux 系統(tǒng)的實時推理模型部署與工業(yè)集成

    你好,旅行者!歡迎來到Medium的這一角落。在本文中,我們將把一個機器學習模型(神經(jīng)網(wǎng)絡)部署到邊緣設(shè)備上,利用從ModbusTCP寄存器獲取的實時數(shù)據(jù)來預測一臺復古音頻放大器的當前健康狀況。你將
    的頭像 發(fā)表于 06-11 17:22 ?1010次閱讀
    邊緣計算中的<b class='flag-5'>機器</b><b class='flag-5'>學習</b>:基于 Linux 系統(tǒng)的實時推理<b class='flag-5'>模型</b>部署與工業(yè)<b class='flag-5'>集成</b>!

    【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】視覺實現(xiàn)的基礎(chǔ)算法的應用

    : 一、機器人視覺:從理論到實踐 第7章詳細介紹了ROS2在機器視覺領(lǐng)域的應用,涵蓋了相機標定、OpenCV集成、視覺巡線、二維碼識別以及深度學習目標檢測等內(nèi)容。通過
    發(fā)表于 05-03 19:41

    【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】機器人入門的引路書

    的限制和調(diào)控) 本書還有很多前沿技術(shù)項目的擴展 比如神經(jīng)網(wǎng)絡識別例程,機器學習圖像識別的原理,yolo圖像追蹤的原理 機器學習訓練三大點: 先準備一個基本的
    發(fā)表于 04-30 01:05

    國產(chǎn)地物光譜儀在“高光譜-機器學習模型構(gòu)建中的表現(xiàn)

    在遙感應用和環(huán)境監(jiān)測日益精細化的今天,“高光譜 + 機器學習”的組合已成為地物識別、礦產(chǎn)探測、農(nóng)業(yè)監(jiān)測等領(lǐng)域的重要技術(shù)手段。而作為獲取高光譜數(shù)據(jù)的前端工具,地物光譜儀的性能直接影響到后續(xù)模型的精度
    的頭像 發(fā)表于 04-18 16:15 ?750次閱讀
    國產(chǎn)地物光譜儀在“高光譜-<b class='flag-5'>機器</b><b class='flag-5'>學習</b>”<b class='flag-5'>模型</b>構(gòu)建中的表現(xiàn)

    十大鮮為人知卻功能強大的機器學習模型

    本文轉(zhuǎn)自:QuantML當我們談論機器學習時,線性回歸、決策樹和神經(jīng)網(wǎng)絡這些常見的算法往往占據(jù)了主導地位。然而,除了這些眾所周知的模型之外,還存在一些鮮為人知但功能強大的算法,它們能夠以驚人的效率
    的頭像 發(fā)表于 04-02 14:10 ?1100次閱讀
    十大鮮為人知卻功能強大的<b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>模型</b>