官术网_书友最值得收藏!

技術(shù)創(chuàng)新篇

第三章 機(jī)器學(xué)習(xí)算法

第一節(jié) 總體發(fā)展概況

機(jī)器學(xué)習(xí)是指“計(jì)算機(jī)利用經(jīng)驗(yàn)自動(dòng)改善系統(tǒng)自身性能的行為”,是一門(mén)多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計(jì)學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多門(mén)學(xué)科。簡(jiǎn)而言之,機(jī)器學(xué)習(xí)指的是計(jì)算機(jī)可以像人類(lèi)學(xué)習(xí)新事物一樣,在處理數(shù)據(jù)的過(guò)程中不斷地分析規(guī)律性信息,獲取新的知識(shí)和經(jīng)驗(yàn),找到更優(yōu)性能的解決方案以提升系統(tǒng)性能和智能性。它是人工智能核心,是使計(jì)算機(jī)具有智能的根本途徑,是機(jī)器智能化道路上邁出的重要一步。

一、發(fā)展歷程

2016年 3 月 15 日,谷歌公司開(kāi)發(fā)的人工智能機(jī)器AlphaGo以總比分 4 : 1 戰(zhàn)勝?lài)迨澜绻谲娎钍朗?,轟動(dòng)世界的“人機(jī)大戰(zhàn)”落下帷幕。2017年 1 月 4 日,升級(jí)為Master的AlphaGo,經(jīng)過(guò) 7 天的“踢館”大戰(zhàn),力克國(guó)際 60 位頂級(jí)圍棋高手,再次掀起“腥風(fēng)血雨”。事實(shí)上,早在 20 世紀(jì) 50年代,人工智能便開(kāi)始向人類(lèi)發(fā)起挑戰(zhàn)。當(dāng)時(shí)來(lái)自IBM工程研究組的薩繆爾(Samuel)開(kāi)發(fā)出一款跳棋程序,該程序能夠在與人對(duì)弈的過(guò)程中,不斷累積經(jīng)驗(yàn)提升棋藝,并于 1959年戰(zhàn)勝了薩繆爾本人。應(yīng)該說(shuō),無(wú)論是半個(gè)多世紀(jì)前的“跳棋對(duì)決”,還是當(dāng)前的“人機(jī)大戰(zhàn)”,推動(dòng)人工智能發(fā)展的核心動(dòng)力未曾改變,即計(jì)算科學(xué)的璀璨明珠—機(jī)器學(xué)習(xí)。圍棋僅是機(jī)器學(xué)習(xí)應(yīng)用的極小方面,在過(guò)去半個(gè)多世紀(jì)里,機(jī)器學(xué)習(xí)經(jīng)歷了以下五個(gè)發(fā)展階段。

第一階段,是 20 世紀(jì) 40年代的萌芽時(shí)期。在這一時(shí)期,心理學(xué)家McCulloch和數(shù)理邏輯學(xué)家Pitts引入生物學(xué)中的神經(jīng)元概念,在分析神經(jīng)元基本特性的基礎(chǔ)上,提出“M-P神經(jīng)元模型”。在該模型中,每個(gè)神經(jīng)元都能接收到來(lái)自其他神經(jīng)元傳遞的信號(hào),這些信號(hào)往往經(jīng)過(guò)加權(quán)處理,再與接受神經(jīng)元內(nèi)部的閾值進(jìn)行比較,經(jīng)過(guò)神經(jīng)元激活函數(shù)產(chǎn)生對(duì)應(yīng)的輸出。M-P神經(jīng)元模型主要具有以下特征:

① 每個(gè)神經(jīng)元都是多輸入輸出的信息處理單元。

② 神經(jīng)元之間的連接方式包括“興奮”和“抑制”兩種,當(dāng)某個(gè)神經(jīng)元處于“興奮”狀態(tài)時(shí),便會(huì)向相連神經(jīng)元發(fā)送信號(hào)并改變其“電位”。

③ 每個(gè)神經(jīng)元需要整合所有輸入信號(hào)并根據(jù)閾值決定是否“興奮”起來(lái),即神經(jīng)元具有空間整合特性和閾值特性。當(dāng)接受信號(hào)的神經(jīng)元“電位”超過(guò)自身閾值時(shí),便“興奮”起來(lái)并重復(fù)信號(hào)發(fā)送過(guò)程。

④ 激活函數(shù)的選取應(yīng)當(dāng)視具體應(yīng)用而定,主要分為連續(xù)型和非連續(xù)型。M-P神經(jīng)元模型是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的基礎(chǔ),而后者則是機(jī)器學(xué)習(xí)中出現(xiàn)時(shí)間最早、應(yīng)用時(shí)間最長(zhǎng)的模型。

第二階段,是 20 世紀(jì) 50年代中葉至 60年代中葉的熱烈時(shí)期。盡管在萌芽階段,神經(jīng)元的運(yùn)作過(guò)程得到明晰,但神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的高效運(yùn)作需要依賴(lài)相關(guān)學(xué)習(xí)規(guī)則。熱烈時(shí)期的標(biāo)志正是經(jīng)典學(xué)習(xí)規(guī)則的提出。早在 1949年,心理學(xué)家Hebb便提出與神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)機(jī)理相關(guān)的“突觸修正”假設(shè)。其核心思想是當(dāng)兩個(gè)神經(jīng)元同時(shí)處于興奮狀態(tài)時(shí),兩者的連接度將增強(qiáng),基于該假設(shè)定義的權(quán)值調(diào)整方法被稱(chēng)為“Hebbian規(guī)則”。由于Hebbian規(guī)則屬于無(wú)監(jiān)督學(xué)習(xí),故在處理大量有標(biāo)簽分類(lèi)問(wèn)題時(shí)存在局限。1957年,美國(guó)神經(jīng)學(xué)家Rosenblatt提出了最簡(jiǎn)單的前向人工神經(jīng)網(wǎng)絡(luò)—感知器,開(kāi)啟了有監(jiān)督學(xué)習(xí)的先河。感知器的最大特點(diǎn)是能夠通過(guò)迭代試錯(cuò)解決二元線(xiàn)性分類(lèi)問(wèn)題。在感知器被提出的同時(shí),求解算法也相應(yīng)誕生,包括感知器學(xué)習(xí)法、梯度下降法和最小二乘法(Delta學(xué)習(xí)規(guī)則)等。1962年,Novikoff推導(dǎo)并證明了在樣本線(xiàn)性可分情況下,經(jīng)過(guò)有限次迭代,感知器總能收斂,這為感知器學(xué)習(xí)規(guī)則的應(yīng)用提供了理論基礎(chǔ)。在熱烈時(shí)期,感知器被廣泛應(yīng)用于文字、聲音、信號(hào)識(shí)別、學(xué)習(xí)記憶等領(lǐng)域。

第三階段,是 20 世紀(jì) 60年代中葉至 70年代中葉的冷靜時(shí)期。由于感知器結(jié)構(gòu)單一,并且只能處理簡(jiǎn)單線(xiàn)性可分問(wèn)題,故如何突破這一局限,成為理論界關(guān)注的焦點(diǎn)。在冷靜時(shí)期,機(jī)器學(xué)習(xí)的發(fā)展幾乎停滯不前。究其原因,主要在于:

① 理論匱乏是制約人工神經(jīng)網(wǎng)絡(luò)發(fā)展的關(guān)鍵因素。

② 隨著現(xiàn)實(shí)問(wèn)題難度提升,單層人工神經(jīng)網(wǎng)絡(luò)的應(yīng)用局限越來(lái)越多。盡管這一時(shí)期出現(xiàn)了Winston的結(jié)構(gòu)學(xué)習(xí)系統(tǒng)和Roth的邏輯歸納學(xué)習(xí)系統(tǒng),但由于只能學(xué)習(xí)單一概念而未投入實(shí)際使用。

③ 計(jì)算機(jī)有限的內(nèi)存和緩慢的處理速度使得機(jī)器學(xué)習(xí)算法的應(yīng)用受到限制。與此同時(shí),這一時(shí)期數(shù)據(jù)庫(kù)的容量相對(duì)較小,數(shù)據(jù)規(guī)模的增大也使得單一機(jī)器學(xué)習(xí)算法效果失真。

④ 以Minsky、Papert等為代表的一批學(xué)者對(duì)感知器效果提出嚴(yán)重質(zhì)疑。他們通過(guò)嚴(yán)密推導(dǎo)并出版著作(如 1969年出版的《感知器》),來(lái)說(shuō)明感知器應(yīng)用失敗的事實(shí)。

在此之后,多國(guó)停止了對(duì)神經(jīng)網(wǎng)絡(luò)研究的資助,這進(jìn)一步加速了以感知器為核心的單層人工神經(jīng)網(wǎng)絡(luò)的衰敗。

第四階段,是 20 世紀(jì) 70年代中葉至 80年代末的復(fù)興時(shí)期。1980年,美國(guó)卡內(nèi)基梅隆大學(xué)舉辦了首屆機(jī)器學(xué)習(xí)國(guó)際研討會(huì),標(biāo)志著機(jī)器學(xué)習(xí)在世界范圍內(nèi)的復(fù)興。1986年,機(jī)器學(xué)習(xí)領(lǐng)域的專(zhuān)業(yè)期刊Machine Learning面世,意味著機(jī)器學(xué)習(xí)再次成為理論及業(yè)界關(guān)注的焦點(diǎn)。在此復(fù)興時(shí)期,機(jī)器學(xué)習(xí)領(lǐng)域的最大突破是人工神經(jīng)網(wǎng)絡(luò)種類(lèi)的豐富,由此彌補(bǔ)了感知器單一結(jié)構(gòu)的缺陷。1983年,加州理工學(xué)院物理學(xué)家Hopfield采用新型的全互連神經(jīng)網(wǎng)絡(luò),很好地解決了旅行商問(wèn)題。1986年,UCSD的Rumelhart與McClelland合著《并行分布式處理:認(rèn)知微結(jié)構(gòu)的探索》一書(shū),提出了應(yīng)用于多層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)規(guī)則—誤逆差傳播算法(BP算法),推動(dòng)了人工神經(jīng)網(wǎng)絡(luò)發(fā)展的第二次高潮。除了BP算法,包括SOM(自組織映射)網(wǎng)絡(luò)、ART(競(jìng)爭(zhēng)型學(xué)習(xí))網(wǎng)絡(luò)、RBF(徑向基函數(shù))網(wǎng)絡(luò)、CC(級(jí)聯(lián)相關(guān))網(wǎng)絡(luò)、RNN(遞歸神經(jīng)網(wǎng)絡(luò))、CNN(卷積神經(jīng)網(wǎng)絡(luò))等在內(nèi)的多種神經(jīng)網(wǎng)絡(luò)也在該時(shí)期得到迅猛發(fā)展。

第五階段,是 20 世紀(jì) 90年代后的多元發(fā)展時(shí)期。通過(guò)對(duì)前面四個(gè)階段的梳理可知,雖然每一階段都存在明顯的區(qū)分標(biāo)志,但幾乎都是圍繞人工神經(jīng)網(wǎng)絡(luò)方法及其學(xué)習(xí)規(guī)則的衍變展開(kāi)。事實(shí)上,除了人工神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí)中的其他算法也在這些時(shí)期嶄露頭角。例如,1986年,澳大利亞計(jì)算機(jī)科學(xué)家羅斯·昆蘭在Machine Learning上發(fā)表了著名的ID3 算法,帶動(dòng)了機(jī)器學(xué)習(xí)中決策樹(shù)算法的研究。20 世紀(jì) 90年代,自1995年蘇聯(lián)統(tǒng)計(jì)學(xué)家瓦普尼克在Machine Learning上發(fā)表SVM(支持向量機(jī))起,以SVM為代表的統(tǒng)計(jì)學(xué)習(xí)便大放異彩,并迅速對(duì)符號(hào)學(xué)習(xí)的統(tǒng)治地位發(fā)起挑戰(zhàn)。與此同時(shí),集成學(xué)習(xí)與深度學(xué)習(xí)的提出,成為機(jī)器學(xué)習(xí)的重要延伸。集成學(xué)習(xí)的核心思想是通過(guò)多個(gè)基礎(chǔ)學(xué)習(xí)器的結(jié)合來(lái)完成學(xué)習(xí)任務(wù),最著名的是Schapire提出的Boosting算法、Freund和Schapire提出的AdaBoost算法、Breiman提出的Bagging算法以及Breiman提出的隨機(jī)森林算法。進(jìn)入 21 世紀(jì)后,在計(jì)算機(jī)硬件技術(shù)飛速發(fā)展,以及研究界和產(chǎn)業(yè)界巨大需求刺激下,Ruslan Salakhutdinov和Geoffrey Hinton兩位機(jī)器學(xué)習(xí)界泰斗提出了深度學(xué)習(xí)模型,開(kāi)啟了深度網(wǎng)絡(luò)機(jī)器學(xué)習(xí)的新時(shí)代,圍繞此技術(shù)的研究與應(yīng)用開(kāi)始急速發(fā)展,如圖 3-1 顯示,深度學(xué)習(xí)隨訓(xùn)練數(shù)據(jù)的提升可有效增加預(yù)測(cè)準(zhǔn)確率。隨著后來(lái)在云計(jì)算、大數(shù)據(jù)和計(jì)算機(jī)硬件技術(shù)發(fā)展的支撐下,深度學(xué)習(xí)開(kāi)始在各行各業(yè)取得前所未有的成就,一批批成功的商業(yè)應(yīng)用也不斷問(wèn)市。其中具有代表性的應(yīng)用有來(lái)自蘋(píng)果的Siri、微軟的Cortana語(yǔ)音助手,各大支付應(yīng)用推出的人臉識(shí)別認(rèn)證技術(shù),以及名揚(yáng)全球的谷歌AlphaGo戰(zhàn)勝頂尖人類(lèi)圍棋高手的人機(jī)大戰(zhàn)事跡,標(biāo)志著機(jī)器學(xué)習(xí)已經(jīng)成為計(jì)算機(jī)科學(xué)中的一個(gè)重要領(lǐng)域。

圖 3-1 深度學(xué)習(xí)隨訓(xùn)練數(shù)據(jù)的提升可有效增加預(yù)測(cè)準(zhǔn)確率

二、算法分類(lèi)

機(jī)器學(xué)習(xí)算法可以分為有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí) 3 種類(lèi)型。半監(jiān)督學(xué)習(xí)可以認(rèn)為是有監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)的結(jié)合。有監(jiān)督學(xué)習(xí)通過(guò)訓(xùn)練樣本學(xué)習(xí)得到一個(gè)模型,然后用這個(gè)模型進(jìn)行推理。例如,我們?nèi)绻R(shí)別各種水果的圖像,則需要用人工標(biāo)注的樣本進(jìn)行訓(xùn)練,得到一個(gè)模型,接下來(lái),就可以用這個(gè)模型對(duì)未知類(lèi)型的水果進(jìn)行判斷,這稱(chēng)為預(yù)測(cè)。如果只是預(yù)測(cè)一個(gè)類(lèi)別值,則稱(chēng)為分類(lèi)問(wèn)題;如果要預(yù)測(cè)出一個(gè)實(shí)數(shù),則稱(chēng)為回歸問(wèn)題,如根據(jù)一個(gè)人的學(xué)歷、工作年限、所在城市、行業(yè)等特征來(lái)預(yù)測(cè)這個(gè)人的收入。

無(wú)監(jiān)督學(xué)習(xí)則沒(méi)有訓(xùn)練過(guò)程,給定一些樣本數(shù)據(jù),讓機(jī)器學(xué)習(xí)算法直接對(duì)這些數(shù)據(jù)進(jìn)行分析,得到數(shù)據(jù)的某些知識(shí)。其典型代表是聚類(lèi),例如,我們抓取了 1 萬(wàn)個(gè)網(wǎng)頁(yè),要完成對(duì)這些網(wǎng)頁(yè)的歸類(lèi),在這里,我們并沒(méi)有事先定義好的類(lèi)別,也沒(méi)有已經(jīng)訓(xùn)練好的分類(lèi)模型。聚類(lèi)算法要自己完成對(duì)這 1 萬(wàn)個(gè)網(wǎng)頁(yè)的歸類(lèi),保證同一類(lèi)網(wǎng)頁(yè)是同一個(gè)主題的,不同類(lèi)型的網(wǎng)頁(yè)是不一樣的。無(wú)監(jiān)督學(xué)習(xí)的另外一類(lèi)典型算法是數(shù)據(jù)降維,它將一個(gè)高維向量變換到低維空間中,并且要保持?jǐn)?shù)據(jù)的一些內(nèi)在信息和結(jié)構(gòu)。

強(qiáng)化學(xué)習(xí)是一類(lèi)特殊的機(jī)器學(xué)習(xí)算法,算法要根據(jù)當(dāng)前的環(huán)境狀態(tài)確定一個(gè)動(dòng)作來(lái)執(zhí)行,然后進(jìn)入下一個(gè)狀態(tài),如此反復(fù),目標(biāo)是讓得到的收益最大化。如圍棋游戲就是典型的強(qiáng)化學(xué)習(xí)問(wèn)題,在每個(gè)時(shí)刻,要根據(jù)當(dāng)前的棋局決定在什么地方落棋,然后進(jìn)行下一個(gè)狀態(tài),反復(fù)的放置棋子,直到贏得或者輸?shù)舯荣悺_@里的目標(biāo)是盡可能贏得比賽,以獲得最大的獎(jiǎng)勵(lì)。

三、主流算法

(1)支持向量機(jī)算法(Support Vector Machine)

支持向量機(jī)算法(SVM)可能是目前最流行、討論最多的機(jī)器學(xué)習(xí)算法之一,圖 3-2 為支持向量機(jī)算法示意圖。超平面是一條對(duì)輸入變量空間進(jìn)行劃分的“直線(xiàn)”。支持向量機(jī)算法會(huì)選出一個(gè)將輸入變量空間中的點(diǎn)按類(lèi)(類(lèi) 0 或類(lèi) 1)進(jìn)行最佳分割的超平面。在二維空間中,你可以把他想象成一條直線(xiàn),假設(shè)所有輸入點(diǎn)都可以被這條直線(xiàn)完全地劃分開(kāi)來(lái)。SVM學(xué)習(xí)算法旨在尋找最終通過(guò)超平面得到最佳類(lèi)別分割的系數(shù)。超平面與最近數(shù)據(jù)點(diǎn)之間的距離叫作間隔(margin)。能夠?qū)蓚€(gè)類(lèi)分開(kāi)的最佳超平面是具有最大間隔的直線(xiàn)。只有這些點(diǎn)與超平面的定義和分類(lèi)器的構(gòu)建有關(guān),這些點(diǎn)叫作支持向量,它們支持或定義超平面。在實(shí)際應(yīng)用中,人們采用一種優(yōu)化算法來(lái)尋找使間隔最大化的系數(shù)值。

圖 3-2 支持向量機(jī)算法示意圖

(2)線(xiàn)性回歸算法(Linear Regression)

在統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,線(xiàn)性回歸算法可能是最廣為人知也最易理解的算法之一,如圖 3-3 為線(xiàn)性回歸算法示意圖。預(yù)測(cè)建模主要關(guān)注的是在犧牲可解釋性的情況下,盡可能最小化模型誤差或做出最準(zhǔn)確的預(yù)測(cè)。我們將借鑒、重用來(lái)自許多其他領(lǐng)域的算法來(lái)實(shí)現(xiàn)這些目標(biāo)。線(xiàn)性回歸模型被表示為一個(gè)方程式,它為輸入變量找到特定的權(quán)重(即系數(shù)B),進(jìn)而描述一條最佳擬合了輸入變量(x)和輸出變量(y)之間關(guān)系的直線(xiàn)。

圖 3-3 線(xiàn)性回歸算法示意圖

(3)邏輯回歸算法(Logistic Regression)

邏輯回歸是機(jī)器學(xué)習(xí)從統(tǒng)計(jì)學(xué)領(lǐng)域借鑒過(guò)來(lái)的另一種技術(shù),圖 3-4為邏輯回歸算法示意圖。它是二分類(lèi)問(wèn)題的首選方法,像線(xiàn)性回歸一樣,Logistic回歸的目的也是找到每個(gè)輸入變量的權(quán)重系數(shù)值。但不同的是,Logistic回歸的輸出預(yù)測(cè)結(jié)果是通過(guò)一個(gè)叫作“l(fā)ogistic函數(shù)”的非線(xiàn)性函數(shù)變換而來(lái)的。logistic函數(shù)的形狀看起來(lái)像一個(gè)大的“S”,它會(huì)把任何值轉(zhuǎn)換至 0~1 區(qū)間內(nèi)。這十分有用,因?yàn)槲覀兛梢园岩粋€(gè)規(guī)則應(yīng)用于logistic函數(shù)的輸出,從而得到 0~1 區(qū)間內(nèi)的捕捉值,并預(yù)測(cè)類(lèi)別的值。

圖 3-4 邏輯回歸算法示意圖

(4)線(xiàn)性判別算法

線(xiàn)性判別算法是一種傳統(tǒng)的分類(lèi)算法,它的使用場(chǎng)景僅限于二分類(lèi)問(wèn)題,圖 3-5 為線(xiàn)性判別算法示意圖。如果你有兩個(gè)以上的類(lèi),那么線(xiàn)性判別算法(LDA)是首選的線(xiàn)性分類(lèi)技術(shù)。LDA的表示方法非常直接。它包含為每個(gè)類(lèi)計(jì)算的數(shù)據(jù)統(tǒng)計(jì)屬性。對(duì)于單個(gè)輸入變量而言,這些屬性包括每個(gè)類(lèi)的均值和所有類(lèi)的方差。線(xiàn)性判別分析預(yù)測(cè)結(jié)果是通過(guò)計(jì)算每個(gè)類(lèi)的判別值、并將類(lèi)別預(yù)測(cè)為判別值最大的類(lèi)而得出的。該技術(shù)假設(shè)數(shù)據(jù)符合高斯分布,因此最好預(yù)先從數(shù)據(jù)中刪除異常值。LDA是一種簡(jiǎn)單而有效的分類(lèi)預(yù)測(cè)建模方法。

圖 3-5 線(xiàn)性判別算法示意圖

(5)最近鄰居/K-近鄰算法(K-Nearest Neighbors)

K-近鄰算法(KNN)是非常簡(jiǎn)單而有效的,圖 3-6 為K-近鄰算法示意圖。KNN的模型表示就是整個(gè)訓(xùn)練數(shù)據(jù)集。對(duì)新數(shù)據(jù)點(diǎn)的預(yù)測(cè)結(jié)果是通過(guò)在整個(gè)訓(xùn)練集上搜索與該數(shù)據(jù)點(diǎn)最相似的K個(gè)實(shí)例(近鄰)并且總結(jié)這K個(gè)實(shí)例的輸出變量而得出的。對(duì)于回歸問(wèn)題來(lái)說(shuō),預(yù)測(cè)結(jié)果可能就是輸出變量的均值;而對(duì)于分類(lèi)問(wèn)題來(lái)說(shuō),預(yù)測(cè)結(jié)果可能是眾數(shù)的類(lèi)的值。關(guān)鍵之處在于如何判定數(shù)據(jù)實(shí)例之間的相似程度。如果你的數(shù)據(jù)特征尺度相同,那么最簡(jiǎn)單的度量技術(shù)就是使用歐幾里得距離,你可以根據(jù)輸入變量之間的差異直接計(jì)算出該值。

圖 3-6 K-近鄰算法示意圖

(6)K-平均算法(K-Means)

K-平均算法是一種無(wú)監(jiān)督學(xué)習(xí)算法,為聚類(lèi)問(wèn)題提供了一種解決方案,圖 3-7 為K-平均算法示意圖。K-Means算法把n個(gè)點(diǎn)劃分到k個(gè)集群,使得每個(gè)點(diǎn)都屬于離他最近的均值對(duì)應(yīng)的集群。重復(fù)上述過(guò)程一直持續(xù)到重心不改變。

圖 3-7 K-平均算法示意圖

(7)決策樹(shù)算法(Decision Tree)

決策樹(shù)是一類(lèi)重要的機(jī)器學(xué)習(xí)預(yù)測(cè)建模算法,圖 3-8 為決策樹(shù)算法示意圖。決策樹(shù)可以被表示為一棵二叉樹(shù)。這種二叉樹(shù)與算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)中的二叉樹(shù)是一樣的,沒(méi)有什么特別。每個(gè)節(jié)點(diǎn)都代表一個(gè)輸入變量(x)和一個(gè)基于該變量的分叉點(diǎn)。決策樹(shù)的葉子結(jié)點(diǎn)包含一個(gè)用于做出預(yù)測(cè)的輸出變量(y)。預(yù)測(cè)結(jié)果是通過(guò)在樹(shù)的各個(gè)分叉路徑上游走,直到到達(dá)一個(gè)葉子結(jié)點(diǎn)并輸出該葉子結(jié)點(diǎn)的類(lèi)別值而得出。決策樹(shù)的學(xué)習(xí)速度很快,做出預(yù)測(cè)的速度也很快。它們?cè)诖罅繂?wèn)題中往往都很準(zhǔn)確,而且不需要為數(shù)據(jù)做任何特殊的預(yù)處理準(zhǔn)備。

圖 3-8 決策樹(shù)算法示意圖

(8)樸素貝葉斯算法(Naive Bayes)

樸素貝葉斯是一種簡(jiǎn)單而強(qiáng)大的預(yù)測(cè)建模算法,圖 3-9 為樸素貝葉斯算法示意圖。該模型由兩類(lèi)可直接從訓(xùn)練數(shù)據(jù)中計(jì)算出來(lái)的概率組成:①數(shù)據(jù)屬于每一類(lèi)的概率;②給定每個(gè)x值,數(shù)據(jù)從屬于每個(gè)類(lèi)的條件概率。一旦這兩個(gè)概率被計(jì)算出來(lái),就可以使用貝葉斯定理,用概率模型對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。當(dāng)你的數(shù)據(jù)是實(shí)值的時(shí)候,通常假設(shè)數(shù)據(jù)符合高斯分布(鐘形曲線(xiàn)),這樣你就可以很容易地估計(jì)這些概率。樸素貝葉斯之所以被稱(chēng)為“樸素”,是因?yàn)樗僭O(shè)每個(gè)輸入變量相互之間是獨(dú)立的。這是一種很強(qiáng)的、對(duì)于真實(shí)數(shù)據(jù)并不現(xiàn)實(shí)的假設(shè)。不過(guò),該算法在大量的復(fù)雜問(wèn)題中十分有效。

圖 3-9 樸素貝葉斯算法示意圖

(9)隨機(jī)森林算法(Random Forest)

隨機(jī)森林算法是最流行也是最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一,它是一種集成機(jī)器學(xué)習(xí)算法,圖 3-10 為隨機(jī)森林算法示意圖。自助法是一種從數(shù)據(jù)樣本中估計(jì)某個(gè)量的強(qiáng)大統(tǒng)計(jì)學(xué)方法,你需要在數(shù)據(jù)中取出大量的樣本,計(jì)算均值,然后對(duì)每次取樣計(jì)算出的均值再取平均,從而得到對(duì)所有數(shù)據(jù)的真實(shí)均值更好的估計(jì)。Bagging使用了相同的方法。但是最常見(jiàn)的做法是使用決策樹(shù),而不是對(duì)整個(gè)統(tǒng)計(jì)模型進(jìn)行估計(jì)。Bagging會(huì)在訓(xùn)練數(shù)據(jù)中取多個(gè)樣本,然后為每個(gè)數(shù)據(jù)樣本構(gòu)建模型。當(dāng)你需要對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)時(shí),每個(gè)模型都會(huì)產(chǎn)生一個(gè)預(yù)測(cè)結(jié)果,Bagging會(huì)對(duì)所有模型的預(yù)測(cè)結(jié)果取平均值,以便更好地估計(jì)真實(shí)的輸出值。隨機(jī)森林算法是這種方法的改進(jìn),它會(huì)創(chuàng)建決策樹(shù),這樣就不用選擇最優(yōu)分割點(diǎn),而是通過(guò)引入隨機(jī)性來(lái)進(jìn)行次優(yōu)分割。因此,為每個(gè)數(shù)據(jù)樣本創(chuàng)建的模型比在其他情況下創(chuàng)建的模型更加獨(dú)特,但是這種獨(dú)特的方式仍能保證較高的準(zhǔn)確率。結(jié)合它們的預(yù)測(cè)結(jié)果可以更好地估計(jì)真實(shí)的輸出值。如果使用具有高方差的算法獲得了良好的結(jié)果,那么通常可以通過(guò)該算法來(lái)獲得更好的結(jié)果。

圖 3-10 隨機(jī)森林算法示意圖

(10)Boosting(增強(qiáng)算法)

Boosting是一種集成技術(shù),它試圖集成一些弱分類(lèi)器來(lái)創(chuàng)建一個(gè)強(qiáng)分類(lèi)器,圖 3-11 為增強(qiáng)算法示意圖。它通過(guò)從訓(xùn)練數(shù)據(jù)中構(gòu)建一個(gè)模型,然后創(chuàng)建第二個(gè)模型嘗試糾正第一個(gè)模型的錯(cuò)誤來(lái)完成。一直添加模型直到能夠完美預(yù)測(cè)訓(xùn)練集,或添加的模型數(shù)量已經(jīng)達(dá)到最大數(shù)量。AdaBoost是第一個(gè)為二分類(lèi)開(kāi)發(fā)的真正成功的Boosting算法。這是理解Boosting的最佳起點(diǎn)?,F(xiàn)代Boosting算法建立在AdaBoost之上,最顯著的是隨機(jī)梯度提升。AdaBoost與短決策樹(shù)一起使用。在第一個(gè)決策樹(shù)創(chuàng)建之后,利用每個(gè)訓(xùn)練實(shí)例上樹(shù)的性能來(lái)衡量下一個(gè)決策樹(shù)應(yīng)該對(duì)每個(gè)訓(xùn)練實(shí)例付出多少注意力。難以預(yù)測(cè)的訓(xùn)練數(shù)據(jù)被分配更多權(quán)重,而容易預(yù)測(cè)的數(shù)據(jù)分配的權(quán)重較少。依次創(chuàng)建模型,每個(gè)模型在訓(xùn)練實(shí)例上更新權(quán)重,影響序列中下一個(gè)決策樹(shù)的學(xué)習(xí)。在所有決策樹(shù)建立之后,對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè),并且通過(guò)每個(gè)決策樹(shù)在訓(xùn)練數(shù)據(jù)上的精確度評(píng)估其性能。因?yàn)樵诩m正算法錯(cuò)誤上投入了太多注意力,所以具備已刪除異常值的干凈數(shù)據(jù)非常重要。

(11)降維算法(Dimensional Reduction)

在機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)領(lǐng)域,降維是指在限定條件下,降低隨機(jī)變量個(gè)數(shù),得到一組“不相關(guān)”主變量的過(guò)程,并可進(jìn)一步細(xì)分為特征選擇和特征提取兩大方法,圖 3-12 為降維算法示意圖。一些數(shù)據(jù)集可能包含許多難以處理的變量。特別是在資源豐富的情況下,系統(tǒng)中的數(shù)據(jù)將非常詳細(xì)。在這種情況下,數(shù)據(jù)集可能包含數(shù)千個(gè)變量,其中大多數(shù)變量也可能是不必要的,幾乎不可能確定我們預(yù)測(cè)影響的最大變量。此時(shí),我們需要使用降維算法,降維的過(guò)程中也可能需要用到其他算法,例如借用隨機(jī)森林、決策樹(shù)算法來(lái)識(shí)別最重要的變量。

圖 3-11 增強(qiáng)算法示意圖

圖 3-12 降維算法示意圖

主站蜘蛛池模板: 来宾市| 岐山县| 江都市| 浏阳市| 成武县| 上虞市| 房山区| 临沧市| 兴和县| 额敏县| 沙坪坝区| 兴文县| 南安市| 穆棱市| 伊吾县| 长汀县| 孝感市| 平谷区| 金门县| 岑巩县| 集贤县| 大竹县| 改则县| 深州市| 浏阳市| 体育| 太谷县| 松滋市| 都江堰市| 临武县| 阳高县| 喀喇沁旗| 宜春市| 徐闻县| 株洲县| 高邮市| 锡林浩特市| 平邑县| 灌云县| 安新县| 宁夏|