1.模型分類:
單一的淺層模型:lr和fm,需要特征處理
FM其實是淺層的Wide-deep模型,一階部分相當于wide部分,二階部分相當于deep部分
淺層模型的組合:GBDT,GBDT+LR
非線性模型(CART/RF(特征隨機樣本隨機)/GBDT)/FM)
CART/RF(特征隨機樣本隨機)/GBDT不適合處理高維特征例如ID,樹的高度很高,而且就是記憶過去的事件。使用GBDT為順序類特征和類別類特征編碼,就變成id類特征,然后用FM為每個特征得到embedding,可以再將embedding進行拼接,拼接的結(jié)果放進lr中訓練,便得到最終結(jié)果。
GBDT+LR:特征經(jīng)過每一顆樹處理后相當于對特征進行轉(zhuǎn)換形成了新的特征,對每個葉子結(jié)點進行編碼,比如落到某個葉子結(jié)點便是1, 其他葉子結(jié)點為0,將這些新的特征放進LR中進行處理。這兩個模型是分開訓練,首先訓練樹模型,得到特征后訓練lr。當新的樣本來時,樹的參數(shù)和lr模型的參數(shù)都進行保存了,這時候來新的特征我們只需要運行這兩個模型即可得到分數(shù)。優(yōu)缺點:利用樹的特征進行特征轉(zhuǎn)換,不用手動選特征;缺點時兩個模型單獨訓練不是聯(lián)合訓練,沒有統(tǒng)一目標函數(shù),可解釋性差。
深度模型需要一個tf server用來rank,淺層模型可以直接將參數(shù)load進rank server:DSSM(使用DNN分開獲取embedding然后計算cos相似度)/Deep Crossing
WDL/Youtube DNN:tf.estimator.DNNLinearCombinedClassifier
本身就是離散特征和連續(xù)特征離散化后的離散特征和離散特征的組合放入W,將連續(xù)特征放入DNN,對于本身是離散型特征做hash藍后embedding放入dnn。
tf.feature_column.numeric_column連續(xù)性特征
tf.feature_column.categorical_column_with_hash_bucket離散性特征
tf.feature_column.bucketized_column連續(xù)性特征離散化
tf.feature_column.crossed_column交叉特征
tf.feature_column.embedding_column
a_out = h(w_wide, w_deep) = sigmoid(w_wide[x, xcross]+w_deep*a_out+b)
PNN/NFM/AFM/FFM
Deepfm
DCN
2.特征
特征數(shù)目:樣本數(shù)目=1:100
用戶特征:用戶靜態(tài)特征,年齡/地域/簡單的統(tǒng)計特征(瀏覽的商品數(shù)等)
高維特征,根據(jù)用戶瀏覽點擊購買歷史給用戶打標簽(品牌)
商品特征:商品名稱/上線日期/統(tǒng)計特征(被購買的次數(shù),點擊率)
高維特征,被哪個年齡段喜歡
上下文:時間/地理位置等
用戶和Item關(guān)系特征:點擊購買記錄
預處理:缺省值填充/歸一化/離散化
離散特征就是one-hot
連續(xù)特征要統(tǒng)計一下分布,describe()函數(shù),離散化
類別特征(id)
序數(shù)特征
數(shù)值特征
對于高維特征,類別特征等用FM來擬合,對于序數(shù)和數(shù)值可以先用GBDT來得到葉子節(jié)點值

對于embedding,相關(guān)性得分例如cos距離,比較魯棒,直接用embedding直接輸入,強依賴模型。