深度學習系統相比較傳統的機器學習系統,針對常見的分類問題,精度究竟能有多大提升?
我現在手頭有一個binary classification的問題。數據量在一百萬左右。每個sample都是一個14個feature組成的vector。每個feature都是一個0~1的float數值。
我用random forest ;1000棵樹,grid search 調參數。10 fold validation 大概76% 左右的precision/recall .我是一個機器學習的外行,但是比較好奇如果我用一些深度學習的系統,比方說TensorFlow,針對我描述的這種二項分類的問題,我能否期盼著會有一個準確度的顯著提升? 如果可以有這樣的預期,一般大家都是怎麼做的呢?我手頭的機器就是一台128G 32核的伺服器。好像暫時沒有別的好機器了。夠用么?我描述清楚了么? 懇請大家給予指導,謝謝!
嘗試用下xgboost。
特徵才14維,建議先把精力放在特徵工程上。就個人經驗而言,工業數據上mlp的效果往往比不上rf或xgb等樹類演算法,拿來融合倒是不錯的。當然,好不好試試便知,現在apply deep learning哪有門檻。
先分析下問題,100萬訓練數據14個特徵,如果你的特徵表徵能力牛逼,數據偏差不大,機器學習書裡面隨便挑個分類演算法90%精度不在話下,但現在模型能力很強的隨機森林都只能到76%左右,那麼肯定哪裡出了問題,問題在哪裡,看case是王道。當然這個問題中特徵表徵能力不夠可能性比較大,那接下來的事情就是特徵工程,找什麼樣的特徵,依然是看case,看看badcase是因為缺失什麼樣的特徵導致,緊緊圍繞問題本身。
連續特徵的二分類問題,除了數據本身和特徵工程,模型方面GBDT系列應該是非常合適的選擇,這塊無需細說,翻翻Kaggle就知其厲害。
不要在當前階段跳出來尋覓炒上天的Deep Learning的幫助,Deep Learning確實足夠強大,但它有自己的適用場景,比如人臉識別/OCR之類的視覺應用,如果是這類應用,那就直接上Deep Learning就好。
那麼二分類或者多分類的傳統機器學習問題(特徵為整數/浮點數/枚舉等類型時)上,Deep Learning到底搞得過傳統機器學習演算法不?答案依然是需要具體問題具體分析。
1. 有些問題,手寫規則足以秒殺一切,只要規則擊中要害就好;2. 有些數據量非常大特徵工程足夠細緻時,模型的重要性變得相對次要,LR系列廣義線性模型足以滿足需求,比如廣告點擊預測很長時期都是LR/BPR/FTRL之類為主要模型,只是特徵工程中可能廣泛用到LDA/Deep Learning等模型;3. 當然還有些問題,比如判斷圖片是不是汽車的二分類問題,只要標註數據到位,Deep Learning可以本色出演了。最近Facebook那個牛逼AI實驗室正好發表了一篇工作,他們研究的是如果我們儘可能的通過加層來提高CNN的性能,到底在分類任務上CNN的模型能夠多麼牛逼,作者有Lecun哦~ http://arxiv.org/pdf/1606.01781.pdf
這是那篇論文的鏈接,他直接借鑒了去年在image上大火的He Kaiming的那個152層神經網路的架構以及學習技巧,做了個9 17 29 49層的CNN for NLP~ 他跑了8個分類公開數據集:這是這些數據集目前最好的方法所以,學術界目前最新最熱乎的研究成果表明:
神經網路(主要是CNN)在文本分類上,當數據集大的時候強於古典的TFIDF,小的時候並沒有~ 然而CNN可以當作一個feature放到最後的分類器中,從我的實驗來看還是有一些提升的為最後的結果。還有我覺得你的機器可能不大夠用。。。我也不知道你原始數據是什麼,可不可以直接用NN做,所以其他問題也不大好回答先try再來看,沒有場景數據就別提啥評測了,先試下再說吧,另外100w的數據可以做sample下
脫離具體問題,空泛的談論「什麼學習演算法更好」毫無意義。
學習演算法自身的歸納偏好與問題是否相配,往往會起到決定性的作用
—— 周志華《機器學習》 如果沒人做過與題主問題相關的工作,那只有跑個分看看才知道效果了啊深度學習目前而言在圖像,語音,自然語言這類數據的分類問題上有較大突破,在通常類型的數據上似乎沒有出現飛躍性的提升,往往容易過擬合,在我看來,一般類型數據的話隨機森林或者boosting往往更好,這類演算法允許直接對離散的類別型數據做決策,而深度學習首先需要對離散特徵做處理,可以說forest或者boosting更普適,但是如果特徵做的好,我相信應該神經網路應該不會差的。
一般而言,維度低小數據量用普通機器學習方法更好。用深度學習很容易過擬合。分類問題,最主要的問題不是分類器選哪個,雖然好的分類器可以提升效果。更重要的是特徵提取,深度學習成功之處在於它可以自動學習需要的特徵。
講道理, 圖像用神經網路好是因為圖像的特徵本來就不好抽。
至於說什麼爆隨機森林的, 14維特徵怎麼爆,你給我爆爆看? 與其說用神經網路,還不如多做特徵工程,畢竟你就是上了分類器,badcase也是要干預的,在這點上,普通分類器可控的多。
當然,我水平不行,還是按照大神說的多用log loss 的mlp吧。
友情提示一下,某些大神提到的神經網路技術二十年前就有,為什麼還是那麼多人用隨機森林和邏輯回歸, 可能因為大家都菜逼吧。為何不試下svm 首先緯度很小算起來比較快,其次svm做binary classification準確率比較高(multiclass的分類方法有自身問題),而且可以嘗試不同的核計算 現在有現成的包可以使用,直接調用就能看出效果好壞了
Tensor Flow也好,Theano也好,更像是整合了多種學習演算法的包,和你用的RF不是一個東西。。至於模型的選擇,要看具體問題和場景。分類效果的好壞,不僅僅在於模型,還有數據預處理和特徵工程。能夠用於解決二分類問題的模型有很多,除了RF之外,效果好又廣泛使用的還有LR和GBDT(各大競賽必備),或者多種模型進行ensemble,不一定非要上深度學習模型。
嗯,二分類,樣例多,feature dimension小,不如想想sampling,gbdt和svm應該夠用了
題主有進一步往下做嗎?用深度學習的方法去處理二分類的數據。我最近也在查這方面的資料,可以交流一下。
個人覺得機器學習演算法和深度學習演算法各有優劣,人類的智能到這個程度應該是兩者的能力都有具備的,有一個平台實踐比較好,據說有一個BOT大賽,還可以領取udacity的優惠券,
同意xgboost,簡單快捷。我猜直接套演算法能提高到85%,也就幾個小時就能出結果。要用deeplearning時間就久了
樓主的數據特徵維數並不高,所以完全沒有必要用DL複雜的訓練方法處理這些數據。如果對自己提取到的數據特徵有足夠信心的話,xgboost或random forest, LR這樣的方法應該是綽綽有餘了。事實上,DL更多用於處理圖像、語音等特徵冗餘度大的信號,通過自學習方式得到層級組合特徵最終用於分類或識別任務。
首先你這個機器算你這個數據量是比較吃力的。因為深度學習的神經網路大多基於GPU計算,你這個機器只有CPU的話,雖然32核對於CPU來講已經比較多了,但算神經網路還是會比較慢的。至於效果好壞這個我覺得很難說,random forest對於一般的分類問題已經是比較好的方法了。
深度學習主要對處理圖片這種表面上維度很高,但實際上「可壓縮比」很大,且「壓縮」函數複雜的數據適用。而且主流的CNN結構也利用了圖片數據空間上相關信息作為先驗。看你的描述,你數據維度已經是比較低的了,也不是圖片這種有空間關聯的數據。可能比較適用的也只有用多層全連接的網路了。如果你的數據用random forest只能調到這個水平,那麼可能你的數據的複雜程度已經超過ramdom forest的分類能力了。這樣的話,先放大維度再壓縮維度的網路結構可能會適用一些。
再有就是過擬合的問題。神經網路可以通過增加層數來形成更複雜的映射關係,但前提是你的數據也要增加。如果你目前數據量是固定的,可能就不能設計太複雜的結構,否則容易出現過擬合。不管怎麼說要下功夫調一調才能知道。樓上說mlp爆掉random forest的,不知道為啥對mlp這麼有信心…
其實樓主對機器學習並不是很熟悉,而神經網路的設計恰好需要經驗和大量調試。我覺得現在最靠譜的事情就是試一下陳天奇大神的xgboost,上手快,效果好。比調mlp靠譜多了。。。
我是DL粉,但我覺得DL並不是萬能的。推薦閱讀:
※如何看待Tencent AI 人臉檢測結果在FDDB上的逆天表現?
※如何評價FAIR的最新工作Data Distillation?
※傳統的CTR或推薦系統擁有高維特徵和稀疏數據,轉向深度學習如何高效實現?
※老師木的機器學習水平,帶實習生的水平,以及當爸爸的水平怎麼樣?
※Deepmind的Alpha Zero是如何把各種棋類規則融入神經網路的?
TAG:數據挖掘 | 機器學習 | 深度學習DeepLearning |