1. 程式人生 > >第四十八篇 入門機器學習——超參數問題

第四十八篇 入門機器學習——超參數問題

顯示 eight nbsp 根據 情況下 ima 測試 job 個數

No.1. kNN算法中需要傳入一個參數k,這個參數k的作用之前提到過,它就是指距離待預測數據最近的前k個數據,這個參數k的具體大小應該如何選擇?超參數問題就是描述的這類問題。 No.2. 所謂"超參數",就是指在算法運行之前需要進行指定的參數;與"超參數"向對應的是"模型參數","模型參數"是在算法運行過程中學習得到的參數。需要提的一點是,kNN算法中並沒有模型參數,但是,kNN算法中的參數k,是典型的超參數。機器學習算法工程師的一項重要工作就是"調參",通常來講,調參所要調的就是超參數。 No.3. 尋找好的超參數的方法 主要有三種方法:根據相關領域的知識來確定超參數;根據經驗數值來確定超參數;實驗搜索確定超參數 No.4. 下面我們通過實驗搜索來確定超參數 實驗前的準備 技術分享圖片

尋找參數的具體邏輯

技術分享圖片

No.5. kNN近鄰算法中還有一個比較隱秘的超參數,即待預測點與訓練數據集中每個點的距離,當最終的k個點裏面每種類型的點數相同的情況下,我們就必須要考慮哪種類型的點與待預測點更接近;即使在每種類型的點數不同的情況下,如果點數多的類型距離待預測點都相對較遠,我們也有必要考慮加入距離權重。 考慮距離權重的情況下,再次進行參數尋找 技術分享圖片

從運行結果來看,對於這個數據集,在不考慮距離、參數k為4的情況下,準確性更高 No.6. 我們之前計算待預測點與訓練數據集中的每個點的距離,使用的都是"歐拉距離",即下圖中參數p為2時的情況;當這個參數p的值為1時,這個距離稱之為"曼哈頓距離";這個帶參數p的距離公式稱之為"明可夫斯基距離",這裏的參數p也是一個"超參數",我們同樣可以尋找最佳參數p 技術分享圖片

將參數p添加到業務邏輯中:

技術分享圖片

從運行結果來看,考慮距離權重的情況下,使用歐拉距離,並選擇k值為3會使準確性更高 No.7. 上面的參數尋找過程存在一個問題:有些參數之間存在關聯,我們想要尋找更佳的參數p的話,weights參數的值就必須選擇為"distance",否則傳入的參數p就會無效,sklearn提供了一種更好的參數搜索方式——網格搜索"Grid Search" No.8. 在使用Grid Search之前,首先要定義我們的參數 技術分享圖片

進行參數搜索:

技術分享圖片

從上面搜索的結果來看,在考慮距離權重,且用於距離計算的參數p為3,k值為3的情況下準確性更好 No.9. 搜索得到最佳參數之後,我們需要使用這些最佳參數所以對應的分類器,來對測試數據進行預測 技術分享圖片

查看預測的準確率:

技術分享圖片

No.10. Grid Search中還有一些其它的參數,"n_jobs"用於指定進行搜索使用的CPU核心數,該參數設置為-1時會使用CPU的所有核心;"verbose"用於顯示搜索的過程,指定的數值越大,顯示的信息越詳細

技術分享圖片

第四十八篇 入門機器學習——超參數問題