本文根據(jù)美團點評算法工程師胡淏4月22日在“攜程技術(shù)沙龍”上的分享整理而成食拜。文字綜合了“攜程技術(shù)中心”微信公眾號的版本和胡淏本人在微博上發(fā)表的文章,并有少量編輯加工拢锹。
圖1 機器學習工程師的知識圖譜
圖1列出了我認為一個成功的機器學習工程師需要關(guān)注和積累的點舆绎。機器學習實踐中胞锰,我們平時都在積累自己的“彈藥庫”:分類、回歸葬凳、無監(jiān)督模型绰垂、Kaggle上面特征變換的黑魔法、樣本失衡的處理方法火焰、缺失值填充……這些大概可以歸類成模型和特征兩個點劲装。我們需要參考成熟的做法、論文昌简,并自己實現(xiàn)占业,此外還需要多反思自己方法上是否還可以改進。如果模型和特征這兩個點都已經(jīng)做得很好了纯赎,你就擁有了一張綠卡谦疾,能跨過在數(shù)據(jù)相關(guān)行業(yè)發(fā)揮模型技術(shù)價值的準入門檻。
在這個時候犬金,比較關(guān)鍵的一步念恍,就是高效的技術(shù)變現(xiàn)能力六剥。所謂高效,就是解決業(yè)務核心問題的專業(yè)能力樊诺。本文將描述這些專業(yè)能力仗考,也就是模型優(yōu)化的四個要素:模型、數(shù)據(jù)词爬、特征秃嗜、業(yè)務,還有更重要的顿膨,就是它們在模型項目中的優(yōu)先級锅锨。
項目推進過程中,四個要素相互之間的優(yōu)先級大致是:業(yè)務>特征>數(shù)據(jù)>模型恋沃。
圖2 四要素解決問題細分+優(yōu)先級
一個模型項目有好的技術(shù)選型必搞、完備的特征體系、高質(zhì)量的數(shù)據(jù)一定是很加分的囊咏,不過真正決定項目好與壞還有一個大前提恕洲,就是這個項目的技術(shù)目標是否在解決當下核心業(yè)務問題。
業(yè)務問題包含兩個方面:業(yè)務KPI和deadline梅割。舉個例子霜第,業(yè)務問題是在兩周之內(nèi)降低目前手機丟失帶來的支付寶銷贓風險。這時如果你的方案是研發(fā)手機丟失的核心特征户辞,比如改密是否合理泌类,基本上就死的很慘,因為兩周根本完不成底燎,改密合理性也未必是模型優(yōu)化好的切入點刃榨;反之,如果你的方案是和運營同學看bad case双仍,梳理現(xiàn)階段的作案通用手段枢希,并通過分析上線一個簡單模型或者業(yè)務規(guī)則的補丁,就明智很多殊校。如果上線后晴玖,案件量真掉下來了,就算你的方案準確率很糟为流、方法很low呕屎,但你解決了業(yè)務問題,這才是最重要的敬察。
雖然業(yè)務目標很關(guān)鍵秀睛,不過一般講,業(yè)務運營同學真的不太懂得如何和技術(shù)有效的溝通業(yè)務目標莲祸,比如:
我們想做一個線下門店風險評級的項目蹂安,希望運營通過反作弊模型角度幫我們給門店打個分椭迎,這個分數(shù)包含的問題有:風險是怎么定義的、為什么要做風險評級田盈、更大的業(yè)務目標是什么畜号、怎么排期的、這個風險和我們反作弊模型之間的業(yè)務關(guān)系你是怎么看的允瞧?
做一個區(qū)域未來10min的配送時間預估模型简软。我們想通過運營的模型衡量在惡劣天氣的時候每個區(qū)域的運力是否被擊穿(業(yè)務現(xiàn)狀和排期?運力被擊穿可以掃下盲么述暂?運力擊穿和配送時間之間是個什么業(yè)務邏輯痹升、時間預估是刻畫運力緊張度的最有效手段么?項目的關(guān)鍵場景是惡劣天氣的話畦韭,我們僅僅訓練惡劣天氣場景的時間預估模型是否就好了疼蛾?)。
為了保證整個技術(shù)項目沒有做偏艺配,項目一開始一定要和業(yè)務聊清楚三件事情:
- 業(yè)務核心問題察郁、關(guān)鍵場景是什么。
- 如何評估該項目的成功转唉,指標是什么绳锅。
- 通過項目輸出什么關(guān)鍵信息給到業(yè)務,業(yè)務如何運營這個信息從而達到業(yè)務目標酝掩。
項目過程中,也要時刻回到業(yè)務眷柔,檢查項目的健康度期虾。
要說正確的業(yè)務理解和切入,在為技術(shù)項目保駕護航驯嘱,數(shù)據(jù)镶苞、特征便是一個模型項目性能方面的天花板。garbage in鞠评, garbage out就在說這個問題茂蚓。
這兩天有位聽眾微信問我一個很難回答的問題,大概意思是剃幌,數(shù)據(jù)是特征拼起來構(gòu)成的集合嘛聋涨,所以這不是兩個要素。從邏輯上面講负乡,數(shù)據(jù)的確是一列一列的特征牍白,不過數(shù)據(jù)與特征在概念層面是不同的:數(shù)據(jù)是已經(jīng)采集的信息,特征是以兼容模型抖棘、最優(yōu)化為目標對數(shù)據(jù)進行加工茂腥。就比如通過word2vec將非結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)化狸涌,就是將數(shù)據(jù)轉(zhuǎn)化為特征的過程。
所以最岗,我更認為特征工程是基于數(shù)據(jù)的一個非常精細帕胆、刻意的加工過程。從傳統(tǒng)的特征轉(zhuǎn)換般渡、交互懒豹,到embedding、word2vec诊杆、高維分類變量數(shù)值化歼捐,最終目的都是更好的去利用現(xiàn)有的數(shù)據(jù)。之前有聊到的將推薦算法引入有監(jiān)督學習模型優(yōu)化中的做法晨汹,就是在把兩個本不可用的高維ID類變量變成可用的數(shù)值變量豹储。
觀察到自己和童鞋們在特征工程中會遇到一些普遍問題,比如淘这,特征設計不全面剥扣,沒有耐心把現(xiàn)有特征做得細致……也整理出來一套方法論,僅供參考:
圖3 變量體系铝穷、研發(fā)流程
在特征設計的時候钠怯,有兩個點可以幫助我們把特征想的更全面:
- 現(xiàn)有的基礎數(shù)據(jù)。
- 業(yè)務“二維圖”曙聂。
這兩個方面的整合晦炊,就是一個變量的體系。變量(特征)宁脊,從技術(shù)層面是加工數(shù)據(jù)断国,而從業(yè)務層面實際在反應RD的業(yè)務理解和數(shù)據(jù)刻畫業(yè)務能力∮馨“二維圖”稳衬,實際上未必是二維的,更重要的是我們需要把業(yè)務整個流程抽象成幾個核心的維度坐漏,舉幾個例子:
外賣配送時間業(yè)務(維度甲:配送的環(huán)節(jié)薄疚,騎手到點、商家出餐赊琳、騎手配送街夭、交付用戶;維度乙:顆粒度慨畸,訂單粒度莱坎、商家粒度、區(qū)域城市粒度寸士;維度丙:配送類型檐什,眾包碴卧、自營……)。
反作弊變量體系(維度甲:作弊環(huán)節(jié)乃正,登錄住册、注冊、實名瓮具、轉(zhuǎn)賬荧飞、交易、參與營銷活動名党、改密……叹阔;維度乙:作弊介質(zhì),賬戶传睹、設備耳幢、IP、WiFi欧啤、銀行卡……)睛藻。
通過這些維度,你就可以展開一個“二維圖”邢隧,把現(xiàn)有你可以想到的特征填上去店印,你一定會發(fā)現(xiàn)很多空白,比如下圖倒慧,那么哪里還是特征設計的盲點就一目了然:
圖4 賬戶維度在轉(zhuǎn)賬按摘、紅包方面的特征很少;沒有考慮WiFi這個媒介纫谅;客滿與事件數(shù)據(jù)沒考慮
數(shù)據(jù)和特征決定了模型性能的天花板院峡。deep learning當下在圖像、語音系宜、機器翻譯、自動駕駛等領(lǐng)域非撤⑵牵火盹牧,但是deep learning在生物信息、基因?qū)W這個領(lǐng)域就不是熱詞:這背后是因為在前者励幼,我們已經(jīng)知道數(shù)據(jù)從哪里來汰寓,怎么采集,這些數(shù)據(jù)帶來的信息基本滿足了模型做非常準確的識別苹粟;而后者有滑,即便有了上億個人體堿基構(gòu)成的基因編碼,技術(shù)選型還是不能長驅(qū)直入——超高的數(shù)據(jù)采集成本嵌削,人后天的行為數(shù)據(jù)的獲取壁壘等一系列的問題毛好,注定當下這個階段在生物信息領(lǐng)域望艺,人工智能能發(fā)出的聲音很微弱,更大的舞臺留給了生物學肌访、臨床醫(yī)學找默、統(tǒng)計學。
圖5 滿房開房的技術(shù)選型吼驶、特征工程roadmap
模型這件事兒惩激,許多時候追求的不僅僅是準確率,通常還有業(yè)務這一層更大的約束蟹演。如果你在做一些需要強業(yè)務可解釋的模型风钻,比如定價和反作弊,那實在沒必要上一個黑箱模型來為難業(yè)務酒请。這時候骡技,統(tǒng)計學習模型就很有用,這種情況下蚌父,比拼性能的話哮兰,我覺得下面這個不等式通常成立:Glmnet>LASSO>=Ridge>LR/Logistic。相比最基本的LR/Logistic苟弛,ridge通過正則化約束緩解了LR在過擬合方面的問題喝滞,lasso更是通過L1約束做類似變量選擇的工作。
不過兩個算法的痛點是很難決定最優(yōu)的約束強度膏秫,Glmnet是Stanford給出的一套非常高效的解決方案右遭。所以目前,我認為線性結(jié)構(gòu)的模型缤削,Glmnet的痛點是最少的窘哈,而且在R、Python亭敢、Spark上面都開源了滚婉。
如果我們開發(fā)復雜模型,通常成立第二個不等式RF(Random Forest帅刀,隨機森林)<=GBDT<=XGBoost让腹。拿數(shù)據(jù)說話,29個Kaggle公開的winner solution里面扣溺,17個使用了類似GBDT這樣的Boosting框架骇窍,其次是DNN(Deep Neural Network,深度神經(jīng)網(wǎng)絡)锥余,RF的做法在Kaggle里面非常少見腹纳。
RF和GBDT兩個算法的雛形是CART(Classification And Regression Trees),由L Breiman和J Friedman兩位作者在1984年合作推出。但是在90年代在發(fā)展模型集成思想the ensemble的時候嘲恍,兩位作者代表著兩個至今也很主流的派系:stacking/ Bagging & Boosting足画。
一種是把相互獨立的CART(randomized variables,bootstrap samples)水平鋪開蛔钙,一種是深耕的Boosting锌云,在擬合完整體后更有在局部長尾精細刻畫的能力。同時吁脱,GBDT模型相比RF更加簡單桑涎,內(nèi)存占用小,這都是業(yè)界喜歡的性質(zhì)兼贡。XGBoost在模型的輕量化和快速訓練上又做了進一步的工作攻冷,也是目前我們比較喜歡嘗試的模型。
胡淏遍希,美團算法工程師等曼,畢業(yè)于哥倫比亞大學。先后在攜程凿蒜、支付寶禁谦、美團從事算法開發(fā)工作。了解風控废封、基因州泊、旅游、即時物流相關(guān)問題的行業(yè)領(lǐng)先算法方案與流程漂洋。