機器學習綜述

python進階者 發佈 2020-01-02T14:46:47+00:00

機器學習的發展歷程機器學習是一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科,專門用於研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。

機器學習的發展歷程

機器學習是一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科,專門用於研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。機器學習是人工智慧的核心,是使計算機具有智能的根本途徑。

從上世紀五十年代初開始,機器學習已經發展了將近70年時間。從機器學習的發展歷程來看,主要有如下幾個重要時間線。


進入21世紀後,在數據量更大大,機器計算能力更強等原因下,深度學習正式興起。

機器學習的分類

我們一般將機器學習分為四大類:監督學習、非監督學習、半監督學習和強化學習。

監督學習是指利用一組已知類別的樣本調整分類器的參數,使其達到所要求性能的過程,也稱為監督訓練或有教師學習。在監督學習的過程中會提供對錯指示,通過不斷地重複訓練,使其找到給定的訓練數據集中的某種模式或規律,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求包括輸入和輸出,主要應用於分類和預測。其最大的特點就是使用已標記的數據作為數據集。

非監督學習與監督學習相對應,兩者的區別在於非監督學習無須對數據集進行標記,即沒有輸出。它需要從數據集中發現隱含的某種結構,從而獲得樣本數據的結構特徵,判斷哪些數據比較相似。因此,非監督學習目標不是告訴計算機怎麼做,而是讓它去學習怎樣做事情。其最大的特點就是使用未標記的數據作為數據集。

半監督學習是監督學習與非監督學習的結合,它在訓練階段同時使用未標記的數據和已標記的數據,不僅要學習屬性之間的結構關係,也要輸出分類模型進行預測。

強化學習又叫做再勵學習、評價學習或增強學習,是機器學習的範式和方法論之一,用於描述和解決智能體在與環境的交互過程中通過學習策略以達成回報最大化或實現特定目標的問題。

機器學習的常用模型、損失函數與優化方法

機器學習可以解釋成數據+模型+優化方法,其中模型發揮著極其重要的作用。經典的機器學習模型算法包括線性算法(線性回歸、邏輯回歸等)、決策樹(ID3、C4.5、CART)、SVM、樸素貝葉斯算法、kNN、聚類算法(k-Means等)、隨機森林、降維算法、梯度增強算法等。

機器學習發展至今,已經有許多損失函數被用於各種模型學習之中,其中最常見的包括0-1損失函數、絕對值損失函數(L(y, f(x))=|y-f(x)|)、平方損失函數(L(y, f(x))=(y-f(x))^2)、log對數損失函數(L(y, f(x))=log(1+e^{-yf(x)}))、指數損失函數(L(y, f(x))=exp(-yf(x)))和Hinge損失函數(L(w, b)=max{0, 1-yf(x)})。(上述公式中,y為標籤值,f(x)為預測值。)

在機器學習的優化方法中,梯度下降是最常用的優化方法之一。它是使用梯度的反方向來更新模型需要學習的參數,從而使得目標函數達到最小化的一種優化方法,我們也常常稱之為梯度更新。常見的梯度更新方法包括梯度下降(全量)、隨機梯度下降、小批量梯度下降、引入動量的梯度下降、自適應學習率的Adagrad算法和牛頓法。

機器學習的評價指標

機器學習在訓練模型的過程中針對不同的應用場景往往需要使用不同的評價指標來指導模型進行更好的學習,最常見有如下幾種。

  • MSE(均方誤差):是真實值與預測值的差值的平方再求和平均。常被用於線性回歸的損失函數
  • MAE(平均絕對誤差):是絕對誤差的平均值,可以更好地反映預測值誤差的實際情況。是用於回歸問題的損失函數。
  • RMSE(均方根誤差):是衡量觀測值與真實值之間的偏差。常用於回歸問題。
  • 混淆矩陣:是機器學習中總結分類模型預測結果的情形分析表,以矩陣形式將數據集中的記錄按照真實的類別與分類模型預測的類別判斷兩個標準進行匯總。

其中,TP(真正例)表示真實類別為正例,預測類別為正例;FN(假負例)表示真實類別為正例,預測類別為負例;FP(假正例)表示真實類別為負例,預測類別為正例;TN(真負例)表示真實類別為負例,預測類別為負例。由以上混淆矩陣可以延伸出許多可用於分類問題的評價指標。

  1. 真正率:TPR=TP/(TP+FN)。
  2. 假負率:FNR=FN/(TP+FN)。
  3. 假正率:FPR=FP/(FP+TN)。
  4. 真負率:TNR=TN/(FP+TN)。
  5. 準確率:ACC=(TP+TN)/(TP+FN+FP+TN)。
  6. 精準率:P=TP/(TP+FP)。
  7. 召回率:R=TP/(TP+FN)。
  8. F1-Score:F_1=2/(1/P+1/R)。
  • ROC曲線:採用不分類閾值時的TPR(真正率)與FPR(假正率)圍成的曲線,以FPR為橫坐標,TPR為縱坐標。如果ROC是光滑的,那麼基本可以判斷沒有太大的overfitting。
  • AUC:就是ROC曲線下的面積,計算從(0, 0)到(1, 1)之間整個ROC曲線以下的整個二維面積,用於衡量二分類問題及機器學習算法性能的泛化能力。其另一種解讀方式可以是模型將某個隨機正類別樣本排列在某個隨機負類別樣本之上的機率。使用AUC判斷分類器(預測模型)優劣的標準如下:1)AUC=1是完美的分類器,採用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器。2)0.5<AUC<1,優於隨機猜測。這個分類器妥善設定閾值的話,能有預測價值。3)AUC<0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

上圖為一個ROC曲線示例,藍色曲線就是一條ROC曲線,坐標(0, 0)到(1, 1)之間整個ROC曲線以下的整個二維面積就是AUC,上圖的AUC值為0.8641,可見其模型是一個比隨機猜測要好的分類器。

機器學習的模型選擇

在實際的機器學習任務中,我們往往會對同一個問題使用多種算法來進行選擇,即使是使用同一個算法,當使用不同參數配置時,也會產生不同的模型。因此,我們常常會進行模型選擇,最常用的模型選擇方法就是交叉驗證。將所有數據分為訓練集、驗證集和測試集三部分。其中,驗證集不僅在選擇模型時有用,在超參數選擇、正則項參數和評價模型中也很有用。

k-摺疊交叉驗證步驟:假設訓練集為S,首先將訓練集等分為k份:{S1, S2, ..., Sk},然後每次從集合中拿出k-1份進行訓練並利用集合中剩下的那一份來進行驗證並計算損失值,最後共得到k次測試得到的損失值,並選擇平均損失值最小的模型。

  • 方差與偏差、欠擬合與過擬合

偏差(bias)是當前模型的平均預測與我們需要預測的實際結果之間的差異。一個高bias的模型表明它對訓練數據的關注較少。這使得模型過於簡單,在訓練和測試中都沒有達到很好的準確性。這種現象也被稱為欠擬合

方差(Variance)可以簡單理解為模型輸出在一個數據點上的分布。Variance越大,模型越有可能密切關注訓練數據,而不提供從未遇到過的數據的泛化。因此,該模型在訓練數據集上取得了非常好的結果,但是與測試數據集相比,結果非常差,這就是過擬合的現象。

欠擬合一般表示模型對數據的表現能力不足,通常是模型的複雜度不夠,並且bias高,訓練集的損失值高,測試集的損失值也高。

過擬合一般表示模型對數據的表現能力過好,通常是模型的複雜度過高,並且Variance高,訓練集的損失值低,測試集的損失值高。

上圖中,圓的中心(紅色部分)是一個模型,它完美地預測了精確的值。事實上,我們從來沒有發現過這麼好的模型。當我們離圓的中心越來越遠,我們的預測就越來越糟。我們可以改變模型,這樣我們就可以儘可能地增加落入圓中心的模型猜測的數量。

如果我們的模型過於簡單,參數很少,那麼它可能就會產生高偏差和低方差。如果我們的模型有大量的參數,那麼它就可能會有高方差和低偏差。因此,我們需要在偏差值和方差值之間取得平衡,這也是我們在設計算法時計算模型複雜度的基礎。

機器學習的參數調優

在機器學習中,通過參數調優,可以讓我們的模型工作得更好。常用的參數調優方法有網格搜索、隨機搜索和貝葉斯優化算法。

網格搜索通過窮舉搜索的方式在所有候選的參數中選擇,通過循環遍歷,嘗試每一種可能性,表現最好的參數就是最終的結果

隨機搜索與網格搜索相比,並未嘗試所有參數值,而是從指定的分布中採樣固定數量的參數設置。它的理論依據是,如果隨機樣本點集足夠大,那麼也可以找到全局的最大或最小值,或它們的近似值。通過對搜索範圍的隨機取樣,隨機搜索一般會比網格搜索要快一些。

貝葉斯優化算法用於機器學習調參的主要思想是,給定優化的目標函數(廣義的函數,只需指定輸入和輸出即可,無需知道內部結構以及數學性質),通過不斷地添加樣本點來更新目標函數的後驗分布,直到後驗分布基本貼合於真實分布。簡單的說,就是考慮了上一次參數的信息,從而更好的調整當前的參數。

關鍵字: