無論是提供商品還是服務,用戶畫像都是數據挖掘工作的重要一環。一個準確和完整的用戶畫像甚至可以說是許多互聯網公司賴以生存的寶貴財富。
我們也已經聽過了無數用戶畫像的神奇功能和成功案例,比如亞馬遜、淘寶的機器學習團隊使用用戶的瀏覽行為、購物車狀態和購買記錄開發關聯推薦系統,使點擊率和銷量大幅提升;比如應用市場根據過往APP安裝記錄記對每個使用者進行精準推薦;再比如音樂,圖書和新聞網站通過協同過濾的方式為用戶呈現個性化的定制內容。要做到這些,就必須對用戶的數據進行關聯分析,得到精準的推薦算法。
今天的格物匯,就帶大家來了解關聯分析理論和經典的Apriori算法。
關聯分析
關聯分析是數據挖掘中一項基礎又重要的技術,是一種在大型數據庫中發現變量之間有趣關系的方法,能從數據中挖掘出潛在的關聯關系。或者說,關聯分析是發現交易數據庫中不同商品(項)之間的聯系。比如,在著名的購物籃事務(market basket transactions)問題中,用戶在超市里購物數據如下:
ID | Items |
1 | 牛奶,面包 |
2 | 面包,尿布,啤酒,雞蛋 |
3 | 面包,尿布,啤酒,可樂 |
4 | 牛奶,面包,尿布,啤酒 |
5 | 牛奶,面包,可樂,雞蛋 |
關聯分析則被用來找出此類規則:顧客在買了某種商品時也會買另一種商品。在上述例子中,有的關聯規則是很容易理解的比如:{牛奶}→{面包},此外我們還會挖掘出另外的某些規則: {尿布} → {啤酒};即顧客在買完尿布之后通常會買啤酒。后來通過調查分析,原來妻子囑咐丈夫給孩子買尿布時,丈夫在買完尿布后通常會買自己喜歡的啤酒。
但是,如何衡量這種關聯規則是否靠譜呢?我們需要如下指標來衡量。
我們想找出這樣的規律需要從兩個方面考慮:這個規律中的兩個商品頻繁出現,兩個商品關聯出現的概率較大。如果兩個商品不是頻繁出現的,那么有可能是小眾群體的個別需求。我們把兩個商品一起出現的概率稱為支持度。
如果有一個商品A出現的非常頻繁比如90%,而另一個商品B雖然跟A一起出現的概率很大,但是概率大的原因是A出現的太頻繁了,這也不能反映出其關聯關系,我們把A出現B則出現的條件概率稱為置信度:
Apriori算法
Apriori算法就是為了快速的找到數據中關聯的頻繁集,我們用一個具體的案例來看看吧:假設我們有4種商品:商品0,商品1,商品2和商品3。那么所有可能被一起購買的商品組合都有哪些?這些商品組合可能只有一種商品,比如商品0,也可能包括兩種、三種或者所有四種商品。我們并不關心某人買了兩件商品0以及四件商品2的情況,我們只關心他購買了一種或多種商品。我們可以窮舉出該顧客購買商品所有可能的組合:
一個簡單粗暴的求解方法是:我們設定支持度和置信度的閾值——min_sup,min_cof,并算出每一個可能組合的支持度和置信度,把滿足要求的組合篩選出來。如果我們的商品很多,這個方法的計算量將呈指數的增長,是很難實現的。
定理:如果一個項集是頻繁的,那么其所有的子集(subsets)也一定是頻繁的。
這個定理顯而易見,假如{A,B,C}出現的概率大,那么{A,B},{C},出現的概率肯定也很大。這看上去沒什么用,其實它的逆反定理更有用。
逆反定理:如果一個項集是非頻繁的,那么其所有的超集(supersets)也一定是非頻繁的。
假如{A}出現的概率很小,那么{A,C},{A,B,C}出現的概率肯定也很小。根據這個逆反定理,我們可以排除很多不必要的計算。
比如我們發現{2,3}是非頻繁的,那么{0,2,3},{1,2,3},{0,1,2,3}肯定都是非頻繁的。就可以大大減少我們計算的復雜度。
Apriori算法的目標是找到最大的K項頻繁集,這里有兩層意思,首先,我們要找到符合支持度標準的頻繁集。但是這樣的頻繁集可能有很多。當然我們可以根據上面的逆反定理減少頻繁集的計算范圍,第二層意思就是我們要找到最大個數的頻繁集。比如我們找到符合支持度的頻繁集AB和ABE,那么我們會拋棄AB,只保留ABE,因為AB是2項頻繁集,而ABE是3項頻繁集。那么具體的,Apriori算法是如何做到挖掘K項頻繁集的呢?我們可以看下面這個圖:
Apriori算法采用了迭代的方法,線設定支持度的閾值0.5,先搜索出候選1項集及對應的支持度C1,剪枝去掉低于支持度的1項集,也就是圖C1中的{4},得到頻繁1項集L1。然后對剩下的頻繁1項集進行連接,得到候選的頻繁2項集,篩選去掉低于支持度的候選頻繁2項集C2,也就是圖中C2的{1,2}和{1,5},得到真正的頻繁二項集L2,以此類推,迭代下去,直到無法找到頻繁k+1項集為止,對應的頻繁k項集的集合即為算法的輸出結果。也就是用戶的購物籃中,商品2,商品3,商品5常常一起購買。
總而言之,Apriori算法是一個非常經典的頻繁項集的挖掘算法,很多算法都借用了其算法的思想,并做出了改進,我們也將在格物匯之后的文章中進行分享。
本文作者:格創東智OT團隊(轉載請注明作者及來源)
發布評論請先 登錄
相關推薦
DLP6500想調用API進行自主二次開發,怎么構建開發環境?
DevEco Studio構建分析工具Build Analyzer 為原生鴻蒙應用開發提速
模擬電路分析技巧
混合信號分析儀的原理和應用場景
VirtualLab:系統建模分析器
VirtualLab Fusion:系統建模分析器
VirtualLab:系統建模分析器
IP風險畫像詳細接入規范、API參數(Ipdatacloud)

IP風險畫像如何維護網絡安全
時序邏輯電路必不可少的部分是什么



評論