機器學習十大經典算法之AdaBoost

2020-12-13 人工智慧cv

集成學習Boosting

集成學習大致可分為兩大類:

Bagging

Boosting

。Bagging一般使用強學習器,其個體學習器之間不存在強依賴關係,容易並行。Boosting則使用弱分類器,其個體學習器之間存在強依賴關係,是一種序列化方法。Bagging主要關注降低方差,而Boosting主要關注降低偏差。Boosting是一族算法,其主要目標為將弱學習器「提升」為強學習器,大部分Boosting算法都是根據前一個學習器的訓練效果對樣本分布進行調整,再根據新的樣本分布訓練下一個學習器,如此迭代M次,最後將一系列弱學習器組合成一個強學習器。而這些Boosting算法的不同點則主要體現在每輪樣本分布的調整方式上。

AdaBoost原理簡介

AdaBoost算法是

Adaptive Boost

的簡稱,Boosting通過將一系列弱學習器組合起來,通過集成這些弱學習器的學習能力,得到一個強學習器。具體到AdaBoost算法,AdaBoost在之前學習器的基礎上改變樣本的權重,增加那些之前被分類錯誤的樣本的比重,降低分類正確樣本的比重,這樣之後的學習器將重點關注那些被分類錯誤的樣本。最後通過將這些學習器通過加權組合成一個強學習器,具體的,分類正確率高的學習器權重較高,分類正確率低的學習器權重較低。

AdaBoost 算法流程

輸入:訓練集 ,訓練輪數T,和一個基學習算法L。首先,讓所有數據的權重都為 然後,對於每一輪的train過程,得到一個基學習器 計算這個基學習器 在訓練數據集D上的誤差 如果這個誤差大於0.5,那麼直接停止本輪的train,進行下一輪;計算此輪基學習器在最終的模型中所佔的權重 對於在這一輪基學習器中做錯的樣本和做對的樣本進行調整: 上述中的 是一個規範化因子;一般,以確保所有的構成一個分布;最終,得到ensemble後的model為

動手實踐

在 Python 環境下使用 Adaboost 進行手寫數字識別。

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.ensemble import AdaBoostClassifier

from sklearn.tree import DecisionTreeClassifier

from sklearn.metrics import accuracy_score

from sklearn.model_selection import cross_val_score

from sklearn.model_selection import cross_val_predict

from sklearn.model_selection import train_test_split

from sklearn.model_selection import learning_curve

from sklearn.datasets import load_digits

首先,載入數據

dataset = load_digits()

X = dataset['data']

y = dataset['target']

X 包含長度為 64 的數組,它們代表了簡單的 8x8 的平面圖像。使用該數據集的目的是為了完成手寫數字識別任務。下圖為一個給定的手寫數字的示例:

如果我們堅持使用深度為 1 的決策樹分類器(決策樹樁),以下是如何在這種情況下實現 AdaBoost 分類器:

reg_ada = AdaBoostClassifier(DecisionTreeClassifier(max_depth=1))

scores_ada = cross_val_score(reg_ada, X, y, cv=6)

scores_ada.mean()

這樣得到的分類準確率的結果應該約為 26%,還具有很大的提升空間。其中一個關鍵的參數是序列決策樹分類器的深度。那麼,決策樹的深度如何變化才能提高分類準確率呢?

core = []

for depth in [1,2,10] :

reg_ada = AdaBoostClassifier(DecisionTreeClassifier(max_depth=depth))

scores_ada = cross_val_score(reg_ada, X, y, cv=6)

score.append(scores_ada.mean())

在這個簡單的例子中,當決策樹的深度為 10 時,分類器得到了最高的分類準確率 95.8%。

相關焦點

  • 選擇Spark機器學習API的四大機器學習算法,你掌握了多少?
    Oliver翻譯 丨 雨言編輯註:本文簡要介紹了四種經典的機器學習算法。本文將簡要介紹Spark機器學習庫(Spark MLlib’s APIs)的各種機器學習算法,主要包括:統計算法、分類算法、聚類算法和協同過濾算法,以及各種算法的應用。你不是一個數據科學家。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    可以說這並不是一個正式的項目,只是用來做一個簡單的展示,用於給初次接觸機器學習的讀者快速了解機器學習的過程和結果。1 機器學習中的Hello World頂目學習編程時,往往我們的第一句代碼就是print(「Hello World」),而接下來的這個數據集,可以說得上是機器學習中的Hello World頂目,入門學習機器學習的過程中最常見的一個數據集。
  • 機器學習十大經典算法之隨機森林
    在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類(對於分類算法),然後看看哪一類被選擇最多,就預測這個樣本為那一類。隨機森林可以用來進行無監督學習聚類和異常點檢測。決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。但是如果你只是在尋找一個「足夠好」的算法來解決你的問題,或者這裡有些技巧可以參考,下面來分析下各個算法的優缺點,基於算法的優缺點,更易於我們去選擇它。天下沒有免費的午餐在機器學習領域,一個基本的定理就是「沒有免費的午餐」。
  • 不囉嗦,上代碼——機器學習經典實例
    當然也是在Google、StackOverflow、GitHub網站上找不到答案之後,無可奈何之舉。編程書把看著複雜的知識寫得更複雜,雖然大多篇幅不輸「飛雪連天射白鹿,笑書神俠倚碧鴛」等經典,且綱舉目張、圖文並茂,甚至有作者愛引經據典,卻極少有令人拍案的驚奇之處。為什麼同樣是文以載道,編程書卻不能像武俠小說一樣簡單具體,反而顯得了無生趣,令人望而卻步?
  • 深入了解4大熱門機器學習算法
    圖源:unsplash機器學習已然成為許多領域的大熱詞。但其實,真正了解機器學習的人還是少數,大多數人屬於以下兩個陣營:· 不懂機器學習算法;· 知道算法是如何工作的,但不知道為什麼會工作。因此,本文試圖闡述算法的工作流程和內容,盡力直觀地解釋其中的工作原理,希望能讓你對此有豁然開朗之感。
  • 可用於水下形成清晰圖像的機器學習算法,高度還原拍照顏色與亮度
    打開APP 可用於水下形成清晰圖像的機器學習算法,高度還原拍照顏色與亮度 大萌、夏雅薇 發表於 2020-01-17 13:50:22
  • Python 機器學習庫 Top 10,你值得擁有!
    下面我們就來探索一下機器學習領域中最受歡迎的十大框架或工具庫:Tensorflow如果你正在使用 Python 來從事機器學習項目,那麼你一定聽說過其中一個著名的框架——Tensorflow。Tensorflow 框架主要由 Google 大腦團隊開發,主要用於深度學習計算。幾乎所有的 Google 機器學習應用都使用了它。
  • python機器學習之使用scikit-learn庫
    scikit-learning庫python庫scikit-learn整合了多種機器學習算法。2007年,Cournapeu開始開發這個庫,但是直到2010年才發布它的第一個版本。這個庫是SciPy(scientific Python,python科學計算)工具集的一部分,該工具集包含多個為科學計算尤其是數據分析而開發的庫。
  • 李飛飛推薦:一篇文章幫你糾正十個機器學習誤區
    ----李飛飛在柯潔和阿爾法狗大戰熱忱之時,李飛飛在推特推薦了一篇文章說明機器學習的十大誤區,並說:機器快速,準確但有點「笨」,而人緩慢,不精準卻充滿創造力!  然而機器學習現在已然登上了頭版頭條,成為了被熱烈討論的話題!機器學習算法可以駕駛車輛,可以翻譯演講,贏得危險邊緣遊戲(哥倫比亞廣播公司益智問答遊戲節目)!我們不由自主會問:「他們到底能做什麼不能做到什麼?他們會是隱私、工作甚至是人類消失的開始呢?」
  • 優化算法系列之模擬退火算法(1)
    模擬退火算法是所謂三大非經典算法之一,它脫胎於自然界的物理過程,與優化問題相結合。在百度百科上對於模擬退火算法的定義是:模擬退火算法來源於固體退火原理,是一種基於概率的算法,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。
  • 推薦Python十大經典練手項目,讓你的Python技能點全亮!
    因此,為了解決廣大想入坑Python或者已經在坑中的PY友們,我耗費了整整十幾個小時,整理出十大Python經典就業練手項目,項目貼合企業用人標準。友情提示:前半部分僅適合PY的小白同學瀏覽觀看,如對有大量項目經驗的老鳥造成觀看不適,並伴隨噁心想吐者,可直接略過前面1/3的內容。文章底部還有彩蛋最關鍵!
  • 機器學習之父Michael I. Jordan 親臨2018全球機器學習技術大會
    Jordan(麥可.喬丹)要來了,不是籃球界的飛人喬丹,是機器學習界的開山鼻祖、人工智慧領域根目錄的人物之一;是機器學習領域唯一一位獲得美國科學院、美國工程院、美國藝術與科學院三院院士成就的科學家;是伯克利大學的著名機器學習實驗室AMP Lab的聯席主任。
  • 陳天奇|機器學習科研的十年
    焦慮的我開始打算換一個方向,因為RBM當時有一個比較經典的文章應用在了推薦系統上,我開始接觸推薦系統和kddcup。比較幸運的是,這一次我並沒有把RBM作為唯一的一個方法,而是更加廣泛地去看了推薦系統中的矩陣分解類的算法,並且在實驗室搭建了一個比較泛用的矩陣分解系統。推薦系統方向的耕耘逐漸有了收穫,我們在兩年KDDCup11中獲得了不錯的成績。
  • 機器學習團隊常用工具總結,人生苦短,我用Python!
    機器學習工具,初創公司最愛哪款?   近日,Reddit上一則帖子火了:發帖者詳細總結了近幾年初創公司的機器學習團隊在各個環節使用的機器學習工具,從軟體開發設置IDE,機器學習框架,到實驗管理,可視化工具等等。   評論區也一片火爆,大家紛紛作出補充,極大的豐富了現有最新主流資源。
  • Python機器學習的迷你課程(14天教學)
    這意味著你知道機器學習的基礎知識,比如交叉驗證、一些算法和偏方差權衡。這並不意味著你是一個機器學習博士,只是你知道地標或者知道去哪裡查找它們。這個迷你課程既不是關於Python的教科書,也不是關於機器學習的教科書。
  • 威盛創造慄AI Learn More 首個青少年機器學習教學平臺正式推出
    學生們可以通過簡單的硬體操作、圖形化神經網絡編程模塊,完成數據採集、特徵提取、模型訓練、圖像識別等任務,從而了解並初步掌握機器學習的基本原理、算法和應用,使機器學習的教學在中小學落地成為可能。威盛創造慄機器學習教學平臺的推出,高度契合了高中新課標中「人工智慧初步」的教學要求,尤其是將其中「簡單人工智慧應用模塊開發」的教學任務,進行了難度降維。不但讓學生輕鬆掌握機器學習中的神經網絡等主流算法,實現從簡單到複雜的模型訓練,更把機器學習中的經典分類實驗,如cifar10,在短短幾分鐘內,就能試驗成功。大大降低了機器學習的難度,真正實現將機器學習在中小學落地教學。
  • 深入淺出機器學習的基本原理與基礎概念
    這一過程在人工智慧中的實現就是 機器學習。從形式化角度定義,如果算法利用某些經驗使自身在特定任務類上的性能得到改善,就可以說該算法實現了機器學習。而從方法論的角度看,機器學習是計算機基於數據構建概率統計模型並運用模型對數據進行預測與分析的學科。機器學習可說是從數據中來,到數據中去。
  • 威斯康辛大學《機器學習導論》2020秋季課程完結,課件、視頻資源已...
    機器之心報導編輯:蛋醬對於機器學習領域的初學者來說,這會是很好的入門課程。目前,課程的筆記、PPT 和視頻正在陸續發布中。課程總共由七個部分組成:第一部分:簡介L01:什麼是機器學習1.1 課程概述:「Stat 451:機器學習導論(FS 2020)」的簡介1.2 什麼是機器學習:機器學習的定義,以及機器學習與編程的關係1.3 機器學習的類別:討論了機器學習的三大類
  • 劉鐵巖談機器學習:隨波逐流的太多,我們需要反思
    這些成果推動了機器學習領域的飛速發展,但這並不意味著機器學習領域已經非常成熟,事實上仍然存在非常大的技術挑戰。比如現在主流機器學習算法需要依賴大量的訓練數據和計算資源,才能訓練出性能比較好的機器學習模型。同時,雖然深度學習大行其道,但我們對深度學習的理解,尤其是理論方面的理解還非常有限。深度學習為什麼會有效,深度學習優化的損失函數曲面是什麼樣子?