領域專家?利用管理顧問的技巧做特徵工程(上)
提醒您:
這兩篇分為上下的「領域專家?利用管理顧問的技巧做特徵工程」,只會提到一點點 特徵編碼、特徵合成、分箱、切割時間之類的技術性特徵工程,所以如果是想來看技術性的資料科學內容,這篇恐怕會讓您失望,十分不好意思,但是我會以商管、業界比較常用的領域專家方法,來解釋特徵工程以及如何幫助建立特徵工程。
導論
特徵(Feature):就是我們讀入的X,用來表現不同資料間的差異。
特徵工程(Feature Engineering),其實是體現一個資料科學家藝術性的地方,通過X,創造衍生的X。
而特徵工程也常常出現在各個學科,比如說金融:
以金融商品舉例,股票好了,一檔股票直接買進,或許會有很大的波動,而這樣的波動在虧損的時候是我們所無法承受的(會讓自己虧到變成負債、或者造成恐慌),但我們仍然看好這支股票,況且如果是因為資金不足而放棄就太可惜了。所以華爾街的財工們、財務學的大佬就想出一種辦法,將一籃子股票編制成指數,來代表「市場因子」,或者將股票的波動、買賣點等轉成期貨、選擇權作為「衍生性因子」,讓你在買進股票的時候,賣出對應期權,或是在推算出場的時間點賣出相對應的期貨來達到避險的效果。而期權、期貨的價格怎麼訂定呢?就是依附在股票(金融商品)上的。又,現在的金融市場上,其實會玩選擇權的人是比較Smart的(美股市場,台灣我沒特別研究XD)。
所以說雖然一開始、或者在財務理論上選擇權等衍生性商品(Derivative)原本是依附在股票上,但是如果今天我們要預測股價,其實我會考慮利用衍生性商品的價格當作部分的特徵,因為它是先行指標(Leading indicator) 而它的定價是能夠利用原本的X(較早的股票價格)推出來的。
所謂的特徵工程,就是從既有資料裡面創造其他的變數技巧,比如我們光從一個人的姓就可以大致建立他的社群地位、從詞在文本中的位置就可以推測出這個詞在這裡的用法是什麼。
在無論是Kaggle 、天池、Data Castle 或是目前的主流演算法競賽中,結構化資料分析的競賽裡面,預測競賽的關鍵往往就是特徵工程,為什麼呢?其實這間接得利於開源軟體的世界,而開源軟體、開源經濟又是Github這個號稱工程師社交平臺慢慢搭建起來的,想知道更多Github的話,可以參考這篇文章:工程師的社交平台,Github的正確用法。
關鍵就是因為開源軟體的關係,我們可以利用別人寫好的程式,不必自己造輪子!
也就是說呢,大部分的演算法其實都已經有人幫我們封裝好了,只要調過來(import)就可以用了,這也是為什麼Kaggle總會有一些屠榜神器,比如自然語言是BERT、預測問題幾乎都是Xgboost (可以參考這篇文章:機器學習神器:Xgboost),就好像很久以前玩神魔之塔,地獄級的排行榜前面都是妲己一樣。
因為演算法真的太過相像,電腦許可的話還可以用暴力法的GridSearch來找最fit的超參數,所以預測性問題決勝的關鍵點其實往往都在特徵工程,也就是我們可以將原本的資料利用「人為」的方式挖掘出多少濳在訊息。
管顧跟領域專家?
一個資料科學團隊必須包含三種人,領域專家、資料科學家、資料工程師,而領域知識、算法知識、程式能力也是每個資料科學家期許自己能夠樣樣精通的技能樹。後兩者不難理解,要想使用、選擇機器學習的演算法與調整參數、建立Deep Learning的架構,深厚的算法知識與研究論文的能力是不可少的,而實踐出算法、探索資料、撈取、儲存資料都需要越熟練工程化的能力越好。
但是,為什麼需要領域專家呢?
根源於數據,我們必須充分了解自己的資料才有辦法做出好的分析,否則就只是跑跑數據而已,而領域專家可以與我們討論資料觀察到的現象、背後的原因、以及假設與驗證,這些都需要對資料有深刻的理解、有第一手接觸、收集的經驗才能夠學習到的,而這些知識也可以幫助我們替資料建立充分的特徵。
不只如此,在商業問題上,學習越多Domain Knowhow或許比懂得算法還重要。
而管顧,或者領域專家,就是分析領域內問題的佼佼者!
決策者不會問:「經過調整,這個模型的精準度上升了多少? 預測準度高嗎?」 而是只會問:「所以我們的KPI因此提升了多少?解決問題了沒有?」
待過頂尖學術機構以及踏入業界,我真的深刻感受到:調整參數、讓模型變得更準,基本上有非常非常大的機會只出現在資料科學的比賽以及實驗室。(這點跟金融一致,有名的財務理論基本上不會一邊實證一邊發表的,會賠慘,都在事後諸葛,尤其是雷曼兄弟金融海嘯前後的因子分析。或者太早預測也是賠慘,大賣空(Big short)這部電影其實很驚險,主角如果更「早」一點發現、或者他的預測能力更好,其實會在開始賺錢以前就被負債壓迫到不得不脫手。)
而且精準的模型不一定好,尤其在變動快速的產業(電商、金融、行銷顧問),有時候所付出的時間成本並不能彌補模型無法上線所導致的損失。這也是為什麼有越來越多公司獨自成立實驗室,並且另外在第一線業務培育一批資料分析師,兩邊互補,達成公司內部的「產學合作」,因為在業務前線需要的不是拿著論文討論模型上限的成效、loss function的曲線如何,而是看著日報、週報,思考活動、促銷、天氣等額外因子對數據造成的影響,這些是我們無法忽略,但是實驗設為固定條件或忽略不計的假設。
而領域專家除了提供上述對數據的理解之外,就是可以幫助我們建立特徵工程,利用業界的指標、領域常看的特點與資料分析師討論,轉化為數據指標、量化分析的因子,因此時常與領域專家Skype、寫Mail、聊天就是我蠻常在做的事情XDD
另外要注意一點,因為中文的關係,專家這個詞可能會被人誤解,其實不限定於一定要是某個領域的PH.D,或者他在該領域有個非凡成就、1000個小時…才可以被稱為「專家」。
舉凡業務人員、資料收集人員、行政、客戶關係經理、品類經理、存在企業價值鏈(Value chain)的人全部都算在內,他們懂得商業模式的流程、比我們更懂得客戶、這樣與我們的關係可能是「橫向」的,我們可以找同事聊聊、問問對數據的看法,甚至跨部門、跨Team來詢問多方的意見,才不會被自己的偏見、誤解影響到。
而「縱向」的專家其實也很重要,比如主管就會更了解公司最近的營運策略,了解營運策略對資料分析師「能做出的貢獻」有非常大的影響,因為資料分析往往都有一個目標,尤其是Product analysis 或者 Business Analysis,很多時候能不能產生一個Action是取決於公司能夠給予的權利、提供的資源,這時候了解主管對分析專案的想法就非常重要。如果沒有對應的資源,發現銷售下降、顧客流失馬上拍桌子說:「那我們發個折扣券挽回吧!」
其實是蠻搞不清楚狀況的,因為公司或者團隊不一定現在就有對應的資源、企劃、或者並不是以資料科學家、分析師們手上的分析專案為決策優先。所以事先、專案時、事後追蹤,溝通真的都很重要!
自己當個領域專家
(前面寫一大串特徵工程很重要,領域知識很重要,就是鋪梗鋪到這XD)
那其實一直溝通也不是辦法,我們何不自己就成為領域專家呢?
甚至,如果今天去Kaggle打solo,看不懂meta data又沒人請教怎麼辦?
管顧是企業的醫生,各領域跑來跑去,當個空中飛人接觸各行各業,他們有他們的做法,而資料科學家可以怎麼借鑒呢?
預告一下
之前有看到一則新聞:台大這個系,大數據人才的搖籃。
我想其實是因為財經類的學科本來就給予我們如何訂定指標的訓練,外加常常思考人文社會的現象,所以對「解釋性」比較能有觀點,其實很適合走資料科學的路,我會講解這邊的思維轉換,以及我們平常其實關注的是什麼,而這個技巧正好就是快速吸收領域知識的一個小技巧!如果您認為您的理工腦在分析龐大的領域資料時常常打結,不要錯過下篇文章!
下一篇,我們將學習怎麼快速建立領域知識以及了解資料!
這邊也想做個實驗,好讓我知道你/妳喜不喜歡這篇文章:
拍 10 下:簽個到,表示支持(謝謝鼓勵!)
拍 20 下:想要我多寫「商管相關」
拍 30 下:想要我多寫「資科相關」
拍 50 下:我有你這讀者寫這篇也心滿意足了!