統計學習方法是基於訓練數據構建統計模型,從而對數據進行預測和分析。
統計學習分為,監督學習(supervised learning),非監督學習,半監督學習和強化學習(reinforcement learning),其中以監督學習最為常見和重要,所以這里只討論監督學習
統計學習的過程如下,
1. 獲取訓練數據集合
2. 確定假設空間,即所有可能的模型的集合
3. 確定模型選擇的准則(什么是最優模型的標准),即學習的策略
4. 實現求解最優模型的算法(如何獲取最優模型),即學習的算法
5. 通過算法中假設空間中,找到最優模型
6. 使用該模型對新數據進行預測和分析
輸入數據
輸入實例x記作,
聯合概率分布
監督學習假設輸入和輸出的隨機變量X和Y遵循聯合概率分布P(X,Y),P(X,Y)表示分布函數或分布密度函數。
這個是基本假設,即輸入和輸出數據間是存在某種規律和聯系的,否則如果完全隨機的,就談不上學習了。並且訓練數據和測試數據是依據P(X,Y)獨立同分布產生的
假設空間
監督學習的目的在於學習一個由輸入到輸出的映射,這個映射由模型來表示。
而這樣的模型不只一個,可能很多,所有可能的模型的集合就是假設空間(hypothesis space). 假設空間代表了學習的范圍,監督學習的目的就是從假設空間中找到最優的模型
模型
在監督學習中,模型有兩類
非概率模型,決策函數
概率模型,條件概率
策略
如何定義一個模型好壞?
損失函數(L(Y,f(X)),度量一次預測的結果好壞,即表示預測值f(X)和真實值Y之間的差異程度。 
其他幾個損失函數都比較好理解
對數損失函數,解釋一下
首先它用於概率模型,最精確的預測P(Y|X)=1,所以為1時L=0,沒有損失
而P都是小於1,所以對數為負,並且越小L的值越大,想想對數分布曲線
風險函數(risk function)或期望損失(expected loss)
用於度量平均預測結果的好壞,其實就是損失函數的期望
輸入X,輸出Y遵循聯合分布P(X,Y),定義如下
數學期望
參考http://zh.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E6%9C%9F%E6%9C%9B期望就是求平均值,對於離散值很簡單,乘上概率相加就可以,比如拋骰子的期望就是,
對於連續數據,稍微復雜些,需要使用積分,本質還是一樣的。
積分參考,http://zh.wikipedia.org/wiki/%E7%A7%AF%E5%88%86
上面說了風險函數代碼了模型的平均的預測結果,所以學習的目標應該是選擇風險函數最小的模型。
但是問題在於,計算風險函數需要知道聯合分布P(X,Y),但是這個是無法知道的,否則也不用學習了,所以監督學習就成了一個病態問題(ill-formed problem),即無法精確的判斷模型真正的效果
經驗風險(empirical risk或經驗損失(empirical loss)
既然無法得到真正的風險函數的值,我們就用訓練數據集上的平均損失來模擬真正的風險函數
當N無窮大的時候,經驗風險會逼近期望風險
所以我們可以采用經驗風險最小化(empirical risk minimization, ERM)的策略來找到最優的模型,當樣本容量足夠大的時候,能保證很好的學習效果
在現實中被廣泛使用,比如,極大似然估計(maximum likelihood estimation)
當然這種策略的問題就是會導致過擬合(over-fitting)現象
所以提出結構風險最小化(structural risk minimization,SRM)策略來防止過擬合
其實思路很簡單,就是在經驗風險后面加上表示模型復雜度的正則化項(regularizer)或罰項(penalty term),其中J(f)表示模型復雜度,模型越復雜就越大
因為越是過擬合的模型越是復雜,所以通過regularizer可以有效平衡擬合程度
算法
用什么樣的方法來求解最優模型
這樣統計學習模型就歸結為最優化問題,如果最優化問題有顯式的解析解,比較簡單,直接求出即可。但通常解析解是不存在的,所以就需要利用最優化算法來求解。
過擬合與模型選擇
再仔細分析一下過擬合問題
當我們在假設空間中,選擇模型的時候,希望可以盡可能逼近那個“真”模型,具體上講就是兩個模型間,參數個數相同,並且參數向量相近
但是如果在選擇的時候一味的提高對訓練集的預測能力,會導致得到比真模型復雜度更高的模型,即包含更多的參數,稱為過擬合
例子,用M次多項式去擬合圖中訓練集中的10數據點
可以看到當多項式參數個數為0,1時擬合效果是很差的
但當為9時,完美的經過訓練集中的每個點,但因為訓練集是有噪點的,所以這個模型過於復雜,擬合程度也不好,這就是過擬合
只有當為3時,達到很好的擬合效果
如下圖,當訓練誤差接近於0的時候,模型復雜度會大大增加,並且測試誤差也會變大,所以必須要找到那個平衡點上的模型
問題是如何找到,下面有兩個方法
正則法
這個方法前面提過
正則項可以有不同的形式,比如在回歸問題中,損失函數是平方損失,正則項可以是參數向量的L1范數或L2范數
具體定義參考下面,反正都可以代表模型的復雜度
給定向量x=(x1,x2,...xn)
L1范數:向量各個元素絕對值之和,曼哈頓距離
L2范數:向量各個元素的平方求和然后求平方根,歐幾里得距離![]()
正則法是符合奧卡姆剃刀(Occam’s razor,http://zh.wikipedia.org/zh/%E5%A5%A5%E5%8D%A1%E5%A7%86%E5%89%83%E5%88%80)原理的,優先選擇更簡單的模型
交叉驗證
1. 簡單交叉驗證,將數據70%作為訓練集,30%作為測試集,然后選出測試誤差最小的模型
2. S-fold交叉驗證,將數據隨機分成S份,將S-1份作為訓練集,剩下的作為測試集,對於訓練集和測試集有S種選擇,所以選出S次評測的平均誤差最小的模型
3. leave-one-out交叉驗證,S-fold的特例,用於數據缺乏的情況,S=N,即一份里面只有一個數據
泛化能力(generalization ability)
學習方法的泛化能力指該方法學習到的模型對未知數據的預測能力
往往采用通過測試誤差來評價學習方法的泛化能力,問題是過於依賴測試集,並且測試集是有限的,不是很可靠
所以定義泛化誤差來表示泛化能力
泛化誤差(generalization error),即模型的期望風險 ![]()
但是期望風險是無法精確算出的,所以只能定義
泛化誤差上界 (generalization error bound) 
前面說了,期望風險是無法算出的,所以思路仍然是用經驗誤差加上一項來代表泛化誤差的上界,具體證明就不寫了
理解,
第一項是經驗誤差(訓練誤差)
第二項,N是樣本數量,當N趨於無窮時,這項為0,即期望誤差等於經驗誤差
d表示假設空間中的函數個數,越大就越難學,泛化誤差就越大
統計學習的分類
生成模型和判別模型
生成方法
由數據學習聯合概率分布P(X,Y),然后求出條件概率分布P(Y|X)作為預測模型,即生成模型,典型的如,朴素貝葉斯和隱馬爾可夫模型
優點,
可以得到聯合概率分布
收斂速度更快
當存在隱變量時,仍可以使用
判別方法
由數據直接學習決策函數f(X)或條件概率分布P(Y|X)作為預測模型,即判別模型
典型的如,KNN,感知機,決策樹,邏輯回歸,支持向量等
優點,
學習准確率比較高
便於對數據進行抽象,可以簡化學習問題
統計學習還可以根據輸入輸出的不同類型,分為,
分類問題
輸出變量是有限個離散值時,就是分類問題
學習出的分類模型或分類決策函數稱為分類器(classifier)
標注問題
輸入是一個觀測序列,而輸出是一個標記序列
典型的應用,詞性標注,輸入詞序列,輸出是(詞,詞性)的標記序列
回歸問題
輸入輸出都是連續變量是,就是回歸問題,等價於函數擬合









