ML建模
在數據分析了之后就可以進行模型的建立了,機器學習模型有很多,建議均作嘗試,不僅可以測試效果,還可以學習各種模型的使用技巧。其實,幾乎每一種模型都有回歸和分類兩種版本,并且直接有scikit-learn、XGBoost、LightGBM這些庫,直接可以用!
對于模型,經典的要會推導,每種應用的模型要明確工作原理,大白話講出來!對于重要的公式要回寫。
(random forest一般效果比較好)
錯誤分析->發現新特征->訓練新模型->錯誤分析
最重要的一點,調參(超參數),我們的valid data就是用來找出來最好的參數的
根據經驗,選出對模型效果影響較大的超參。
按照經驗設置超參的搜索空間,比如學習率的搜索空間為[0.001,0.1]。
選擇搜索算法,比如Random Search、Grid Search和一些啟發式搜索的方法。
驗證模型的泛化能力
這里再提一下train valid test
train和valid都是已知的數據,通過留出法/k fold生成的兩部分,通常是7:3
test就是標簽未知了@!
交叉驗證是將整個訓練數據隨機分成K份,訓練K個模型,每次取其中的K-1份作為Train Set,留出1份作為Valid Set,因此也叫做K-fold。至于這個K,你想取多少都可以,但一般選在3~10之間。我們可以用K個模型得分的mean和std,來評判模型得好壞(mean體現模型的能力,std體現模型是否容易過擬合),并且用K-fold的驗證結果通常會比較可靠。
如果數據出現Label不均衡情況,可以使用Stratified K-fold,這樣得到的Train Set和Test Set的Label比例是大致相同。
PS:本身樣本label不均衡就是個問題,會讓模型向數目多的類別偏好
最后一句話:ensemble很給力!尤其是在分類任務
常見的Ensemble方法有Bagging、Boosting、Stacking、Blending。
Bagging是將多個模型(基學習器)的預測結果簡單地加權平均或者投票。Bagging的好處在于可以并行地訓練基學習器,其中Random Forest就用到了Bagging的思想。
Boosting的思想有點像知錯能改,每訓練一個基學習器,是為了彌補上一個基學習器所犯的錯誤。其中著名的算法有AdaBoost,Gradient Boost。Gradient Boost Tree就用到了這種思想。
Stacking是用新的模型(次學習器)去學習怎么組合那些基學習器,如果把Bagging看作是多個基分類器的線性組合,那么Stacking就是多個基分類器的非線性組合。Stacking可以很靈活,它可以將學習器一層一層地堆砌起來,形成一個網狀的結構
例:
A和B可以看作是基學習器,C、D、E都是次學習器。
Stage1: A和B各自寫出了答案。Stage2: C和D偷看了A和B的答案,C認為A和B一樣聰明,D認為A比B聰明一點。他們各自結合了A和B的答案后,給出了自己的答案。Stage3: E偷看了C和D的答案,E認為D比C聰明,隨后E也給出自己的答案作為最終答案。總結
- 上一篇: erdas查看灰度直方图_实习1:ERD
- 下一篇: java 跳格子_HDU 1208 跳格