數據人網 • 2018-06-01 23:37 • 人工智能 • 閱讀 282
從Logistic迴歸開始,然後嘗試Tree Ensembles和/或Neural Networks。
奧卡姆的剃刀原理:使用最簡單的算法,可以滿足您的需求,並且只有在嚴格需要的情況下才用更復雜的算法。
根據我自己的經驗,只有神經網絡和梯度增強決策樹(GBDT)正在工業中廣泛使用。 我目睹Logistic迴歸和隨機森林被棄用不止一次(這意味着它們是好的開始)。 從來沒有人聽說有人在公司中討論SVM。
優點和缺點
這裏討論最流行的算法。 有關機器學習算法的完整列表,請查看cheatsheet。
樸素貝葉斯
- 超級簡單,只是做了一堆計數。
- 如果NB條件獨立假設實際成立,那麼樸素貝葉斯分類器將比邏輯迴歸等區分性模型更快地收斂,因此您需要更少的訓練數據。 即使NB假設不成立,NB分類器在實踐中仍經常表現出色。
- 如果你想做某種半監督式的學習,或者想要一些令人尷尬的簡單表現很好的話,這是一個很好的選擇。
- 沒有分佈要求,
- 適合少數類別變量
- 計算獨立分佈的乘積
- 受到多重共線性
Logistic迴歸
邏輯迴歸仍然是使用最廣泛的,瞭解更多
- 一個相當好的分類算法,只要你期望你的特徵大致是線性的,並且問題是線性可分的,就可以進行訓練。
- 可以做一些特徵工程,將大多數非線性特徵很容易地轉化爲線性特徵。
- 它對噪聲也很穩健,並且可以避免過度擬合,甚至可以使用l2或l1正則化來進行特徵選擇。
- 邏輯迴歸也可以用於大數據場景,因爲它非常高效並且可以使用例如ADMM(請參閱logreg)進行併發。
- 輸出可以被解釋爲一個概率:您可以將其用於排名而不是分類。
- 運行一個簡單的l2正則化LR來提出一個基線
- 無分佈要求
- 用少數類別分類變量表現良好
- 計算logistic分佈
- 適合少數類別變量
- 容易解釋
- 計算CI
- 遭受多重共線性
- 很多方法來調整你的模型
- 不需要擔心相關的特徵,就像樸素貝葉斯一樣。
- 輕鬆更新模型以接收新數據(使用在線梯度下降法)
- 如果您需要一個概率框架(例如,輕鬆調整分類閾值,說出何時不確定,或獲得置信區間)還是希望在將來能夠接收更多的訓練數據迅速融入您的模型。
Lasso
- 沒有分佈要求
- 計算L1損失
- 具有變量選擇特點
- 遭受多重共線性
Ridge
- 沒有分佈要求
- 計算L2損失
- 不具有變量選擇
- 不受多重共線性
何時不用
- 如果變量是正態分佈的且分類變量都有5個以上類別:使用線性判別分析
- 如果相關性大部分是非線性的:使用SVM
- 如果稀疏性和多重共線性是一個問題:具有Ridge(權重)的自適應Lasso + Lasso
線性判別分析
LDA:線性判別分析,不是潛在的Dirichlet分佈
- 需要正態分佈
- 不適合少數類別變量
- 計算疊加的多元分佈
- 計算CI
- 遭受多重共線性
支持向量機
SVM vs LR:
- 支持向量機(SVM)使用與LR不同的損失函數(Hinge)。
- 他們也有不同的解釋(最大邊緣間隔)。
- 然而,實際上,具有線性內核的SVM與Logistic迴歸沒有太大區別(如果您好奇,可以看看Andrew Ng如何從他的Coursera機器學習課程中的Logistic迴歸中推導SVM)。
- 您希望使用SVM而不是Logistic迴歸的主要原因是您的問題可能不是線性可分的。在這種情況下,您將不得不使用具有非線性內核的SVM(例如RBF)。
- 事實是,邏輯迴歸也可以用於不同的內核,但在這一點上,出於實際原因,您可能更適合使用SVM。
- 使用SVM的另一個相關原因是如果您處於高維空間。例如,據報道支持向量機可以更好地用於文本分類。
- 高準確度,在考慮過擬合時有很好地理論保證。
- 使用合適的內核,即使數據在基本特徵空間中不能線性分離,它們也可以很好地工作。
- 在非常高維空間是常態的文本分類問題中尤其受歡迎。
- 沒有分佈要求
- 計算鉸鏈損失
- 靈活選擇非線性相關的核
- 不受多重共線性
- 很難解釋
缺點:
- 訓練可能會很痛苦。不推薦有很多實例的任何問題。不推薦大多數“工業規模”應用的SVM。除了玩具/實驗室問題之外的任何事情可能會更好地用不同的算法來處理。儘管如此,內存密集型和煩人的運行和調優,所以我認爲隨機森林正在開始搶奪冠軍。
決策樹
- 易於解釋
- 非參數化的,所以你不必擔心異常值或者數據是否可線性分離
- 他們的主要缺點是他們很容易過擬合,但這就是像隨機森林(或提升樹)這樣的集成方法進來的地方。
- 另外,隨機森林往往是分類問題的贏家(通常在SVM上略微領先一些,我相信),它們快速且可擴展,並且您不必擔心像SVM那樣要調整一堆參數,所以他們現在似乎很受歡迎。
- 沒有分佈要求
- 啓發式
- 適合少數類別變量
- 不受多重共線性(通過選擇其中之一)
- Bagging, boosting, 集成方法通常優於單一算法。
樹集成:隨機森林和梯度提升樹。
Tree Ensembles vs LR。
- 他們並不期望線性特徵,甚至線性相互作用的特徵。 LR中沒有提到的一點是,它很難處理分類(二元)特徵。 Tree Ensembles,因爲它們不過是一堆決策樹的組合,可以很好地處理這個問題。另一個主要優點是,由於它們使用裝袋或提升構成的,這些算法可以非常好地處理高維空間以及大量的訓練實例。
- 兩者都是快速和可擴展的,隨機森林往往會在準確性方面擊敗邏輯迴歸,但邏輯迴歸可以在線更新併爲您提供有用的概率。
隨機森林
隨機森林使用數據的隨機樣本獨立訓練每棵樹。 這種隨機性有助於使模型比單個決策樹更穩健,並且不太過擬合訓練數據。 RF中通常有兩個參數 – 樹數量和被選擇的每個結點的特徵數目(列抽樣)。
- RF適用於並行或分佈式計算。
- 幾乎總是比決策樹具有更低的分類錯誤和更好的f分數。
- 幾乎總是表現出與SVM相同或更好的效果,但對於人類來說更容易理解。
- 非常適合具有缺失變量的不均勻數據集。
- 給你一個關於你的數據集中的哪些特徵是最重要的免費的好主意。
- 通常訓練速度比支持向量機要快(儘管這顯然取決於你的實現)。
梯度提升決策樹
GBDT一次構建一棵樹,每棵新樹有助於糾正先前訓練過的樹造成的錯誤。 每添加一棵樹,該模型就會變得更具表現力。 通常有三個參數 – 樹的數量,樹的深度和學習速率,每棵樹的建立一般都很淺。
- 容易過擬合
- GBDT通常表現比RF好,但它們很難達到正確。 更具體地說,GBDT具有更多的超參數要調整,並且更容易出現過擬合。 RF幾乎可以“開箱即用”,這也是他們非常受歡迎的原因之一。
- GBDT訓練通常需要更長的時間,因爲樹是按順序構建的。
神經網絡
優點
- 很好地擬合具有大量輸入特徵的非線性數據
- 廣泛應用於工業
- 許多開源實現
缺點
- 神經網絡僅適用於數值輸入,具有常數值的向量和具有非缺失數據的數據集。
- 分類邊界難以直觀地理解,並且ANN在計算上昂貴。
- 黑盒子,使他們很難與之合作,就像試圖通過審查人類潛意識來解釋我們的意識行爲背後的原因。
- 難以訓練:訓練結果可能是非確定性的,並且主要取決於初始參數的選擇
- 當他們不像您期望的那樣工作時,他們很難排除故障,當他們工作時,您將永遠不會確信自己會很好地歸納未包含在您的訓練集中的數據,因爲從根本上說,您不瞭解你的網絡如何解決問題
- 多層神經網絡通常很難訓練,並且需要調整大量參數
- 神經網絡不是概率性的,不像其他統計學或貝葉斯統計學。一個神經網絡可能會給你一個連續的數字作爲它的輸出(例如一個分數),但是把它轉換成一個概率往往是困難的。具有更強大理論基礎的方法通常會直接爲您提供這些概率。
深度學習
- 不是通用的分類技術。
- 擅長圖像分類,視頻,音頻,文字。
概要
考慮的因素
- 訓練例子的數量,(你的訓練集有多大?)
- 如果訓練集很小,高偏差/低方差分類器(例如樸素貝葉斯)比低偏差/高方差分類器(例如,kNN或邏輯迴歸)具有優勢,因爲後者會過度擬合。但是隨着訓練集的增長(它們具有較低的漸近誤差),低偏差/高方差分類器開始贏得勝利,因爲高偏差分類器的功能不足以提供準確的模型。您也可以將其視爲生成模型與判別模型的區別。
- 特徵空間的維度
- 我希望問題是線性可分的嗎?
- 特徵是否獨立?
- 期望的特徵將與目標變量呈線性關係嗎?
- 過度擬合是否會成爲問題?
- 在速度/性能/內存使用方面,系統的要求是什麼……?
- 它需要變量滿足正態分佈嗎?
- 它是否遭受多重共線性問題?
- 用分類變量做作爲連續變量是否表現好?
- 它是否計算沒有CV的CI?
- 它是否可以不要stepwise而進行變量選擇?
- 它適用於稀疏數據嗎?
從Logistic迴歸等簡單的事情開始,設置一個基線,並且只在需要時纔會使其更加複雜。此時,樹集成,特別是隨機森林,因爲它們很容易調整,可能是正確的路。如果你覺得還有改進的空間,試試GBDT或者更有興趣去嘗試深度學習。
原文鏈接:https://www.hackingnote.com/en/machine-learning/algorithms-pros-and-cons/
編譯:數據人網
鏈接:http://shujuren.org/article/591.html