這裡我們對訓練目標進行了不斷優化,首先是最基本的訓練目標,即廣告日**量。然後考慮到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首先是對日誌資料按天進行排序,然後是按天構建uid的行為序列並轉化分別可以groupby主鍵,取副鍵的序列求embedding向量,通常為groupby uid,取aid,itemid,authorid的embedding向量
這裡不僅可以構造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...