99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)精彩閱讀基于用戶(hù)行為分析建立用戶(hù)偏好模型
基于用戶(hù)行為分析建立用戶(hù)偏好模型
2015-12-10
收藏

基于用戶(hù)行為分析建立用戶(hù)偏好模型




我們經(jīng)常將個(gè)性化推薦的思想簡(jiǎn)單地抽象為:通過(guò)用戶(hù)的行為推測(cè)出用戶(hù)的興趣,從而給用戶(hù)推薦滿(mǎn)足他們興趣的物品。那我們其實(shí)就是要通過(guò)用戶(hù)行為分析建立一個(gè)用戶(hù)偏好(偏好即興趣)模型,模型中包含各個(gè)用戶(hù)的一個(gè)或更多個(gè)偏好。


插敘一段

像「用戶(hù)行為」,「用戶(hù)興趣」這樣的詞,大多數(shù)人都有一個(gè)默認(rèn)的感知,甚至對(duì)于這種詞的理解可能已固化為常識(shí),所以我很少見(jiàn)到有文章使用這些詞時(shí)解釋它們。我感覺(jué)涉及到算法模型時(shí),對(duì)這些詞的不加限定的寬泛認(rèn)知就容易影響對(duì)算法模型的深入理解,會(huì)導(dǎo)致感知模糊卻不自知。因?yàn)椴煌藢?duì)這些詞的基本理解可能一致,但是拓展理解各不相同。本文會(huì)作出限定解釋?zhuān)冶疚乃動(dòng)脩?hù)行為都是指網(wǎng)絡(luò)(可以是電信網(wǎng)絡(luò),互聯(lián)網(wǎng))上的行為。


概念解釋

實(shí)體域

當(dāng)我們想基于用戶(hù)行為分析來(lái)建立用戶(hù)偏好模型時(shí),我們必須把用戶(hù)行為和興趣主題限定在一個(gè)實(shí)體域上。個(gè)性化推薦落實(shí)在具體的推薦中都是在某個(gè)實(shí)體域的推薦。比如對(duì)于閱讀網(wǎng)站,實(shí)體域包括所有的圖書(shū),我們可以稱(chēng)之為圖書(shū)域。其他還有,個(gè)性化音樂(lè)推薦,個(gè)性化電影推薦,個(gè)性化資訊推薦等。

用戶(hù)行為

用戶(hù)在門(mén)戶(hù)網(wǎng)站點(diǎn)擊資訊,評(píng)論資訊,在社交網(wǎng)站發(fā)布狀態(tài),評(píng)論狀態(tài),在電商網(wǎng)站瀏覽商品,購(gòu)買(mǎi)商品,點(diǎn)評(píng)商品,以及在其他類(lèi)型網(wǎng)站的種種行為都可是用戶(hù)行為。本文所指的用戶(hù)行為都是指用戶(hù)在某實(shí)體域上的行為。比如用戶(hù)在圖書(shū)域產(chǎn)生的行為有閱讀,購(gòu)買(mǎi),評(píng)分,評(píng)論等。

興趣主題

用戶(hù)的興趣維度,同樣是限定在某實(shí)體域的興趣,通??梢砸詷?biāo)簽的形式來(lái)表示。比如,對(duì)于圖書(shū)閱讀,興趣主題可以是「懸疑」,「科技」,「情感」等等分類(lèi)標(biāo)簽。值得一提的是,興趣主題,只是從用戶(hù)行為中抽象出來(lái)的興趣維度,并無(wú)統(tǒng)一標(biāo)準(zhǔn)。比如qq閱讀和豆瓣閱讀的圖書(shū)分類(lèi)標(biāo)簽大不一樣。而興趣維度的粒度也不固定,就像門(mén)戶(hù)網(wǎng)站有「新聞」,「體育」,「娛樂(lè)」等一級(jí)分類(lèi),而新聞下有「國(guó)內(nèi)」,「社會(huì)」,「國(guó)際」二級(jí)分類(lèi),娛樂(lè)下有「明星」,「星座」,「八卦」二級(jí)分類(lèi)。我們選取什么粒度的興趣空間取決于我們對(duì)用戶(hù)偏好模型的要求。

興趣空間

在同一層次上興趣維度的集合,比如豆瓣閱讀中,可以用「新上架」,「熱門(mén)」,「特價(jià)」,「免費(fèi)」來(lái)構(gòu)成一個(gè)興趣空間(當(dāng)然,如果使用這個(gè)興趣空間來(lái)表征用戶(hù)的興趣,就太粗了,這里只是假設(shè)),也可以用「小說(shuō)」,「幻想」,「計(jì)算機(jī)」,「科技」,「歷史」·····「美食」構(gòu)成一個(gè)興趣空間。這是兩種不同的分類(lèi)維度。如果將「新上架」也加入到后者集合里,就顯然有些莫名其妙。值得一提是,這也并非不可能,這取決于一個(gè)如何看待這個(gè)集合的問(wèn)題,如果不把它看作基于內(nèi)容的分類(lèi),而是圖書(shū)標(biāo)簽庫(kù),那么也是可行的,甚至利于建立更好地模型。本文后面我有提到。

用戶(hù)行為數(shù)據(jù)

項(xiàng)亮在他的《推薦系統(tǒng)實(shí)踐》的2.1節(jié)有詳細(xì)介紹。通常在經(jīng)過(guò)對(duì)行為日志的匯總處理后生成的比較容易理解的數(shù)據(jù)就是一份描述用戶(hù)行為的會(huì)話(huà)日志。這種日志記錄了用戶(hù)的各種行為,比如在圖書(shū)閱讀app中這些行為主要包括點(diǎn)擊,試讀,購(gòu)買(mǎi),閱讀(在本地app中,閱讀行為有可能追蹤不到),評(píng)分,評(píng)論。

建立用戶(hù)偏好模型

基于用戶(hù)行為分析建立用戶(hù)偏好模型的核心工作就是:將用戶(hù)的行為轉(zhuǎn)換為用戶(hù)的偏好。

我們采用矩陣運(yùn)算的思維方式,以圖書(shū)閱讀為例說(shuō)明。

下圖表示用戶(hù)(user)集合:

下圖表示圖書(shū)(item)集合:

那么用戶(hù)的行為矩陣可以表達(dá)為:

行表示用戶(hù),列表示圖書(shū),我們暫只考慮圖書(shū)的購(gòu)買(mǎi)行為,1表示用戶(hù)看過(guò)該圖書(shū),0表示用戶(hù)沒(méi)有看過(guò)該圖書(shū)。

如何將上述用戶(hù)行為矩陣轉(zhuǎn)化為用戶(hù)興趣矩陣(即行代表用戶(hù),列代表興趣維度),一種顯著的方法是我們先確定圖書(shū)與興趣維度的對(duì)應(yīng)關(guān)系矩陣。而這個(gè)的前提是我們確定了使用何種興趣空間。一種常見(jiàn)的方式是專(zhuān)家給出一些樣本的分類(lèi)結(jié)果,也就是一般意義的訓(xùn)練數(shù)據(jù),然后通過(guò)分類(lèi)算法,得到分類(lèi)模型,然后應(yīng)用到其余數(shù)據(jù)的分類(lèi)問(wèn)題當(dāng)中,解決其余大量數(shù)據(jù)的分類(lèi)問(wèn)題。這種分類(lèi)的特點(diǎn)是一本圖書(shū)只被標(biāo)記為一種類(lèi)別,假如有3個(gè)類(lèi)別,

那么圖書(shū)-興趣矩陣為:

那么用戶(hù)行為矩陣轉(zhuǎn)換為用戶(hù)興趣矩陣的運(yùn)算公式即可表示為下圖,行表示用戶(hù),列表示興趣,算出的矩陣再經(jīng)過(guò)歸一化后,每個(gè)值就代表某個(gè)用戶(hù)在某個(gè)興趣的偏好權(quán)重。

選擇這樣的興趣空間的局限顯而易見(jiàn):一本圖書(shū)只能屬于一個(gè)興趣維度。實(shí)際情況中,一本圖書(shū)通常不只屬于某個(gè)分類(lèi),并且當(dāng)圖書(shū)的數(shù)據(jù)巨大時(shí),寄希望于編輯分類(lèi)可能會(huì)越來(lái)越難以維持,所以通常是由用戶(hù)主動(dòng)給圖書(shū)添加標(biāo)簽,或者機(jī)器基于內(nèi)容,提取關(guān)鍵詞。但是這種形式得到的標(biāo)簽集會(huì)存在同義,生僻,維度過(guò)多等情況,需要經(jīng)過(guò)標(biāo)簽清洗的重要工作。前面已經(jīng)看到興趣空間的選擇真的是非常重要,直接影響所得到用戶(hù)的興趣矩陣。所以同樣的方法都得到了用戶(hù)偏好,但是好不好用,就跟這部分工作有關(guān)了。

用戶(hù)行為加權(quán)

上面展示的用戶(hù)行為矩陣示例是一個(gè)非常簡(jiǎn)單的,直接可以從數(shù)據(jù)庫(kù)里提取的例子。而實(shí)際中在數(shù)據(jù)能夠支撐的情況下,我們不可能只考慮一種行為。為了獲得更合理的行為矩陣,我們就需要進(jìn)行行為加權(quán)。比如,A1表示用戶(hù)點(diǎn)擊的行為矩陣,A2表示購(gòu)買(mǎi)的行為矩陣,A3表示評(píng)分的行為矩陣,那么加權(quán)矩陣就是:

至于各矩陣的權(quán)重跟我們建立用戶(hù)偏好模型的目的有關(guān),如果我們更希望找準(zhǔn)用戶(hù)的品味偏好,那么權(quán)重可能是:a1 < a2 < a3;如果我們更希望用戶(hù)購(gòu)買(mǎi),那么權(quán)重可能是:a1 < a3 < a2。

其他用戶(hù)行為分析方法

上面介紹的方法也算是一種主流的方法。但是從上面介紹的「興趣主題」,「興趣空間」也可以看出作出好的分類(lèi)并不容易,分類(lèi)粒度,分類(lèi)維度等都不好控制,用戶(hù)打標(biāo)簽也需要復(fù)雜的標(biāo)簽清洗工作。在圖書(shū),電影這樣的實(shí)體域,我們還可以通過(guò)類(lèi)別給用戶(hù)推薦喜歡的物品,而在個(gè)性化資訊推薦領(lǐng)域(這里僅舉個(gè)例子,資訊推薦應(yīng)該有其特殊之處),我們不見(jiàn)得能通過(guò)類(lèi)別推薦用戶(hù)喜歡的資訊,甚至用戶(hù)本身也不在意類(lèi)別。我們并不需要顯式地構(gòu)建物品-興趣對(duì)應(yīng)關(guān)系矩陣,也可以將用戶(hù)和所喜歡類(lèi)別的物品關(guān)聯(lián)起來(lái)。這就涉及到隱含語(yǔ)義分析技術(shù)。這個(gè)部分會(huì)日后在此文補(bǔ)充。

小總結(jié)

以上可以看出基于用戶(hù)行為分析的用戶(hù)偏好建模的常規(guī)方法非常簡(jiǎn)單明了。事實(shí)上也的確如此,在使用這些方法或者思想編寫(xiě)程序計(jì)算都不是什么難事。而實(shí)際上,我們遇到的問(wèn)題卻并非是方法本身,而是數(shù)據(jù)本身。數(shù)據(jù)方面的兩大問(wèn)題是稀疏和長(zhǎng)尾分布。通常有行為數(shù)據(jù)用戶(hù)很少,而用戶(hù)的行為對(duì)象也集中在不多的物品上。方法易學(xué),而數(shù)據(jù)問(wèn)題只能在實(shí)戰(zhàn)中才能深刻體會(huì),才會(huì)發(fā)現(xiàn)主要的精力和難點(diǎn)都在解決數(shù)據(jù)的稀疏和長(zhǎng)尾上。希望日后能結(jié)合實(shí)際問(wèn)題寫(xiě)寫(xiě)解決數(shù)據(jù)問(wèn)題的文章。

此外,上面雖然是用矩陣運(yùn)算的思想講述,但我在實(shí)際項(xiàng)目中發(fā)現(xiàn)其運(yùn)算的本質(zhì)其實(shí)是對(duì)用戶(hù)行為的統(tǒng)計(jì)。所以在實(shí)戰(zhàn)中,不一定要先建矩陣,再做計(jì)算,直接在數(shù)據(jù)庫(kù)里使用sql計(jì)算非常方便。


數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線(xiàn)
立即咨詢(xún)
客服在線(xiàn)
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }