連結:https://www.zhihu.com/question/26726794
編輯:深度學習與計算機視覺
聲明:僅做學術分享,侵刪
k近鄰、貝葉斯、決策樹、svm、邏輯斯蒂回歸和最大熵模型、隱馬爾科夫、條件隨機場、adaboost、em 這些在一般工作中分別用到的頻率多大?一般用途是什麼?需要注意什麼?作者:King James1.國內工業界應用機器學習最多的領域
我們先從工業界對於機器學習的需求開始說起,明白用戶需求才知道什麼算法用的多。首先大家可以看一下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具體的,假設 是訓練集中一條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)作者:Spacelounger1.線性回歸,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 數據特徵
特徵多還是少,特徵是有明確指向性還是沒有,特徵之間有無重疊,都可以根據具體要求選擇合適的模型。作者:圖靈的貓據我了解,現在的真實業務場景下,很少有直接用這些基礎算法模型作為線上應用的了。
用途基本就是拿來做前期的base,跑跑看效果如何,或者嵌入到離線的一些應用,比如分詞。
要注意的就一點:有些模型數據量大的時候跑起來時間成本太大,比如SVM。你自己在學校可能沒覺得有什麼,但是公司裡是沒法這麼搞的。還有的模型跑起來速度可以,但是精度不高,比如決策樹(這裡不包括lightGBM這種集成樹),不管是分類還是回歸都比不過最新的一些深度模型。
總結一下:小數據量的情況下,你可以研究研究這些模型,畢竟是算法基礎。如果你指的是工作中,那麼他們的用處不多。
如果看到這裡,說明你喜歡這篇文章,請轉發、點讚。微信搜索「uncle_pn」,歡迎添加小編微信「 mthler」,每日朋友圈更新一篇高質量博文。