色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何選擇機器學習算法?

李中冰2年前17瀏覽0評論

本文邀請qiaolin來回答,與你分享機器學習學習算法的方法論~

決策流程

選擇機器學習算法時,需要考慮以下因素:

需要預測什么?分類,回歸,還是聚類?

算法的復雜度,應用在大數據上是否可行?

算法有沒有迭代(相對于batch)的版本?能否實現在線學習或streaming?

算法是否需要可解釋性?

特征是否高維?如高維是否考慮用PCA或Lasso降維?

算法的準確率,是否傾向于欠擬合或過擬合?

參數模型中引入的“prior”對該數據集是否合理?

同時我們也需要考慮模型的表現,如模型訓練時,神經網絡的比SVM快(why?),而預測步驟,SVM比神經網絡快(why?)。

模型選擇流程圖

新手選擇合適的模型,可以參照下面Scikit-learn、SAS或MicrosoftAzure的算法流程圖。

[Scikit-learn算法流程圖選擇]

[SAS算法流程圖]

[MicrosoftAzure算法流程圖]

集成學習(Ensemblemethods)

基于樹模型的算法,需要理解從下面模型的變化:決策樹->baggingtrees->隨機森林->GradientBoostingtrees。

準確率增加

解釋性下降

計算時間和需要的內存上升(boosting算法無法并行計算)

我們比較下集成學習常見Bagging,Boosting和Blending方法:

Bagging:用Boostrap有放回抽樣的方法抽取樣本建不同的模型,每個模型投票時權重相等

Boosting:Gradientboostingtrees用殘差訓練下一個模型,改進預測效果。

Blending:分別訓練不同的基本模型,將各個基本模型的預測結果,作為最終模型的特征輸入。如以線性模型作終模型,相當于把各個基本模型去權重的到最后的預測結果;如用更復雜的模型作最終模型,則可用非線性方法結合不同基本模型的結果。

Kaggle比賽中排名頂尖的選手經常采用集成學習的方法,效果常比單獨的模型好,但需要更多的計算資源和復雜的超參數調節。

下圖展示了不同scikit-learn分類算法,對于不同訓練集的效果比較。

[scikit-learn分類算法效果比較]

非預測問題的模型選擇

學習了復雜的分類模型后,大家可能有疑問:為什么還要用老式傳統的邏輯回歸(Logisticregression)模型呢?實際項目中,我們有事不僅希望模型的預測效果好誤差小,也需要模型簡單可解釋,在有監督模型里,能夠理解特征對y的影響方向和大小。