本發明涉及一種針對地理位置敏感app的個性化推薦方法。
背景技術:
:隨著智能手機的普及,手機應用app數量也越來越多,種類越來越繁雜。為了更好的了解目前手機app應用的發展狀況,研究當下三個主流的手機app在線提供商店googleplay,iosappstore和amazonappstore。這幾個app在線提供商店是手機app最大的提供商店,就他們的優缺點而言,只能說各有千秋。但是,它們卻都有一個共同的特點,就是:提供的手機app數量巨大,用戶數量巨大,涵蓋全世界各地,包括各個階層。并且,它們的手機app數量仍處在不斷上升的趨勢中(如圖1)。目前appstore收錄的app超過了120萬,吸引了28萬多名開發人員(同一名開發人員能開發多個應用)。googleplay作為安卓平臺的提供商,用戶和市場上更具有優勢,目前收錄的app已經超過143萬,平臺吸引了39萬開發人員。amazon則是29萬和4.8萬。面對海量的app,同一款功能應用的手機app,仍能找出幾十上百款。而且,不同的手機app有不同的特色,質量和用戶體驗上更是良莠不齊。這就給用戶帶來了一個很嚴重的問題:用戶到底要怎么樣從海量的app應用中,找到一款正在的適合自己并且高質量的app呢?這就需要為用戶提供一種推薦機制,根據用戶的性格特點,生活環境,年齡性別特點甚至于天氣時間等為用戶自動的找出適合他的高質量的app應用,這也就是個性化的app應用推薦。有鑒于此,提供一個算法,使得這個推薦變得精準可靠,從而增強用戶的體驗,使得用戶能節省大量的時間與精力從海量的app提供商店中,找尋到最適合自己的app。現有技術:手機應用app的推薦技術,大多數是繼承于電腦pc端商品、電影等推薦技術,但是也具有自己獨有的特性。手機應用app的推薦技術目前起步不久,不如pc端推薦技術成熟,但是由于是在pc推薦技術基礎上發展的,手機端app應用的推薦技術的發展相當迅速。目前,主要的推薦方法包括:基于內容推薦、協同過濾推薦、基于關聯規則推薦、基于效用推薦、基于知識推薦和組合推薦。這些算法都比較成熟,但是都各有其優劣(如表1)。尤其是,當一款app應用具有明顯的地方性(即:這款app是專門針對某個地方開發的應用時),這些傳統的對應的算法往往會把這些軟件給湮沒了,但事實上這些app對于當地的人來說,可能才是最適合他們的app應用。表1技術實現要素:本發明的目的在于克服現有技術的缺點與不足,提出了一種針對地理位置敏感app的個性化推薦方法,通過對地理位置敏感app的敏感度計算,帶地理位置權重的矩陣分解方法,通過這兩個方面的技術改進,使得推薦評分的預測更加準確。為實現上述目的,本發明所采用的技術方案是:一種針對地理位置敏感app的個性化推薦方法,其特征在于包括以下步驟:步驟1、原始數據的獲取和處理;步驟2、城市對應app敏感度計算;步驟3、評分矩陣預測并給出app推薦。進一步的,所述步驟1是通過統計用戶使用該app的下載、卸載、更新情況來得出用戶對于某一款app的評分。進一步的,步驟2具體包括以下步驟:app對應地理位置敏感度計算;帶敏感度權重的矩陣分解。進一步的,所述app對應地理位置敏感度計算具體包括以下步驟:1)收集并且處理原始的用戶流量數據,統計出每一個城市對于每一款app的使用量;2)使用tf-idf算法對步驟1)得出的矩陣進行初步處理,得到原始的城市和app的敏感度關系;3)定義一個置信度函數,來進一步優化城市和app之間的敏感度關系。進一步的,所述帶敏感度權重的矩陣分解具體包括采用分解公式:分解重構的ri,j作為預測值,然后通過優化目標函數,使得預測值盡可能的逼近真實值,目標函數:在所述帶地理位置敏感度的矩陣分解方法中,在分解的時候加入了地理位置敏感度的權重,目標函數就變為:公式中n,m分別代表n個用戶和m個app,代表的是用戶i所在位置對于appj的敏感度。ri,j代表的是用戶i對于appj的評價分。進一步的,優選的優化方法是最小二乘法或隨機梯度下降。進一步的,步驟3具體包括使用帶城市app敏感度權重的矩陣分解來預測步驟1構建的用戶-app的評分矩陣,用矩陣分解的方法去預測出評分矩陣中的缺失值,最終得出完整的評分矩陣,通過所述用戶—app的評分矩陣,對于某個用戶就能給出一個app評分的排序,系統將評分高的app自動推薦給用戶。本發明的有益效果是:通過對地理位置敏感app的敏感度計算,帶地理位置權重的矩陣分解方法,通過這兩個方面的技術改進,使得推薦評分的預測更加準確。附圖說明圖1為2016年手機app數量趨勢圖;圖2為一種針對地理位置敏感app的個性化推薦方法流程圖;圖3為第802號app明顯的異常情況示意圖;圖4為帶敏感度權重的矩陣分解圖。具體實施方式下面結合附圖對本發明技術方案進一步說明:一種針對地理位置敏感app的個性化推薦方法,流程圖如圖2所示,具體實施主要包括以下步驟:步驟1、原始數據的獲取和處理;步驟2、城市對應app敏感度計算;步驟3、評分矩陣預測并給出app推薦。其中,步驟1、原始數據的獲取和處理:通過內置手機軟件采集手機用戶使用app流量數據,采集的目標數據主要包括:用戶,用戶的地理位置,用戶的卸載軟件情況,用戶每天使用手機app的情況(使用的流量、時間、次數等)以及用戶下載更新軟件的情況。通過我們內置軟件采集到的數據,構建出來用戶-app評分表見表2,和前述的城市對于app的敏感度矩陣。下載卸載更新得分10011102100311141015表2正如上面表2所示,用戶對于某一款app的評分,是通過統計用戶使用該app的下載,卸載,更新情況來得出的評分。步驟2、城市對應app敏感度計算,可以通過以下方法得出app敏感度矩陣:一、app對應地理位置(主要以城市為單位)敏感度計算:1)收集并且處理原始的用戶流量數據,統計出每一個城市對于每一款app的使用量。統計的結果形式大概如表3。表3的這個數據形式,正好是符合tf-idf算法的數據結構的。騰訊qq深圳巴士微信探探北京233232333--上海34334341--深圳2233232343444--2)使用tf-idf算法對步驟1)得出的矩陣進行初步處理,得到原始的城市和app的敏感度關系。矩陣中的取值在0,1之間。例如北京市對截圖中第一款軟件騰訊qq的敏感度即為0.269。這里,說明一下tf-idf算法。tf-idf(termfrequency–inversedocumentfrequency)是一種用于信息檢索與數據挖掘的常用加權技術。是一種統計方法。主要思想是:如果某個詞或短語在一篇文章中出現的頻率tf高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。tfidf實際上是:tf*idf,tf詞頻(termfrequency),idf逆向文件頻率(inversedocumentfrequency)。tf表示詞條在文檔d中出現的頻率。idf的主要思想是:如果包含詞條t的文檔越少,也就是n越小,idf越大,則說明詞條t具有很好的類別區分能力。如果某一類文檔c中包含詞條t的文檔數為m,而其它類包含t的文檔總數為k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照idf公式得到的idf的值會小,就說明該詞條t類別區分能力不強。但是實際上,如果一個詞條在一個類的文檔中頻繁出現,則說明該詞條能夠很好代表這個類的文本的特征,這樣的詞條應該給它們賦予較高的權重,并選來作為該類文本的特征詞以區別與其它類文檔。這就是idf的不足之處.在一份給定的文件里,詞頻(termfrequency,tf)指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數(termcount)的歸一化,以防止它偏向長的文件。(同一個詞語在長文件里可能會比短文件有更高的詞數,而不管該詞語重要與否。)對于在某一特定文件里的詞語來說,它的重要性可表示為:以上式子中分子是該詞在文件中的出現次數,而分母則是在文件中所有字詞的出現次數之和。逆向文件頻率(inversedocumentfrequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到:其中|d|:語料庫中的文件總數:包含詞語的文件數目(即的文件數目)如果該詞語不在語料庫中,就會導致分母為零,因此一般情況下使用1+|{d∈d:t∈d}|作為分母。然后再計算tf與idf的乘積。tfidfi,j=tfi,j×idfi某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向于過濾掉常見的詞語,保留重要的詞語。基于此原理類比過來用到城市和app的關系上。tfidf計算就能說明,如果某個app在某一個城市使用量較高,但是在其他城市使用量低的時候,那么計算得出的tfidf結果就會大,也就說明了城市對某款app的敏感度。3)定義一個置信度函數,來進一步優化城市和app之間的敏感度關系。在步驟2)算法通過tfidf計算出了城市與app直接的敏感度,但是現實情況是數據收集的時候,在一些大城市收集的數據量遠遠要大過一些比較落后的城市。數據量越少,該數據反反映的城市與app之間的關系就越發不準確。換而言之,數據量越少,得出來的敏感關系就未必準確。這里通過分析數據,定義了一個置信度函數。函數取值在0,1之間,發f(x)值就某個城市的置信度,x代表該城市所有app平均用戶量,用戶量越大,置信度越高。通過算法定義的敏感度,通過實驗發現確實一些城市對于一些app更加敏感。如圖3所示,第802號app有明顯的異常情況。通過網絡查看802號app是深圳本地的一款乘坐公共汽車的app。該款app基本只在深圳以及周邊的幾個城市使用,具有明顯的地域特點。所以深圳對于該款軟件的敏感度高。這說明,定義的敏感度算法是正確可靠的。二、帶敏感度權重的矩陣分解。矩陣分解方法是推薦系統比較傳統的方法,將要給矩陣拆解為數個矩陣的乘積。常見的有三種1)三角分解法(triangularfactorization),2)qr分解法(qrfactorization),3)奇異值分解法(singularvaluedecompostion)。本發明采用的方法在qr分解法的基礎上改進。分解公式:分解圖如圖4所示。分解重構的ri,j作為預測值。然后通過優化目標函數,使得預測值盡可能的逼近真實值。通常的優化方法是:最小二乘法和隨機梯度下降。目標函數:在所述帶地理位置敏感度的矩陣分解方法中,在分解的時候加入了地理位置敏感度的權重。目標函數就變為:公式中n,m分別代表n個用戶和m個app,代表的是用戶i所在位置對于appj的敏感度。ri,j代表的是用戶i對于appj的評價分。步驟3、評分矩陣預測并給出app推薦:使用帶城市app敏感度權重的矩陣分解來預測,步驟1構建的用戶-app的評分矩陣。用矩陣分解的方法去預測出評分矩陣中的缺失值。最終得出完整的評分矩陣。通過這個用戶—app的評分矩陣,對于某個用戶就能給出一個app評分的排序,系統將評分高的app自動推薦給用戶。上述實施例為本發明較佳的實施方式,但本發明的實施方式并不受上述實施例的限制,其他的任何未背離本發明的精神實質與原理下所作的改變、修飾、替代、組合、簡化,均應為等效的置換方式,都包含在本發明的保護范圍之內。當前第1頁12