最近參加一些數據挖掘/機器學習的比賽,很多時候只會簡單的弄個baseline或者套模型,知道通過交叉驗證來判斷是高偏差還是高方差,但是知道高偏差之後不知道怎麼構建有效的特徵,經常都是想到什麼就構建什麼,基本沒什麼提高。經常看到有人或者文章說特徵工程很重要,甚至佔了比賽成績的80%,剩下的纔是模型融合、調參之類的。

特徵工程有什麼比較系統的方法學習嗎?還是隻能靠對業務本身的理解或者經驗積累?或者無腦堆很多亂七八糟的特徵之後再篩選?(如果有效果的話....) 一直不知道怎麼能學習特徵工程或者說模型優化方面的知識,希望有人可以稍微提點一下,非常感謝。


主要還是要靠先驗知識,經驗還是很重要的。比賽的話,就另說了,因為人家都把變數池告訴你了,剩下的,主要做一下聚合衍生與橫向衍生,可以去github看下featuretools,查閱下文檔。你可以不用這個工具,但是你看他的文檔會學到很多衍生方法,基本囊括了所有。


跟你一樣的感覺,應該還是有一些通用的思路的。現在感覺完全沒入門一樣,一直亂撞成績提高不了,自己還費了很大勁,信心興趣都沒了。。

期待更新!


瀉藥,我就我知道的一些特徵工程的理解說一下,首先特徵工程分為特徵提取和特徵選擇兩大類,在我們做比賽的時候,首先第一步就是判斷每個特徵和目標也就是標籤的關係,在這個之中,我們可能需要對類別特徵做一些處理,因為我們機器學習的演算法大部分只能接受數值數據,當然一些決策樹演算法也可以接受類別特徵,看這些特徵對目標的貢獻,選出那些對目標有最大貢獻的一些特徵,當然這裡面還有很複雜的東西,比如缺失值和雜訊點的處理,接下來就是構建一個baseline模型,看一下結果,接下來就是對那些有顯著影響的特徵看能不能做一下特徵融合(包含在特徵提取裡面)構建新的特徵,然後再看實驗效果,這個時候可能感覺沒法提升了,這個時候要回到數據本身去查找原因,是不是對某些特徵沒有深度挖掘,細粒度不夠贊成的,比如年齡這個欄位,要不要把他進行分段,有時候可能需要做一下降維,比如pca,但是做了之後就不知道每個特徵的具體意義了,在要求需要對數據可解釋下,這個就不能做了。最後就是集成了,這個就是bagging這些東西了。僅抒己見,如有不足之處,請多多指教!


樓主的問題非常好,期待大牛的乾貨回答。特徵構建和模型優化方面如果沒有大牛指點的話,只能靠自己多做項目,多思考,多總結。已關注問題。


個人理解最重要的是根據對問題的理解去構建特徵,構建特徵之後可以運用像與或非等操作構建組合特徵等,然後在進行特徵選擇。

有一個暴力衍生特徵的工具包featuretools,可以批量衍生海量特徵。不過這樣無腦衍生的欄位可能90%都是無效的,所以後面還要跟一個特徵篩選的步驟。


推薦閱讀:
相關文章