筆記:http://lib.csdn.net/article/machinelearning/1079
本講大綱:
1.VC維(VC dimension)
2.模型選擇(model selection)
—交叉驗證(cross validation)
—特征選擇(feature selection)
1. VC維
VC(H)代表可以在任意標簽的情況下仍可以被線性分割的最大集合。
在2D情況下,VC(H)=3。
在VC維的定義下,為了證明VC(H)至少是d,我們要證明H能分開至少一個大小為d的集合.
重要定理:
換句話來說,如果猜想有有限的VC維,當m足夠大時會有一致收斂性.
推論:
換句話說,用H訓練好的訓練樣本數量和VC維是線性的.結果表明,對大部分的猜想類,VC維(假設合理的參數化)和參數的數量大致也是線性相關的.把這兩個放到一起,可以說(對于最小化訓練誤差的算法來說)需要的訓練樣本的數量大致和參數的類型是線性的.
VC維到底有什么用?
如果假設空間中的hypothesis數是固定的,經過證明可以得到:
也就是說,H有限且m很大時,真實誤差的上界是有限的,也就是說,通過訓練,我們可以接近真實誤差,從理論上說明機器是有學習能力的。
但是如果H無窮大呢?
因此又證明了如下公式:
這樣真是誤差就與H無關,而與VC(H)有關了。所以說,VC維是用來證明誤差的上界的,知道常用的分類的誤差上界,就會對分類器的分類效果有進一步的認識,從而選擇最優的分類器。
</br>
2. 模型選擇
然而VC維在理論上證明誤差上界,可是真實誤差有時候和理論上的誤差有一定差距,所以常用的模型選擇方法有
- CV(Cross-validation) 最常用,且易理解
- AIC(Akaike Information Criterion)
- BIC(Bayesian Information Critrion)
**交叉驗證(Cross-validation) **
保留交叉驗證
a. 隨機把訓練集S分成兩個子集,Strain(70%)和Scv(30%).Scv是保留驗證集。
b. 用Strain訓練每個模型,得到猜想hi.
c. 選擇在交叉驗證集中有最小錯誤的猜想。
</br>
交叉驗證的缺點是浪費了30%的數據,即使我們最后用整個訓練集去訓練模型. 在數據充足并且很容易獲得的情況下,這是好的,但是如果數據是很稀少的,我們需要采用另外一種方式了.-
k-fold交叉驗證
a. 隨機把S分成k個子集,每個有m/k個訓練樣本,為S1,…,Sk;
b. 對每個模型,我們這樣評價:
c. 選擇具有最低估計泛化誤差的模型,并且用整個數據集對模型進行訓練,最后輸出的猜想就是我們的答案.
一個對fold典型的選擇是k=10.
-
留一交叉驗證
當數據非常稀有時,極端的選擇是把k=m,為了盡可能使留下來的數據少,這種情況下我們會用除了一個之外的數據集進行訓練,剩下的用來測試,k個錯誤的平均值用來作為模型的估計泛化誤差.
即使這在邊說的是交叉驗證用來進行模型選擇,但是只有單個模型時也可以用來評價模型的好壞.
特征選擇
工程上的方法:
參考:https://www.zhihu.com/question/28641663/answer/41653367
- 計算每一個特征與響應變量的相關性:工程上常用的手段有計算皮爾遜系數和互信息系數,皮爾遜系數只能衡量線性相關性而互信息系數能夠很好地度量各種相關性,但是計算相對復雜一些,好在很多toolkit里邊都包含了這個工具(如sklearn的MINE),得到相關性之后就可以排序選擇特征了;
- 構建單個特征的模型,通過模型的準確性為特征排序,借此來選擇特征,另外,記得JMLR'03上有一篇論文介紹了一種基于決策樹的特征選擇方法,本質上是等價的。當選擇到了目標特征之后,再用來訓練最終的模型;
- 通過L1正則項來選擇特征:L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,但是要注意,L1沒有選到的特征不代表不重要,原因是兩個具有高相關性的特征可能只保留了一個,如果要確定哪個特征重要應再通過L2正則方法交叉檢驗;
- 訓練能夠對特征打分的預選模型:RandomForest和Logistic Regression等都能對模型的特征打分,通過打分獲得相關性后再訓練最終模型;
- 通過特征組合后再來選擇特征:如對用戶id和用戶特征最組合來獲得較大的特征集再來選擇特征,這種做法在推薦系統和廣告系統中比較常見,這也是所謂億級甚至十億級特征的主要來源,原因是用戶數據比較稀疏,組合特征能夠同時兼顧全局模型和個性化模型,這個問題有機會可以展開講。
- 通過深度學習來進行特征選擇:目前這種手段正在隨著深度學習的流行而成為一種手段,尤其是在計算機視覺領域,原因是深度學習具有自動學習特征的能力,這也是深度學習又叫unsupervised feature learning的原因。從深度學習模型中選擇某一神經層的特征后就可以用來進行最終目標模型的訓練了。