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

熱線電話:13121318867

登錄
首頁精彩閱讀淺談KL散度(相對熵)在用戶畫像中的應(yīng)用
淺談KL散度(相對熵)在用戶畫像中的應(yīng)用
2016-04-18
收藏
最近做用戶畫像,用到了KL散度,發(fā)現(xiàn)效果還是不錯的,現(xiàn)跟大家分享一下,為了文章的易讀性,不具體講公式的計算,主要講應(yīng)用,不過公式也不復(fù)雜,具體可以看鏈接。(在后臺回復(fù)關(guān)鍵詞「KL」查看相對熵公式)

首先先介紹一下KL散度是啥。KL散度全稱Kullback–Leibler divergence,也稱為相對熵,信息增益,它是度量兩個概率分布P與Q之間差異的一種不對稱度量,可以看做是概率分布P到目標(biāo)概率Q之間距離。一般情況下,P表示數(shù)據(jù)的真是分布,Q表示數(shù)據(jù)的理論分布,也可以理解為影響P分布的一種因素。計算公式為:DKL(P||Q) =ΣP(i)log(P(i)/Q(i)) 

(1)

從字面意思來看呢,是一種距離,但是實(shí)際上和我們理解的“距離”并不一樣。我們常規(guī)理解的距離一般來說有幾點(diǎn)性質(zhì):

1.非負(fù):距離是絕對值,非負(fù)好理解。

2.對稱:從A到B的距離 = 從B到A的距離

3.勾股定理:兩邊之和大于第三邊

而KL的性質(zhì)只滿足第一點(diǎn)非負(fù)性,不滿足對稱性和勾股定理。

1.非負(fù):當(dāng)P(x) = Q(x)幾乎處處成立時,才有DKL(P||Q) = 0. 證明可利用詹森不等式

2.非對稱性:根據(jù)定義可知,如果要弄成對稱的,可以定義

DSKL(P||Q) = (DKL(P||Q)+DKL(Q||P))/2 

(2)

為什么是非對稱的呢,其實(shí)很簡單,如果P(i)大,Q(i)小,那么log是一個增函數(shù),P(i)/Q(i) > Q(i)/P(i),則log(P(i)/Q(i)) > log(Q(i)/P(i)),因此DKL(P||Q) > DKL(Q||P),如果想要DKL(P||Q) = DKL(Q||P),那么P(i)大,Q的分布應(yīng)該盡量和P接近一致,P(i)小,P和Q的差別對KL影響較小。

舉例:

1.假設(shè)現(xiàn)在有兩個用戶群體A和B,在“女裝”這個商品類別下面,A和B的消費(fèi)總金額分別是11W和2W,是不是就能說明A群體相對于B群體就一定更偏好女裝呢?不一定。因?yàn)锳的人數(shù)可能比B的多,如果A和B的人數(shù)比例是10:1,那么可能A和B群體對于“女裝的”偏好是一樣的,簡單來算的話,你可以只算人均價格,如果A和B在“女裝”下的人均消費(fèi)相似,可以說明偏好相同,但是這一點(diǎn)沒有什么理論支撐,我們可以把A和B群體在“女裝”下的消費(fèi)情況分布作為P(真實(shí)分布),A群體和B群體的人數(shù)比例作為Q(擬合分布),那么

P= [11/13,2/13]     Q =[10/11,1/11]
DKL(P||Q) =Σi=1,2P(i)log(P(i)/Q(i))  = 0.02023101833433108

計算得出KL散度約為0.02,接近0,說明A和B在女裝下的消費(fèi)情況分布基本相同,即,兩者對“女裝”的偏好并沒有明顯差異,喜歡“女裝”的程度為1:1

貼上KL散度的代碼:



具體在用戶畫像里有什么用呢?舉個例子,我在做用戶畫像的時候,根據(jù)消費(fèi)金額,分出了8個用戶群體,這八個群體的人均消費(fèi)Top10的重疊性很大,很多人都集中在“女裝”,“淑女裝”,“商務(wù)休閑”,“運(yùn)動戶外”等這幾類,看起來沒有什么區(qū)分度,只能根據(jù)金額的高低來區(qū)分這些群體的消費(fèi)能力,但并不能區(qū)分這些群體對某類商品的偏好。在計算了各商品類型下不同群體的消費(fèi)金額的KL散度后,可以發(fā)現(xiàn),這寫消費(fèi)比較集中的幾類商品(“女裝”,“淑女裝”,“商務(wù)休閑”,“運(yùn)動戶外”等)的KL散度幾乎等于0,或者0.1等,我取閾值為0.5的話,進(jìn)行過濾一下,可以提取出對用戶有偏好區(qū)分的商品,我做的實(shí)際情況中過濾掉了1/3的商品,再根據(jù)不同商品類型下的8個用戶群體的消費(fèi)金額百分比來進(jìn)行排名,就可以看出各用戶群對商品類型的真是偏好了。

簡單來說,從表格上看,可以看到明顯效果:

圖1是沒有計算KL散度之前的用戶偏好,圖2是計算KL散度之后的用戶偏好。行:用戶群體消費(fèi)偏好的商品類型   列:8個用戶群體


圖1 原始用戶偏好


圖2 計算KL散度后的用戶偏好

從圖2可以很明顯看出,各用戶群體已經(jīng)有了明顯的偏好了,第一類的用戶群體可能偏好女性護(hù)膚,對象可能是18-30歲的時尚愛美女性;第二類用戶群體可能是25-40的居家?guī)夼?;第三類用戶群體可能是偏好貴金屬投資的土豪群體;第四類可能是愛好旅游的文藝青年;第五類可能是偏好大牌的富人群體;第六類可能是鐘愛寶寶的白富美;第七類可能是熱愛運(yùn)動的女青年;第八類可能是熱衷手工和養(yǎng)身的動手達(dá)人。(媽呀,編不下去了 = =)

這個粒度還是比較粗的,因?yàn)橥粋€商品類別里面的商品的價格和風(fēng)格也不一樣,經(jīng)常買LV的和買coach的人明顯不是一個消費(fèi)水平的,買coach的和買達(dá)芙妮的也不是一個消費(fèi)水平。如果是以品牌為維度的話,再加上年齡、性別、其他的消費(fèi)幾率等等,因該就可以很容易看出各類用戶群體的偏好了,這里寫KL散度在用戶畫像中的應(yīng)用只是一個引子,其實(shí)KL散度還有很多其他的應(yīng)用,例如文檔之間的相似度計算,推薦系統(tǒng)之間的應(yīng)用等等,具體的怎么應(yīng)用可以結(jié)合實(shí)際業(yè)務(wù)可以把KL散度的價值發(fā)揮的更好。

本文由CDA作者庫成員Charlotte原創(chuàng),并授權(quán)發(fā)布。

原文:http://www.cnblogs.com/charlotte77/p/5392052.html?from=timeline&isappinstalled=0

CDA作者庫凝聚原創(chuàng)力量,只做更有價值的分享。

了解詳情請微信添加trasn863,或發(fā)送郵件至songpeiyang@pinggu.org








數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

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

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } 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)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }