統計學習方法筆記-概述

統計學習方法筆記

緣起

統計學習方法是李航博士的經典只作,也是很多學習機器學習的同學入門必備的書籍。這本書結合理論和習題,可深可淺的講述了機器學習算法的原理。之前也讀過一遍這本書,現在之所以寫《統計學習方法》筆記,主要是和兩個小夥伴有一個學習計劃,我們每兩週進行一個分享會,然後我們的第一本書選擇的就是李航博士的《統計學習方法》。這裏主要是整理分享會中的內容,希望對大家有所幫助。

統計學習方法概論

統計學習有自己的定義,主要是基於數據構建概率統計模型並運用該模型對未知數據進行預測和分析的一門學科。這裏我們不管統計學習的方法的定義,就把它理解爲機器學習,從數據出發,通過降低相應的損失函數來得到一個在未來數據集合上表現良好的模型。之後我們就用機器學習替換統計學習,這裏我們簡單的認爲他們是一樣的東西。

機器學習三種方式

定義:
訓練數據 T={(x1,y1x_1,y_1),(x2,y2x_2,y_2),…,(xN,yNx_N,y_N)}; xix_i對應的是一個n維的向量,yiy_i是其對應的標記數據,我們的目標是對應給定未知的xjx_j來預測其對應的yjy_j值。

  1. 監督學習: 在訓練數據中,所有的xix_i都對應有相應的yiy_i
  2. 半監督學習: 在訓練數據中,只有一部分數據的xix_i都對應有相應的yiy_i,其他一部分數據只有x,沒有y。
  3. 無監督學習: 在訓練數據中,所有的xix_i都沒有相應的yiy_i

統計學習(機器學習)三要素

統計方法 = 模型(model)+ 策略(strategy)+ 算法(algorithm)

機器學習 = 數據(data) + 模型(model) + 優化方法(optimal strategy)

監督學習問題形式化:主要有兩個階段(學習模型:基於數據、算法、優化)和預測未知數據。

Screenshot-from-2018-12-12-18-42-22
監督學習問題

模型(model)

基於數據,我們需要考慮的問題是需要學習什麼樣的模型,首先監督學習,半監督學習或者無監督學習,我們主要是如何從決策函數的集合中學習到最有的函數,這裏的函數是廣義的代表,不是所謂簡單的f(x)。假設函數空間function_set,:
fs={fY=f(X)}fs = \{f|Y=f(X)\}

X是向量,f(X):是一個函數的代表,有時候也可以是概率函數。

策略(strategy)

策略就是我們在機器學習模型中,常提到的損失函數。這是來表示模型的好壞的指標,一般情況下,我們使用這個函數的值來表示得到的模型的好壞。一般記作:L(Y,f(x))L(Y,f(x)).
常用的所示函數如:

  1. 0-1損失函數(0-1 loss function)
    L(Y,f(X))={1,Yf(x)0,y=f(x)L(Y,f(X))=\begin{cases} 1, & Y \neq f(x) \\ 0, & y =f(x) \end{cases}
    2.平方損失函數(qurdratic loss function)
    L(Y,f(x))=(Yf(X))2L(Y,f(x))=(Y-f(X))^2

3.絕對損失函數(absolute loss function)
L(Y,f(x))=(Yf(X))L(Y,f(x))=|(Y-f(X))|

4.對數損失函數(logarithmic loss function; P(Y|X)表示X的情況下得到Y的概率。
L(Y,P(YX))=logP(YX)L(Y,P(Y|X))=-logP(Y|X)

一般情況下,在給定數據的情況下,我們一般最小化所有訓練數據的誤差叫做經驗風險最小化。之後只需要求解讓經驗風險最小化的參數即可。經驗風險最小化:
minfF=1Ni=1NL(yi,f(xi))min_{f\in F} = \frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i))
當數據量很大的情況下,使用經驗風險最小化,可以得到不錯的模型,但是當數據量很少的情況下,就會產生過擬合。我們可以在經驗風險最小化的基礎上加上正則項來防止過擬合,這叫做結構風險最小化
minfF(f)=1Ni=1NL(yi,f(xi))+λJ(f)min_{f\in F}(f) = \frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i)) + \lambda J(f)
λ\lambda是中和參數,來平衡模型複雜度和經驗風險之間的關係。

算法

主要表示的是計算方法,例如梯度下降,Adam算法,牛頓迭代方法等。

模型的評估和模型的選擇

一般情況下,我們在訓練模型的時候,會將數據劃分爲:所有數據=訓練數據集合+驗證數據集合+測試數據集合。我們根據訓練數據集合得到模型,這時候會產生一個訓練誤差,我們會根據驗證數據的誤差來調優一個模型的參數,會得到一個驗證誤差。之後會將的得到的最有的模型應用到測試數據集上,得到測試誤差。判斷這個模型的預測能力和泛化能力。

  1. 數據如何劃分?
    我們一般選擇交叉驗證的方式來劃分數據集合
  • 簡單交叉驗證: 隨機將數據分成兩部分,一般是8-2或者7-3,分別作爲訓練和驗證集合。
  • S折交叉驗證: 將數據劃分成S分,依次用其中的S-1個子集作爲訓練數據,剩下的作爲驗證集合,最後平均。
  • 留一交叉驗證: S=N,一般不使用這種方式。
  1. 怎麼比較三種誤差?
    我們的目的是得到模型在測試集合和未來的數據集合上變現良好,這表示我們的模型泛化能力要強,一般情況下我們會使用經驗風險加正則項的結構經驗誤差來進行優化,常用的正則項有(L0,L1,L2)(L_0, L_1, L_2)範式。如果訓練誤差過小,測試誤差卻大,表示產生了過擬合,具體的可以看下面這個圖。
Screenshot-from-2018-12-12-19-38-50
訓練誤差和測試誤差與模型複雜度的關係

生成模型和判別模型

  1. 判別模型,直接理解可以直接得出最後的結果,可以直接又數據學習到預測函數f(X)或者條件概率分別P(Y|X)的模型。代表: k近鄰、感知機、決策樹、邏輯斯蒂迴歸、最大熵模型、支持向量機、提升方法和條件隨機場等。
  2. 生成模型,需要先學習到聯合概率分佈P(X,Y),之後在求出條件概率分佈P(Y|X)的模型。代表:樸素貝葉斯和因馬爾科夫模型。

一般需要解決的問題

首先我們需要明確一點,不管是什麼問題,他們的輸入都一樣,不一樣的是使用損失函數和輸出值。

  1. 分類問題: 輸入X,損失函數交叉熵,0-1損失,輸出是有限的離散值
  2. 迴歸問題: 輸入X,損失函數平方差,輸出是無限的連續實數值
  3. 標註問題: 輸入X,損失函數交叉熵等,輸出是的一個序列

感謝:

感謝小夥伴王**的分享。
生活如此,問題不打。喵~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章