基于深度学习的CTR模型DeepCTR 更新啦!
文章來源于淺夢的學習筆記,作者努力學習的淺夢
自deepctr v0.7.0在去年11月底發布后,由于個人的一些原因沒能及時的跟進和解答朋友們在github issue區,DeepCTR交流群以及通過郵件的方式提出的相關問題,這里先說一聲抱歉,希望沒有影響到朋友們的學習和工作。
放假回家在家里躺平放空若干天后,總算有心情打開電腦改改代碼了。這篇文章主要介紹一下在新版本v0.7.1中主要做了哪些改動~
主要功能和改進
WeightedSequenceLayer的參數weight_normalization 在外部沒有暴露API
問題描述
https://github.com/shenweichen/DeepCTR/issues/163
問題分析
這個問題起源于v0.6.3中deepctr支持了帶權重的序列類型特征。
對于權重分數,我們在實現的時候是支持了對權重進行歸一化操作的,而用戶在實際使用的時候無法感知到這個功能,默認使用不進行歸一化的模式,需要用戶自己修改源碼令WeightedSequenceLayer中的weight_normalization=True來實現啟用權重分數歸一化的模式。
解決方案
在VarLenSparseFeat中添加weight_norm參數,用戶在定義帶權序列特征的時候,通過設置weight_norm為True或者False來控制是否進行權重分數歸一化,默認為True。
問題修復
線性特征列中的離散稀疏特征的embedding維度不為1會導致模型失去記憶性
問題描述
https://github.com/shenweichen/DeepCTR/issues/178
問題分析
這個問題是在v0.7.0版本中支持了對不同特征組采用不同的embedding維度引入的。
在v0.7.0以前的版本中,模型支持linear_feature_columns和dnn_feature_columns,分別為代表記憶性的wide側和代表泛化性的deep側。wide側的SparseFeat模型會自動設置其embedding維度為1來模擬onehot的記憶特性,deep側的SparseFeat通過模型的embedding_size參數來控制所有特征組的embedding維度。
在v0.7.0中,特征組的embedding維度需要在定義特征列時使用SparseFeat的embedding_dim參數設置,該參數默認為4。
若用戶沒有指定輸入進linear_feature_columns的SparseFeat的embedding_dim=1,則會導致模型的wide側失去記憶性。這不符合預期。
解決方案
在獲取wide側logit值的方法get_linear_logit中,強制覆蓋SparseFeat的embedding_dim=1。換言之,輸入進linear_feature_columns的SparseFeat的embedding_dim失效,會被模型強制設置為1。
版本檢查中拋出的異常用戶難以理解,影響后續使用
問題描述
https://github.com/shenweichen/DeepCTR/issues/176
問題分析
在一些無法連接網絡或者pip配置有過修改的機器上,deepctr的版本檢查會拋出大段用戶難以理解的異常。
解決方案
版本檢查在出現錯誤時提示用戶訪問deepctr網站進行人工版本檢查,不再輸出異常提示信息。
API變化
deepctr.layers.sequence.WeightedSequenceLayer
WeightedSequenceLayer中的weight_normalization默認值變為True。
舊:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=False, supports_masking=False)
新:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=True, supports_masking=False)
deepctr.inputs.VarLenSparseFeat
由于VarLenSparseFeat和SparseFeat存在較多相同參數,且很多情況下相同參數的取值也是相同的(如用戶歷史商品點擊序列和待預估商品),故將VarLenSparseFeat的初始化參數更改為由一個SparseFeat的實例和其他序列相關的參數組成。
對用戶而言,只需要理解SparseFeat的參數含義以及一些序列相關的參數含義就可以使用VarLenSparseFeat。
舊:VarLenSparseFeat(name, maxlen, vocabulary_size, embedding_dim=4, combiner="mean", use_hash=False, dtype="float32", length_name=None, weight_name=None, embedding_name=None, group_name=DEFAULT_GROUP_NAME)
新:VarLenSparseFeat(sparsefeat, maxlen, combiner="mean", length_name=None, weight_name=None, weight_norm=True)
以上就是本次更新的說明,快使用命令pip install -U deepctr更新吧!希望朋友們能夠多多支持,多多提意見!謝謝!
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的基于深度学习的CTR模型DeepCTR 更新啦!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文写作葵花宝典
- 下一篇: 两行代码完成特征工程-基于Python的