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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

來源:DeepHub IMBA

作者:Abhay Parashar


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

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

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

總結起來,集成學習有以下的優點:

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

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

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

Voting

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

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

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

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

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

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

 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是采用幾個弱機器學習模型,并將它們的預測聚合在一起,以產生最佳的預測。它基于bootstrap aggregation,bootstrap 是一種使用替換方法從集合中抽取隨機樣本的抽樣技術。aggregation則是利用將幾個預測結合起來產生最終預測的過程。

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

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

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

 ## 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

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

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

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

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

 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年提出的集成技術的一種形式,目的是通過使用不同的泛化器來減少錯誤。

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

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

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

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

 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派生出來另一種形式的集成學習技術,兩者之間的唯一區別是它使用來自一個訓練集的保留(驗證)集來進行預測。簡單地說,預測只針對保留的數據集。保留的數據集和預測用于構建第二級模型。

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

總結

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

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

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

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

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

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

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

    關注

    66

    文章

    8507

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    機器學習模型市場前景如何

    當今,隨著算法的不斷優化、數據量的爆炸式增長以及計算能力的飛速提升,機器學習模型的市場前景愈發廣闊。下面,AI部落小編將探討機器學習
    的頭像 發表于 02-13 09:39 ?384次閱讀

    傳統機器學習方法和應用指導

    用于開發生物學數據的機器學習方法。盡管深度學習(一般指神經網絡算法)是一個強大的工具,目前也非常流行,但它的應用領域仍然有限。與深度學習相比,傳統
    的頭像 發表于 12-30 09:16 ?1238次閱讀
    傳統<b class='flag-5'>機器</b><b class='flag-5'>學習方法</b>和應用指導

    【「具身智能機器人系統」閱讀體驗】2.具身智能機器人大模型

    。 多模態融合的創新與突破 機器人控制技術的另一個重要突破在于多模態大模型的應用。相比于僅通過文字進行人機交互的傳統方法,現代機器人能夠融合視覺、聲音、定位等多模態輸入信息,為任務執行
    發表于 12-29 23:04

    【「具身智能機器人系統」閱讀體驗】1.全書概覽與第一章學習

    非常感謝電子發燒友提供的這次書籍測評活動!最近,我一直在學習模型和人工智能的相關知識,深刻體會到機器人技術是一個極具潛力的未來方向,甚至可以說是推動時代變革的重要力量。能參與這次活動并有機會深入
    發表于 12-27 14:50

    《具身智能機器人系統》第7-9章閱讀心得之具身智能機器人與大模型

    醫療領域,手術輔助機器人需要毫米級的精確控制,書中有介紹基于視覺伺服的實時控制算法,以及如何利用大模型優化手術路徑規劃。工業場景中,協作機器人面臨的主要挑戰是快速適應新工藝流程。具身智能通過在線
    發表于 12-24 15:03

    PWM信號生成方法 PWM調制原理講解

    PWM(脈沖寬度調制,Pulse Width Modulation)是一種重要的模擬信號電平數字編碼方法,在電子技術和控制領域具有廣泛應用。以下是對PWM信號生成方法和PWM調制原理的介紹: PWM
    的頭像 發表于 11-28 16:34 ?4909次閱讀

    什么是機器學習?通過機器學習方法能解決哪些問題?

    來源:Master編程樹“機器學習”最初的研究動機是讓計算機系統具有人的學習能力以便實現人工智能。因為沒有學習能力的系統很難被認為是具有智能的。目前被廣泛采用的
    的頭像 發表于 11-16 01:07 ?991次閱讀
    什么是<b class='flag-5'>機器</b><b class='flag-5'>學習</b>?通過<b class='flag-5'>機器</b><b class='flag-5'>學習方法</b>能解決哪些問題?

    LLM和傳統機器學習的區別

    在人工智能領域,LLM(Large Language Models,大型語言模型)和傳統機器學習是兩種不同的技術路徑,它們在處理數據、模型結構、應用場景等方面有著顯著的差異。 1.
    的頭像 發表于 11-08 09:25 ?1961次閱讀

    AI大模型與深度學習的關系

    AI大模型與深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大模型的基礎 技術支撐 :深度學習
    的頭像 發表于 10-23 15:25 ?2960次閱讀

    AI大模型與傳統機器學習的區別

    AI大模型與傳統機器學習在多個方面存在顯著的區別。以下是對這些區別的介紹: 一、模型規模與復雜度 AI大模型 :通常包含數十億甚至數萬億的參
    的頭像 發表于 10-23 15:01 ?2660次閱讀

    萬界星空科技MES數據的集成方

    MES系統與其他系統常見的集成方式。根據實際需求和系統環境,選擇適合的集成方式可以實現不同系統之間的協同工作,提高生產效率和管理水平。具體的集成方式可能因企業和行業的不同而有所差異。
    的頭像 發表于 10-09 15:30 ?408次閱讀
    萬界星空科技MES數據的<b class='flag-5'>集成方</b>式

    常用的devops工具集成方法

    常用的devops工具集成方法涵蓋了軟件開發和運維的各個方面,從版本控制到自動化構建、測試、部署和監控。這些工具的有效集成可以幫助團隊提高協作效率,減少溝通障礙,實現快速、高質量的軟件交付。
    的頭像 發表于 10-09 11:21 ?562次閱讀

    【《大語言模型應用指南》閱讀體驗】+ 基礎知識學習

    一些局限性。例如,模型可能無法完全理解文本中的深層含義和語境信息;同時,由于訓練數據可能存在偏差和噪聲,生成的答案也可能存在不準確或誤導性的情況。 總結以下,大語言模型通過深度學習
    發表于 08-02 11:03
    主站蜘蛛池模板: 娇妻玩4P被三个男人伺候电影 | bl高h乱肉辣文 | xxx日本免费 | 高清撒尿hdtube撒尿 | 亚洲精品中文字幕在线 | 亚洲欧美国产综合在线一区 | 宅男午夜大片又黄又爽大片 | 97国产蝌蚪视频在线观看 | 手机在线看片欧美亚洲 | 成人国产在线24小时播放视频 | 青春草久久 | 李丽莎与土豪50分钟在线观看 | va亚洲va天堂va视频在线 | 欧美精品专区第1页 | 久久热在线视频精品店 | 快穿女主有名器的H纯肉黄暴拉文 | 色吧.com | 国产精品无码中文在线AV | 成人在线免费 | 最美白嫩的极品美女ASSPICS | a级毛片黄免费a级毛片 | 中文国产成人精品久久免费 | 亚洲欧洲日产国码久在线 | 亚洲另类国产综合在线 | 俄罗斯aaaa一级毛片 | 恋夜影视列表免费安卓手机版 | 玩两个少妇女邻居 | 暖暖视频在线高清播放 | 嫩草亚洲国产精品 | 91久久精品一区二区三区 | 亚洲精品免费在线视频 | 国产电影午夜成年免费视频 | 亚洲人日本人jlzzy | 中文字幕精品在线观看 | 亚洲国产精品嫩草影院 | 美国一级黄色 | 亚洲娇小性色xxxx | 国产传媒精品1区2区3区 | 日本久久中文字幕精品 | 国语对白老女人8av 国语对白刺激真实精品 | 亚洲午夜精品A片久久WWW软件 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品