超參尋優使用簡介

2021-09-05 12:14:46 字數 1497 閱讀 6446

在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,

可能會更加凹凸不平,存在多個區域性高低點。

我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模型以為的超引數來確定。形象的比喻,

如下圖,不同的超引數可能對應這一條不同的尋優路徑,比如當我們控制學習率的時候,模型每一步權重更新的部長就會不一樣,這樣可能導致尋優路徑產生根本的差異,

尤其是在高維空間下。

在介紹了超參優化的原理後,就來介紹我們提供的超參尋優模組工具。

首先開啟視覺化策略,然後在左邊的高階優化下面找到超參搜尋,並把它拖進來:

單擊模組後,我們能夠在右邊看到模組的屬性,包括:

在這裡構造引數搜尋空間。在超引數輸入裡,我們只需要指定需要調優的引數名,已經引數的搜尋空間就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

引數搜尋演算法有兩個可選項:

網格搜尋是指給定引數組合後,遍歷所有的排列組合。隨機搜尋指的是每次從所有的排列組合中,隨機抽出一組引數,在具有很多引數的情況下,隨機搜尋會更有效率。

在隨機搜尋的情況下,最多迭代的次數。

並行執行作業數

指用多少個執行緒同時搜尋所有引數空間

超參尋優使用介紹

在機器學習裡,我們本質上是對損失函式進行最優化的過程。過程類似下面的曲面,演算法試圖去尋找損失曲面的全域性最小值,當然損失曲面實際中不一定是凸曲面,可能會更加凹凸不平,存在多個區域性高低點。我們還是回到主題,講述的重點在於超引數尋優的意義。當我們損失曲面給定的時候,我們尋找最優點的路徑可能會有一些模...

使用jQuery實現向上迴圈滾動效果(超簡單)

今天突發奇想 想到的乙個新思路 通過使用animate改變外邊距達到滾動效果 再用複製節點插入到最後一行達到迴圈目的 html 如下 body ul style border 1px solid blue height 60px width 300px overflow hidden li aaaa...

使用交叉驗證對鳶尾花分類模型進行調參 超引數

如圖,大訓練集分塊,使用不同的分塊方法分成n對小訓練集和驗證集。使用小訓練集進行訓練,使用驗證集進行驗證,得到準確率,求n個驗證集上的平均正確率 使用平均正確率最高的超引數,對整個大訓練集進行訓練,訓練出引數。在訓練集上訓練。十折交叉驗證 諸如你有多個可調節的超引數,那麼選擇超引數的方法通常是網格搜...