魚遇雨欲語與餘在2019騰訊廣告賽中使用的技巧

2021-09-25 06:24:55 字數 1469 閱讀 5783

這裡我們對訓練目標進行了不斷優化,首先是最基本的訓練目標,即廣告日**量。然後考慮到0會導致梯度不平滑,所以對訓練目標做了log變換,保證梯度平滑。

1.去除異常值

2.對於不那麼重要的缺失值,補0或-1;對於與label相關性較強的缺失值,補中位數

我們知道複賽a榜訓練集和測試集是連續的,即10號-22號訓練集,23號為測試集。複賽b榜則是不連續的,沒有給出23號的標籤,直接**24號。

面對這種「跨天」**,難度是非常大的,因為日期越近的資訊是越與當天相近的,因此前一天的資訊是非常重要的。

1.我們利用「遠端監督」的方式,就是利用現有的標註資料,即10-22號資料,訓練乙個模型,給未標註資料(23號資料)進行標註,然後再將10-22與23號合併成訓練集進行訓練,**最終的結果。

2.對於與label關係較密切的特徵,取其距離test日期最近的值為一新特徵

除常見統計量count mean sum,還有result[col+』_negs』] = result[col+』_count] - result[col+』_sums』]

將資料分成前一天、最近五天、五折交叉統計和除當天外所有天來分別統計特徵

例如時間

先離散化,再取one-hot向量

例如uid和對應的itemid組合

取uid最常訪問的前k個itemid作為特徵(多值特徵)

對於沒有歷史資料的物品,取具有相似特徵的舊物品,將舊物品的歷史資料特徵賦予新物品

產生embedding向量的方法有兩種:word2vec和deepwalk

分別可以groupby主鍵,取副鍵的序列求embedding向量,通常為groupby uid,取aid,itemid,authorid的embedding向量

首先是對日誌資料按天進行排序,然後是按天構建uid的行為序列並轉化

這裡不僅可以構造uid到廣告id,還可以是uid到商品id,uid到賬戶id。

只有在日誌中**過的廣告才會有相應的嵌入向量,通過廣告有無嵌入向量,會洩露了無**廣告的標籤

測試資料中存在**非0但無嵌入向量的廣告,這在訓練集中是不存在的,導致訓練測試不一致

以上問題在embeding後要通過eda才能發現,所以構造新特徵並merge之後要觀察新特徵在訓練集和測試集中的分布,不能無腦merge

這裡我們給出了解決方法,即隨機掩蓋掉5%廣告的嵌入向量,保證訓練集中也能出現無**的廣告。

不同模型**值的加權平均

1.用counter()初始化空dict,再對其賦值,且counter變數可用於對dict統計出現頻率例如counter.most_common(k)

2.用try…except:pass來執行del**

[1]

魚與飛鳥的距離

魚與飛鳥的距離 評 監控 中小王府飯店的淒美一幕 鏡頭一許 狂奔到禮堂,聽到程程的 我願意 時,許 大吼 程程 於是對 上海灘 所有的記憶,永遠定格在其時 的淚眼和程程的表情 鏡頭二與沈璧君離別前,蕭十一郎以筷擊杯,悲愴高歌 暮春三月,羊歡草長,天寒地凍,問誰飼狼?人心憐羊,狼心獨愴,天心難測,世情...

魚與飛鳥的距離

魚與飛鳥的距離 評 監控 中小王府飯店的淒美一幕 鏡頭一許 狂奔到禮堂,聽到程程的 我願意 時,許 大吼 程程 於是對 上海灘 所有的記憶,永遠定格在其時 的淚眼和程程的表情 鏡頭二與沈璧君離別前,蕭十一郎以筷擊杯,悲愴高歌 暮春三月,羊歡草長,天寒地凍,問誰飼狼?人心憐羊,狼心獨愴,天心難測,世情...

python print 函式與print語句區別

在python 2中,print語句最簡單的使用形式就是print a,這相當於執行了sys.stdout.write str a n 如果你以逗號為分隔符,傳遞額外的引數 argument 這些引數會被傳遞至str 函式,最終列印時每個引數之間會空一格。例如,print a,b,c相當於sys.s...