1. 程式人生 > >推薦系統遇上深度學習(四)--多值離散特徵的embedding解決方案

推薦系統遇上深度學習(四)--多值離散特徵的embedding解決方案

1、背景

在本系列第三篇文章中,在處理DeepFM資料時,由於每一個離散特徵只有一個取值,因此我們在處理的過程中,將原始資料處理成了兩個檔案,一個記錄特徵的索引,一個記錄了特徵的值,而每一列,則代表一個離散特徵。

但假如,我們某一個離散特徵有多個取值呢?舉個例子來說,每個人喜歡的NBA球隊,有的人可能喜歡火箭和湖人,有的人可能只喜歡勇士,也有的人喜歡騎士、綠軍、猛龍等一大堆。對於這種特徵,我們本文將其稱為多值離散特徵。

根據DeepFM的思想,我們需要將每一個field的特徵轉換為定長的embedding,即使有多個取值,也是要變換成定長的embedding。

那麼,一種思路來了,比如一個使用者喜歡兩個球隊,這個field的特徵可能是[1,1,0,0,0,0,0.....0],那麼我們使用兩次embedding lookup,再取個平均不就好了嘛。

嗯,這的確也許可能是一種思路吧,在tensorflow中,其實有一個函式能夠實現我們上述的思路,那就是tf.nn.embedding_lookup_sparse。彆著急,我們一步一步來實現多值離散特徵的embedding處理過程。

2、解決方案

輸入資料

假設我們有三條資料,每條資料代表一個user所喜歡的nba球員,比如有登哥,炮哥,杜老四,慕斯等等:

csv = [
  "1,harden|james|curry",
  "2,wrestbrook|harden|durant",
  "3,|paul|towns",
]

我們建立一個所有球員的集合:

TAG_SET = ["harden", "james"
, "curry", "durant", "paul","towns","wrestbrook"]

資料處理
這裡我們需要一個得到一個SparseTensor,即多為稀疏矩陣的一種表示方式,我們只記錄非0值所在的位置和值。

比如說,下面就是我們對上面資料處理過後的一個SparseTensor,indices是陣列中非0元素的下標,values跟indices一一對應,表示該下標位置的值,最後一個表示的是陣列的大小。

處理得到SparseTensor的完整程式碼如下:

def sparse_from_csv(csv):
  ids, post_tags_str = tf.decode_csv(csv, [[-1
], [""]]) table = tf.contrib.lookup.index_table_from_tensor( mapping=TAG_SET, default_value=-1) ## 這裡構造了個查詢表 ## split_tags = tf.string_split(post_tags_str, "|") return tf.SparseTensor( indices=split_tags.indices, values=table.lookup(split_tags.values), ## 這裡給出了不同值通過表查到的index ## dense_shape=split_tags.dense_shape)

定義embedding變數

定義我們的embedding的大小為3:

TAG_EMBEDDING_DIM = 3
embedding_params = tf.Variable(tf.truncated_normal([len(TAG_SET), TAG_EMBEDDING_DIM]))

得到embedding值

將我們剛才得到的SparseTensor,傳入到tf.nn.embedding_lookup_sparse中,我們就可以得到多值離散特徵的embedding值。

tags = sparse_from_csv(csv)
embedded_tags = tf.nn.embedding_lookup_sparse(embedding_params, sp_ids=tags, sp_weights=None)

sp_ids就是我們剛剛得到的SparseTensor,而sp_weights=None代表的每一個取值的權重,如果是None的話,所有權重都是1,也就是相當於取了平均。如果不是None的話,我們需要同樣傳入一個SparseTensor,代表不同球員的喜歡權重。大家感興趣可以自己去嘗試。

測試輸出

最後我們來看看得到的效果:

with tf.Session() as s:
  s.run([tf.global_variables_initializer(), tf.tables_initializer()])
  print(s.run([embedded_tags]))

這只是一種解決方案,大家可以去探索更多的方法喲。

相關推薦

推薦系統深度學習()--離散特徵embedding解決方案

1、背景在本系列第三篇文章中,在處理DeepFM資料時,由於每一個離散特徵只有一個取值,因此我們在處理的過程中,將原始資料處理成了兩個檔案,一個記錄特徵的索引,一個記錄了特徵的值,而每一列,則代表一個離散特徵。但假如,我們某一個離散特徵有多個取值呢?舉個例子來說,每個人喜歡的NBA球隊,有的人可能喜歡火箭和湖

推薦系統深度學習(十九)--探祕阿里之完整空間工模型ESSM

歡迎關注天善智慧,我們是專注於商業智慧BI,人工智慧AI,大資料分析與挖掘領域的垂直社群,學習,問答、求職一站式搞定! 對商業智慧BI、大資料分析挖掘、機器學習,python,R等資料領域感興趣的同學加微信:tsaiedu,並註明訊息來源,邀請你進入資料愛好者交流群,資料愛好者們都

推薦系統深度學習(十)--強化學習推薦系統的強強聯合

之前學習了強化學習的一些內容以及推薦系統的一些內容,二者能否聯絡起來呢!今天閱讀了一篇論文,題目叫《DRN: A Deep Reinforcement Learning Framework for News Recommendation》。該論文便是深度強化學習和推薦系統的一個結合,也算是提供了一個利用強化學

推薦系統深度學習

參考記錄: 推薦系統遇上深度學習(一)–FM模型理論和實踐: https://cloud.tencent.com/developer/article/1099532 推薦系統遇上深度學習(二)–FM模型理論和實踐: https://cloud.tencent.com

推薦系統深度學習(十)--GBDT+LR融合方案實戰

寫在前面的話 GBDT和LR的融合在廣告點選率預估中算是發展比較早的演算法,為什麼會在這裡寫這麼一篇呢?本來想嘗試寫一下阿里的深度興趣網路(Deep Interest Network),發現阿里之前還有一個演算法MLR,然後去查詢相關的資料,裡面提及了樹模型也就是GBD

推薦系統深度學習(二十二):DeepFM升級版XDeepFM模型強勢來襲!

今天我們要學習的模型是xDeepFM模型,論文地址為:https://arxiv.org/abs/1803.05170。文中包含我個人的一些理解,如有不對的地方,歡迎大家指正!廢話不多說,我們進入正題! 1、引言 對於預測性的系統來說,特徵工程起到了至關重要的作用。特徵工

推薦系統深度學習(十)--GBDT+LR融合方案實戰--解決特徵組合問題

歡迎關注天善智慧,我們是專注於商業智慧BI,人工智慧AI,大資料分析與挖掘領域的垂直社群,學習,問答、求職一站式搞定! 對商業智慧BI、大資料分析挖掘、機器學習,python,R等資料領域感興趣的同學加微信:tsaiedu,並註明訊息來源,邀請你進入資料愛好者交

推薦系統深度學習(十六)--詳解推薦系統中的常用評測指標

最近閱讀論文的過程中,發現推薦系統中的評價指標真的是五花八門,今天我們就來系統的總結一下,這些指標有的適用於二分類問題,有的適用於對推薦列表topk的評價。1、精確率、召回率、F1值我們首先來看一下混淆矩陣,對於二分類問題,真實的樣本標籤有兩類,我們學習器預測的類別有兩類,那麼根據二者的類別組合可以劃分為四組

推薦系統深度學習(二)--FFM模型理論和實踐

全文共1979字,6張圖,預計閱讀時間12分鐘。FFM理論在CTR預估中,經常會遇到one-ho

推薦系統深度學習(三)--DeepFM模型理論和實踐

1、背景特徵組合的挑戰對於一個基於CTR預估的推薦系統,最重要的是學習到使用者點選行為背後隱含的特徵組合。在不同的推薦場景中,低階組合特徵或者高階組合特徵可能都會對最終的CTR產生影響。之前介紹的因子分解機(Factorization Machines, FM)通過對於每一維特徵的隱變數內積來提取特徵組合。最

推薦系統深度學習(一)--FM模型理論和實踐

全文共2503字,15張圖,預計閱讀時間15分鐘。FM背景在計算廣告和推薦系統中,CTR預估(c

推薦系統深度學習(二十)--貝葉斯個性化排序(BPR)演算法原理及實戰

原創:石曉文 小小挖掘機 2018-06-29推薦系統遇上深度學習系列:排序推薦演算法大體上可以分為三類,第一類排序演算法類別是點對方法(Pointwise Approach),這類演算法將排序問題被轉化為分類、迴歸之類的問題,並使用現有分類、迴歸等方法進行實現。第二類排序演算法是成對

推薦系統深度學習(十二)--推薦系統中的EE問題及基本Bandit演算法

1、推薦系統中的EE問題Exploration and Exploitation(EE問題,探索與開發)是計算廣告和推薦系統裡常見的一個問題,為什麼會有EE問題?簡單來說,是為了平衡推薦系統的準確性和多樣性。EE問題中的Exploitation就是:對使用者比較確定的興趣,當然要利用開採迎合,好比說已經掙到的

推薦系統深度學習(十八)--探祕阿里之深度興趣網路(DIN)淺析及實現

阿里近幾年公開的推薦領域演算法有許多,既有傳統領域的探索如MLR演算法,還有深度學習領域的探索如entire -space multi-task model,Deep Interest Network等,同時跟清華大學合作展開了強化學習領域的探索,提出了MARDPG演算法。上一篇,我們介紹了MLR演算法,通過

推薦系統深度學習(五)--Deep&Cross Network模型理論和實踐

1、原理Deep&Cross Network模型我們下面將簡稱DCN模型:一個DCN模型從嵌入和堆積層開始,接著是一個交叉網路和一個與之平行的深度網路,之後是最後的組合層,它結合了兩個網路的輸出。完整的網路模型如圖:嵌入和堆疊層我們考慮具有離散和連續特徵的輸入資料。在網路規模推薦系統中,如CTR預測,

推薦系統深度學習

原文: Deep Learning Meets Recommendation Systems Published by Wann-Jiun Ma at ** January 24, 2017 Contributed by Wann-Jiun

推薦系統深度學習(六)--PNN模型理論和實踐

全文共2621字,21張圖,預計閱讀時間15分鐘。原理PNN,全稱為Product-based

推薦系統深度學習(五)--Deep&Cross Network模型理論和實踐

歡迎關注天善智慧,我們是專注於商業智慧BI,人工智慧AI,大資料分析與挖掘領域的垂直社群,學習,問答、求職一站式搞定! 對商業智慧BI、大資料分析挖掘、機器學習,python,R等資料領域感興趣的同學加微信:tsaiedu,並註明訊息來源,邀請你進入資料愛好者交流群,資料愛好者們都

推薦系統深度學習(二十)-貝葉斯個性化排序演算法原理及實戰

排序推薦演算法大體上可以分為三類,第一類排序演算法類別是點對方法(Pointwise Approach),這類演算法將排序問題被轉化為分類、迴歸之類的問題,並使用現有分類、迴歸等方法進行實現。第二類排序演算法是成對方法(Pairwise Approach),在序列方法中

機器學習-推薦系統中基於深度學習的混合協同過濾模型

  近些年,深度學習在語音識別、影象處理、自然語言處理等領域都取得了很大的突破與成就。相對來說,深度學習在推薦系統領域的研究與應用還處於早期階段。 攜程在深度學習與推薦系統結合的領域也進行了相關的研究與應用,並在國際人工智慧頂級會議AAAI 2017上發表了相應的研究成果《A Hy