現代機器學習算法的優缺點
原文地址:https://elitedatascience.com/machine-learning-algorithms
在本指南中,我們將通過現代機器學習算法進行實用,簡潔的介紹。雖然存在其他類似的指南列表,但它們並沒有真正解釋每種算法的實際權衡,這是我們希望在這裏做的。 我們將根據自己的經驗討論每種算法的優缺點。
對機器學習算法進行分類是棘手的,有幾種合理的方法; 機器學習算法可以分為生成/判別,參數/無參數,監督/非監督等分類。
例如,Scikit-Learn的文檔頁面按其學習機制對算法進行分組。 產生了如下類別:
l 通用線性模型
l 支持向量機
l 最近鄰
l 決策樹
l 神經網絡
l 其他
但是,根據我們的經驗,這並不總是最實用的分組算法。 那是因為對於應用機器學習,你通常不會想,“我今天想要訓練一個支持向量機!”
相反,您通常會考慮最終目標,例如預測結果或對觀察進行分類。
因此,我們想引入另一種方法區分機器學習算法,即通過機器學習算法適合什麽任務來區分。
沒有免費的午餐
在機器學習中,有一種稱為“沒有免費午餐”的定理。 簡而言之,它表明沒有一種算法能夠最好地解決每個問題,並且它對於監督學習(即預測建模)尤其重要。
例如,您不能說神經網絡總是比決策樹更好,反之亦然。 有許多因素在起作用,例如數據集的大小和結構。
因此,您應該針對您的問題嘗試許多不同的算法,同時使用數據的保留“測試集”來評估性能並選擇獲勝者。
當然,您嘗試的算法必須適合您的問題,這是選擇正確的機器學習任務的出發點。作為類比,如果您需要清理房屋,您可以使用真空吸塵器,掃帚或拖把 ,但你不會拿出鏟子並開始挖地。
機器學習任務
這是本系列的第1篇文章。 在這一部分中,我們將介紹“三大”機器學習任務,這是迄今為止最常見的任務。 他們是:
1.回歸問題
2.分類問題
3.聚類問題
在第2篇文章,我們將介紹降維技術,包括:
4.特征選擇
5.特征提取
繼續之前的兩點說明:
l 我們不會介紹特定領域的變異算法,例如自然語言處理。
l 我們不會涵蓋所有算法。 那會有太多需列出的內容,並且新的算法一直會冒出來。 但是,此列表將為您提供每個任務成功的當代算法的代表性概述。
1. 回歸任務
回歸是用於建模和預測連續數值變量的監督學習任務。 示例包括預測房地產價格,股票價格變動或學生考試成績。
回歸任務的特征在於具有數值型目標變量的標記數據集。 換句話說,每個觀測對象有“基礎事實”值用來監控您的算法。
1.1 正則化的線性回歸
線性回歸是回歸任務中最常用的算法之一。 它以最簡單的形式嘗試將直/超平面擬合到數據集中(即只有2個變量時為直線,超過兩個變量是多維超平面)。 正如您可能猜到的,當數據集中的變量之間存在線性關系時,它可以正常工作。
在實踐中,簡單的線性回歸通常被其正則化的對應方程(LASSO,Ridge和Elastic-Net)所取代。 正則化是一種在模型損失函數中增加懲罰項以避免過度擬合的技術,並且應該允許調整懲罰的強度。
優點:線性回歸很容易理解和解釋,並且可以正則化以避免過度擬合。 此外,使用隨機梯度下降可以使用新數據輕松更新線性模型。
缺點:當存在非線性關系時,線性回歸表現不佳。 它們不夠靈活,無法捕獲更復雜的模式,添加正確的交叉特征或多項式可能非常棘手且耗時。
1.2 集成回歸樹
回歸樹(也叫決策樹)通過反復將數據集拆分為單獨的分支來分層學習,從而最大化每個分割的信息增益。 這種分支結構允許回歸樹自然地學習非線性關系。譯者添加:例如分類回歸樹(CART),它既可以用來分類,又可以被用來進行回歸。CART用作回歸樹時用平方誤差最小化作為選擇特征的準則;用作分類樹時采用基尼指數最小化原則,進行特征選擇,遞歸地生成二叉樹。
集成方法,例如隨機森林(RF)和梯度提升算法(GBM),結合了來自許多單獨樹木的預測。 我們不會在這裏介紹它們的基礎機制,但在實踐中,RF通常表現非常好,而GBM更難調整,但往往具有更高的性能上限。譯者添加:2014年出現XGBoost,被稱為Kaggle神器,可用於回歸,分類和排序。2017年1月出現微軟開源的LightGBM,用於用於排序,分類。他針對XGBoost在性能上做了大量優化。2017年4月俄羅斯的Yandex開源了CatBoost,它可以很容易地與谷歌的TensorFlow和蘋果公司的核心ML等深度學習框架相結合。俄國人的算法性能還是杠杠的。想想Nginx.
優勢:決策樹可以學習非線性關系,並且對異常值非常穩健。 集成在實踐中表現很好,贏得了許多經典(即非深度學習)機器學習比賽。
缺點:不受約束的單個回歸樹容易過度擬合,因為它們可以保持分支,直到它們記住所有訓練數據。 但是,過擬合可以通過使用集成方法來緩解。
1.3深度學習
深度學習是指可以學習極其復雜模式的多層神經網絡。 它們在輸入和輸出之間使用“隱藏層”,以模擬其他算法無法輕易學習的數據的中間表示。
它們有幾個重要的機制,例如卷積和dropout,使它們能夠有效地從高維數據中學習。 然而,與其他算法相比,深度學習仍然需要更多的數據來訓練,因為模型需有更多的參數來估計。
優勢:深度學習是某些領域的當前最新技術,例如計算機視覺和語音識別。 深度神經網絡在圖像,音頻和文本數據上表現非常好,並且可以使用批量傳播輕松更新新數據。 它們的架構(即層的數量和結構)可以適應許多類型的問題,並且它們的隱藏層減少了對特征工程的需求。
缺點:深度學習算法通常不適合作為通用算法,因為它們需要非常大量的數據。 實際上,對於經典機器學習問題,它們通常優於集成樹。 但是,它們在訓練時計算密集,並且它們需要更多的專業知識來調整(即設置架構和超參數)
1.4榮譽提名-最近鄰
最近鄰算法是“基於實例的”,這意味著保存每個訓練對象。 然後,他們通過搜索最相似的訓練觀察並匯集其值來對新觀察進行預測。
這些算法是存儲密集型,對於高維數據執行不良,並且需要有意義的距離函數來計算相似性。 在實踐中,訓練正則化線性回歸或集成樹幾乎總是更好地利用你的時間。
2. 分類任務
分類是用於建模和預測分類變量的監督學習任務。 示例包括預測員工流失,電子郵件垃圾郵件,財務欺詐或學生信函等級。
正如您將看到的,許多回歸算法都有分類對應。 算法適用於預測類(或類概率)而不是實數。
2.1正則化的邏輯回歸
Logistic回歸是線性回歸的分類對應物。 預測通過邏輯函數映射到0到1之間,這意味著預測可以解釋為類概率。
模型本身仍然是“線性的”,因此當類可線性分離時它們可以很好地工作(即它們可以由單個決策表面分隔)。 邏輯回歸也可以通過用可調懲罰強度懲罰系數來規則化。
譯者添加:LR是一種廣泛使用的技術,因為它解釋的是概率而不是分類,它不需要縮放輸入特征值,它不需要任何調優。當您刪除與輸出變量無關的屬性或者彼此非常相似(相關)的屬性時,邏輯回歸確實更有效。因此,Logistic在特征選擇方面也發揮著重要作用。
優點:輸出具有良好的概率解釋,並且算法可以被正則化以避免過度擬合。 使用隨機梯度下降可以使用新數據輕松更新邏輯模型。
缺點:當存在多個或非線性決策邊界時,邏輯回歸往往表現不佳。 它們不夠靈活,不能自然地捕捉更復雜的關系。
2.2 集成分類樹
分類樹是回歸樹的分類對應物。 它們通常被稱為“決策樹”或通過總稱“分類和回歸樹(CART)”。
優勢:與回歸一樣,分類樹集成在實踐中也表現得非常好。 它們對異常值具有魯棒性,可擴展,並且由於其層次結構,能夠自然地模擬非線性決策邊界。
缺點:無約束的單個分類樹容易過度擬合,但這可以通過集成方法得到緩解。
2.3深度學習
為了延續這一趨勢,深度學習也很容易適應分類問題。 實際上,分類通常是深度學習的較常見用途,例如圖像分類。
優點:深度學習在分類音頻,文本和圖像數據時表現良好。
缺點:與回歸一樣,深度神經網絡需要非常大量的數據來訓練,因此它不被視為通用算法。
2.4支持向量機
支持向量機(SVM)使用稱為核函數的機制,它基本上計算兩個觀察之間的距離。 然後,SVM算法找到決策邊界,該邊界最大化單獨類的距離決策邊界最近成員之間的距離。
例如,具有線性核函數的SVM類似於邏輯回歸。 因此,在實踐中,SVM的好處通常來自使用非線性核函數來模擬非線性決策邊界。
優勢:SVM可以模擬非線性決策邊界,並且有許多核函數可供選擇。 它們對過度擬合也相當強大,特別是在高維空間。
缺點:然而,SVM是內存密集型的,由於選擇正確核函數的重要性而難以調整,並且不能很好地擴展到更大的數據集。 目前在行業裏,隨機森林通常優於SVM。
2.5樸素貝葉斯
樸素貝葉斯(NB)是一種基於條件概率和計數的非常簡單的算法。 從本質上講,您的模型實際上是一個通過您的訓練數據更新的概率表。 要預測新觀察,您只需根據其特征值“查找”“概率表”中的類概率。
它被稱為“樸素”,因為它的核心假設是條件獨立的(即所有輸入特征彼此獨立)在現實世界中很少完全成立。
優勢:盡管條件獨立假設很少成立,但NB模型實際上在實踐中表現出色,特別是它們的簡單性。 它們易於實現,可以根據您的數據集進行擴展。
缺點:由於非常簡單,NB模型經常被經過適當訓練的其他分類模型打敗,並使用之前列出的算法進行調優。
3. 聚類任務
聚類是一種無監督的學習任務,用於根據數據集中的固有結構查找自然的觀察分組(即聚類)。 示例包括客戶細分,在電子商務中對類似項目進行分組以及社交網絡分析。
由於聚類是無監督的(即沒有“正確答案”),因此通常使用數據可視化來評估結果。 如果存在“正確答案”(即您在訓練集中預先標記了群集),則分類算法通常更合適。
譯者添加:高緯度數據集的可視化分類,還沒有搜集齊,不知道是不是簡單的降維就可以。
3.1 K-Means
K-Means是一種通用算法,它基於點之間的幾何距離(即坐標平面上的距離)來制作聚類。 聚類圍繞質心分組,使它們呈球狀並具有相似的大小。
這是我們推薦的初學者算法,因為它簡單,但足夠靈活,可以為大多數問題獲得合理的結果。
優勢:K-Means是最受歡迎的聚類算法,因為它可以快速,簡單,並且如果您預處理數據並設計有用的功能,則會非常靈活。
缺點:用戶必須指定群集的數量,這並不總是容易做到的。 此外,如果數據中真正的基礎聚類不是球狀的,那麽K-Means將產生較差的聚類。
3.2分層聚類
分層聚類,即a.k.a.凝聚聚類,是基於相同思想的一套算法:(1)從它自己的聚類中的每個點開始。 (2)對於每個集群,根據某些標準將其與另一個集群合並。 (3)重復直到只剩下一個簇,並留下簇的層次結構。
優勢:分層聚類的主要優點是不假設聚類是球狀的。 此外,它可以很好地擴展到更大的數據集。
缺點:與K-Means非常相似,用戶必須選擇簇的數量(即算法完成後最底層次結構數量)。
3.4 DBSCAN
DBSCAN是一種基於密度的算法,可以為密集的點區域創建聚類。 最近還有一個名為HDBSCAN的新開發項目,它允許不同密度的簇。
優勢:DBSCAN不假設球狀星團,其性能可擴展。 此外,它不需要將每個點分配給集群,從而降低集群的噪聲(這可能是一個弱點,具體取決於您的用例)。
缺點:用戶必須調整超參數‘epsilon‘和‘min_samples‘,它們定義了簇的密度。 DBSCAN對這些超參數非常敏感。
離別的話
我們剛剛旋風式探索了“三大”機器學習任務:回歸,分類和聚類。
在第2篇文章中,我們將研究降維的算法,包括特征選擇和特征提取。
但是,我們希望根據自己的經驗給您一些建議:
- 首先......練習,練習,練習。 閱讀算法可以幫助您在一開始就找到自己的立足點,但真正的掌握來自於練習。 當您完成項目和/或競賽時,您將培養實用的直覺,這使您能夠獲得幾乎任何算法並有效地應用它。
- 第二......掌握基礎知識。 我們無法在此列出許多算法,其中一些算法在特定情況下非常有效。 但是,幾乎所有這些都是對此列表中算法的一些改編,這將為應用機器學習提供堅實的基礎。
- 最後,請記住,更好的數據優於更高級的算法。 在應用機器學習中,算法是商品,因為您可以根據問題輕松切換它們。 但是,有效的探索性分析,數據清理和特征工程可以顯著提高您的結果。
如果您想了解有關應用機器學習工作流程以及如何有效培訓專業級模型的更多信息,我們邀請您查看我們的數據科學入門。
對於更多的細致指導,我們還提供了一個全面的大師課程,進一步解釋了許多這些算法背後的直覺,並教你如何將它們應用於現實世界的問題。
現代機器學習算法的優缺點