【東網(wǎng)技術(shù)大咖帶您走進(jìn)大數據】大數據挖掘技術(shù)分享-APP推薦模型應用
發(fā)布時(shí)間: 2016-12-23 15:49:49
新東網(wǎng)自2001年成立以來(lái),掌握大數據、云計算、通信、物聯(lián)網(wǎng)及區塊鏈等信息技術(shù),擁有一支逾16年經(jīng)驗的強大IT團隊。為沉淀企業(yè)技術(shù)實(shí)力,繼續發(fā)揮行業(yè)優(yōu)勢,《東網(wǎng)快訊》特邀新東網(wǎng)技術(shù)大咖帶您走進(jìn)這些先進(jìn)信息技術(shù),揭秘新東網(wǎng)16年來(lái)的技術(shù)成果,每周五發(fā)布。
新東網(wǎng)已經(jīng)開(kāi)發(fā)并運營(yíng)智慧福州、智慧倉山、智慧中山、流流順、中山好生活、派金寶等平臺和App。接下來(lái)就為大家揭秘APP推薦模型應用。
APP推薦模型訓練時(shí),采用了以下幾種方法:
基于項目的協(xié)同過(guò)濾算法(1-0)
基于項目的協(xié)同過(guò)濾算法(1-0)與偏好的IBCF算法相似,不同的是,算法是根據客戶(hù)是否使用item來(lái)計算不同item之間的相似性矩陣(相當于使用余弦公式計算相似度)。由于計算時(shí),矩陣只有1-0兩種值,存儲較小,同時(shí)1-0矩陣的矩陣計算效率較優(yōu)(矩陣的轉置,矩陣乘法以及crossprod算法),因此該算法可方便地實(shí)現對大量客戶(hù)的APP使用做算法推薦。
基于項目的協(xié)同過(guò)濾算法(偏好度)
基于item的協(xié)同過(guò)濾算法,通過(guò)用戶(hù)對不同item的評分來(lái)評測item之間的相似性,計算形成item之間的相似性矩陣,根據客戶(hù)對item的偏好列表做出推薦。實(shí)際上是,給用戶(hù)推薦和他之前喜歡的item相似的item。
基于用戶(hù)的協(xié)同過(guò)濾算法(偏好度)
基于用戶(hù)的協(xié)同過(guò)濾算法,通過(guò)不同用戶(hù)對item的評分來(lái)評測用戶(hù)之間的相似性,計算形成用戶(hù)與用戶(hù)之間的相似性矩陣,根據最近鄰的偏好列表做出推薦。實(shí)際上是,給用戶(hù)推薦與他興趣相似的其他用戶(hù)喜歡的item。
基于關(guān)聯(lián)規則的推薦算法(1-0)
基于關(guān)聯(lián)規則的推薦(Association Rule-based Recommendation)是以關(guān)聯(lián)規則為基礎,把客戶(hù)已使用過(guò)的item作為規則頭,規則體作為推薦對象。關(guān)聯(lián)規則挖掘可以發(fā)現不同item在使用過(guò)程中的相似性。關(guān)聯(lián)規則就是在一個(gè)交易類(lèi)型的數據集合中統計使用了某itemA的交易中有多大的比例客戶(hù)同時(shí)使用了某itemB,其直觀(guān)意義在于:用戶(hù)在某時(shí)間周期內,使用某些item的同時(shí)有多大的傾向去使用另外一些item。
由于算法只對“使用過(guò)”感興趣,數據只要生成1-0(或者根據某些偏好標準判斷客戶(hù)是否使用過(guò)1-0);另外,算法只需要對樣本數據以離線(xiàn)的形式進(jìn)行分析采集、發(fā)現規則,無(wú)需對全部數據集做算法計算,因此計算效率及存儲空間較優(yōu)。發(fā)現規則后,即可定義向滿(mǎn)足規則頭的客戶(hù)推薦規則體的item。
基于項目的協(xié)同過(guò)濾算法(1-0)
為測試該算法的計算效率,使用的數據為泉州-豐澤(595-501)的APP使用數據,整體計算約在10分鐘內完成,算法步驟如下:
(1)讀入交易類(lèi)型數據,數據形式類(lèi)似user_id,app_id;
(2)將數據轉換成user_id~app_id的矩陣M,其中Rij代表客戶(hù)i對APPj是否使用過(guò),未使用過(guò)的使用0進(jìn)行填充;
(3)計算各APP(列)之間的模mod;
(4)計算各列除以該列的模,計算各APP的向量MM;
(5)使用crsooprod計算列向量的內積,得到APP之間的相似度矩陣S;
(6)推薦列表:R = M %*% S(%*%為矩陣乘法)。
基于Popular、UBCF、IBCF偏好度的協(xié)同過(guò)濾算法
由于APP定義為客戶(hù)規模排名前100個(gè)的APP,因此,這里同時(shí)使用了流行度的算法作為IBCF、UBCF的參考算法。
使用recmomenderlab包對Popular、UBCF、IBCF三種算法進(jìn)行訓練:
(1)讀入user_id,app_id,rating的數據(實(shí)際中,Popular及IBCF算法都可對8萬(wàn)個(gè)客戶(hù)進(jìn)行推薦,而UBCF算法計算推薦時(shí)耗費大量時(shí)間,因此在測試的過(guò)程中,使用的4.5萬(wàn)客戶(hù)的APP使用數據);
(2)將數據轉化為USERID~APPID的形式,值為rating,其他用0進(jìn)行填充(fill=0);
(3)將數據split為兩份,80%的數據為訓練集,20%的數據為測試集,分別對三種算法的預測rating與實(shí)際rating做誤差計算;
(4)對三種算法做topNList的4-折cross驗證,計算混淆矩陣的TPR、FPR。
3、基于關(guān)聯(lián)規則的推薦算法
使用arules包對客戶(hù)APP使用數據進(jìn)行規則發(fā)現:
(1)讀入數據:user_id,app_id;
(2)將數據轉換成transactions形式(交易類(lèi)型,user_id相當與訂單號,app_id相當于訂單中的一種商品,一個(gè)訂單中可以有多種商品,相當于一個(gè)客戶(hù)有多個(gè)APP使用記錄);
(3)對支持度為10%,20%,30%,以及置信度為70%,80%,90%進(jìn)行規則發(fā)現;
(4)對生成的規則進(jìn)行剪枝(若規則1包含著(zhù)規則2,且規則2的提升度小于等于規則1的提升度,則規則2為冗余規則,只需要保留規則1);
(5)得到規則列表。
IBCF/UBCF/POPULAR算法的誤差分析
對基于偏好度的IBCF協(xié)同過(guò)濾、UBCF、流行度算法對樣本數據(客戶(hù)數4.5萬(wàn),APP數100)實(shí)施效果評估:
(1)評分rating效果(80%訓練集,20%測試集,預測app數目為50):
RMSE MSE MAE
POPULAR 0.5756349 0.3313555 0.3132222
IBCF 0.5347688 0.2859777 0.3108677
UBCF 0.4871018 0.2372681 0.2637091
從以上的誤差率來(lái)看,IBCF,UBCF算法的誤差率最小。
(2)4-折交叉驗證topNList效果(將數據集分為4份,運行4次,每次利用其中3份作為模型的訓練集,1份作為模型的測試集,對模型的效果進(jìn)行交叉驗證):
運行細節如下:
POPULAR run
1 [0.2sec/8.89sec]
2 [0.19sec/8.83sec]
3 [0.19sec/8.92sec]
4 [0.19sec/8.82sec]
IBCF run
1 [1.24sec/2.89sec]
2 [1.23sec/2.88sec]
3 [1.22sec/2.89sec]
4 [1.26sec/2.88sec]
UBCF run
1 [0.17sec/299.39sec]
2 [0.16sec/299.66sec]
3 [0.15sec/298.87sec]
4 [0.17sec/297.14sec]
三種算法對各topN的真正率(TPR)、假正率(FPR)如下:
從上面的輸出可以看出:
1.1、topNList推薦效果: IBCF > UBCF > Popular;
1.2、由于我們選取的APP是按照客戶(hù)規模排名選取的前100個(gè),而流行度的推薦算法也是根據APP的客戶(hù)規模進(jìn)行推薦的,因此在這里,流行度的topNList的推薦效果作為IBCF、UBCF算法的參考值;
1.3、UBCF算法在模型預測的時(shí)候,需要耗費大量的時(shí)間計算某個(gè)客戶(hù)與其他客戶(hù)的相識度(可以從模型運行的細節上看出),在這里,使用的4.5萬(wàn)個(gè)客戶(hù)的效果。因此,若客戶(hù)量較大的話(huà),如直接對1600萬(wàn)APP使用客戶(hù)進(jìn)行UBCF計算,計算效率和存儲空間對系統都是一個(gè)很大的挑戰。
1.4、綜上所述,在本例中,以基于流行度的算法和IBCF協(xié)同過(guò)濾算法效果最優(yōu),通用情況下,應該考慮使用IBCF算法。
關(guān)聯(lián)規則算法得到的規則效果:
最終以30%的支持度,90%的置信度得到關(guān)聯(lián)規則的1500條規則,如下形式(詳細規則可見(jiàn)rulex.txt):
左件=> 右件 支持度 置信度 提升度
{815,9000382,9007654} => {9003934} 0.302 0.986 2.034
{162,20210162,700826,815,9001014,9007700} => {9008700} 0.303 0.966 1.883
規則解釋?zhuān)?/span>
在所有的客戶(hù)中,有30.2%的客戶(hù)同時(shí)使用了{815,9000382,9007654}APP,其中,98.6%的客戶(hù)同時(shí)有使用{9003934}的APP,因此,可對同時(shí)使用{815,9000382,9007654}的客戶(hù)推薦{9003934}的APP。
1、由于模型訓練使用的APP為客戶(hù)規模前100個(gè)的APP,因此流行度算法的效果最好,若改變APP的選擇定義,需要重新評估該算法的RMSE;
2、由于在我們的模型中,客戶(hù)規模>>APP數量,根據以往的經(jīng)驗,IBCF算法比UBCF算法的效果要好;
3、根據上述模型效果評估及計算效率、存儲方面綜合考慮,可選擇基于關(guān)聯(lián)規則及IBCF的協(xié)同過(guò)濾算法,或者基于流行度及IBCF的協(xié)同過(guò)濾算法,實(shí)現APP的混合推薦系統。