促進機器學習:什麼是、功能、類型和特徵
已發表: 2020-05-29機器學習的提升是一個重要的話題。 許多分析師對這個術語的含義感到困惑。 這就是為什麼在本文中,我們將了解機器學習提升的含義及其工作原理。 Boosting 有助於 ML 模型提高其預測準確性。 讓我們詳細討論一下這個算法:
目錄
什麼是機器學習的提升?
在我們討論“機器學習提升”之前,我們應該首先考慮這個術語的定義。 Boosting 的意思是“鼓勵或幫助某事改進”。 機器學習提升與賦予機器學習模型能力並提高其準確性完全相同。 由於這個原因,它是數據科學中一種流行的算法。
ML 中的 Boosting 是指將弱學習模型轉換為強學習模型的算法。 假設我們必須將電子郵件分類為“垃圾郵件”和“非垃圾郵件”類別。 我們可以採取以下方法來進行這些區分:
- 如果電子郵件只有一個圖像文件,則它是垃圾郵件(因為圖像通常是宣傳性的)
- 如果電子郵件包含類似於“您中了彩票”的短語,則它是垃圾郵件。
- 如果電子郵件只包含一堆鏈接,那就是垃圾郵件。
- 如果電子郵件來自我們聯繫人列表中的來源,則它不是垃圾郵件。
現在,即使我們有分類規則,您認為它們是否足夠強大,可以單獨識別電子郵件是否為垃圾郵件? 他們不是。 就個人而言,這些規則很薄弱,不足以將電子郵件分類為“非垃圾郵件”或“垃圾郵件”。 我們需要讓它們更強大,我們可以通過使用加權平均值或考慮更高投票的預測來做到這一點。
因此,在這種情況下,我們有五個分類器,其中三個分類器將電子郵件標記為“垃圾郵件”,因此,我們默認將電子郵件視為“垃圾郵件”,因為該類的投票率高於“非垃圾郵件”類別。
這個例子是為了讓你了解什麼是提升算法。 它們比這更複雜。

看看: 25 個機器學習面試問題和答案
它們是如何工作的?
上面的例子向我們展示了 boosting 結合了弱學習器來形成嚴格的規則。 那麼,您將如何識別這些弱規則呢? 要找到不確定的規則,您必須使用基於實例的學習算法。 每當您應用基礎學習算法時,它都會產生弱預測規則。 您將重複此過程進行多次迭代,並且在每次迭代中,boosting 算法將結合弱規則以形成強規則。
提升算法通過幾個步驟為每次迭代選擇正確的分佈。 首先,它將接受所有不同的分配並賦予它們相同的權重。 如果第一個基礎學習算法出錯,它將為這些觀察增加更多權重。 分配權重後,我們進入下一步。
在這一步中,我們將不斷重複該過程,直到我們提高算法的準確性。 然後,我們將結合弱學習器的輸出並創建一個強大的學習器,以增強我們的模型並幫助它做出更好的預測。 提升算法更多地關注由於規則薄弱而導致高錯誤的假設。
了解更多:機器學習的 5 個突破性應用
不同種類的提升算法
Boosting 算法可以使用多種底層引擎,包括margin-maximizers、decision stamps 等。 主要有三種類型的機器學習提升算法:
- 自適應提升(也稱為 AdaBoosta)
- 梯度提升
- XGBoost
我們將在本文中簡要討論前兩個,AdaBoost 和 Gradient Boosting。 XGBoost 是一個複雜得多的話題,我們將在另一篇文章中討論。
1. 自適應提升
假設你有一個有五個優點和五個缺點的盒子。 你的任務是對它們進行分類並將它們放在不同的表中。
在第一次迭代中,您為每個數據點分配相等的權重並在框中應用決策樹樁。 但是,該生產線僅將兩個加號從該組中分離出來,而所有其他加號則保持在一起。 您的決策樹樁(這是一條穿過我們假設的框的線)未能正確預測所有數據點,並且已將三個加號與減號放在一起。

在下一次迭代中,我們為之前錯過的三個加號分配了更多的權重; 但這一次,決策樹樁只與小組分開了兩分鐘。 我們將為我們在此迭代中遺漏的缺點分配更多權重並重複該過程。 經過一兩次重複後,我們可以將其中的一些結果結合起來產生一個嚴格的預測規則。
AdaBoost 就是這樣工作的。 它首先使用原始數據進行預測,並為每個點分配相等的權重。 然後它更加重視第一個學習者未能正確預測的觀察結果。 它重複該過程,直到達到模型準確性的極限。
您可以在 Adaboost 中使用決策標記以及其他機器學習算法。
這是 Python 中的 AdaBoost 示例:
從 sklearn.ensemble 導入 AdaBoostClassifier
從 sklearn.datasets 導入 make_classification
X,Y = make_classification(n_samples=100, n_features=2, n_informative=2,
n_redundant=0, n_repeated=0, random_state=102)
clf = AdaBoostClassifier(n_estimators=4, random_state=0, algorithm='SAMME')
clf.fit(X, Y)
2. 梯度提升
Gradient Boosting 使用梯度下降的方法來降低整個操作的損失函數。 梯度下降是一種一階優化算法,可以找到函數(可微函數)的局部最小值。 梯度提升順序訓練多個模型,它可以擬合新模型以獲得更好的響應估計。
它構建了新的基礎學習器,可以與損失函數的負梯度相關聯並連接到整個系統。 在 Python 中,您必須使用 Gradient Tree Boosting(也稱為 GBRT)。 您可以將其用於分類和回歸問題。
這是 Python 中梯度樹提升的示例:
從 sklearn.ensemble 導入 GradientBoostingRegressor
模型 = GradientBoostingRegressor(n_estimators=3,learning_rate=1)
模型.fit(X,Y)
# 用於分類
從 sklearn.ensemble 導入 GradientBoostingClassifier
模型 = GradientBoostingClassifier()

模型.fit(X,Y)
機器學習中 Boosting 的特點
Boosting 提供了許多優點,並且與任何其他算法一樣,它也有其局限性:
- 解釋 boosting 的預測是很自然的,因為它是一個集成模型。
- 它隱式地選擇特徵,這是該算法的另一個優點。
- boosting 算法的預測能力比決策樹和 bagging 更可靠。
- 放大它有點棘手,因為 boosting 中的每個估計器都基於前面的估計器。
另請閱讀:面向初學者的機器學習項目創意
然後去哪兒?
我們希望您發現這篇關於提升的文章很有用。 首先,我們討論了這個算法是什麼以及它如何解決機器學習問題。 然後我們看了一下它的操作以及它是如何操作的。
我們還討論了它的各種類型。 我們在分享他們的例子時發現了 AdaBoost 和 Gradient Boosting。 如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和人工智能 PG 文憑,該文憑專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT- B 校友身份、5 個以上實用的實踐頂點項目和頂級公司的工作協助。
如何簡單地定義機器學習的提升?
機器中的提升包括參考有助於將學習的弱模型轉換為強模型的算法。 如果我們以將電子郵件分類為垃圾郵件而不是垃圾郵件為例,則可以使用某些區別使其更易於理解。 當一封電子郵件只有一個文件、包含類似“您中了彩票”之類的短語、包含一堆鏈接並且來自聯繫人列表時,就可以接近這些區別。
提升算法如何工作?
通過使用基於實例的學習算法來識別弱規則。 一旦基礎學習算法在多次迭代中應用,它最終將弱規則組合成一個強規則。 提升算法為通過多個步驟分配每個迭代做出了正確的選擇。 在進行分配後,它分配相同的權重,直到出現錯誤,然後分配更多的權重。 重複此過程,直到獲得更好的準確性。 此後,將所有弱輸出組合成強輸出。
有哪些不同類型的提升算法及其功能?
不同的類型是自適應提升、梯度提升和 XGBoost。 Boosting 具有隱式選擇特徵等特性。 決策樹的可靠性不如預測能力。 此外,擴展更難,因為估計器是基於前面的。 解釋 boost 的預測是很自然的,因為它是一個集成模型。