可能是全网写特征工程最通透的...
特征工程到底是什么?今天是包大人出租車原創(chuàng)日更,因?yàn)檎诔霾钊C(jī)場的路上...
前言
現(xiàn)在這個(gè)知乎上的回答,包大人那個(gè)還是處于排序第一的位置,在知乎上有158萬 瀏覽, 2K+贊, 6K+收藏,2專業(yè)認(rèn)可。
這在一個(gè)專業(yè)的問題上,這個(gè)數(shù)據(jù)其實(shí)還是不容易的。類比知乎上的一個(gè)問題,是明白了什么讓你編程水平突飛猛進(jìn)的。從我個(gè)人來講的話,理解了特征工程的精髓,讓我機(jī)器學(xué)習(xí)水平突飛猛進(jìn)。今天舊瓶裝新酒,再重答一下,用最白話的講最深刻的道理。
從一道題講起
當(dāng)時(shí)很多回答的毛病在于側(cè)重于"術(shù)",而忽略了"道"。講了很多非常細(xì)節(jié)的操作方法,甚至把特征工程狹義理解成了數(shù)據(jù)的變換方法。
這里毛病很大的。
上來先出一道題目。
題目:請使用一個(gè)邏輯回歸的模型,建模一個(gè)身材分類器,身材分偏胖和偏瘦兩種,輸入的特征有身高和體重。
這時(shí)候你發(fā)現(xiàn),這個(gè)問題不是那么好“線性“解決的,線性解決的意思就是我拍兩個(gè)系數(shù)加權(quán),使用 sigmoid(ax+by+c)就搞定了。
事實(shí)上,我們很難單純地從身高和體重決策出一個(gè)人的身材,你說姚明體重280斤,他真的一定就胖嗎??別忘了他身高有226公分的。
這組數(shù)據(jù)可能超出了你的認(rèn)知,只看數(shù)據(jù)不看照片,一下子不好說他是胖還是瘦。(其實(shí)挺胖的哈哈)
嗯,這個(gè)你看到那組數(shù)據(jù),不好一下子說出來的感覺,就是機(jī)器學(xué)習(xí)里面非常關(guān)鍵的概念,“非線性”。
那么我們怎么解答這個(gè)問題呢?
方法有兩個(gè):
1.升級(jí)模型,把線性的邏輯回歸加上kernel來增加非線性的能力。我們使用這個(gè)模型 ?sigmoid(ax+by+kx*y^(-2)+c),這個(gè)模型通過多項(xiàng)式核方法的升級(jí),解決了低維空間線性模型不太好解決的問題。
2.特征工程,掏出體檢報(bào)告上的BMI指數(shù),BMI=體重/(身高^2)。這樣,通過BMI指數(shù),就能非常顯然地幫助我們,刻畫一個(gè)人身材如何。甚至,你可以拋棄原始的體重和身高數(shù)據(jù)。
好了,現(xiàn)在你大概對特征工程有點(diǎn)眉目了。
方式一在理論上對應(yīng)的東西就是提升VC維,方式二就是讓你dirty hand的特征工程。
在機(jī)器學(xué)習(xí)流程中的視角
我們再回頭講一下這個(gè)東西的重要性,特征工程是機(jī)器學(xué)習(xí),甚至是深度學(xué)習(xí)中最為重要的一部分,也是課本上最不愿意講的一部分,特征工程往往是打開數(shù)據(jù)密碼的鑰匙,是數(shù)據(jù)科學(xué)中最有創(chuàng)造力的一部分。因?yàn)橥途唧w的數(shù)據(jù)相結(jié)合,很難優(yōu)雅地系統(tǒng)地講好。所以課本上會(huì)講一下理論知識(shí)比較扎實(shí)的歸一化,降維等部分,而忽略一些很dirty hand的特征工程技巧,和case by case的數(shù)據(jù)理解。
不妨我們再講透一點(diǎn),下面是一個(gè)經(jīng)典的特征機(jī)器學(xué)習(xí)流程,輸入的原始數(shù)據(jù)經(jīng)過一步clean and transformer轉(zhuǎn)化為建模的特征輸入,最終得到模型。
建模就是從數(shù)據(jù)中學(xué)習(xí)到insights(洞見)過程,這個(gè)過程其實(shí)是很曲折的,他要經(jīng)過數(shù)據(jù)的表達(dá),模型的學(xué)習(xí)兩步。
數(shù)據(jù)的表達(dá)就是原始數(shù)據(jù)經(jīng)過clean and transformer得到features的過程,即為特征工程。
還是以具體的例子來講。
我們回到剛才的身材分類器的例子上,在方式一我們使用了核方法給邏輯回歸升維,方式二使用了特征方法。
要知道天下沒有免費(fèi)的午餐,在你使用核方法升維的時(shí)候,實(shí)際很難精煉出恰好是x*y^(-2)這樣的多項(xiàng)式表達(dá),你肯定是一股腦地把x*y,x^2*y, x*y^2 這些項(xiàng)都扔進(jìn)去了。
這么暴力的操作,有兩個(gè)問題,一是共線性,二是噪聲。
第一、共線性的意思是幾個(gè)項(xiàng)表達(dá)的含義是趨同的,保持了很強(qiáng)的線性關(guān)系,對于邏輯回歸是致命的問題,因?yàn)樗麕砹藱?quán)重的不穩(wěn)定,要知道邏輯回歸權(quán)重可是暗示了特征重要性的。
(要是你對這段話,不好理解的話,仔細(xì)學(xué)習(xí)下邏輯回歸模型和共線性的理論,此處不單獨(dú)展開)
第二、噪聲讓你的分類器學(xué)習(xí)到了一些不好的東西,對你的決策沒有產(chǎn)生泛化的貢獻(xiàn),反而帶跑偏你的模型,學(xué)習(xí)到了一些不是知識(shí)的邊邊角角。
特征工程類似于煉丹術(shù)士的精煉過程。
他的作用就是把人的知識(shí)融入到數(shù)據(jù)表達(dá)中,減輕模型的負(fù)擔(dān),讓模型更容易學(xué)習(xí)到本質(zhì)的知識(shí)。
從NN與GBDT討論的視角
之間寫過一篇文章,為什么GBDT可以超越深度學(xué)習(xí),有讀者說我是標(biāo)題黨,我結(jié)合這篇推文,繼續(xù)把他翻出來。
那篇文檔里有個(gè)很重要的觀點(diǎn)是這張圖。
這個(gè)圖表達(dá)意思是,在人的認(rèn)知可解的時(shí)候,乃至超越數(shù)據(jù)的非線性,就是y>x那根斜對角線的上方,是GBDT可以超越神經(jīng)網(wǎng)絡(luò)的時(shí)候。
人的認(rèn)知可解,對應(yīng)著就是特征工程的難度和可行性。
還是不好理解,看下面這樣一個(gè)具體的例子。
如果你對speech稍有了解,或者做過說話人驗(yàn)證/聲紋識(shí)別(SVR)任務(wù),你會(huì)知道,有一種特征工程叫做MFCC 特征,現(xiàn)在解決說話人本身特性的問題,前端還是無法離開MFCC,而我認(rèn)為MFCC是一種非常有代表性的飽含了專家知識(shí)的特征工程,感興趣的同學(xué)可以了解一下相關(guān)的知識(shí)。
如果你有了MFCC這樣的工具,你用不太復(fù)雜的淺層NN(TDNN),都能取得超越輸入原始語音采樣序列,放到復(fù)雜transformer中的效果。
另外,在某些類型的數(shù)據(jù)上,特種工程很難施展拳腳,類似于id序列,典型的任務(wù)如NLP,CTR等。
NLP是人類知識(shí)凝練的字節(jié)單元,CTR是大規(guī)模的稀疏id序列,這兩種數(shù)據(jù)上,雖然人的認(rèn)知是到位了,但是不可解。特征工程施展不開。
而特征工程最能施展拳腳的地方就是工業(yè)界的異質(zhì)表格(Tabulr)數(shù)據(jù),同質(zhì)數(shù)據(jù)是各列數(shù)據(jù)的單元要素接近,如文本對應(yīng)字符,圖片對應(yīng)像素,語音對應(yīng)語音frame。
這個(gè)結(jié)論在Yandex團(tuán)隊(duì)2021年論文 《Revisiting Deep Learning Models for Tabular Data》里印證了。這也是為什么早些年一票Kaggle比賽,清一色的XGB和LGB屠榜。
一言以蔽之的話,就是我之前文章的配圖,好風(fēng)憑借力,助我上青云。(寫著寫著怎么越來越像炒冷飯)
好風(fēng):在知識(shí)學(xué)習(xí)上恰當(dāng)?shù)哪P汀<炔惶珡?fù)雜引入過多噪聲和其他的問題,也沒有太簡單不足支撐,內(nèi)在的機(jī)理有利于知識(shí)的學(xué)習(xí)。
借力:機(jī)器學(xué)習(xí)中使用特征工程的過程,人腦把數(shù)據(jù)經(jīng)過處理,精煉,得到更接近結(jié)果的表達(dá),更直白的可以得到預(yù)測目標(biāo)。
特征工程的道與術(shù)
前面都在講特征工程的道,而特征工程具體的術(shù)的話,其實(shí)也沒有必要講的特別詳細(xì)了,但是我還是給你準(zhǔn)備了一些關(guān)于術(shù)方面的資料的。
其實(shí)這部分真的沒必要展開講了,很多是熟能生巧,case by case,結(jié)合具體的業(yè)務(wù)的事情。
比如你們用的滑動(dòng)驗(yàn)證碼,這里面其實(shí)就有很多特征工程的東西,對鼠標(biāo)的移動(dòng)行為的各種角度的刻畫,比如速度,加速度,角度等。
這里引用了知乎JovialCai的回答里的一張圖。以風(fēng)控場景為例,一些可能有用的數(shù)據(jù)如下(這里其實(shí)收集數(shù)據(jù)源的角度更大一些):
我?guī)退膸讉€(gè)很有用的特征
1.支付金額為整數(shù)的占比(刻畫支付金額是不是都是整數(shù))
2.支付金額分布前10的占比(刻畫支付金額是不是集中在幾個(gè)數(shù)里)
3.支付商鋪的id占比(刻畫支付金額是不是集中在幾個(gè)店鋪里)
4.非運(yùn)營時(shí)段夜間交易行為數(shù)量(高危支付行為數(shù)量)
其他如圖所示(引用了知乎JovialCai):
一些收集的術(shù)的資料
很多資料下載需要翻墻,整理的一些能下載下來的,公眾號(hào)里回復(fù)“特征工程”即可獲取。
附帶鏈接地址(知乎上不好放外鏈)
https://www.zhihu.com/question/29316149/answer/607394337
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結(jié)
以上是生活随笔為你收集整理的可能是全网写特征工程最通透的...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】让AI读懂法律文书:一种基于多
- 下一篇: 打乱数组排序的算法shuffle