日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第六课 多算法组合与模型调优

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第六课 多算法组合与模型调优 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本系列是七月算法機器學習課程筆記

文章目錄

  • 1 前序工作流程
    • 1.1 數據處理
    • 1.2 特征工程
    • 1.3 模型選擇
    • 1.4 交叉驗證
    • 1.5 尋找最佳超參數
  • 2 模型優化
    • 2.1 模型狀態
    • 2.2 模型優化1
    • 2.3 模型優化2
    • 2.4 模型優化3
    • 2.5 模型優化4:模型融合
      • 2.5.1 bagging
      • 2.5.2 staking
      • 2.5.3 adaboost
      • 2.5.4 Gradient Boosting Tree

1 前序工作流程

1.1 數據處理

1.2 特征工程

這兩部分在第五課已經說明了。

1.3 模型選擇

在sklearn中有關于算法選擇的路徑圖。但也不是絕對的。
模型選擇有兩種含義。
第一種是:選擇不同算法。
當拿到一個問題先看屬于這4種類型中的哪一種:分類?回歸?聚類?降維?例如搜索結果排序,看上去不是上面的任何一種。繼續想為什么要排序,排序就是把用戶想點的數據放在前面,那就可以將問題看做是分類問題:用戶會點的數據和用戶不會點的數據。當然也可以看做是回歸問題:用戶點擊數據的概率。
此外還要看數據類型:是文本型數據還是數值型數據。例如分類問題中文本型數據推薦使用樸素貝葉斯算法。數值型可以使用K近鄰或者SVM。

第二種是:選擇超參數
這就類似于師哥師姐給你介紹了很多學習方法,當用在你自己的具體情況下,究竟該學習多少小時的英語,該用多少小時學習數學。這是需要考慮的。

1.4 交叉驗證

交叉驗證是用于評估模型超參數的一種方法。
我們將數據集分為訓練集和測試集。測試集用于評估模型,只能使用一次,類比于三年只能參加一次高考。
交叉驗證最常采用的方法是K折交叉驗證。是將訓練集分為k份。每次隨機選擇一份數據用于驗證,其余數據用于訓練。
例如下圖,在給定一組超參數條件下,使用其中1份數據用于評估,4份數據用于訓練。做5次訓練,得到5個模型的評估結果,求其平均值作為該組參數的驗證結果。

1.5 尋找最佳超參數

尋找最佳超參數有幾種方法,常用的是網格搜索交叉驗證GridSearchCV。
網格交叉驗證就是任意參數要做兩兩組合。例如C=[1,10,100],gamma=[0.001,0.0001]。那網格交叉驗證就可以得到6組超參數。每一組超參數交給交叉驗證算法,評估模型效果。
最后選擇模型效果最好的那一組參數作為最終模型的超參數。在訓練集上訓練得到模型作為最終的模型。

此外還有隨機搜索交叉驗證方法。他們只是組合超參數的方式不同。

2 模型優化

2.1 模型狀態

模型的狀態分為:過擬合、欠擬合、合適。

欠擬合是指模型學習能力弱,不能很好的表達數據。表現特征是在訓練集準確率低,在測試集準確率低。

過擬合是指模型學習能力強,學習了噪音數據。表現特征是在訓練集準確率高,在測試集準確率低。

訓練集準確率隨著樣本量的增加而減小。原因是當樣本量小的時候,模型不是學習而是記憶結果。所以隨著樣本量增加,訓練集準確率降低。
測試集準確率隨著樣本量的增加而增加。原因是見到的樣本多了,自然訓練集數據越接近真實世界的數據,能夠正確處理的數據也越來越多。
下圖中的紅線是一條標準線,是理想中想要找到的線。

在實際工作中,不會畫這么麻煩的曲線,時間也不允許。會直接拿數據,看準確率。準確率都低,那基本就是欠擬合。訓練集準確率高,測試集準確率低,過擬合。

2.2 模型優化1

如果發生過擬合:
1 采集更多的數據:增加數據會降低噪音數據的影響
2 增大正則化系數

如果發生欠擬合:
1 找更多的特征
2 減小正則化系數

2.3 模型優化2

如果是線性模型(線性回歸、邏輯回歸、線性SVM),可以分析特征系數。查看絕對值高的特征,看是不是可以做進一步細化,甚至可以做特征組合。

2.4 模型優化3

bad case分析
分析分錯了的樣本,歸類錯誤原因。
分類問題:看是哪個特征的影響大,有沒有共性
回歸問題:哪些樣本預測結果差距大,為什么?

2.5 模型優化4:模型融合

模型融合(model ensemble)
模型融合是一組獨立的模型的組合。如果所有的模型都是同一種算法,稱為base leaner。如果模型算法不同,就稱為component leaner。

為什么這樣是有效的呢?
從統計角度來講,機器學習就是要找到一種從X到y的映射。這個真實的映射是什么誰都不知道。那如果有多個模型來預測學習的話,可能會更接近真實。

從計算角度來講,很多優化函數是沒有全局最優解,找到的是局部最優解。但是初始化參數不同,可能會落到不同的局部。有多個模型求平均,會接近最終想要的優化局部。

模型融合的方式有三種
1 bagging :群眾的力量是偉大的,集體智慧是驚人的。
2 stacking:站在巨人的肩膀上能看得更遠。
3 adboost:一萬小時定律。

2.5.1 bagging

思路:很多時候模型效果不好是因為過擬合了。怎么解決?如果每次只給部分數據,多找幾個模型來做一下,綜合一下他們的答案。

過程:如果用同一個算法,每次取一個子集訓練一個模型。如果是分類問題,將多個模型的結果做vote,如果是回歸問題,將多個模型的結果做平均。如果用不同的算法,用全部數據集訓練模型。如果是分類問題,將多個模型的結果做vote,如果是回歸問題,將多個模型的結果做平均。

2.5.2 staking

stacking學習步驟分2步。將訓練集分為兩部分數據集D1和D2。D1和D2是沒有交集的。
第一步,也就是level0,使用數據集D1,學習到多個模型。例如學習到LR、SVM、DT三種模型。
第二步,也就是level1,使用數據集D2和使用上一步的模型,學習到新的模型,作為最終的模型。這個模型如果是線性模型,那可以理解為是前面模型的線性組合。這個模型也可能是其他模型。

通常情況下stacking這個模型能力會非常強,所以第二層的模型一般使用線性模型,例如LR。

2.5.3 adaboost

思路:模型效果不好是因為不夠努力,要重復迭代和訓練。要多做之前的錯題,每次分配給分錯的樣本更高的權重。用最簡單的分類器疊加。

2.5.4 Gradient Boosting Tree

思路:從殘差中學習

總結:模型融合有三種思路:bagging stacking boosting。
bagging的具體例子是:RandomForest
boosting的具體例子是:Adaboost,GDBT

bagging方式:VotingClassifier、BaggingClassifier、RandomForestClassifier
boosting方式:AdaBoostClassifier

總結

以上是生活随笔為你收集整理的第六课 多算法组合与模型调优的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。