各種機器學習算法的應用場景分別是什麼(比如樸素貝葉斯、決策樹、K 近鄰、SVM、邏輯回歸最大熵模型)?

2021-02-14 深度學習與計算機視覺

連結:https://www.zhihu.com/question/26726794

編輯:深度學習與計算機視覺

聲明:僅做學術分享,侵刪

k近鄰、貝葉斯、決策樹、svm、邏輯斯蒂回歸和最大熵模型、隱馬爾科夫、條件隨機場、adaboost、em 這些在一般工作中分別用到的頻率多大?一般用途是什麼?需要注意什麼?作者:King James
https://www.zhihu.com/question/26726794/answer/1048590114

首先簡要的回答一下:樓主說的這些算法,在目前國內工業界應用機器學習最多的一些場景中使用頻率接近0,沒啥實際用途。如果樓主是想為未來工作做積累,你還得對以下算法多做研究,這些才是目前工業界主流應用的算法。

1.國內工業界應用機器學習最多的領域

我們先從工業界對於機器學習的需求開始說起,明白用戶需求才知道什麼算法用的多。首先大家可以看一下IDC MarketScape發布的2019中國機器學習開發平臺市場的報告,裡面國內做機器學習頭部公司是:第四範式、百度、阿里雲,這是頭部三家企業。然後我們看一下上圖中某頭部公司的客戶都來自於哪個領域:我們可以很清晰地看出主要來自於這些領域:金融、媒體、零售;為什麼了?原因如下:第一個是因為數據:做To C生意的客戶積累的用戶多,數據也多,滿足機器學習建模對數據量的要求。金融、媒體、零售積累了大量C端用戶的數據;第二個是因為場景:這些領域的客戶有些大量可以使用機器學習建模的場景,也是國內工業界最早嘗試將機器學習引入到實際的建模場景中的。

2. 國內工業界應用最多的機器學習算法

說清楚主要應用領域和場景以後,分析算法就很清楚了。

2.1 金融領域

金融領域使用機器學習建模最多的場景就是風控。當然風控也要進行細分,主要應用機器學習建模的細分場景如下:信用卡交易反欺詐:分類任務,GBDT算法+LR邏輯回歸;信用卡申請反欺詐:分類任務,GBDT算法+LR邏輯回歸;貸款申請反欺詐:分類任務,GBDT算法+LR邏輯回歸;

是的沒錯,目前在金融領域涉及到風控的幾乎都是GBDT+LR,目前市場上還沒有哪一家金融科技公司做反欺詐、反洗錢場景使用的不是GBDT+LR,這是目前市場上做該場景效果最好的算法。同時金融行業存在高監管的屬性,乙方AI廠商給銀行做項目時,最終項目交付時都需要模型可解釋,LR模型存在一個優點就是特徵可以解釋,特徵工程很清晰,每個特徵的貢獻度也可以統計出來。如果用深度學習模型等,可能效果差不多,但是完全不可解釋,這種在金融這種強監管的場景下,不可解釋的模型是不符合監管要求的。

評論區有蠻多知友提到了XGBT算法,確實也有用XGBT算法在上述這些場景,XGBT在GBDT算法進行了一些優化。具體大家可以參考這個連結下的回答:https://www.zhihu.com/question/41354392。但實際目前用GBDT的還是多。

營銷場景:為用戶推薦理財產品、基金產品、保險產品或者邀請用戶辦理信用卡帳單分期等;

這部分主要用的都是推薦的算法,主要都是基於協同過濾CF算法+簡單的策略;營銷場景做推薦,一般分為三個部分:召回+排序+業務規則。召回層面會利用協同過濾CF算法、FM算法,構建排序模型還是LR模型多。

2.2 媒體領域

在媒體領域最典型的就是今日頭條了,包括像很多其他的媒體端如小紅書、抖音等;這裡面最常應用機器學習的就是推薦場景。大家經常發現的一點就是今日頭條、小紅書經常會根據你之前看過的一些內容來給你推相關內容。比如你經常看大長腿,小紅書就一直給你推,別問我怎麼知道的。(今日頭條推薦算法詳解:https://www.leiphone.com/news/201801/XlIxFZ5W3j8MvaEL.html)

2.3 零售領域

在零售領域,使用機器學習建模最多的場景也是推薦場景。APP上購物車頁面提交訂單時為用戶推薦相似商品、推薦可能感興趣的商品,以及針對什麼樣的用戶推薦什麼樣的優惠券等等。除去推薦,零售領域還有一個使用機器學習建模比較多的場景,就是對某類商品進行銷量預測,根據預測量來調整商品的供給。主要是構建一個回歸模型,但是據我了解到目前國內在該場景下嘗試比較多的AI公司是創新奇智,但據甲方反饋效果一般。影響銷量的因素太多,比如這次疫情誰也想不到,所有生鮮電商的單量都呈40%以上的增長。零售領域還有一個應用非常多的場景,就是做供應鏈優化,物流調度,給外賣騎手配單等。但這部分不能算作機器學習,更多是運籌學的知識。目前國內做的比較好的是杉數科技。

3. 未來工業界應用比較廣、比較有前景的算法

所以如果你是一個學生或者想轉行到機器學習領域,那麼上文提到的這些算法你務必得十分清晰。而樓主提到的這些算法,你只需要清楚即可,不需要做深研究,因為工業界真的幾乎不用,方向很重要。

而目前工業界最火的機器學習研究方向就是AutoML,自動機器學習技術,不需要機器學習專家參與建模,機器全自動完成建模。(目前第四範式的AutoML技術處於國內領先地位:https://www.jiqizhixin.com/articles/2018-07-12-17,)AutoML技術這兩年發展的很迅速,工作上自己了解我司的AutoML實際場景落地時,在一些場景上AutoML構建的模型效果表現已經和經驗豐富的數據科學家人工構建的模型效果沒有任何差異了,但是AutoML大幅降低了人力成本和時間成本。除去最火的AutoML,到哪裡都有市場的就是做推薦算法和知識圖譜的,拼多多光做推薦系統都有幾百號人。

同時強化學習在工業界的熱度也在逐步攀升,工作上越來越多的甲方來諮詢強化學習,希望用強化學習來嘗試一些場景的應用,之前強化學習更多還是在學術界研究。目前強化學習在遊戲行業應用已經十分成熟了,現在有向其他行業擴展的趨勢,比如零售領域的供應鏈幹線優化、網際網路領域的推薦場景等。

總結來說如果你想進入工業界的機器學習領域你需要對:GBDT、LR、推薦算法很了解,而所謂的KNN、Kmeans、貝葉斯、em、最大熵模型等等,這些只是基礎算法,了解這些基礎算法完全無法解決工業界遇到的問題。如果你現在研究的領域是AutoML、知識圖譜、推薦算法那麼你將會很吃香,尤其是AutoML。之前華為開出200多萬年薪的那位博士生就是研究AutoML的。同時強化學習在工業界的熱度也逐步攀升,前景也很廣闊。

作者:mileistone
https://www.zhihu.com/question/26726794/answer/421409624
對於supervised learning的機器學習算法而言,機器學習算法可以拆解為representationevaluationoptimization三個部分。

具體的,假設 是訓練集中一條sample的data, 為該條sample的label, 為預測值,那麼:

1、 的具體形式就是representation,比如是一次型的 ,或者二次型的

2、衡量 之間差距的是evaluation,其實也就是loss function,例如我們熟知的squared loss,

3、根據2中的evaluation求解權重 的過程則是optimization,包括我們熟知的SGD、EM等都可以劃到optimization

為一個具體的場景選擇模型主要看兩點:

1、弄清楚這個場景的數據分布,找到representation和該分布契合的模型,例如該場景的數據分布是一次型的,那我們就可以選擇logistic regression、SVM等分界面為一次型的模型;如果場景的數據分布是二次型的,我們可以選擇naive bayes;如果場景的數據分布既不是一次型也不是二次型,那我們可以選擇基於決策樹的模型,例如gbdt、random forest等,或者DNN,這些模型都高度非線性,表達能力極強,理論上可以擬合任意曲線;

2、該模型的optimization過程硬體能否承受,如果場景數據分布是一次型,但是訓練集數據量極大,那我們一般會選logistic regression,而放棄SVM,因為SVM的optimization過程對大數據量不太友好。

具體地,logistic regression和SVM(linear kernel)的representation都是一次型的,它們不同的地方在於evaluation和optimization,如果數據分布是一次型的,用這兩個差別不會太大,但是logistic regression的optimization過程對大數據量更加友好,而且預測值能有概率意義,所以工業界使用logistic regression更多。

另外一個工業界用得非常多的模型是gbdt,它的representation類似於下圖。其實基於決策樹的模型都是通過一個個平行於坐標軸的平面去擬合訓練集的實際分界面,理論上平行於坐標軸的平面能夠擬合任意分界面,這一點類似於DNN。實際場景中,數據分界面為非線性的情況佔大多數,gbdt一方面繼承了決策樹的強表達能力,另外一方面又規避決策樹variance太大的問題。

adaboost屬於ensemble method中boosting方法的一個具體實現,ensemble method包括bagging、boosting和stacking。這些方法在打比賽的時候常用,因為理論上它們一定會帶來效果上的提升。

這篇文章A Few Useful Things to Know about Machine Learning(連結:https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf)作者:Spacelounger
https://www.zhihu.com/question/26726794/answer/1526236102
之前學習時候正好整理了筆記,回答一下也算是複習了。先總結各種方法的優缺點,然後簡單串連一下如何選擇ML算法。

1.線性回歸,Linear regression.

優點:簡單,上手快,對線性可分的數據有效,正則和cross-validation 可以避免過擬合。缺點:對outlier敏感,很容易過擬合或者underfitting(不知道中文翻譯的什麼). 無法處理非線性數據。

2. 邏輯回歸, Logistic regression.

優點:簡單,上手快,數據做不做預處理都無所謂,輸出數據自動落入(0,1)區間,對輸入數據的微小波動不敏感,可以通過數值分析方法進行模型優化。缺點:非線性數據表現不好,對於特徵highly correlated的表現不好, 特徵必須有明確指向性。

3. SVM

優點:線性非線性數據都可以處理,高維數據表現不錯,當類型明確可分的時候是最優選擇,outliers影響很小。缺點:慢, 當類型互相重疊時候表現不太好,kernel選擇很重要,參數選擇也很關鍵。

4. Neural Network

5. Naive Bayers

優點:快,無需訓練,irrelevant features 影響非常小,高維數據表現好。缺點:不適合做預測, 輸入數據必須代表整體分布不然會導致結果不好。

6. 決策樹

優點:不需要預處理數據,可以處理部分數據丟失的情況,可以可視化,容易理解。缺點:容易過擬合,對outlier非常敏感,輸入數據的微小波動會引起輸出的大幅變化, 訓練時間長。優點:人多力量大,可以降低綜合誤差(bias & variance),可以處理高維數據,不會出現過擬合。

8. KNN

優點:簡單好上手,對輸入數據無要求,參數少,只有一個K缺點:大量數據處理慢,數據量大+特徵多的時候表現不好,imbalanced數據表現不好,無法處理數據丟失。

9. K-mean

優點:可處理大量數據,保證收斂,對新數據適應良好。缺點:人工選擇K, 初始數據完全影響整個模型的結果,高維數據速度慢,對outliers敏感。

10. 如何選擇ML模型, 著名no free lunch theroem(可不是我瞎說的)已經表示,不可能有一個全方面稱心如意的模型可以解決你的所有問題,就像擇偶時候,不可能有兼具帥氣多金溫柔上進體貼智慧專一。。。於一身的人,主要還是看你更需要什麼了。

實際選擇模型時候可以從以下方面考慮:

10.1 訓練數據

數據量是大還是小,數據是high bias 還是 high variance。。。數據小,或者數據high bias/ low variance 可以選擇linear、 logistics regression, Naïve Bayes, 或者SVM無kernel。數據量大或low bias / high variance 可選擇KNN, SVM 高斯kernel, 決策樹。

10.2 數據的結構

考慮數據是線性還是非線性,相關還是不相關,根據上面的模型優缺點進行選擇

10.3 訓練時間

是想一杯茶喝一天等結果還是想嗖的一下就出結果,可以根據模型本身的速度選擇。

10.4 數據特徵

特徵多還是少,特徵是有明確指向性還是沒有,特徵之間有無重疊,都可以根據具體要求選擇合適的模型。作者:圖靈的貓
https://www.zhihu.com/question/26726794/answer/1015964231
我覺得前面的回答意義不大,因為這個問題真的不需要長篇大論,看看題主的描述:k近鄰、貝葉斯、決策樹、svm、邏輯斯蒂回歸和最大熵模型、隱馬爾科夫、條件隨機場、adaboost、em 這些在一般工作中分別用到的頻率多大?一般用途是什麼?需要注意什麼?

據我了解,現在的真實業務場景下,很少有直接用這些基礎算法模型作為線上應用的了。

用途基本就是拿來做前期的base,跑跑看效果如何,或者嵌入到離線的一些應用,比如分詞。

要注意的就一點:有些模型數據量大的時候跑起來時間成本太大,比如SVM。你自己在學校可能沒覺得有什麼,但是公司裡是沒法這麼搞的。還有的模型跑起來速度可以,但是精度不高,比如決策樹(這裡不包括lightGBM這種集成樹),不管是分類還是回歸都比不過最新的一些深度模型。

總結一下:小數據量的情況下,你可以研究研究這些模型,畢竟是算法基礎。如果你指的是工作中,那麼他們的用處不多。

如果看到這裡,說明你喜歡這篇文章,請轉發、點讚。微信搜索「uncle_pn」,歡迎添加小編微信「 mthler」,每日朋友圈更新一篇高質量博文。

相關焦點

  • Machine Learning:十大機器學習算法
    強化學習算法 (Reinforcement Algorithms):強化學習普適性強,主要基於決策進行訓練,算法根據輸出結果(決策)的成功或錯誤來訓練自己,通過大量經驗訓練優化後的算法將能夠給出較好的預測。類似有機體在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。
  • 17個機器學習的常用算法!
    在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與「訓練數據」的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和回歸問題。在非監督式學習中,數據並不被特別標識,學習模型是為了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見算法包括Apriori算法以及k-Means算法。
  • 【機器學習終極盤點】你不知道的機器學習算法優缺點(匯總篇)
    當模型複雜度上升的時候,偏差會逐漸變小,而方差會逐漸變大。3. 常見算法優缺點3.1 「樸素貝葉斯」樸素貝葉斯屬於生成式模型(關於生成模型和判別式模型,主要還是在於是否需要求聯合分布),比較簡單,你只需做一堆計數即可。
  • 15分鐘帶你入門sklearn與機器學習——分類算法篇
    它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度增強,k-means和DBSCAN,旨在與Python數值和科學庫NumPy和SciPy互操作。本文將帶你入門常見的機器學習分類算法——邏輯回歸、樸素貝葉斯、KNN、SVM、決策樹。
  • 機器學習算法基礎(使用Python代碼)
    這些算法幾乎可以應用於任何數據問題:線性回歸邏輯回歸決策樹SVM樸素貝葉斯k近鄰創建本指南背後的想法是簡化世界各地有抱負的數據科學家和機器學習愛好者的旅程。通過本指南,我將幫助您解決機器學習問題並從經驗中獲益。我提供了對各種機器學習算法的高級理解以及運行它們的R&Python代碼。這些應該足以弄髒你的手。線性回歸主要有兩種類型:簡單線性回歸和多元線性回歸。簡單線性回歸的特徵在於一個自變量。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。如果注有條件獨立性假設(一個比較嚴格的條件),樸素貝葉斯分類器的收斂速度將快於判別模型,比如邏輯回歸,所以你只需要較少的訓練數據即可。即使NB條件獨立假設不成立,NB分類器在實踐中仍然表現的很出色。它的主要缺點是它不能學習特徵間的相互作用,用mRMR中R來講,就是特徵冗餘。
  • 【機器學習】機器學習算法優缺點對比(匯總篇)
    當模型複雜度上升的時候,偏差會逐漸變小,而方差會逐漸變大。3. 常見算法優缺點3.1 「樸素貝葉斯」樸素貝葉斯屬於生成式模型(關於生成模型和判別式模型,主要還是在於是否需要求聯合分布),比較簡單,你只需做一堆計數即可。
  • 各種機器學習的應用場景分別是什麼?
    《各種機器學習的應用場景分別是什麼?它的特點是完全跟著數據走,沒有數學模型可言。適用情景:需要一個特別容易解釋的模型的時候。比如需要向用戶解釋原因的推薦算法。貝葉斯 (Bayesian)最經典的AdaBoost實現中,它的每一個弱分類器其實就是一個決策樹。這就是之前為什麼說決策樹是各種算法的基石。使用情景:好的Boosting算法,它的準確性不遜於隨機森林。雖然在[1]的實驗中只有一個擠進前十,但是實際使用中它還是很強的。
  • 決策樹算法介紹及應用
    決策樹是機器學習中最基礎且應用最廣泛的算法模型。本文介紹了機器學習的相關概念、常見的算法分類和決策樹模型及應用。通過一個決策樹案例,著重從特徵選擇、剪枝等方面描述決策樹的構建,討論並研究決策樹模型評估準則。最後基於 R 語言和 SPSS 這兩個工具,分別設計與實現了決策樹模型的應用實例。
  • sklearn 與分類算法
    它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度增強,k-means 和 DBSCAN,旨在與 Python 數值和科學庫NumPy和SciPy互操作。本文將帶你入門常見的機器學習分類算法——邏輯回歸、樸素貝葉斯、KNN、SVM、決策樹。
  • 各種機器學習分類算法的優缺點
    機器學習中有許多分類算法。本文將介紹分類中使用的各種機器學習算法的優缺點,還將列出他們的應用範圍。SVM(支持向量機)SVM的優點:1.在高維中表現良好。在現實世界中有無限維度(不僅僅是2D和3D)。樸素貝葉斯的應用範圍:樸素貝葉斯可用於文本分類(可以預測多個類別,並且不介意處理不相關的特徵)、垃圾郵件過濾(識別垃圾郵件)、情感分析(在社交媒體分析中識別正面和負面情緒),推薦系統(用戶下一步將購買什麼)。
  • 機器學習算法優缺點對比及選擇(匯總篇)
    文中內容結合了個人在查閱資料過程中收集到的前人總結,同時添加了部分自身總結,在這裡,依據實際使用中的經驗,將對此類模型優缺點及選擇詳加討論主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。
  • 機器學習經典算法優缺點對比及選擇建議
    文中內容結合了個人在查閱資料過程中收集到的前人總結,同時添加了部分自身總結,在這裡,依據實際使用中的經驗,將對此類模型優缺點及選擇詳加討論主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。
  • 機器學習算法比較
    機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的算法,諸如SVM,GBDT,Adaboost,現在深度學習很火熱,神經網絡也是一個不錯的選擇。
  • 機器學習算法實踐-樸素貝葉斯(Naive Bayes)
    主要從事科學計算與高性能計算領域的應用,主要語言為Python,C,C++。熟悉數值算法(最優化方法,蒙特卡洛算法等)與並行化算法(MPI,OpenMP等多線程以及多進程並行化)以及python優化方法,經常使用C++給python寫擴展。
  • 詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的...
    :算法覆蓋——線性回歸、邏輯回歸、樸素貝葉斯(Naive Bayes)、kNN、隨即森林,等等。邏輯回歸(Logistic Regression)不要被它的名字迷惑了!這不是一個回歸算法,而是一個分類算法。該算法能根據已知的一系列因變量來估計離散值(比如二進位數值0或/1 ,是/否,真/假)。簡單來說,它通過將數據擬合到一個邏輯函數來預測一件事發生的概率。
  • 15 分鐘帶你入門 sklearn 與機器學習(分類算法篇)
    它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度增強,k-means和DBSCAN,旨在與Python數值和科學庫NumPy和SciPy互操作。本文將帶你入門常見的機器學習分類算法——邏輯回歸、樸素貝葉斯、KNN、SVM、決策樹。
  • 技術專欄丨10大機器學習算法速覽,帶你開啟AI之旅
    該算法的訓練過程會嘗試將模型的預測準確度提高到訓練數據所需的程度。具體的算法有:回歸、決策樹、隨機森林、kNN、Logistic回歸等等。無監督學習該算法中,沒有任何的目標/結果變量以用來預測/估計。基本上用於不同的群體間的聚類,通常該算法用於對不同的群體進行分組。具體的算法有:Apriori算法,K-means等。
  • 機器學習分類算法總結
    主要分類方法介紹解決分類問題的方法很多,單一的分類方法主要包括:決策樹、貝葉斯、人工神經網絡、K-近鄰、支持向量機和基於關聯規則的分類等;另外還有用於組合單一分類方法的集成學習算法
  • 8種常見機器學習算法比較
    簡介機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的算法,諸如SVM,GBDT,Adaboost,現在深度學習很火熱,神經網絡也是一個不錯的選擇。