- 機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)
- 牟少敏
- 4216字
- 2019-09-12 15:13:55
1.1 機(jī)器學(xué)習(xí)
1.1.1 概述
機(jī)器學(xué)習(xí)簡(jiǎn)單地講就是讓機(jī)器模擬人類的學(xué)習(xí)過程,來獲取新的知識(shí)或技能,并通過自身的學(xué)習(xí)完成指定的工作或任務(wù),目標(biāo)是讓機(jī)器能像人一樣具有學(xué)習(xí)能力。
機(jī)器學(xué)習(xí)的本質(zhì)是樣本空間的搜索和模型的泛化能力。目前,機(jī)器學(xué)習(xí)研究的主要內(nèi)容有3類,分別是模式識(shí)別(Pattern Recognition)、回歸分析(Regression Analysis)和概率密度估計(jì)(Probability Density Estimation)。模式識(shí)別又稱為模式分類,是利用計(jì)算機(jī)對(duì)物理對(duì)象進(jìn)行分類的過程,目的是在錯(cuò)誤概率最小的情況下,盡可能地使結(jié)果與客觀物體相一致。顯然,模式識(shí)別的方法離不開機(jī)器學(xué)習(xí)。回歸分析是研究?jī)蓚€(gè)或兩個(gè)以上的變量和自變量之間的相互依賴關(guān)系,是數(shù)據(jù)分析的重要方法之一。概率密度估計(jì)是機(jī)器學(xué)習(xí)挖掘數(shù)據(jù)規(guī)律的重要方法。
機(jī)器學(xué)習(xí)與統(tǒng)計(jì)學(xué)習(xí)、數(shù)據(jù)挖掘、計(jì)算機(jī)視覺、大數(shù)據(jù)和人工智能等學(xué)科有著密不可分的聯(lián)系。人工智能的發(fā)展離不開機(jī)器學(xué)習(xí)的支撐,機(jī)器學(xué)習(xí)逐漸成為人工智能研究的核心之一。大數(shù)據(jù)的核心是利用數(shù)據(jù)的價(jià)值,機(jī)器學(xué)習(xí)是利用數(shù)據(jù)挖掘價(jià)值的關(guān)鍵技術(shù),數(shù)據(jù)量的增加有利于提升機(jī)器學(xué)習(xí)算法的精度,大數(shù)據(jù)背景下的機(jī)器學(xué)習(xí)算法也迫切需要大數(shù)據(jù)處理技術(shù)。大數(shù)據(jù)與機(jī)器學(xué)習(xí)兩者是互相促進(jìn)、相互依存的關(guān)系。
1.1.2 評(píng)價(jià)準(zhǔn)則
評(píng)價(jià)指標(biāo)是機(jī)器學(xué)習(xí)非常重要的一個(gè)環(huán)節(jié)。機(jī)器學(xué)習(xí)的任務(wù)不同,評(píng)價(jià)指標(biāo)可能就不同。同一種機(jī)器學(xué)習(xí)算法針對(duì)不同的應(yīng)用,可以采用不同的評(píng)價(jià)指標(biāo),每個(gè)指標(biāo)的側(cè)重點(diǎn)不一樣。下面介紹常用的機(jī)器學(xué)習(xí)評(píng)價(jià)指標(biāo)。
1.準(zhǔn)確率
樣本分類時(shí),被正確分類的樣本數(shù)與樣本總數(shù)之比稱為準(zhǔn)確率(Accuracy)。與準(zhǔn)確率對(duì)應(yīng)的是錯(cuò)誤率,錯(cuò)誤率是錯(cuò)分樣本數(shù)與總樣本數(shù)之比。
顯然,準(zhǔn)確率并沒有反映出不同類別錯(cuò)分樣本的情況。例如:對(duì)于一個(gè)二類分類問題,準(zhǔn)確率并不能反映出第一類和第二類分別對(duì)應(yīng)的錯(cuò)分樣本的個(gè)數(shù)。但是,在實(shí)際應(yīng)用中,因?yàn)椴煌悇e下錯(cuò)分樣本的代價(jià)或成本不同,往往需要知道不同類別錯(cuò)分樣本的情況。例如:在醫(yī)學(xué)影像分類過程中,未患有乳腺癌被錯(cuò)分類為患有乳腺癌,與患有乳腺癌被錯(cuò)分類為未患有乳腺癌的重要性顯然是不一樣的。另外,數(shù)據(jù)分布不平衡時(shí),樣本占大多數(shù)的類主導(dǎo)了準(zhǔn)確率的計(jì)算等情況,這就需要求出不同類別的準(zhǔn)確率。
2.召回率
召回率(Precision-Recall)指分類正確的正樣本個(gè)數(shù)占所有的正樣本個(gè)數(shù)的比例。它表示的是數(shù)據(jù)集中的正樣本有多少被預(yù)測(cè)正確。
3.ROC曲線
ROC(Receiver Operating Characteristic)曲線是分類器的一種性能指標(biāo),可以實(shí)現(xiàn)不同分類器性能比較。不同的分類器比較時(shí),畫出每個(gè)分類器的ROC曲線,將曲線下方面積作為判斷模型好壞的指標(biāo)。ROC曲線的縱軸是“真正例率”(True Positive Rate,TPR),橫軸是“假正例率”(False Positive Rate,F(xiàn)PR)。ROC曲線下方面積(The Area Under The ROC Curve,AUC)是指ROC曲線與x軸、點(diǎn)(1,0)和點(diǎn)(1,1)圍繞的面積。ROC曲線如圖1-1所示。顯然,0≤AUC≤1。假設(shè)閾值以上是陽性,以下是陰性,若隨機(jī)抽取一個(gè)陽性樣本和一個(gè)陰性樣本,分類器正確判斷陽性樣本的值高于陰性樣本的概率。在圖1-1示例中,有3類分類器,AUC值分為0.80、0.78和0.80,AUC值越大的分類器正確率越高。

圖1-1 ROC曲線
4.交叉驗(yàn)證
交叉驗(yàn)證(Cross-Validation)的基本思想是將數(shù)據(jù)分成訓(xùn)練集和測(cè)試集。在訓(xùn)練集上訓(xùn)練模型,然后利用測(cè)試集模擬實(shí)際的數(shù)據(jù),對(duì)訓(xùn)練模型進(jìn)行調(diào)整或評(píng)價(jià),最后選擇在驗(yàn)證數(shù)據(jù)上表現(xiàn)最好的模型。
交叉驗(yàn)證法的優(yōu)點(diǎn)是可以在一定程度上減小過擬合,還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。常用的交叉驗(yàn)證的方法如下。
(1)K折交叉驗(yàn)證
K折交叉驗(yàn)證的基本思想:將數(shù)據(jù)隨機(jī)地劃分為K等份,將其中的K-1份作為訓(xùn)練集,剩余的1份作為測(cè)試集,計(jì)算K組測(cè)試結(jié)果的平均值作為模型精度的估計(jì),并作為當(dāng)前K折交叉驗(yàn)證下模型的性能指標(biāo)。
K折交叉驗(yàn)證實(shí)現(xiàn)了數(shù)據(jù)的重復(fù)利用。一般情況下,K的取值為 10。針對(duì)不同的應(yīng)用場(chǎng)景,可以根據(jù)實(shí)際情況確定K值,數(shù)據(jù)量或樣本數(shù)較大時(shí),K的取值可以大于10。 數(shù)據(jù)量或樣本數(shù)較小時(shí),K的取值可以小于10。
(2)留一交叉驗(yàn)證
留一交叉驗(yàn)證(Leave One Out Cross Validation)的基本思想:假設(shè)有N個(gè)樣本,將每一個(gè)樣本作為測(cè)試樣本,其他N-1個(gè)樣本作為訓(xùn)練樣本,得到N個(gè)分類器和N個(gè)測(cè)試結(jié)果。用這N個(gè)結(jié)果的平均值來衡量模型的性能。留一交叉驗(yàn)證是K折交叉驗(yàn)證的特例。
5.過擬合與欠擬合問題
機(jī)器學(xué)習(xí)過程中,模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力稱為泛化能力(Generalization Ability),是評(píng)估算法性能的重要評(píng)價(jià)指標(biāo)(Evaluation Metrics)。泛化指的是訓(xùn)練模型對(duì)未知樣本的適應(yīng)能力。優(yōu)秀的機(jī)器學(xué)習(xí)模型其泛化能力強(qiáng)。
過擬合(Over-fitting)是由于訓(xùn)練模型中涉及的參數(shù)過多,或參加訓(xùn)練的數(shù)據(jù)量太小等原因,導(dǎo)致了微小的數(shù)據(jù)擾動(dòng)都會(huì)產(chǎn)生較大的變化或影響,造成了模型對(duì)已知數(shù)據(jù)預(yù)測(cè)精度很高,而對(duì)未知數(shù)據(jù)預(yù)測(cè)精度較低的現(xiàn)象,即測(cè)試樣本輸出和期望的值相差較大,也稱為泛化誤差較大。
通常情況下,解決過擬合問題的方法有以下兩種。
(1)利用正則化來控制模型的復(fù)雜度,改善或減少過度擬合的問題。
(2)根據(jù)實(shí)際問題增加足夠的訓(xùn)練數(shù)據(jù)。
欠擬合(Under-fitting)是模型在訓(xùn)練和預(yù)測(cè)時(shí),其準(zhǔn)確率都較低的現(xiàn)象。產(chǎn)生的原因可能是模型過于簡(jiǎn)單,沒有充分地?cái)M合所有的數(shù)據(jù)。解決欠擬合問題的方法是優(yōu)化和改進(jìn)模型,或采用其他的機(jī)器學(xué)習(xí)算法。
1.1.3 分類
根據(jù)機(jī)器學(xué)習(xí)算法的學(xué)習(xí)方式,機(jī)器學(xué)習(xí)分為以下3種。
1.有監(jiān)督學(xué)習(xí)
有監(jiān)督學(xué)習(xí)(Supervised Learning)是利用一組已知類別的樣本調(diào)整分類器的參數(shù),使其達(dá)到所要求性能的學(xué)習(xí)過程,也稱為有老師的學(xué)習(xí)。有監(jiān)督學(xué)習(xí)的過程是:首先利用有標(biāo)號(hào)的樣本進(jìn)行訓(xùn)練,構(gòu)建相應(yīng)的學(xué)習(xí)模型。然后,再利用這個(gè)模型對(duì)未知樣本數(shù)據(jù)進(jìn)行分類和預(yù)測(cè)。這個(gè)學(xué)習(xí)過程與人類認(rèn)識(shí)事物的過程非常相似。常用有監(jiān)督學(xué)習(xí)的算法有:貝葉斯分類、決策樹和支持向量機(jī)等。
2.無監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)(Unsupervised Learning)是對(duì)無標(biāo)號(hào)樣本的學(xué)習(xí),以發(fā)現(xiàn)訓(xùn)練樣本集中的結(jié)構(gòu)性知識(shí)的學(xué)習(xí)過程,也稱為無老師的學(xué)習(xí)。無監(jiān)督學(xué)習(xí)事先并不需要知道樣本的類別,而是通過某種方法,按照相似度的大小進(jìn)行分類的過程。它與監(jiān)督學(xué)習(xí)的不同之處在于,事先并沒有任何訓(xùn)練樣本,而是直接對(duì)數(shù)據(jù)進(jìn)行建模。常用無監(jiān)督學(xué)習(xí)的算法有:聚類算法和期望最大化算法。
3.半監(jiān)督學(xué)習(xí)
半監(jiān)督學(xué)習(xí)(Semi-Supervised Learning)是有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)相結(jié)合的學(xué)習(xí),是利用有類標(biāo)號(hào)的數(shù)據(jù)和無類標(biāo)號(hào)的數(shù)據(jù)進(jìn)行學(xué)習(xí)的過程。其特點(diǎn)是利用少量有標(biāo)號(hào)樣本和大量無標(biāo)號(hào)樣本進(jìn)行機(jī)器學(xué)習(xí)。在數(shù)據(jù)采集過程中,采集海量的無標(biāo)號(hào)數(shù)據(jù)相對(duì)容易,而采集海量的有標(biāo)號(hào)樣本則相對(duì)困難,因?yàn)閷?duì)無標(biāo)號(hào)樣本的標(biāo)記工作可能會(huì)耗費(fèi)大量的人力、物力和財(cái)力。例如,利用計(jì)算機(jī)輔助醫(yī)學(xué)圖像分析和判讀的過程中,可以從醫(yī)院獲得海量的醫(yī)學(xué)圖像作為訓(xùn)練數(shù)據(jù),但如果要求把這些海量圖像中的病灶都標(biāo)注出來,則是不現(xiàn)實(shí)的。現(xiàn)實(shí)世界中通常存在大量的未標(biāo)注樣本,但有標(biāo)記樣本則比較少,因此半監(jiān)督學(xué)習(xí)的研究是非常重要的。
此外,根據(jù)算法的功能和形式可把機(jī)器學(xué)習(xí)算法分為:決策樹學(xué)習(xí)、增量學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、回歸學(xué)習(xí)、關(guān)聯(lián)規(guī)則學(xué)習(xí)、進(jìn)化學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)、主動(dòng)學(xué)習(xí)和集成學(xué)習(xí)等。
1.1.4 常用工具
1.WEKA
WEKA 是一款常用的、開源的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具,主要功能有數(shù)據(jù)預(yù)處理、分類、回歸和關(guān)聯(lián)規(guī)則等。WEKA 內(nèi)集成了決策樹和貝葉斯分類等眾多機(jī)器學(xué)習(xí)算法,是數(shù)據(jù)分析和挖掘的技術(shù)人員常用的工具之一。
2.Python語言
Python是一種面向?qū)ο蟮木幊陶Z言,由荷蘭人吉多·范羅蘇姆(Guido van Rossum)發(fā)明,最早的公開發(fā)行版誕生于1991年。Python提供了大量的基礎(chǔ)代碼庫,極大地方便了用戶進(jìn)行程序編寫。Python 語言在數(shù)據(jù)挖掘和分析、機(jī)器學(xué)習(xí)和數(shù)據(jù)可視化等方面發(fā)揮了巨大的作用。目前,Python 是最熱門的人工智能和機(jī)器學(xué)習(xí)的編程語言。
3.Matlab
Matlab是美國MathWorks公司出品的一款商用軟件,是科研工作者、工程師和大學(xué)生必備的數(shù)據(jù)分析工具之一,主要用于科學(xué)計(jì)算,如數(shù)值計(jì)算、數(shù)據(jù)分析、數(shù)據(jù)可視化、數(shù)字圖像處理和數(shù)字信號(hào)處理等。
4.R語言
R語言是一種為統(tǒng)計(jì)計(jì)算和圖形顯示而設(shè)計(jì)的語言環(huán)境,是貝爾實(shí)驗(yàn)室開發(fā)的S語言的一種實(shí)現(xiàn)。它提供了有彈性的、互動(dòng)的環(huán)境分析,也提供了若干統(tǒng)計(jì)程序包,以及一系列統(tǒng)計(jì)和圖形顯示工具,用戶只需根據(jù)統(tǒng)計(jì)模型,指定相應(yīng)的數(shù)據(jù)庫及相關(guān)的參數(shù),便可靈活機(jī)動(dòng)地進(jìn)行數(shù)據(jù)分析等工作。目前,R 語言在數(shù)據(jù)挖掘和分析、機(jī)器學(xué)習(xí)和數(shù)據(jù)可視化方面發(fā)揮了巨大的作用。
深度學(xué)習(xí)的發(fā)展離不開高性能的框架與硬件的支持。隨著半導(dǎo)體工藝和微電子等技術(shù)的飛速發(fā)展,支持深度學(xué)習(xí)的硬件環(huán)境也在飛速發(fā)展,出現(xiàn)了以多核CPU(Central Processing Unit)、高性能圖形處理器GPU(Graphics Processing Unit)、APU(Accelerated Processing Unit)等處理器為代表的高性能并行計(jì)算系統(tǒng),為深度學(xué)習(xí)分析和挖掘奠定了硬件基礎(chǔ)。目前,深度學(xué)習(xí)大都使用GPU在各種框架上進(jìn)行模型訓(xùn)練,深層神經(jīng)網(wǎng)絡(luò)在GPU上運(yùn)算的速度要比CPU快一個(gè)數(shù)量級(jí)。
隨著深度學(xué)習(xí)研究和應(yīng)用的不斷深入,各種開源的深度學(xué)習(xí)框架不斷涌現(xiàn),目前常用的深度學(xué)習(xí)框架有Caffe、TensorFlow、Theano、Torch和CNTK等。下面簡(jiǎn)單介紹幾種常用的深度學(xué)習(xí)框架。
(1)Caffe
Caffe是一種被廣泛使用的開源深度學(xué)習(xí)框架,由加州大學(xué)伯克利分校的賈揚(yáng)清開發(fā)。Caffe是首個(gè)主流的工業(yè)級(jí)深度學(xué)習(xí)工具,運(yùn)行穩(wěn)定,代碼質(zhì)量高,適用對(duì)穩(wěn)定性要求高的生產(chǎn)環(huán)境。目前在計(jì)算機(jī)視覺領(lǐng)域Caffe依然是最流行的工具包,并且有很多擴(kuò)展。Caffe最開始設(shè)計(jì)時(shí)的目標(biāo)只針對(duì)圖像,沒有考慮文本、語音等數(shù)據(jù),因此對(duì)卷積神經(jīng)網(wǎng)絡(luò)的支持非常好,但對(duì)時(shí)間序列RNN、LSTM等的支持不是特別充分。許多研究人員采用Caffe做人臉識(shí)別、位置檢測(cè)和目標(biāo)追蹤等,很多深度學(xué)習(xí)的論文也都是使用Caffe來實(shí)現(xiàn)其模型的。
(2)TensorFlow
Google公司開源的TensorFlow框架是相對(duì)高階的機(jī)器學(xué)習(xí)庫,用戶可以方便地用它設(shè)計(jì)各種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),是理想的深度學(xué)習(xí)開發(fā)平臺(tái)。TensorFlow 使用了向量運(yùn)算的符號(hào)圖方法,使指定新網(wǎng)絡(luò)變得比較容易,但是不支持雙向RNN和3D卷積。TensorFlow移植性高,一份代碼幾乎不經(jīng)過修改就可輕松地部署到有任意數(shù)量CPU或GPU的PC、服務(wù)器或者移動(dòng)設(shè)備上。TensorFlow框架針對(duì)生產(chǎn)環(huán)境高度優(yōu)化,產(chǎn)品級(jí)的高質(zhì)量代碼和設(shè)計(jì)可以保證其在生產(chǎn)環(huán)境中穩(wěn)定運(yùn)行。
(3)Theano
Theano由Lab團(tuán)隊(duì)開發(fā)并維護(hù),是一個(gè)高性能的符號(hào)計(jì)算及深度學(xué)習(xí)庫。Theano因其出現(xiàn)時(shí)間早,一度被認(rèn)為是深度學(xué)習(xí)研究和應(yīng)用的重要標(biāo)準(zhǔn)之一。Theano 專門為處理大規(guī)模神經(jīng)網(wǎng)絡(luò)訓(xùn)練的計(jì)算而設(shè)計(jì),其核心是一個(gè)數(shù)學(xué)表達(dá)式的編譯器,可以鏈接各種可以加速的庫,將用戶定義的各種計(jì)算編譯為高效的底層代碼。
(4)Torch
Torch是一個(gè)高效的科學(xué)計(jì)算庫,含有大量的機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺、信號(hào)處理和網(wǎng)絡(luò)的庫算法。Torch對(duì)卷積網(wǎng)絡(luò)的支持非常好,通過很多非官方的擴(kuò)展支持大量的RNN模型。
(5)CNTK
CNTK 是由微軟公司推出的開源深度學(xué)習(xí)工具包,性能優(yōu)于 Caffe、Theano、TensoFlow,支持CPU和GPU兩種模式。
各種框架的底層語言和操作語言的比較,詳見表1-1所示。
表1-1 各種深度學(xué)習(xí)框架的比較

續(xù)表

- Seven NoSQL Databases in a Week
- Mobile DevOps
- 條碼技術(shù)及應(yīng)用
- 自動(dòng)檢測(cè)與轉(zhuǎn)換技術(shù)
- Mastering Elastic Stack
- 中國戰(zhàn)略性新興產(chǎn)業(yè)研究與發(fā)展·智能制造
- 可編程序控制器應(yīng)用實(shí)訓(xùn)(三菱機(jī)型)
- 菜鳥起飛系統(tǒng)安裝與重裝
- 大數(shù)據(jù)驅(qū)動(dòng)的機(jī)械裝備智能運(yùn)維理論及應(yīng)用
- 內(nèi)模控制及其應(yīng)用
- Salesforce for Beginners
- 網(wǎng)絡(luò)管理工具實(shí)用詳解
- 多媒體制作與應(yīng)用
- Spatial Analytics with ArcGIS
- Mastering MongoDB 3.x