【数据竞赛】组合特征的构建技巧,如何快速构建百大组合特征池
作者:塵沙杰少、櫻落、新峰、DOTA、謝嘉嘉
特征工程--無序/有序類別/數值特征的組合特征!
前 言
這是一個系列篇,如果有任何問題或者疑問的可添加我的微信一起討論,備注:“競賽小冊”即可。本文我們接著上一篇組合特征繼續討論無序類別特征和有序類別特征以及無序類別特征和數值特征的組合特征構建策略,這是數據競賽中的核心部分,本文將介紹如何基于這些特征構建出上百的特征,并介紹其中常見的一些非常有效的黃金組合特征。
無序類別特征+有序類別組合特征
1. 有序類別特征當無序
當我們將有序類別特征當作是無序類別特征的時候,所有無序類別特征+無序類別特征的策略在此便可以被拿過來直接使用。
2. 有序類別特征預處理再組合
有序類別特征,因為存在相對大小關系,可以基于大小判斷先對有序類別特征進行重組,重組的策略有很多,例如:
直接使用現有的工具包分箱;
基于業務理解進行分組。
我們以用戶的消費為例,假設我們有一列特征為用戶的消費范圍,共分為十組:0-1000、1001-3000、3001-5000、5001-10000、10001-20000、2001-50000、50001-100000、、100001-200000、200001-500000、500001以上。如果我們知道部分業務消息,消費金額在5000以下的為普通用戶,在5001-20000之間的為白銀用戶,在20001-100000之間的為黃金用戶,100001及之上的為鉆石用戶。分完組之后將有序類別特征當無序類別特征處理即可。
3. 有序類別特征當做數值特征處理
此處的內容我們會在無序類別特征和數值特征的組合特征處一起介紹。
無序類別特征+數值特征
該小節內的為了方便表示我們將A作為無序類別特征,B作為數值特征。
1. 數值特征當做有序類別特征
數值特征可以作為高基數的有序類別特征來對待,所以在之前用于無序類別特征和有序類別特征的策略在此可以直接使用。
2. 基于A/B的統計特征
我們將可以直接使用工具包進行計算得到的統計特征df.groupby(A)[B].transform(sts)稱之為:A關于B的傳統統計特征。這是非常通用的一組特征,其構建的思路也非常簡單,就是計算組內(無序類別特征)數值特征的統計信息,例如:
均值;
方差;
最大值;
最小值;
中位數;
偏度;
分位數(四分位數等);
眾數;
skewness;
峰度系數;
求和;
其它統計特征。
改組特征幾乎在所有的競賽中都會被使用和構建,而且往往能帶來非常大的提升。很多朋友會在這里枚舉十幾甚至更多的統計特征。
df['A_B_mean']???=?df.groupby('A')['B'].transform('mean').values df['B_A_median']?=?df.groupby('B')['A'].transform('median').values df['A_B_std']????=?df.groupby('A')['B'].transform('std').values? df['A_B_max']????=?df.groupby('A')['B'].transform('max').values? df['A_B_min']????=?df.groupby('A')['B'].transform('min').values? ......3. B+A/B的統計演變特征
此處我們講的 B+A關于B統計演變特征是基于原始B特征和A關于B的統計特征衍生而來,相對復雜一些。下面我們列舉一些常見的有效特征。
3.1.流量平滑特征
該特征也是較為通用的特征之一,直接用數值特征處于統計均值或者中位數即可,幾乎所有的數據競賽都可以直接使用。
df['B_div_A_B_mean']???=?df['B']?/?(df['A_B_mean']??+?1e-5) df['B_div_A_B_median']???=?df['B']?/?(df['A_B_median']??+?1e-5)3.2.黃金組合特征
該特征是之前Kaggle GM在kaggle論壇分享的,稱其為黃金組合特征,一共有三個特征。
原始的數值特征;
基于A關于B的均值特征;
B減去A關于B的均值特征;
這三個一起使用時得到的效果往往是最佳的。
df['B_minus_A_B_mean']???=?df['B']?-?df['A_B_mean']3.3.組內歸一化特征
該特征的構建和我們平時在對數據進行歸一化是類似的,減去組內的均值再除以標準差。
df['B_minus_A_B_mean']???=?(df['B']?-?df['A_B_mean'])?/?(df['A_B_std']?+?1e-9)3.4.其它
上面是我們見到目前最為有效的三個特征組合策略,肯定還有其它的特征組合策略,我們只需要將我們的統計特征和B進行其它形式的加減乘除等等變化即可得到成百上千的特征,但是最終的效果如何則不得而知。
4. A/B的統計+A/B統計演變特征
A/B的統計+A/B統計演變特征是直接基于A/B統計特征之后得到的值進行加減乘除等轉換之后得到的特征,此處我們重點列舉幾個常見的有效的特征。
4.1.Gap特征
Gap特征就是計算一些分位數的一些差值信息,這個特征在一些分位數為較強特征的競賽中可以拿到非常好的效果。
df['A_B_gap1']?=?df['A_B_0.9q']?-?df['A_B_0.1_q']? df['A_B_gap2']?=?df['A_B_0.75q']?-?df['A_B_0.25_q'] ...4.2.數據傾斜
均值大于中位數,正傾斜;均值小于中位數,負傾斜。
此處我們用差值和比例值來表示這些信息。
df['magic_feature1_1']?=?df['A_B_median']?-?df['A_B_mean'] df['magic_feature1_2']?=?df['magic_feature1_1'].map(abs) df['magic_feature2']?=?df['A_B_median']?/?df['A_B_mean']4.3.變異系數(CV):
變異系數度量標準差相對于均值的離中趨勢,我們用=標準差/均值的方式來計算。
df['cv']?=?df['A_B_std']?/?df['A_B_mean']4.4.其它
上面三種在所有的問題中都是非常值得嘗試的特征,我們也可以基于其它不同的特征進行組合構建新的特征。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼: 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【数据竞赛】组合特征的构建技巧,如何快速构建百大组合特征池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学术相关】毕业答辩老师必问问题,并附上
- 下一篇: win7系统怎么查看主板信息