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盤裡的檔案是樹狀的你...