__回顧:__同時使用L1正則和L2正則的線性回歸模型就稱為Elastic Net,$color{red}{彈性網絡算法}$
在實際工作中,對于各種算法模型(線性回歸)來講,__我們需要輸入θ、p、λ的值。__
θ=(XTX)-1XTY ;算法會自動生成,無需人工幹預。
p、λ 都是超參數;需要人工調整。
$color{red}{超參數}$ 是在開始學習過程之前設定值的參數,而不是通過訓練得到的參數資料。通常情況下,需要對超參數進行優化,給學習機選擇一組最優超參數,以提高學習的性能和效果。
求解p、λ的過程叫做調參(超參)
如交叉驗證:将訓練資料分成多份,其中一份進行資料驗證,并擷取最優的超參:p、λ;常見的方法:k折交叉驗證。五折交叉驗證 (scikit-learn中預設)
=== 訓練集與測試集劃分方法 ===
1、留出法 (hold-out) :
一部分為訓練集,一部分為測試集。
盡量保證資料分布的一緻性,劃分比例可以是 2:1 或 4:1
對應函數:train_test_split(X,Y,test_size)
2、交叉驗證法 (k-fold cross validation) :
劃分為k個互斥子集,用k-1作為訓練集,剩下一個為測試集,最終每一個子集都會作為測試集,其餘子集作為訓練集,共進行k次模組化,最終得到測試結果的均值。
k取值一般為10。
随機取k個互斥子集,進行p次,最後p個k-fold cv進行取平均,叫做p次k折交叉驗證。
k折交叉驗證即能幫我們挑選出最優參數,也能幫我們挑選出最優模型。
3、留一法LOOCV (leave-one-out cross validation):
m個樣本,令k=m,作為k折交叉驗證的特例。隻有1種劃分方法,即每個測試集隻有一條資料。
優勢:每個模型都能很好的反應原始資料集的特性。
劣勢:計算量在資料量大的時候會非常大,還不算調參的計算量。
讓每一個樣本都做一次測試集,其他樣本都做訓練集。即做一次LOOCV 需要做m次的訓練,最後取平均。
4、Bootstrapping(自助法):
設現在有一個資料集D,對D中的m個資料随機取樣,接着将資料放回原資料集。然後再一次繼續取樣,重複m次,産生一個新的資料集D' ,最後取得的資料作為測試集。
D={1,5,2,3} m=4
D‘ 長度也應該等于4 ,是以抽4次
第一次抽到了2,然後吧放回去 D’ = {2}
第二次抽到了2,然後把2放回去 D‘ = {2,2}
第三次抽到了2,然後把2放回去 D‘ = {2,2,2}
第四次抽到了3,然後把3放回去 D‘ = {2,2,2,3}
其中{1,5}沒有被抽到,将其作為測試集。
根據機率,__未取到的資料占比約為36.8%__: