【机器学习】那些决定模型上限的操作
作者:煉丹筆記
????在實踐中,特征工程目前依然是建模過程中最為核心的一塊,也是提升最快最簡單的部分;有些公司的搜索推薦團隊只使用了embedding相關的信息,并希望通過embedding的交叉或者序列等信息建模得到最終的推薦結果,并沒有加入非常多人為構建的特征。
????但在很多的場景下,特征工程還是非常重要的。尤其是在有好幾年數據積累的場景中,數據量是非常大的,甚至可以上PB級別,在建模的過程中基本上是不大可能把所有的數據全部使用上,我們一般會選擇使用最新的數據,但為了盡可能不浪費老的數據信息,會選擇通過特征工程的方式從老的數據集中提取盡可能多的信息。為模型帶來提升,而在我們的實踐中,也發(fā)現(xiàn),特征工程帶來的提升還是非常大的。
特征工程技巧
01
特征歸一化
????為了消除數據特征之間的量綱影響,讓不同特征之間具有可比性,需要對特征進行歸一化處理。常用的的歸一化方法有Max-Min歸一化、Z-Score歸一化。
????在實際應用中,特征歸一化并不是萬能的,但線性回歸、邏輯回歸、SVM、NN等模型需要通過梯度下降發(fā)求解的模型通常是需要進行歸一化的。
02
類型特征
類別特征常見的策處理略:
Target Encoding
Count Encoding
Categorifying
Target Encoding
Count Encoding
Categorifying
03
文本特征
????詳細的文本特征可以參考煉丹筆記往期干貨《數據挖掘20大文本特征
expansion編碼
consolidation編碼
文本的長度特征
標點符號特征
特殊詞匯特征
詞頻特征
TF-IDF特征
LDA特征
推薦、搜索、廣告特征工程
????上面內容更多的是一些基礎的特征處理技巧。很多較為傳統(tǒng),如果轉化業(yè)務中該如何構建特征工程呢?此處我們描述一套特征框架,過多的細節(jié)不闡述,畢竟是很多大佬打磨了很多從非常多的實踐中實踐得到的,而且也不一定各種業(yè)務都會100%有效。
首先我們建模的目的是為了預估:
其中,
是用戶側的特征;
是商品側的特征;
是上下文相關的特征,例如時間,訪問使用的app等;
是query相關的特征(在搜索問題中較為常見)
表示用戶支付;
是候選商品的個數;
找到所有商品中最有可能被購買的那一件,然后曝光給用戶。從上面的定義中,我們可以發(fā)現(xiàn),特征至少可以劃分為下面的幾塊。
煉
2.1?用戶相關的特征
這塊特征實在是有些多,還有一些專門做用戶畫像的組。包含的特征有很多:
用戶的固定屬性特征,比如:用戶的性別、年齡、身高其它信息;
用戶的歷史統(tǒng)計特征,比如:過去某段時間的購買率、點擊率、消費次數、平均每次消費額、平均消費間隔、最近一次消費的時間等等。
用戶的其它特征,比如:喜好特征, 實時行為建模,更細粒度的對當前請求下的興趣刻畫與描述等等;
這塊特征非常多,很多組都有一套自己的特征組。
煉
2.2?商品相關的特征
和用戶的特征類似,商品的特征也是海量的:
商品的固定屬性特征,比如:商品的上架時間、商品的體積、商品的價格、是否是當季商品、是否促銷、是否有優(yōu)惠活動等等;
商品的歷史統(tǒng)計特征,比如:商品的歷史點擊率、商品的曝光次數、商品的加購率、商品的購買率、商品上次被購買的時間等等;
商品的其它特征,比如:商品是否有代言,代言人,代言人的粉絲情況等等;
這塊特征非常多,很多組都有一套自己的特征組。
煉
2.3 Query相關的特征
這塊在搜索相關的競賽中,也是非常多的,參見阿里媽媽IJCAI2018年的競賽:
Query的固定屬性特征,比如:Query的embedding,Query中關鍵詞的統(tǒng)計信息;
Query的歷史統(tǒng)計特征,比如:Query的歷史出現(xiàn)次數,Query的歷史點擊率,購買率等等;
Query的其它特征:近義詞的次數等;
????這塊的特征和用戶以及商品是類似的,也是自成一套。
煉
2.4 上下文特征
地點、時間、網絡信號形式、使用的app等信息;
煉
2.5 交叉特征
????特征交叉這塊是探討最多的,因為交叉信息實在是太多了,從很多大佬的分享以及相關的數據競賽最后的分享方案中,我們也發(fā)現(xiàn):短短的幾個原始字段在進行交叉之后都可以得到成百上千的特征,更別說是在工業(yè)界了,工業(yè)界的字段都有幾百個,甚至會有上千個,所以這塊要是單純的做特征交叉,可以枚舉幾個月甚至幾年。
????從kaggle的諸多特征專家寫的write-ups來看,特征又可以分為:二階的交叉,三階的交叉,四階的交叉......
????這么做下去,幾乎是一個天文數字,再加上這么大的數據量,我們對每個新構建的特征進行驗證,耗費的資源也將會是一個天文數字,而且存儲資源也是無法接受的,舉個最簡單的例子,我們做用戶和商品的二階交叉特征,
在很多朋友,用戶都是上千萬甚至是上億的,商品的個數更不用說了,最少也是上百萬的,所以簡單的交叉可能會帶來上億*上百萬的個數,當然實踐中肯定沒這么多,如果從存儲的代價角度看,這將會是一個非常巨大的負擔。
從上面的角度來看,做用戶和Query和商品的三階交叉將會是一種巨大的負擔。
????大家都知道這些特征是非常有用的,但是直接做交叉的代價又是巨大的,怎么辦呢?我們可以使用下面的兩個技巧來進行處理。
1.Top截斷:
????這幾乎在所有的大數據競賽中都有提到,例如IJCAI18年的競賽就是,在我們的數據量非常大的時候,我們會選擇保留排序之后TopN的信息,例如:
保留用戶最常購買的TopN個Item的點擊率,購買率等等;
保留用戶最常訪問的TopN個Query的點擊率,購買率等等;
保留Query下最常購買的TopN個Item的點擊率,購買率等等;
...
2.轉變?yōu)榉植急硎?/strong>:
????該技巧也主要來源于推薦相關的競賽,以及AAA21年最新的競賽分享中,大致的思路是將原先的直接統(tǒng)計user+item的信息轉而去統(tǒng)計其它的特征:
先統(tǒng)計商品的歷史點擊率,然后拼接到商品信息中,當做商品的統(tǒng)計信息,然后再統(tǒng)計用戶關于商品的這些統(tǒng)計信息的統(tǒng)計特征。
????該方法被稱之為用商品的點擊/購買分布來表示用戶。類似的,商品也可以用用戶來表示,即。
先統(tǒng)計用戶的歷史點擊率,然后拼接到用戶信息中,當做用戶的統(tǒng)計信息,然后再統(tǒng)計商品關于用戶的這些統(tǒng)計信息的統(tǒng)計特征。
????這種用交叉信息的一側主體的統(tǒng)計信息來表示另外一側主體的策略也是極其方便的一種策略。
煉
2.6 其它新技術帶來的特征
????這塊的特征如果從技術的角度來看都是可以被包含到上面的幾大類中的,但是因為這些特征是通過最新的一些硬件或者其它的技術發(fā)展帶來的,例如邊緣計算等,此處我們將其單獨列舉出來作為一節(jié)。
????最典型的一些特征就是阿里巴巴EdgeRec文章中所列舉的:
煉
2.7 上游特征
????這個在KDD20的競賽中有看到,大致就是利用模型上游的很多統(tǒng)計或者其它模型輸出的一些特征,每個公司產出的可能不一樣,此處不做過多描述。
煉
2.8 實驗小結
????上面的特征工程只是冰山一角,因為隨著業(yè)務相關的數據集的擴充,肯定也會涉及到非常多其它相關的特征。比如與圖片相關的特征,用戶購買商品之后對于商品的文字評價等等諸多的信息,這些都可以作為商品或者用戶商品相關的信息加入模型。
????整體來說,特征作為模型的輸入能帶來非常大的幫助,所以還是非常重要的,我們通過特征工程的方式能在原先的基礎上帶來非常大的提升。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統(tǒng)計學習方法》的代碼復現(xiàn)專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群554839127,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【机器学习】那些决定模型上限的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android、iOS平台RTMP/RT
- 下一篇: Python排序算法(二) 快速排序、希