如何用通俗的語言解釋CTR和推薦系統中常用的Feature Hashing技術以及其對應的優缺點?

時間 2021-05-06 06:49:52

1樓:

最近恰好看到這個,也看到了些比較好的回答,整理搬運一下吧。

推薦系統中含有大量大量categorical,無法直接用LR模型。

再次,ctr領域或者說高維大資料領域,資料集或多或少的存在稀疏問題。主流ML庫都會實現一套稀疏矩陣,應對該問題。feature hashing又稱feature trick,類似於kernel trick,在ML領域得到廣泛應用的技巧。

維基上的定義:

維基上關於Feature Hash的描述非常清晰,各位自己去看,不再累贅,這裡多說一點hash的方法。常見的有以下兩種實現:

function

hashing_vectorizer

(features

:array

ofstring,N

:integer):x

:=newvector[N

]forfin

features:h

:=hash(f

)x[h

modN]+=

1return

x另外還有一種:

function

hashing_vectorizer

(features

:array

ofstring,N

:integer):x

:=newvector[N

]forfin

features:h

:=hash(f

)idx:=

hmodNif

ξ(f)

==1:x

[idx]+=

1else:x

[idx]-=

1return

x可以理解,既然是hash,必然要付出collision時的代價。實現方案一併沒有考慮處理衝突,N越長,衝突的概率越低,然後儲存的要求會變大。實現二,通過有符號的hash來解決衝突問題,即有很大概率在出現衝突時,該hash值為0,即不起作用,更詳細的描述參考文獻2.

sklearn FeatureHasher的實現

stackoverflow上也有乙個比較好的例子:

Question:

Answer:

[1] Feature hashing From Wikipedia, the free encyclopedia

[2] Kilian Weinberger, Anirban Dasgupta, John Langford, Alex Smola and Josh Attenberg (2009). Feature hashing for large scale multitask learning. Proc.

ICML.

[3] sklearn feature hashing

2樓:清木

補充一張衝突比例對效果的影響圖示,原文參考https://

booking.ai/dont-be-tricked-by-the-hashing-trick-192a6aae3087

3樓:谷瑞-Roliy

看hash之後帶來的收益是否夠大來決定是否需要hash。

補充乙個hash之後的收益,那就是離線訓練和線上服務的效能都能得到提高。線上打分基本都是基於查表的,乙個Long為key的表,用起來效率是比String為key的表效率更高的。這部分能帶來不小的線上效能提公升。

離線訓練時,如果是乙個hash之後的值,那就可以很容易的做成乙個稀疏表達的矩陣,對訓練來說更友好。

如何用通俗的語言解釋豪斯多夫維數

通常的維度是整數,於是有人 專指數學家 就想,為啥不能有小數的維度呢?如果有小數維,應該如何定義。由於通常的維數有很多種定義,比如通常用座標架的維度,比如座標 x,y 有2個座標,這種定義妥妥只能是整數。那換其它定義呢?還真找到這樣一種定義,看測度 長度,面積,體積.和縮放係數之間的關係。比如,線段...

如何用通俗易懂的語言解釋指令碼(script)是什麼?

胡羅舶COOLHOBO Shirley 開發達人 指令碼是一種特定的描述性語言,計算機會按照程式順序的執行它,自動化的幫你完成一系列工作的程式。它非常方便快速,並且可以幫助開發者節省時間,而不用每次手動去執行指令。 天地一色 我覺得回答這個問題要解釋一方面要解釋它的引申意思,還要說一下它在計算機中產...

如何用最通俗的語言解釋 格式化 ?

流刃若火 我理解的格式化,類似於一家圖書館 資料集合 你把圖書目錄 索引 給撕了,你之後完全找不到你想要的書 資料 但其實書 資料 還在,只是你找不到了,你要真正的清理資料,只能把圖書館的書全部換一遍 格式化還不簡單。硬碟上乙個格仔乙個格仔檢查一下有沒有問題,可否正常讀寫。另外C盤裡的檔案是樹狀的你...