在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,
可能會更加凹凸不平,存在多個區域性高低點。
我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模型以為的超引數來確定。形象的比喻,
如下圖,不同的超引數可能對應這一條不同的尋優路徑,比如當我們控制學習率的時候,模型每一步權重更新的部長就會不一樣,這樣可能導致尋優路徑產生根本的差異,
尤其是在高維空間下。
在介紹了超參優化的原理後,就來介紹我們提供的超參尋優模組工具。
首先開啟視覺化策略,然後在左邊的高階優化下面找到超參搜尋,並把它拖進來:
單擊模組後,我們能夠在右邊看到模組的屬性,包括:
在這裡構造引數搜尋空間。在超引數輸入裡,我們只需要指定需要調優的引數名,已經引數的搜尋空間就ok了,下面給出了示例:
def bigquant_run():
param_grid = {}
# 在這裡設定需要調優的引數備選
param_grid['m6.number_of_trees'] = [5, 10, 20]
return param_grid
切換到**模式,可以參考所有可以調優的引數,甚至包括演算法和演算法的版本都可以修改。
評分函式是用來評價一組引數好壞的指標,下面我們給出了乙個示例,以回測最終的夏普比作為評分函式:
def bigquant_run(result):
score = result.get('m19').read_raw_perf()['sharpe'].tail(1)[0]
return score
引數搜尋演算法有兩個可選項:
網格搜尋是指給定引數組合後,遍歷所有的排列組合。隨機搜尋指的是每次從所有的排列組合中,隨機抽出一組引數,在具有很多引數的情況下,隨機搜尋會更有效率。
在隨機搜尋的情況下,最多迭代的次數。
並行執行作業數
指用多少個執行緒同時搜尋所有引數空間
超參尋優使用簡介
在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,可能會更加凹凸不平,存在多個區域性高低點。我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模...
使用交叉驗證對鳶尾花分類模型進行調參 超引數
如圖,大訓練集分塊,使用不同的分塊方法分成n對小訓練集和驗證集。使用小訓練集進行訓練,使用驗證集進行驗證,得到準確率,求n個驗證集上的平均正確率 使用平均正確率最高的超引數,對整個大訓練集進行訓練,訓練出引數。在訓練集上訓練。十折交叉驗證 諸如你有多個可調節的超引數,那麼選擇超引數的方法通常是網格搜...