<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【數(shù)據(jù)競(jìng)賽】可能是全網(wǎng)特征工程實(shí)操最通透的...

          共 5039字,需瀏覽 11分鐘

           ·

          2022-02-17 05:55

          之前在我寫的特征工程方法論里面提了一嘴,用automl搜索+人工啟啟發(fā)式可以高效穩(wěn)定地完成特征工程,并取得不錯(cuò)的效果。

          原文:可能是全網(wǎng)寫特征工程最通透的...

          不過這篇文章最大的問題是太過于側(cè)重于是什么,和為什么了,至于怎么辦埋了一個(gè)很大的伏筆。

          砍老師今天把這個(gè)思路給大家詳細(xì)的寫出了,可以實(shí)操。可以通過點(diǎn)擊訪問原文直達(dá)砍老師的知乎原文,作為kaggle歷史總排名12的GrandMaster還有很多干貨~


          可能是全網(wǎng)特征工程實(shí)操最通透的...


          背景


          目前網(wǎng)上能搜到的講特征工程方法基本都是教材里的那一套:缺失值填充,歸一化,category特征one-hot,降維等等。但是指望靠這些提升模型性能是遠(yuǎn)遠(yuǎn)不夠的,特別是對(duì)強(qiáng)大的xgb/lgb上述方法幾乎是毫無意義。也有一些文章總結(jié)了特定業(yè)務(wù)的特征工程,但是對(duì)其他任務(wù)也沒有泛化能力。


          包大人插一嘴,這個(gè)評(píng)論很有水平,很多回答扯那些老掉牙的預(yù)處理。這篇文章基本就是從基礎(chǔ)特征出發(fā),衍生到高階的實(shí)操方法論。這個(gè)評(píng)論的人可能是量化或者金融從業(yè)者,他們?cè)诨A(chǔ)因子庫+啟發(fā)式人力搜索上走了挺遠(yuǎn)了~

          畫導(dǎo)圖抄書唬人,但是真的沒什么水平~


          砍手豪:本文探討和介紹一下我的特征工程方法論:1.類automl的暴力特征字典思路 2.基于業(yè)務(wù)理解的特征工程思路 3.基于特征重要性的特征工程思路;然后是上述三者的反復(fù)迭代螺旋上升。



          要點(diǎn)一


          1.類automl的暴力詞典搜索


          暴力特征字典指的是當(dāng)給定數(shù)據(jù),能在想象力范圍能組合出盡可能多的特征,并形成Pipline,加快特征嘗試和迭代的速度,就像automl一樣。打個(gè)比方,當(dāng)給你兩個(gè)類別特征A 和B,你能制造出多少個(gè)特征用于迭代?簡單寫十個(gè):


          count:A_COUNT、B_COUNT、A_B_COUNT
          nunique:?A_nunqiue_B??(按B對(duì)稱的下文省略)
          ratio:?A_B_COUNT/A_COUNT?在A里各個(gè)B類所占的比例
          average:A_COUNT/A_nunqiue_B?A里各個(gè)B類的平均數(shù)
          most:?A_most_B?在A類里出現(xiàn)最高的B是哪個(gè)
          pivot:?A_B1_count、A_B2_count?A和B類里特定的B1、B2的聯(lián)合統(tǒng)計(jì)
          pivot2:?A_B1_count-A_B2_count?A的B1行為和B2行為的加減乘除
          stat1:?A_stat_A_B_COUNT?基于A_B_COUNT對(duì)A的描述,
          stat2 :A_stat_B_COUNT 基于B_COUNT對(duì)A的描述,
          序列化:初步LDA,NMF,SVD,進(jìn)一步Word2Vec,doc2vec 再進(jìn)一步?圖神經(jīng)網(wǎng)絡(luò)deepwalk,pPRoNE


          如果再加上numeric、time、target特征,幾乎可以組合成無窮無盡的特征


          提升方法:可以看各個(gè)數(shù)據(jù)挖掘的比賽獲勝solution,我最初(17年)就是反復(fù)看當(dāng)時(shí)幾個(gè)kaggle GM plantgo&pipiu、Eureka&weiwei、Little Boat&jiwei liu的獲勝方案開源,拓寬自己對(duì)特征工程的想象力。


          缺陷:這類會(huì)產(chǎn)生大量特征,比如給五個(gè)category特征,就能組成(2**5-1)共31個(gè)count特征 ,自然也有大量無用特征,會(huì)降低模型質(zhì)量和速度。

          2.基于業(yè)務(wù)理解的特征工程思路


          要點(diǎn)二


          2.基于業(yè)務(wù)理解做特征


          通過內(nèi)在的業(yè)務(wù)邏輯去分做特征,可以先想業(yè)務(wù)邏輯,然后數(shù)據(jù)分析驗(yàn)證,也可以數(shù)據(jù)分析驗(yàn)證,然后得到業(yè)務(wù)邏輯,最大的好處是可解釋性強(qiáng),在此基礎(chǔ)上泛化能力更強(qiáng),而且模型規(guī)模小。舉幾個(gè)例子:


          在Instacart Market Basket Analysis比賽,預(yù)測(cè)美國用戶在線上商店的購物,我想我平時(shí)上班,買水果零食這種可買可不買的都放在周末,然后對(duì)這個(gè)數(shù)據(jù)里進(jìn)行分析,發(fā)現(xiàn)在Instacart里,酒類商品的銷量也集中在周末,因此做了很多item 和 time 交叉的特征,對(duì)模型提升較大。


          在TalkingData AdTracking Fraud Detection Challenge比賽里,任務(wù)是判斷虛假點(diǎn)擊,通過數(shù)據(jù)分析發(fā)現(xiàn)低頻IP容易是Fraud樣本,仔細(xì)想這些Fraud點(diǎn)擊都是自動(dòng)化程序每次隨機(jī)生成的ip,因此容易是低頻ip,而正常的ip因?yàn)槭沁\(yùn)營商動(dòng)態(tài)分配共享的,因此普遍頻率高。因此做了對(duì)channel,ad和ip頻次的交叉特征,對(duì)模型提升較大。


          提升方法:通過努力的數(shù)據(jù)分析,以及多交流獲取業(yè)務(wù)的內(nèi)在邏輯形式。在實(shí)際中就是多加幾個(gè)行業(yè)群,多看論文多交流,在比賽中就是多逛論壇,看其他人的討論。


          缺陷:憑借業(yè)務(wù)邏輯做特征,容易遺漏掉強(qiáng)特征。很多時(shí)候并不能琢磨出全部的內(nèi)在業(yè)務(wù)邏輯,甚至?xí)鲃?dòng)的篩掉一些實(shí)際有價(jià)值的特征。


          要點(diǎn)三


          3.基于特征重要性表的特征工程思路


          xgb/lgb可以輸出特征重要性表,比起相關(guān)性分析,通過特征重要性表我們可以迅速在大量特征中獲取強(qiáng)特征。在此基礎(chǔ)上我們可以對(duì)強(qiáng)特征做更深層次的挖掘。


          在Two sigma Rental-Listing-Inquireies里,GM little boat提到,既然manager id是強(qiáng)特征,那我們就可以用各種category,numeric特征去描述它。這里涉及到一個(gè)問題,很多人說FM,深度學(xué)習(xí)因?yàn)閑mbedding的存在而具有了向新id泛化的能力,而樹模型只會(huì)記憶。其實(shí)在我看來,特征工程就是一個(gè)人工embedding的過程,讓高維度的類別特征數(shù)值向量化,因此也提升了樹模型的泛化能力?;氐竭@個(gè)比賽,就是特征重要性表為我們指明了特征工程努力的方向。在IJCAI2018 的比賽里,top2 solution 就是采用將特征重要性表靠前的數(shù)值特征暴力交叉,期望通過這種方法提高模型獲取更多有價(jià)值的特征。


          類似的,如果看到一個(gè)數(shù)值特征特征重要性很強(qiáng),我們也可以用類別特征和其交叉。如果一個(gè)統(tǒng)計(jì)特征很重要,我們可以增加一個(gè)時(shí)區(qū)維度,比如最近一周,最近一個(gè)月的相應(yīng)統(tǒng)計(jì)特征。如果距離上次時(shí)間很重要,我們可以增加距離上兩次,上次三次的時(shí)間特征。等等。


          進(jìn)一步,特征重要性表也可以知道深度學(xué)習(xí)模型子結(jié)構(gòu)的選擇,序列特征對(duì)應(yīng)rnn類,交叉特征對(duì)應(yīng)fm類,文本特征對(duì)應(yīng)nlp類,如果特征不重要,就不用上相應(yīng)的結(jié)構(gòu)了,如果重要,就可以對(duì)將特定的特征輸入對(duì)應(yīng)的子結(jié)構(gòu)了。


          提升方法:經(jīng)驗(yàn)的積累,如何將一個(gè)特征發(fā)散開來。


          缺陷:首先得做出強(qiáng)特征,然后才能在強(qiáng)特征基礎(chǔ)上發(fā)散,因此依賴一個(gè)好的特征重要性表




          上文講了三個(gè)我所認(rèn)為最主要的特征工程思路,但是他們各有各的缺陷,因此

          如何將其結(jié)合起來互補(bǔ),螺旋迭代提升就是接下來能做的了。


          要點(diǎn)四


          4.類automl的暴力特征字典思路對(duì)基于業(yè)務(wù)理解的特征工程思路的協(xié)助

          前文說到,基于業(yè)務(wù)理解的特征工程容易遺漏特征,不能挖掘全部可能存在的業(yè)務(wù)邏輯。那么我們可以先暴力特征字典全部羅列起來,然后在賦予其業(yè)務(wù)邏輯,看其在當(dāng)前業(yè)務(wù)下是否有效。再回到第一項(xiàng)的暴力特征字典。我們把category A和B替換成user ,item

          count:user_COUNT(用戶活躍度)、item_COUNT(商品熱度)、user_item_COUNT(用戶對(duì)特定商品的喜愛)
          nunique:?user_nunqiue_item??(一個(gè)用戶購買多少種商品)?item?nunique_user?(一個(gè)商品被多少個(gè)不同用戶購買)
          ratio:?user_item_COUNT/user_COUNT?(某個(gè)商品在user購買中的比例,喜愛程度)
          average:user_COUNT/user_nunqiue_item?(平均每類商品的購買量)
          most:?user_most_item?(用戶最喜愛的品類)
          pivot:?user_item1_count、user_item2_count?(用戶和特定商品的交互)
          pivot2:?user_item1_count-user_item2_count?(用戶不同行為的差值,比如生活用品和娛樂用品的比例)
          stat1: user_stat_user_item_COUNT (max:買的最多的商品的數(shù)量,std:不同商品的分散度,是專寵還是偏愛)
          stat2 :user_stat_item_COUNT (mean:用戶是喜歡熱門商品還是冷門商品)
          序列化:初步LDA,NMF,SVD(用商品描述用戶畫像)
          進(jìn)一步Word2Vec,doc2vec 再進(jìn)一步?圖神經(jīng)網(wǎng)絡(luò)deepwalk,pPRoNE(刻畫商品和用戶的共現(xiàn)性和相似性)


          要點(diǎn)五


          5.類automl的暴力特征字典思路對(duì)基于特征重要性表的特征工程思路的協(xié)助


          首先我們?cè)?data去跑特征重要性表,知道某個(gè)category特征或numeric很重要,要進(jìn)一步挖掘這個(gè)特征的時(shí)候,比如前文說的“在Two sigma Rental-Listing-Inquireies里,GM little boat提到,既然manager id是強(qiáng)特征,那我們就可以用各種category,numeric特征去描述它。”我們就可以基于暴力特征字典去強(qiáng)化這個(gè)特征,看看如何去拓展這個(gè)強(qiáng)特征的維度。


          要點(diǎn)六


          6.基于業(yè)務(wù)理解的特征工程思路 和 基于特征重要性表的特征工程思路 對(duì) ?類automl的暴力特征字典思路的協(xié)助


          類automl的暴力特征字典思路最大的問題是可以產(chǎn)生無數(shù)的特征,比如五個(gè)類別特征就能產(chǎn)生31種count特征,這時(shí)候我們可以基于特征重要性表,把特征重要性低的類別特征從組合中刪去,也可以基于業(yè)務(wù)理解,把一些明顯無相關(guān)性的category交叉移除。這樣就不會(huì)產(chǎn)生過多無用的特征變成噪音降低模型速度和精度。

          要點(diǎn)七


          7.基于業(yè)務(wù)理解的特征工程思路 和 基于特征重要性表的特征工程思路 的相互迭代


          其實(shí)比起數(shù)據(jù)分析,特征重要性表是一個(gè)可以更快的理解業(yè)務(wù)邏輯的方法

          如果一個(gè)特征重要性表里存在一個(gè)我們?cè)菊J(rèn)為應(yīng)該無關(guān)緊要的特征卻有很高的重要性,其實(shí)就可以增強(qiáng)我們對(duì)業(yè)務(wù)的理解,我們需要從業(yè)務(wù)角度思考為什么這個(gè)特征有好的效果,然后從業(yè)務(wù)角度上去做一個(gè)更好的特征。

          比如特征重要性表里category A 和 numeric B特征都很重要,雖然無論樹模型還是深度學(xué)習(xí)模型都已經(jīng)有很強(qiáng)的特征交叉能力了,但經(jīng)過業(yè)務(wù)分析,其實(shí)是 A_mean_B特征影響結(jié)果,原始的A和B還是不如我們直接把A_mean_B做出來效果好。


          因此,通過觀察特征重要性表,思考背后真正的業(yè)務(wù)邏輯,找出真正和target直接相關(guān)的特征,既能提升對(duì)業(yè)務(wù)的理解,也能夠提升模型的性能。

          在Avito Demand Prediction Challenge(類似閑魚的一個(gè)app轉(zhuǎn)化預(yù)測(cè))里,大家發(fā)現(xiàn)各種category_mean_price - price有很高的特征重要性,因此冠軍little boat思考出這不就是合理價(jià)格和賣家出價(jià)的差影響轉(zhuǎn)化率嘛,于是干脆先建了一個(gè)子模型,先預(yù)測(cè)出pred_price,然后用pred_price-price用于轉(zhuǎn)化率模型,取得了更好的效果,這就是基于特征重要性來理解業(yè)務(wù),深挖特征的一個(gè)好的案例。


          總之,就是三種特征工程思路相互補(bǔ)充,反復(fù)迭代,最后通過驗(yàn)證集取得一個(gè)好的特征組合。


          小結(jié)


          本文從方法論角度探討和總結(jié)了我的特征工程方法,基本上毫無保留。但是要反思的就是,使用這一套方法論是無法和最好的特征工程大師(比如國內(nèi)的江離、otto數(shù)據(jù)挖掘俱樂部)還是有很大差距,我猜測(cè)一下可能用以下兩種原因:


          1. 高手們還有其他角度的特征工程構(gòu)造邏輯

          2. 現(xiàn)有的特征工程邏輯我做的還不夠好,比如即便我觀察特征重要性表知道某些特征很重要后,也經(jīng)常無法真正挖掘出反應(yīng)業(yè)務(wù)邏輯的深層特征,需要后續(xù)看其他人的開源才能煥然大悟。


          在這里拋磚引玉,供大家參考。


          往期精彩回顧




          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  69色综合 | 日本一区视频在线 | 亚洲+日产+专区 | 国产日韩在线播放 | 欧美成人伊人 |