本發(fā)明屬于網(wǎng)絡(luò)信息技術(shù)領(lǐng)域,更為具體地講,涉及一種對在線社交網(wǎng)絡(luò)用戶進行結(jié)構(gòu)化屬性推斷的方法。
背景技術(shù):
屬性推斷是用來自動預測在線社交網(wǎng)絡(luò)中用戶的未知屬性和潛在特質(zhì)的主要技術(shù)手段,可應用于市場分析中定義不同的客戶類型,深度挖掘用戶屬性信息以優(yōu)化個性化的推薦方法,同時針對可能的用戶屬性推斷攻擊采取相應的保護措施。如推測用戶的年齡、性別、地理位置、興趣、職業(yè)等,這些信息可用于商品推薦、資訊推薦。
已有屬性推斷方法提取的特征包括用戶本身的個人信息如性別、年齡、職業(yè)、教育水平,以及用戶的行為信息如瀏覽的網(wǎng)頁、共享的位置、購買的商品數(shù)據(jù)等。然而由于涉及個人隱私,提取的用戶個人信息往往存在不真實不全面的問題;用戶行為信息(特征數(shù)據(jù))大多數(shù)也不容易獲取,且需耗費大量的時間和資源。
此外,已有屬性推斷采取多個屬性分別預測的方法,忽視了屬性之間本身存在的相關(guān)性質(zhì),因此已有屬性推斷方法效率低且準確性不高。同時,已有屬性推斷方法的思路是利用用戶的行為特征相似,進而推斷用戶屬性存在相同的趨勢,通過提取用戶行為特征進行用戶建模,從而設(shè)計算法進行單個屬性推斷。盡管已有屬性推斷方法完成了屬性推斷的任務,但其所需的輸入信息較多,且難以避免不真實的用戶信息對屬性推斷結(jié)果的影響,故而屬性推斷的可移植性不高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有屬性推斷的不足,提出一種對在線社交網(wǎng)絡(luò)用戶進行結(jié)構(gòu)化屬性推斷的方法,以提高屬性推斷的效率和準確性,并避免不真實的用戶信息對屬性推斷結(jié)果的影響,改善屬性推斷的可移植性。
為實現(xiàn)上述發(fā)明目的,本發(fā)明對在線社交網(wǎng)絡(luò)用戶進行結(jié)構(gòu)化屬性推斷的方法,其特征在于,包括以下步驟:
(1)、確定在線社交網(wǎng)絡(luò)
根據(jù)需求,確定一個需要進行用戶屬性推斷的在線社交網(wǎng)絡(luò)(osn),且該在線社交網(wǎng)絡(luò)中用戶的每個屬性即用戶屬性atti只有一個值,其中,i為用戶屬性編號;
(2)、選取部分已知用戶屬性的用戶,構(gòu)建其0-1組合屬性類別向量
2.1)、將用戶屬性規(guī)范為i個,對于用戶的第i個屬性atti,統(tǒng)計其屬性值個數(shù)ni,并構(gòu)建只有一個位置為1的、元素個數(shù)為ni的0-1形式向量:0-1形式向量的每一位對應一個屬性值,如果已知用戶屬性的用戶,其第i個屬性atti屬于某一個屬性值,則0-1形式向量中對應屬性值位為1;
2.2)、將已知用戶屬性用戶的所有屬性atti對應的0-1形式向量組合在一起,形成一個結(jié)構(gòu)化屬性向量;
2.3)、構(gòu)建一個映射表:映射表的索引為結(jié)構(gòu)化屬性向量所有可能的取值,映射值為只有一個位置為1的、元素個數(shù)為d的0-1組合屬性類別向量,d為結(jié)構(gòu)化屬性向量所有可能的取值數(shù)量,索引與映射值一一對應;
已知用戶屬性用戶的結(jié)構(gòu)化屬性向量根據(jù)其取值,查找映射表,得到其對應的0-1組合屬性類別向量vec_tk,其中,k為已知用戶屬性用戶的編號,k=1,2,...,k,k為已知用戶屬性用戶的數(shù)量;
(3)、權(quán)重化隨機游走,獲取用戶節(jié)點序列集walklist
將在線社交網(wǎng)絡(luò)中用戶間存在的好友關(guān)系表示為由代表用戶的節(jié)點集v和代表用戶間好友關(guān)系的邊集e組成的無向圖即用戶節(jié)點關(guān)系圖g;
對用戶節(jié)點關(guān)系圖g中所有節(jié)點進行遍歷,得到在線社交網(wǎng)絡(luò)osn的用戶節(jié)點序列集walklist:
3.1)、對于在線社交網(wǎng)絡(luò)osn,初始化節(jié)點之間的權(quán)重為1;
3.2)、第一趟遍歷用戶節(jié)點關(guān)系圖g中的所有節(jié)點時,依次選擇一個節(jié)點作為開始節(jié)點進行權(quán)重修改的隨機游走,游走時從開始節(jié)點或到達節(jié)點的鄰居節(jié)點中,選擇一個鄰居節(jié)點作為下一跳,同時修改并保存兩節(jié)點之間的權(quán)重,權(quán)重修改方式如下:①若選擇的鄰居節(jié)點與上一節(jié)點相同,則以兩個節(jié)點之間的權(quán)重乘以1/p的概率修改兩節(jié)點之間的權(quán)重;②若選擇的鄰居節(jié)點與上一節(jié)點互為鄰居節(jié)點,則兩節(jié)點之間的權(quán)重不變;③若選擇的鄰居節(jié)點并無上述兩種關(guān)系,則以兩個節(jié)點之間的權(quán)重乘以1/q的概率修改兩節(jié)點之間的權(quán)重,直到走過的節(jié)點形成一個長度l的節(jié)點序列;
下一趟遍歷時,某一節(jié)點在選擇下一跳節(jié)點時,計算其所有鄰居節(jié)點的權(quán)重之和wa,每個鄰居節(jié)點被選為下一跳的概率為wj/wa,權(quán)重比越大的鄰居節(jié)點被選中的概率越大,選中某一鄰居節(jié)點后,按照權(quán)重修改方式修改兩節(jié)點之間的權(quán)重并保存;其中,wj為所述節(jié)點與鄰居節(jié)點之間的權(quán)重;
每次遍歷結(jié)束得到以不同節(jié)點作為起點的節(jié)點序列集,多趟循環(huán)遍歷用戶節(jié)點關(guān)系圖g中的所有節(jié)點,得到多個節(jié)點序列集并組成用戶節(jié)點序列集walklist;
(4)、獲取s維空間的用戶節(jié)點向量表示
將用戶節(jié)點序列集walklist用詞轉(zhuǎn)向量工具word2vec進行轉(zhuǎn)換,得到用戶在s維空間(s一般取值范圍在幾十到幾百之間)的向量表示,具體為:
將用戶節(jié)點序列集walklist中的所有節(jié)點序列輸入詞轉(zhuǎn)向量工具word2vec中,按照設(shè)置的窗口(window-size)以及維度(dimensions=s)進行轉(zhuǎn)換,得到各個用戶xv(v∈v)在s維空間對應的向量vec_xv;
(5)、訓練得到一個全連接神經(jīng)網(wǎng)絡(luò)模型
構(gòu)建一個全連接神經(jīng)網(wǎng)絡(luò),將k個已知用戶屬性的用戶節(jié)點向量vec_x1,vec_x2,...,vec_xk以及對應的0-1組合屬性類別向量vec_t1,vec_t2,...,vec_tk作為訓練集,放入全連接神經(jīng)網(wǎng)絡(luò)中進行訓練,得到一個全連接神經(jīng)網(wǎng)絡(luò)模型;
(6)、推斷用戶屬性
將需要推斷用戶屬性的用戶節(jié)點向量vec_xu,輸入到已經(jīng)訓練好的全連接神經(jīng)網(wǎng)絡(luò)模型中,通過各層網(wǎng)絡(luò)計算,最終輸出一個概率向量,概率向量中每一個位置對應一個0-1組合屬性類別向量取值,輸出的概率向量中最大值的所在位置對應的0-1組合屬性類別向量取值即為該需要推斷用戶屬性用戶的結(jié)構(gòu)化屬性,根據(jù)步驟(2),可得到該用戶的i個用戶屬性。
本發(fā)明的目的是這樣實現(xiàn)的。
本發(fā)明對在線社交網(wǎng)絡(luò)(osn)用戶進行結(jié)構(gòu)化屬性推斷的方法,可從osn用戶中提取好友關(guān)系來同時推斷用戶的多個屬性。根據(jù)推斷屬性需求,提取一個在線社交網(wǎng)站中所有用戶的多個屬性以及它們之間存在的好友關(guān)系進行預處理,將整個osn中的用戶關(guān)系表示為節(jié)點集v和邊集e組成的無向圖;將每個用戶的結(jié)構(gòu)化屬性向量映射成one-hot編碼的組合屬性類別向量;接著在該無向圖即用戶節(jié)點關(guān)系圖g中進行權(quán)重化的隨機游走獲取用戶節(jié)點序列集;然后利用詞轉(zhuǎn)向量工具word2vec生成每個用戶的向量表示即節(jié)點向量;再構(gòu)建一個五層的神經(jīng)網(wǎng)絡(luò)模型,以osn中的已知用戶屬性的用戶節(jié)點向量和組合屬性類別向量作為訓練集,訓練得到一個全連接神經(jīng)網(wǎng)絡(luò)模型。將需要推斷用戶屬性的用戶節(jié)點向量輸入到訓練好的全連接神經(jīng)網(wǎng)絡(luò)模型中,計算得出每個組合屬性類別向量的概率,取概率最大的為該用戶的組合屬性類別,對應的結(jié)構(gòu)化屬性向量即為該用戶的推斷屬性集。本發(fā)明可應用于市場分析中定義不同的客戶類型,深度挖掘用戶屬性信息以優(yōu)化個性化的推薦方法,同時針對可能的屬性推斷攻擊采取相應的保護措施。
本發(fā)明具有以下有益效果:
(1)、本發(fā)明僅基于osn用戶的好友關(guān)系來推斷用戶屬性,只需提取用戶的屬性信息以及用戶間的好友關(guān)系(或關(guān)注關(guān)系),無需獲取額外的用戶行為特征數(shù)據(jù),提高了osn中用戶屬性推斷方法的效率和可移植性,同時減少了資源的消耗;
(2)、本發(fā)明實現(xiàn)了同時推斷多個用戶屬性,考慮到用戶不同屬性之間本身存在的相關(guān)關(guān)系,將用戶的多個屬性用結(jié)構(gòu)化的向量表示,再將每種可能的結(jié)構(gòu)化屬性向量映射成一種類別,通過構(gòu)建全連接神經(jīng)網(wǎng)絡(luò),以osn中的已知用戶屬性的用戶節(jié)點向量和組合屬性類別向量作為訓練集,訓練得到一個全連接神經(jīng)網(wǎng)絡(luò)模型,再利用訓練好的全連接神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)組合屬性類別推斷,進而實現(xiàn)結(jié)構(gòu)化的屬性推斷,這種充分利用屬性之間內(nèi)在聯(lián)系的方法,提高了屬性推斷的準確度;
(3)、本發(fā)明根據(jù)已知的用戶好友關(guān)系,將用戶映射成網(wǎng)絡(luò)中的節(jié)點,利用詞轉(zhuǎn)向量工具word2vec將每個用戶節(jié)點嵌入到一個高維空間,這種網(wǎng)絡(luò)嵌入方法形成的用戶節(jié)點向量能充分體現(xiàn)用戶的好友關(guān)系,使得僅基于好友關(guān)系的結(jié)構(gòu)化屬性推斷成為可能。
附圖說明
圖1是生成用戶節(jié)點向量表示過程示意圖;
圖2是構(gòu)建用戶組合屬性類別向量過程示意圖;
圖3是結(jié)構(gòu)化屬性推斷神經(jīng)網(wǎng)絡(luò)模型示意圖;
圖4是對在線社交網(wǎng)絡(luò)(osn)用戶進行結(jié)構(gòu)化屬性推斷方法的一種具體實施方式流程圖;
圖5是獲取用戶節(jié)點序列集的工作流程圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的具體實施方式進行描述,以便本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當已知功能和設(shè)計的詳細描述也許會淡化本發(fā)明的主要內(nèi)容時,這些描述在這里將被忽略。
一、基本原理
對于一個在線社交網(wǎng)絡(luò)(onlinesocialnetworks,osn)的用戶來說,如果兩個或者多個用戶之間存在好友關(guān)系,那么可以認為他們在屬性上有著某種相似性,表現(xiàn)為他們之間的一個或多個屬性相同。比如知乎網(wǎng)中用戶1是用戶2的好友,用戶3同時是用戶1和2的好友,則用戶1、2、3的某一屬性可能相同或相近。因此,本發(fā)明考慮利用用戶的好友關(guān)系這一表現(xiàn)來進行用戶的屬性推斷。
圖1是生成用戶節(jié)點向量表示的過程示意圖。
在本實施例中,如圖1所示,首先構(gòu)建用戶節(jié)點關(guān)系圖g,根據(jù)用戶節(jié)點關(guān)系圖遍歷所有節(jié)點,依次選擇一個節(jié)點作為起始節(jié)點進行權(quán)重化的隨機游走,每次遍歷結(jié)束可以得到所有節(jié)點各自的一條長度為l的序列集,遍歷多次后以每一節(jié)點為起點的序列就有多條,這樣就把用戶的好友關(guān)系表現(xiàn)在這些節(jié)點序列集上。與傳統(tǒng)的隨機游走相比,權(quán)重化的隨機游走在每次選擇下一節(jié)點時會同時修改對應邊的權(quán)重值,這使得游走得到的節(jié)點序列集更充分體現(xiàn)了用戶的好友關(guān)系。用戶在向量空間上的s維實數(shù)值(節(jié)點向量)表示可利用word2vec工具對多個節(jié)點序列集組成用戶節(jié)點序列集進行轉(zhuǎn)換得到。
圖2是構(gòu)建用戶組合屬性類別向量過程示意圖。
要想通過用戶向量推斷用戶屬性,則需將用戶的多個屬性值也映射到一個d維坐標空間,于是,如圖2所示,本發(fā)明用0表示用戶無該屬性值,用1表示用戶有該屬性值,則用戶的每個屬性都可以表示為僅有一個值為1的0-1向量,多個屬性向量組合成一個d維空間向量,再將所有可能的結(jié)構(gòu)化屬性向量映射為只有一個元素為1的組合屬性類別向量。如此便可將多屬性多類別預測任務轉(zhuǎn)換為組合屬性類別預測。
圖3是結(jié)構(gòu)化屬性推斷神經(jīng)網(wǎng)絡(luò)模型示意圖。
在本實施例中,本發(fā)明構(gòu)建一個五層全連接神經(jīng)網(wǎng)絡(luò)進行用戶的組合屬性類別預測,將一個在線社交網(wǎng)絡(luò)中的部分用戶節(jié)點向量和與之對應的已知組合屬性類別向量用于訓練該全連接神經(jīng)網(wǎng)絡(luò),得到一個全連接神經(jīng)網(wǎng)絡(luò)模型,對需要推斷用戶屬性用戶進行屬性推斷時,只需將需要推斷用戶屬性用戶的節(jié)點向量輸入到訓練好的全連接神經(jīng)網(wǎng)絡(luò)模型中,經(jīng)過多層神經(jīng)元計算得到每個組合屬性類別向量的概率,概率最大的即為該目標用戶的組合屬性類別,對應的結(jié)構(gòu)化屬性向量即為目標推斷用戶的屬性集。
二、屬性推斷方法
在本實施例中,如圖4所示,本發(fā)明對在線社交網(wǎng)絡(luò)(osn)用戶進行結(jié)構(gòu)化屬性推斷的方法包括五個步驟:數(shù)據(jù)預處理(步驟s1)、權(quán)重化的隨機游走獲取用戶節(jié)點序列集(步驟s2)、學習用戶向量表示(步驟s3)、訓練多層神經(jīng)網(wǎng)絡(luò)模型(步驟s4)、計算概率獲取推斷用戶組合屬性類別(步驟s5)。
步驟s1、數(shù)據(jù)預處理
本實施例中的數(shù)據(jù)集來源于http://snap.stanford.edu/data/soc-pokec.html,該社交網(wǎng)絡(luò)包含1632803個節(jié)點集v、30622564條邊集e,其中一個文本文檔記錄了用戶的好友關(guān)系,另一個文本文檔記錄了每個用戶的屬性信息,由于用戶的必填屬性極少,大部分屬性只有少部分用戶有記錄,因此本例中只選取用戶的性別和年齡屬性進行預測。
因為在數(shù)據(jù)獲取的過程中對用戶進行了匿名化處理,所有用戶最終只用一串數(shù)字化的id進行標識,于是記錄用戶好友關(guān)系的文本文檔最終以如下形式呈現(xiàn):
表1
然后讀取好友關(guān)系文本文檔中的每條邊,記錄到圖邊字典dict中,以每個用戶節(jié)點id作為鍵,節(jié)點相鄰的所有邊作為值,最終我們將所有用戶的好友關(guān)系表示為字典類型的變量{id,(鄰接id)},所有用戶字典即構(gòu)成該社交網(wǎng)絡(luò)中用戶節(jié)點關(guān)系圖g。
接著對用戶屬性信息文本文檔進行處理,用戶屬性信息文本文檔中記錄了每個用戶的id標識號和其對應的屬性信息,在本實施例中,只需提取用戶的性別和年齡屬性,其中性別對應的列為1表示該用戶為男,0表示該用戶為女,由于部分用戶的性別和年齡未公開,我們將未公開性別(對應屬性列的值為‘null’)和年齡(對應屬性列的值為‘0’或‘null’)的用戶刪除,通過統(tǒng)計所有用戶的年齡在[0,120]歲的范圍之間,考慮部分用戶提供了不真實的年齡信息,我們只保留該在線社交網(wǎng)絡(luò)中年齡在15-60歲之間的用戶,最終我們只留下1021003個用戶的性別和年齡信息。
最后將用戶的屬性信息進行結(jié)構(gòu)化處理,將其表示成一個d維坐標空間中的向量。由于用戶的年齡信息呈連續(xù)性分布,首先將年齡劃分為五個段:15-25,25-35,35-45,45-55,55-60,劃分的年齡段越多,最終推斷的用戶年齡越接近其真實值。
對每一個屬性來說,用戶對應的屬性值只有一個,我們將每個屬性的值映射為0-1向量形式,例如:用戶1的性別為男,則將其性別映射為[10],用戶3的性別為女,則映射為[01];若用戶的年齡在15-25歲之間,則將其年齡映射為[10000],若在25-35歲之間,則映射為[01000],依此類推,將所有用戶的年齡處理成只有一個位置為1的向量形式,最后將兩種屬性的0-1形式向量組合形成用戶的結(jié)構(gòu)化屬性向量表示。
在本實施例中,每個用戶的結(jié)構(gòu)化屬性向量則表示為一個7維的0-1向量,最終構(gòu)建所有用戶的結(jié)構(gòu)化屬性向量標簽集labellist。處理后的用戶屬性數(shù)據(jù)以如下形式呈現(xiàn)(其中第一列為用戶的id標識號,后面對應的為該用戶的結(jié)構(gòu)化屬性向量):
表2
結(jié)構(gòu)化屬性向量所有可能的取值構(gòu)成集合attset,在本實施例中,集合attset中共有10(2×5)個元素,將attset中結(jié)構(gòu)化屬性向量每個取值映射成只有一個元素為1的0-1組合屬性類別向量,組合屬性類別向量的維度為10,即attset中元素個數(shù)d=10。在本實施例中,用戶347的結(jié)構(gòu)化屬性向量為[1010000],則將其映射為[1000000000]的組合屬性類別向量。最終用戶的組合屬性類別以如下形式呈現(xiàn)(其中第一列為用戶的id標識號,后面對應的為該用戶的組合屬性類別向量):
表3
2、權(quán)重化的隨機游走獲取用戶節(jié)點序列集
用圖邊字典表示的用戶節(jié)點關(guān)系圖g進行權(quán)重化的隨機游走,獲取該社交網(wǎng)絡(luò)所有用戶的節(jié)點序列集walklist。
如圖5所示,初始化所有節(jié)點之間的權(quán)重wj(j∈e),內(nèi)循環(huán)遍歷所有節(jié)點,將某一節(jié)點作為開始節(jié)點進行隨機游走,從開始節(jié)點或到達節(jié)點的鄰居節(jié)點中,隨機選擇一個鄰居節(jié)點為下一個節(jié)點,并修改對應邊的權(quán)重值,直到形成一條長度為l的節(jié)點序列。隨機游走時修改對應邊的權(quán)重,可控制節(jié)點的游走范圍,使得每條序列包含更豐富的好友關(guān)系。
具體實施包括以下步驟:
步驟s201:初始化參數(shù),包括循環(huán)次數(shù)設(shè)置為20,初始節(jié)點權(quán)重wj(j∈e)為1,權(quán)重更改參數(shù)p=6、q=2;
步驟s202:判斷是否到達循環(huán)次數(shù),如果達到,則進入步驟s206,否則進入步驟s203;
步驟s203:判斷該次循環(huán)是否遍歷完所有節(jié)點,若遍歷完,則進入步驟s205,否則進入步驟s204;
步驟s204:以未遍歷的某一節(jié)點為初始節(jié)點進行隨機游走,權(quán)重越大的鄰居節(jié)點被選為下一跳節(jié)點的概率越大,選擇某一鄰居節(jié)點作為下一跳后修改并保存兩節(jié)點之間的權(quán)重,修改方式如下:①若選擇的鄰居節(jié)點與上一節(jié)點相同,則以wj乘以1/p的概率修改兩節(jié)點之間的權(quán)重;②若選擇的鄰居節(jié)點與上一節(jié)點互為鄰居節(jié)點,則以兩節(jié)點之間的權(quán)重仍為wj;③若選擇的鄰居節(jié)點并無上述兩種關(guān)系,則以wj乘以1/q的概率修改兩節(jié)點之間的權(quán)重。直到走過的節(jié)點形成一個長度l的節(jié)點序列,則返回步驟s203;
步驟s205:循環(huán)次數(shù)加1,返回步驟s202;
步驟s206:返回用戶節(jié)點序列集。
在本實施例中,每條序列長度為20,循環(huán)遍歷20次,每個節(jié)點都能得到以其為初始節(jié)點的20條長度為20的序列集。最終獲得的部分序列集walklist如下所示:
表4
3、用戶節(jié)點向量表示
將表4中用戶節(jié)點序列集walklist采用詞轉(zhuǎn)向量工具word2vec工具進行轉(zhuǎn)換,通過設(shè)置窗口(window-size)及維度(dimensions=s)大小,將用戶節(jié)點序列集中所有長度為l的序列輸入word2vec中,得到s維的表示用戶的向量模型umodel。
word2vec是將詞轉(zhuǎn)換為向量的工具,其具體過程屬于現(xiàn)有技術(shù),在這里就不再贅述。
在本實施例中,window-size=1,dimensions=100,得到的部分用戶向量模型umodel如下所示(第一列為用戶id標識號):
表5
4、訓練多層全連接神經(jīng)網(wǎng)絡(luò)模型
4.1)、構(gòu)建一個五層的全連接神經(jīng)網(wǎng)絡(luò),設(shè)置各層神經(jīng)元個數(shù)nm(m=1,2,...,5),并隨機初始化各層神經(jīng)元權(quán)重矩陣wm(m=1,2,...,5)參數(shù)和偏置向量bm(m=1,2,...,5)參數(shù),設(shè)置每個神經(jīng)元的激活函數(shù)f(z)以及損失函數(shù)c,其中z=∑j(wjxj+bj)表示某一神經(jīng)元的帶權(quán)和輸入,f(z)表示該神經(jīng)元的輸出。
在本實施例中,用該在線社交網(wǎng)絡(luò)osn中的部分已知用戶屬性用戶節(jié)點向量集x和與之對應的組合屬性類別向量集y作為訓練集,其中x=(vec_x1,vec_x2,...,vec_xk)t,y=(vec_t1,vec_t2,...,vec_tk)t;同時從剩余已知用戶屬性用戶中選取部分用戶節(jié)點向量集和與之對應的組合屬性類別向量集作為驗證集。
4.2)、采用隨機梯度下降算法,解如下優(yōu)化問題:
其中,aj=f(zj),zj=∑j(wjxj+bj),yj為目標向量vec_tk中的所有元素,
首先,初始化每層神經(jīng)元權(quán)重矩陣wm(m=1,2,...,5)的值為正太分布,每層神經(jīng)元權(quán)重矩陣大小分別為w1=s×n1維、w2=n1×n2維、w3=n2×n3維、w4=n3×n4維、w5=n4×n5維,同時初始化每層神經(jīng)元的偏置向量bm(m=1,2,...,5)中元素均為0,每個偏置向量的元素個數(shù)即為對應層神經(jīng)元的個數(shù),前四層神經(jīng)元采用激活函數(shù)relu(rectifiedlinearunits),最后一層神經(jīng)元采用激活函數(shù)softmax;
然后進行h次迭代,對于第h(0<h≤h)次迭代,隨機選擇r個樣本點{vec_xk、vec_tk}(1≤k≤r),分別計算輸出層權(quán)重和偏置的梯度:
其中,akl-1為第四層中第k個神經(jīng)元的輸出,接下來,更新輸出層的權(quán)重和偏置:
在本實施例中,選擇該社交網(wǎng)絡(luò)中80%的用戶作為訓練集,10%的用戶作為驗證集,即k=818000,將k個已知用戶屬性用戶節(jié)點向量vec_x1,vec_x2,...,vec_xk以及對應的0-1組合屬性類別向量vec_t1,vec_t2,...,vec_tk作為訓練集,輸入構(gòu)建的五層全連接神經(jīng)網(wǎng)絡(luò)中進行訓練。每層網(wǎng)絡(luò)的神經(jīng)元個數(shù)依次為n1=1000、n2=800、n3=600、n4=250、n5=10,每次迭代隨機選取1000個用戶,即r=1000,學習率η逐漸遞減,其范圍為[0.98,0.08],共迭代100000次,即h=100000,使得所有訓練樣本能進行多次訓練,每次迭代后將所有驗證集數(shù)據(jù)輸入到網(wǎng)絡(luò)中計算驗證集預測準確度,當驗證集準確度不再改變時則表明網(wǎng)絡(luò)模型達到了穩(wěn)定。最終得到網(wǎng)絡(luò)模型參數(shù):每層神經(jīng)元的權(quán)重矩陣w1、w2、w3、w4、w5以及偏置向量b1、b2、b3、b4、b5。
由于用戶的輸入向量為100維,第一層神經(jīng)元個數(shù)為1000,所以w1為100*1000的矩陣,b1為1000維的向量,由于網(wǎng)絡(luò)模型參數(shù)過多,這里僅給出權(quán)重矩陣w1和偏置向量b1的結(jié)果如下:
5、計算概率獲取推斷用戶組合屬性類別
將該在線社交網(wǎng)絡(luò)osn中除去訓練集和驗證集的剩余每個用戶xi進行以下屬性推斷:將用戶向量vec_xi輸入到已經(jīng)訓練好的五層神經(jīng)網(wǎng)絡(luò)模型中,通過各層網(wǎng)絡(luò)計算,最終輸出每個組合屬性類別的概率,概率最大的即為該推斷用戶的組合屬性類別,同時與該組合屬性類別向量對應的結(jié)構(gòu)化屬性向量即為該用戶的推斷屬性集。
三、實例驗證
在上述實施例中,采用本發(fā)明所闡述的方法推斷了除訓練集和驗證集以外的剩余103003個用戶的屬性,即采用80%左右的用戶作為訓練集,10%左右的用戶作為驗證集,10%左右的用戶作為測試集。本次實施例的實驗結(jié)果如下:驗證集的準確度穩(wěn)定在76.5%,測試集的準確度為78.2%。
該結(jié)果表明僅利用在線社交網(wǎng)絡(luò)中用戶的好友關(guān)系即可同時推斷出用戶的多個屬性,相比其它需要利用大量用戶行為特征信息的方法而言,本發(fā)明的方法具有很好的移植性和較高的推斷準確度。
盡管上面對本發(fā)明說明性的具體實施方式進行了描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應該清楚,本發(fā)明不限于具體實施方式的范圍,對本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護之列。