【机器学习基础】一文归纳AI调参炼丹之法
1 ?超參數優化
調參即超參數優化,是指從超參數空間中選擇一組合適的超參數,以權衡好模型的偏差(bias)和方差(variance),從而提高模型效果及性能。常用的調參方法有:
人工手動調參
網格/隨機搜索(Grid / Random Search)
貝葉斯優化(Bayesian Optimization)
注:超參數 vs 模型參數差異 超參數是控制模型學習過程的(如網絡層數、學習率);模型參數是通過模型訓練學習后得到的(如網絡最終學習到的權重值)。
2 ?人工調參
手動調參需要結合數據情況及算法的理解,選擇合適調參的優先順序及參數的經驗值。
不同模型手動調參思路會有差異,如隨機森林是一種bagging集成的方法,參數主要有n_estimators(子樹的數量)、max_depth(樹的最大生長深度)、max_leaf_nodes(最大葉節點數)等。(此外其他參數不展開說明) 對于n_estimators:通常越大效果越好。參數越大,則參與決策的子樹越多,可以消除子樹間的隨機誤差且增加預測的準度,以此降低方差與偏差。對于max_depth或max_leaf_nodes:通常對效果是先增后減的。取值越大則子樹復雜度越高,偏差越低但方差越大。
3 網格/隨機搜索
網格搜索(grid search),是超參數優化的傳統方法,是對超參數組合的子集進行窮舉搜索,找到表現最佳的超參數子集。
隨機搜索(random search),是對超參數組合的子集簡單地做固定次數的隨機搜索,找到表現最佳的超參數子集。對于規模較大的參數空間,采用隨機搜索往往效率更高。
4 貝葉斯優化
貝葉斯優化(Bayesian Optimization) 與網格/隨機搜索最大的不同,在于考慮了歷史調參的信息,使得調參更有效率。(但在高維參數空間下,貝葉斯優化復雜度較高,效果會近似隨機搜索。)
4.1 算法簡介
貝葉斯優化思想簡單可歸納為兩部分:
高斯過程(GP):以歷史的調參信息(Observation)去學習目標函數的后驗分布(Target)的過程。
采集函數(AC):由學習的目標函數進行采樣評估,分為兩種過程:1、開采過程:在最可能出現全局最優解的參數區域進行采樣評估。2、勘探過程:兼顧不確定性大的參數區域的采樣評估,避免陷入局部最優。
4.2 算法流程
for循環n次迭代:采集函數依據學習的目標函數(或初始化)給出下個開采極值點?Xn+1;評估超參數Xn+1得到表現Yn+1;加入新的Xn+1、Yn+1數據樣本,并更新高斯過程模型; """ 隨機森林分類Iris使用貝葉斯優化調參 """ import?numpy?as?np from?hyperopt?import?hp,?tpe,?Trials,?STATUS_OK,?Trials,?anneal from?functools?import?partial from?hyperopt.fmin?import?fmin from?sklearn.metrics?import?f1_score from?sklearn.ensemble?import?RandomForestClassifierdef?model_metrics(model,?x,?y):"""?評估指標?"""yhat?=?model.predict(x)return??f1_score(y,?yhat,average='micro')def?bayes_fmin(train_x,?test_x,?train_y,?test_y,?eval_iters=50):"""bayes優化超參數eval_iters:迭代次數"""def?factory(params):"""定義優化的目標函數"""fit_params?=?{'max_depth':int(params['max_depth']),'n_estimators':int(params['n_estimators']),'max_leaf_nodes':?int(params['max_leaf_nodes'])}#?選擇模型model?=?RandomForestClassifier(**fit_params)model.fit(train_x,?train_y)#?最小化測試集(-?f1score)為目標train_metric?=?model_metrics(model,?train_x,?train_y)test_metric?=?model_metrics(model,?test_x,?test_y)loss?=?-?test_metricreturn?{"loss":?loss,?"status":STATUS_OK}#?參數空間space?=?{'max_depth':?hp.quniform('max_depth',?1,?20,?1),'n_estimators':?hp.quniform('n_estimators',?2,?50,?1),?'max_leaf_nodes':?hp.quniform('max_leaf_nodes',?2,?100,?1)}#?bayes優化搜索參數best_params?=?fmin(factory,?space,?algo=partial(anneal.suggest,),?max_evals=eval_iters,?trials=Trials(),return_argmin=True)#?參數轉為整型best_params["max_depth"]?=?int(best_params["max_depth"])best_params["max_leaf_nodes"]?=?int(best_params["max_leaf_nodes"])best_params["n_estimators"]?=?int(best_params["n_estimators"])return?best_params#??搜索最優參數 best_params?=?bayes_fmin(train_x,?test_x,?train_y,?test_y,?100) print(best_params)閱讀原文可訪問Github源碼
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 本站qq群704220115,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【机器学习基础】一文归纳AI调参炼丹之法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7电脑内存信息的查看方法
- 下一篇: AI 趋势