1. 程式人生 > >一文讀懂推薦系統

一文讀懂推薦系統

1. 推薦系統的3個W

1.1 是什麼(What is it?)

推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。

1.2 為什麼(Why is that?)

為什麼我們要用到推薦系統呢?隨著資訊科技和網際網路的發展,人類從資訊匱乏時代走向了資訊過載(Information Overload)時代

對於資訊消費者,也就是使用者,從大量資訊中找到自己感興趣的資訊變得越來越困難;對於資訊生產者,讓自己生產的資訊在眾多資訊中脫穎而出也變得越來越困難。推薦系統正是為了解決這一矛盾而應運而生的。

推薦系統的主要任務就是聯絡使用者和資訊。對使用者而言,推薦系統能幫助使用者找到喜歡的物品/服務,幫忙進行決策,發現使用者可能喜歡的新事物;對商家而言,推薦系統可以給使用者提供個性化的服務,提高使用者信任度和粘性,增加營收。我們可以通過一組資料瞭解推薦系統的價值:

Netflix:2/3 被觀看的電影來自推薦

Google新聞:38%的點選量來自推薦

Amazon:35%的銷量來自推薦

當你看到這些數字,推薦系統的價值就不言而喻了吧?

1.3 用在哪(Where to apply?)

在這個資訊爆炸的時代,資訊過載問題催生了推薦系統在我們日常生活中方方面面的滲透:電子商務、電影或視訊網站、個性化音樂網路電臺、社交網路、個性化閱讀、基於位置的服務、個性化郵件、個性化廣告……在你逛淘寶、訂外賣、聽網路電臺、看美劇、查郵件、淘攻略的時候,推薦系統在你不知不覺中將你可能感興趣的內容推送給你。和搜尋引擎不同,個性化推薦系統需要依賴使用者的行為資料,一般都是作為一個應用存在於不同網站之中。在網際網路的各大網站中都可以看到推薦系統的影子。例如都是逛淘寶,女同胞們和男同胞們看到的網頁介面會有所不同。 

以淘寶為例,本人(女)看到的淘寶介面:

男票看到的淘寶介面:

每個人的喜好不同,在頁面上瀏覽的內容就不同,我們的每一次點選和搜尋都會在網站上留下記錄。淘寶的推薦系統正是通過分析大量我們平時瀏覽商品的行為日誌,推測出我們的喜好,從而給不同使用者提供不同的個性化介面,來提高網站的點選率和轉化率。

2. 推薦系統的結構(Structure)

儘管不同的網站使用不同的推薦系統,但是總的來說,幾乎所有的推薦系統的結構都是類似的,都由線上和線下兩部分組成。線下部分包括後臺的日誌系統和推薦算法系統,線上部分就是我們看到的前臺頁面展示。線下部分通過學習使用者資料和行為日誌建立模型,在新的上下文背景之下,計算相應的推薦內容,呈現於線上頁面中。

3. 推薦引擎演算法(Algorithm)

3.1 協同過濾推薦演算法

3.1.1 關係矩陣與矩陣計算

在一個推薦系統中,存在三類關係:使用者與使用者(U-U矩陣)物品與物品(V-V矩陣)使用者與物品(U-V矩陣)

U-U矩陣

演算法原理 

在基於使用者相似度的協同過濾中,使用者相似度的計算是基本前提。Pearson相關係數主要用於度量兩個變數 i 和 j 之間的相關性,取值範圍是+1(強正相關)到-1(強負相關),計算公式為: 

式中,為使用者 i 和 j 共同評價過的物品的集合,c 是這個集合中的物品元素,是使用者 j 對物品 c 的評價值,為使用者 i 對物品 c 的評價值,分別表示使用者 i 和 j 對物品的平均評價值。

演算法流程 

演算法輸入:使用者行為日誌。 

演算法輸出:基於協同的使用者相似度矩陣。

 A. 從使用者行為日誌中獲取使用者與物品之間的關係資料,即使用者對物品的評分資料。 B. 對於n個使用者,依次計算使用者1與其他n-1個使用者的相似度;再計算使用者2與其他n-2個使用者的相似度。對於其中任意兩個使用者 i 和 j : 

a) 查詢兩個使用者共同評價過的物品集; 

b) 分別計算使用者 i 和對物品 j 的平均評價; 

c) 計算使用者間相似度,得到使用者 i 和 j 的相似度。 

C. 將計算得到的相似度結果儲存於資料庫中。

V-V矩陣

演算法原理 

在基於物品相似度的協同過濾中,物品相似度的計算是基本前提。將物品的評價數值抽象為n維使用者空間中的列向量 ,使用修正的餘弦相似度,計算公式為: 

式中,為對物品共同評價過的使用者的集合, 是使用者 u 對物品的評價值,分別表示使用者對物品的平均評價值。

演算法流程 

演算法輸入:使用者行為日誌。 演算法輸出:基於協同的物品相似度矩陣。 

A. 從使用者行為日誌中獲取使用者與物品之間的關係資料,即使用者對物品的評分資料。 B. 對於n個物品,依次計算物品1與其他n-1個物品的相似度;再計算物品2與其他n-2個物品的相似度。對於其中任意兩個物品 i 和 j: 

a) 查詢對物品 i 和 j 共同評價過的使用者集; 

b) 分別計算使用者對物品 i 和 j 的平均評價; 

c) 計算物品間相似度,得到物品 i 和 j 的相似度。

C. 將計算得到的相似度結果儲存於資料庫中。

U-V矩陣 

在真實的推薦系統中,一方面U-V矩陣的行列數會隨著使用者和物品數量變得龐大,另一方面,因為使用者實際上只能對有限數量的物品做出評價,所以U-V矩陣的內部會非常稀疏。系統在直接處理這些龐大稀疏矩陣時,耗費的時間、記憶體和計算資源都十分巨大。因此需要採取降低計算複雜度的方法。矩陣分解技術是一種有效降低矩陣計算複雜的方法,它的實質是將高維矩陣進行有效降維。

奇異值分解(SVD)

SVD將給定矩陣分解為3個矩陣的乘積: 

式中,矩陣為對角陣,其對角線上的值 為矩陣M的奇異值,按大小排列,代表著矩陣M的重要特徵。將SVD用在推薦系統上,其意義是將一個係數的評分矩陣M分解為表示使用者特性的U矩陣,表示物品特性的V矩陣,以及表示使用者和物品相關性的矩陣。

主成分分析(PCA)

在推薦系統中,對於有較多屬性的物品(物品的資訊用向量 表示)可用PCA處理進行降維,將m×n的物品矩陣轉化為m×k的新矩陣。

3.1.2 基於記憶的協同過濾演算法

基於使用者的協同過濾演算法

基於使用者的協同過濾(user-based collaborative filtering)演算法是推薦系統中最古老的演算法,產生於1992年,最初應用於郵件過濾系統,1994年被GroupLens用於新聞過濾。在此之後直到2000年,該演算法都是推薦系統領域最著名的演算法。

演算法原理

什麼是基於使用者的協同過濾演算法?舉個簡單的例子,我們知道櫻桃小丸子喜歡葡萄、草莓、西瓜和橘子,而我們通過某種方法瞭解到小丸子和花倫有相似的喜好,所以我們會把小丸子喜歡的而花倫還未選擇的水果(葡萄和橘子)推薦給花倫。 

通過上面的例子我們可以做出如下總結:假設使用者為,物品的評分為,基於使用者的協同過濾演算法主要包含以下兩個步驟:

A. 蒐集使用者和物品的歷史資訊,計算使用者u和其他使用者的相似度

,找到和目標使用者Ui興趣相似的使用者集合N(u)

B. 找到這個集合中使用者喜歡的,且目標使用者還沒有聽說過的物品推薦給目標使用者。 

基於使用者的協同過濾子引擎,通過下面的公式來計算使用者對物品的喜好程度: 

式中,表示使用者 u 對物品 j 的喜好程度,表示使用者Ni對物品 j 的評價,表示使用者 u 和使用者 的相似度。最後根據來對候選物品進行排序,為使用者推薦分值最高的Top-N個物品。

演算法流程 

演算法輸入:使用者行為日誌,基於協同的使用者相似性矩陣。 演算法輸出:初始推薦結果

A. 訪問使用者行為日誌,獲取近期變化的使用者ID集合U。 

B. 針對集合U中每個使用者 u:

a) 訪問使用者相似矩陣,獲取與使用者相似的使用者合集N(u)。 b) 對於N(u)中的每一個使用者ui: 

獲取與使用者ui有關聯的物品合集

針對物品合集中的每個物品,計算使用者偏好值。 

c) 對集M(u)中的所有物品進行按照使用者偏好進行加權、去重、排序。 d) 取Top-N個物品,為每個物品賦予解釋。 e) 儲存Top-N個物品到初始推薦列表中。

適用性 

由於需計算使用者相似度矩陣,基於使用者的協同過濾演算法適用於使用者較少的場合; 由於時效性較強,該方法適用於使用者個性化興趣不太明顯的領域。

基於物品的協同過濾演算法

基於物品的協同過濾(item-based collaborative filtering)演算法是目前業界應用最多的演算法。無論是亞馬遜網,還是Netflix、Hulu、Youtube,其推薦演算法的基礎都是該演算法。

演算法原理

基於物品的協同過濾演算法給使用者推薦那些和他們之前喜歡的物品相似的物品。比如,我們知道櫻桃小丸子和小玉都喜歡葡萄和西瓜,那麼我們就認為葡萄和西瓜有較高的相似度,在花倫選擇了西瓜的情況下,我們會把葡萄推薦給花倫。

ItemCF演算法並不利用物品的內容屬性計算物品之間的相似度,它主要通過分析使用者的行為記錄計算物品之間的相似度。該演算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的使用者大都也喜歡物品B。 

假設使用者為,物品的評分為,基於物品的協同過濾演算法主要分為兩步:

A. 對於目標使用者及其待評分的物品,根據使用者對物品的歷史偏好資料,計算物品與其他已評分物品之間的相似度 Sim(j,i),找到與物品相似度的物品合集N(u); 

B. 根據所有物品 N(u) 的評分情況,選出N(u)中目標使用者可能喜歡的且沒有觀看過的推薦給目標使用者並預測評分。 

式中,為使用者 u 對物品 i 的評分,是使用者 u 對他買過的物品的平均打分。 

ItemCF通過下面的公式來計算使用者對物品的喜好程度: 

式中,表示使用者 u 對物品 j 的喜好程度,物品 i 是使用者買過的物品,表示使用者 u 對物品 i 的偏好程度,然後根據來對候選物品進行排序,為使用者推薦分值最高的物品。

演算法流程 

演算法輸入:使用者行為日誌,基於協同的物品相似性矩陣 演算法輸出:初始推薦結果 

A. 訪問使用者行為日誌,獲取該使用者最近瀏覽過物品的使用者集合U。 B. 針對集合U中每個使用者u: 

a) 訪問使用者相似矩陣,獲取與使用者相似的使用者合集N(u)。 b) 訪問物品相似矩陣,獲取與M(u)相似的物品合集N(u)。 c) 針對物品合集M(ui)中的每個物品,計算使用者偏好值。 d) 根據使用者偏好值,對N(u)的物品進行排序。 e) 取Top-N個物品,為每個物品賦予解釋。 f) 儲存Top-N個物品到初始推薦列表中。

適用性 

適用於物品數明顯小於使用者數的場合; 長尾物品豐富,使用者個性化需求強烈的領域。

UserCF和ItemCF的比較

3.1.3 基於模型的協同過濾演算法

基於隱因子模型的推薦演算法

隱語義模型是最近幾年推薦系統領域最為熱門的研究話題,它的核心思想是通過隱含特徵(latent factor)聯絡使用者興趣和物品。也就是,對於某個使用者,首先找到他的興趣分類,然後從分類中挑選他可能喜歡的物品。

基本演算法

基於興趣分類的方法大概需要解決3個問題: 

A. 如何給物品進行分類? B. 如何確定使用者對哪些類的物品感興趣,以及感興趣的程度? C. 對於一個給定的類,選擇哪些屬於這個類的物品推薦給使用者,以及如何確定這些物品在一個類中的權重? 

隱含語義分析技術採取基於使用者行為統計的自動聚類,可以自動解決物品分類問題。LFM通過如下公式計算使用者 u 對物品 i 的興趣: 

這個公式中,是模型的引數,其中, 度量了使用者 u 的興趣和第  k 個隱類的關係,而度量了第 k 個隱類和物品 i 之間的關係。要計算這兩個引數,需要一個訓練集,對於每個使用者 u ,訓練集裡都包含了使用者 u 喜歡的物品和不感興趣的物品,通過學習這個資料集,就可以獲得上面的模型引數。

LFM和基於鄰域的方法的比較

理論基礎 

LFM具有比較好的理論基礎,它是一種學習方法,通過優化一個設定的指標建立最優的模型。基於鄰域的方法更多的是一種基於統計的方法,並沒有學習過程。

離線計算的空間複雜度 

基於鄰域的方法需要維護一張離線的相關表。在離線計算相關表的過程中,如果使用者/物品數很多,將會佔據很大的記憶體。而LFM在建模過程中,可以很好地節省離線計算的記憶體。

離線計算的時間複雜度 

在一般情況下,LFM的時間複雜度要稍微高於UserCF和ItemCF,這主要是因為該演算法需要多次迭代。但總體上,這兩種演算法在時間複雜度上沒有質的差別。

線上實時推薦 

UserCF和ItemCF線上服務演算法需要將相關表快取在記憶體中,然後可以線上進行實時的預測。LFM在給使用者生成推薦列表時,需要計算使用者對所有物品的興趣權重,然後排名,不太適合用於物品數非常龐大的系統,如果要用,我們也需要一個比較快的演算法給使用者先計算一個比較小的候選列表,然後再用LFM重新排名。另一方面,LFM在生成一個使用者推薦列表時速度太慢,因此不能線上實時計算,而需要離線將所有使用者的推薦結果事先計算好儲存在資料庫中。因此,LFM不能進行線上實時推薦,也就是說,當用戶有了新的行為後,他的推薦列表不會發生變化。

推薦解釋 

ItemCF演算法支援很好的推薦解釋,它可以利用使用者的歷史行為解釋推薦結果。但LFM無法提供這樣的解釋,它計算出的隱類雖然在語義上確實代表了一類興趣和物品,卻很難用自然語言描述並生成解釋展現給使用者。

基於樸素貝葉斯分離的推薦演算法

演算法原理

由於推薦問題可以看成分類問題,因此可以使用機器學習領域中的分類演算法加以解決。樸素貝葉斯分類演算法是貝葉斯分類演算法中比較簡單的一種,它的基本思想是:對於給出的待分類物品和既定的類別,計算該物品在各個類別中出現的頻率,哪個類別計算出的概率大就將物品歸於那個類。在推薦系統中,樸素貝葉斯分類能夠在已知某些評分的情況下,通過計算概率預測未知評分。

計算中用到貝葉斯定理: 

式中,表示事件B已經發生的前提下事件A發生的概率;P(A)和P(B)均為無條件概率。

演算法流程 

演算法輸入:已知目標使用者對物品之外的物品的評分情況,以及其他使用者對各物品的評分情況。 

演算法輸出:確定目標使用者對物品的評分 。

A. 為一個待分類項,

的特徵屬性; B. 設類別集合

C. 計算: 

a) 找到一個已知分類的待分類項集合作為訓練樣本; b) 統計得到在各個類別下各個特徵屬性的條件概率估計,即 

c) 如果各個特徵屬性是條件獨立的,則根據貝葉斯定理有如下關係: 

因為分母對所有類別為常數,因此只需將分子最大化即可,又由於各特徵屬性是條件獨立的,所以有: 

D.,則

適用性 

樸素貝葉斯分類實現起來比較簡單,準確率高,但是分類的時候需要學習全部樣本的資訊。因此,樸素貝葉斯分類適用於資料量不大,類別較少的分類問題。

3.2 基於內容(CB)的推薦演算法

基礎CB推薦演算法

演算法背景

基礎CB推薦演算法利用物品的基本資訊和使用者偏好內容的相似性進行物品推薦。通過分析使用者已經瀏覽過的物品內容,生成使用者的偏好內容,然後推薦與使用者感興趣的物品內容相似度高的其他物品。

比如,使用者近期瀏覽過馮小剛導演的電影“非誠勿擾”,主演是葛優;那麼如果使用者沒有看過“私人訂製”,則可以推薦給使用者。因為這兩部電影的導演都是馮小剛,主演都有葛優。 

計算公式為: 

式中,表示使用者,表示物品,表示使用者在第 k 個方面的特徵,表示物品在第 k 個方面的特徵,表示在第 k 個特徵方面上的相似度,表示權重

演算法流程 

演算法輸入:物品資訊,使用者行為日誌。 演算法輸出:初始推薦結果。 

A. 物品表示:每個物品使用特徵向量表示,

其中表示物品的特徵屬性; B. 從使用者行為日誌中,獲取該使用者所瀏覽、收藏、評價、分享的物品集合M,根據物品集合M中物品的特徵資料,可以學到使用者的內容偏好; C. 儲存Top-K個物品到初始推薦結果中。

適用場景 

適用於基礎CB架構的搭建,尤其是對新上線物品會馬上被推薦非常有效,被推薦的機會與老的物品是相同的。

基於TF-IDF的CB推薦演算法

演算法背景

在推薦系統中,使用者的反饋往往分為兩類:評分和文字評論。前者通過分數直接反映使用者對物品的喜好程度,後者則需要從文字當中提取關鍵資訊,這時需要用到TF-IDF(Term Frequency-Inverse Document Frequency)。TF-IDF演算法被公認為資訊檢索中最重要的發明,在搜尋、文獻分類和其他相關領域有廣泛應用。

TF-IDF是自然語言處理領域中計算文件中詞或短語的權值的方法,是詞頻(Term Frequency, TF)和逆轉文件頻率(Inverse Document Frequency, IDF)的乘積。TF指的是某一個給定的詞語在該檔案中出現的次數,這個數字通常會被正規化,以防止它偏向長的檔案(同一個詞語在長檔案裡可能會比段檔案有更高的詞頻,而不管該詞語重要與否)。IDF是一個詞語普遍重要性的度量,某一特定詞語的IDF,可以由總檔案數目除以包含該詞語的檔案數目,再將得到的商取對數得到。

演算法原理

TF-IDF演算法基於這樣一個假設:若一個詞語在目標文件中出現的頻率高而在其他文件中出現的頻率低,那麼這個詞語就可以用來區分出目標文件。這個假設的主要資訊有兩點:

在本文件出現的頻率高;

在其他文件出現的頻率低。

因此,TF-IDF演算法的計算可以分為詞頻(TF)和逆轉文件頻率(IDF)兩部分,由TF和IDF的乘積來設定文件詞語的權重。 

假設文件集包含的文件數為N,文件集中包含關鍵詞的文件數為表示關鍵詞在文件中出現的次數,表示文件中出現的詞語總數,在文件中的詞頻定義為 

這個數字通常會被正規化,以防止它偏向長的檔案。 

IDF衡量詞語的普遍重要性。表示某一詞語在整個文件中出現的頻率,由它計算的結果取對數得到關鍵詞的逆文件頻率。 

由TF和IDF計算詞語的權重為 

可以看出,TF-IDF與詞語在文件中的出現次數成正比,與該詞在整個文件集中的出現次數成反比。在目標文件中,提取關鍵詞的方法就是將該文件所有詞語的TF-IDF計算出來並進行對比,取其中TF-IDF值最大的個數組成目標文件的特徵向量來表示該文件。

基於KNN的CB推薦演算法

演算法背景

KNN(k-Nearest Neighbor)演算法基於這樣的假設:如果在特徵空間中,一個樣本的k個最鄰近樣本中的大多數樣本屬於某一個類別,則該樣本也屬於這個類別。

演算法原理

KNN在CB推薦演算法中的應用於在CF推薦演算法中的應用極為相似,它們都是要首先找到與目標物品相似的且已經被使用者 u 評價過的 k 個物品,然後根據使用者 u 對這 k 個物品的評價來預測其目標物品的評價。它們的差別在於,CF推薦演算法中的KNN是根據使用者對物品的評分來計算物品間相似度的,而CB推薦演算法中KNN是根據物品畫像來計算相似度的,所以對於後者來說,如何通過物品畫像來計算物品間的相似度是演算法中的關鍵步驟。相似度的計算可以使用餘弦相似度或Pearson相關係數的計算方法。

演算法流程

演算法輸入:使用者已評分物品,目標物品 i 。 演算法輸出:使用者對目標物品 i 的評分。

A. 採用餘弦相似度公式計算相似度。 B. 選擇最近鄰。在使用者 u 評過分的所有物品中,找出 k 個與目標物品 i 相似度最高的物品,並用 N(u,i) 來表示這出 k 個物品的集合。 C. 計算預測值。在第二步的基礎上,可使用以下公式計算使用者對目標物品的評分: 

式中,表示使用者 u 對物品 i 的預測評分,是相似度。

基於Rocchio的CB推薦演算法

演算法背景

Rocchio是從使用者瀏覽歷史中抽取使用者喜好的物品特徵來構建使用者畫像的一種常用演算法,是資訊檢索領域處理相關反饋(Relevance Feedback)的一個著名演算法。它提供瞭如何通過使用者瀏覽的物品,反饋計算使用者特徵向量中屬性值的方法。

舉個簡單例子,假如使用者觀看過“星球大戰”和“加勒比海盜”,並給予高分,那麼根據使用者的行為歷史資料構建畫像時,使用者的特徵向量可表示為{“動作”:1,“歐美”:1,“科幻”:1,“冒險”:0.5}。

演算法原理 

Rocchio演算法基於這樣的假設:如果我們需要計算出最精準度的使用者特徵向量,那麼這個使用者特徵向量應該與使用者喜歡的物品特徵最相似,與使用者討厭的物品特徵最不同。若表示使用者喜歡的物品,表示使用者討厭的物品,那麼根據Rocchio演算法的思想,定義最優的使用者特徵向量為: 

式中,表示使用者特徵向量與使用者喜歡的物品的相似度,採用餘弦相似度計算,公式為: 

更新使用者的特徵向量,修改公式為: 

式中,是原始的使用者特徵向量,為權重。若使用者新的歷史資料較多,那麼可以增大的值,反之,使用者更新資料較少則可以適當減小和 的值。在基於內容的物品推薦中,根據使用者的歷史行為資料建立使用者畫像,我們可以採用Rocchio演算法不斷地調整使用者的特徵向量

基於決策樹的CB推薦演算法

演算法背景

基於決策樹的推薦演算法在訓練階段會生成一個顯示的決策模型。決策樹可以通過訓練資料構建並有效判斷一個新的物品是否可能受到歡迎。當物品的特徵屬性較少時,採用決策樹演算法能夠取得不錯的效果,另外,決策樹學習的思想也比較容易被理解,在物品推薦時的可解釋性較好。

演算法原理

在物品推薦系統中,決策樹的內部節點通常表示物品的特徵屬性,這些節點用於區分物品集合,例如,通過物品中是否包含這個特徵將其進行分類。在只有兩個分類的簡單資料集中,使用者是否對物品感興趣一般出現在決策樹的葉子節點上。

基於線性分類的CB推薦演算法

演算法背景

將基於內容的物品推薦問題視為分類問題時,可以採用多種機器學習方法。從一個更抽象的角度上看,大部分學習方法致力於找到一個可以準確區分使用者喜歡和不喜歡的物品的線性分類模型係數。

將物品資料用n維特徵向量來表示,線性分類器試圖在給定的物品特徵空間中找到一個能夠將物品正確分類的平面,一類點儘可能在平面的某一邊(喜歡),另一類在平面的另一邊(不喜歡)。

演算法原理

基於線性分類器的CB推薦演算法通過物品特徵的線性組合進行分類。若輸入的物品特徵向量為,輸出的結果 y 表示使用者是否喜歡物品,則線性分類器可以表示為: 

式中,表示物品特徵向量對應的權重,根據輸入的物品特徵屬性做出決定輸出結果。

基於樸素貝葉斯的CB推薦演算法

演算法背景

基於樸素貝葉斯的推薦系統假設使用者和物品的特徵向量中的各個分量之間條件獨立,判斷使用者是否對某個物品有興趣的方法是將這個問題轉化為分類問題:喜歡和不喜歡。

計算物品分類情況的後驗概率為: 

式中,表示物品的相關屬性;C為物品的分類,

相關推薦

推薦系統知識體系-上(概念、結構、演算法)

  本文主要闡述: 推薦系統的3個W 推薦系統的結構 推薦引擎演算法 瀏覽後四章的內容請見下篇。 1. 推薦系統的3個W 1.1 是什麼(What is it?) 推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去

推薦系統

1. 推薦系統的3個W1.1 是什麼(What is it?)推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。1.2 為什麼(Why is that?)為什麼我們要用到推薦系統呢?隨著資訊科技和網際網

推薦系統知識體系(資料派THU 李中傑)

1. 推薦系統的3個W1.1 是什麼(What is it?)推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。1.2 為什麼(Why is that?)為什麼我們要用到推薦系統呢?隨著資訊科技和網際網

C_推薦系統知識體系(資料派THU 李中傑)

1. 推薦系統的3個W 1.1 是什麼(What is it?) 推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。 1.2 為什麼(Why is that?) 為什麼我們要用到推薦系統

通訊系統的均衡原理(時域均衡)

一、均衡的概念 二、均衡器的作用:校正或補償系統特性,減小碼間串擾的影響! 均衡器在系統中的位置: 三、均衡的分類: 一般情況下,頻域均衡器很難實現,現實或研究中,均衡一般都是指時域均衡器 下圖是一個橫向濾波器的時域均衡系統: 下面波形圖中,均衡的目標

服務端技術進階(四)分散式系統本質:高吞吐、高可用、可擴充套件

服務端技術進階( 四)一篇文讀懂分散式系統本質:高吞吐、高可用、可擴充套件 承載量是分散式系統存在的原因   當一個網際網路業務獲得大眾歡迎的時候,最顯著碰到的技術問題,就是伺服器非常繁忙。當每天有1000萬個使用者訪問你的網站時,無論你使用什麼樣的伺服

推薦R中的探索性資料分析(附R程式碼)

作者:Pablo Casas;翻譯:蔣雨暢;校對:車前子;本文約1500字,建議閱讀7分鐘。本文

大數據計算框架與平臺

ddr 不同 失敗 克服 可定制 同時 數據庫引擎 後處理 alc  1.前言   計算機的基本工作就是處理數據,包括磁盤文件中的數據,通過網絡傳輸的數據流或數據包,數據庫中的結構化數據等。隨著互聯網、物聯網等技術得到越來越廣泛的應用,數據規模不斷增加,TB、PB量級成為常

超簡單的 structured stream 源碼解讀

ket exec res exce bus sin imp += work 為了讓大家理解structured stream的運行流程,我將根據一個代碼例子,講述structured stream的基本運行流程和原理。 下面是一段簡單的代碼: 1 val spark =

Spring Boot、微服務架構和大數據治理之間的故事

Springboot微服務架構 微服務的誕生並非偶然,它是在互聯網高速發展,技術日新月異的變化以及傳統架構無法適應快速變化等多重因素的推動下誕生的產物。互聯網時代的產品通常有兩類特點:需求變化快和用戶群體龐大,在這種情況下,如何從系統架構的角度出發,構建靈活、易擴展的系統,快速應對需求的變化;同時,隨著用戶的

阻塞、非阻塞、同步、異步IO

UC max register class 掃描 基本 角度 cloud 問題: 介紹 在談及網絡IO的時候總避不開阻塞、非阻塞、同步、異步、IO多路復用、select、poll、epoll等這幾個詞語。在面試的時候也會被經常問到這幾個的區別。本文就來講一下這幾個詞

架構師都不知道的isinstance檢查機制

Python起步通過內建方法 isinstance(object, classinfo) 可以判斷一個對象是否是某個類的實例。但你是否想過關於鴨子協議的對象是如何進行判斷的呢? 比如 list 類的父類是繼 object 類的,但通過 isinstance([], typing.Iterable) 返回的卻是

【深度學習】機器學習常用損失函數(Loss Function)

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

從HTTP/0.9到HTTP/2:HTTP協議的歷史演變和設計思路

eight 結果 key 視頻 this sso單點登陸 會有 研究 patch 本文原作者阮一峰,作者博客:ruanyifeng.com。 1、引言 HTTP 協議是最重要的互聯網基礎協議之一,它從最初的僅為瀏覽網頁的目的進化到現在,已經是短連接通信的事實工業標準,最新版

以太坊代幣合約

規則 sta ini class 2015年 交易 存在 部分 生活 本文首發自 https://www.secpulse.com/archives/73696.html ,轉載請註明出處。 工欲善其事,必先利其器。要想挖掘和分析智能合約的漏洞,你必須要先學會看

什麽是音視頻直播雲服務 ?

type 限制 推流 數據 優缺點 視頻通訊系統 最終 通訊 地理 說到音視頻雲服務,大多數人可能聯想到的是網絡直播應用場景,實際上,硬件對音視頻雲服務的需求也在逐漸提升。而這樣的市場需求也推動了整個行業的發展,目前,阿裏雲、騰訊雲和網易雲等巨頭都已入局,除此之外還有即構科

機器學習大殺器XGBoost原理

結構 近似算法 機器 form con gin fff .cn tran http://blog.itpub.net/31542119/viewspace-2199549/ XGBoost是boosting算法的其中一種。Boosting算法的思想是將許多弱分類器集成在

什麽是Java中的自動拆裝箱

.com 空指針異常 http har 三目運算 容器 ava eof 關系 基本數據類型 基本類型,或者叫做內置類型,是Java中不同於類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Java是一種強類型語言,第一次申明變量必須說明數據類型,第一次變量

高性能網絡編程中的I/O模型

好的 min tcp 輸入 其中 那些事 follow hand 實現 1、前言 隨著互聯網的發展,面對海量用戶高並發業務,傳統的阻塞式的服務端架構模式已經無能為力。本文(和下篇《高性能網絡編程(六):一文讀懂高性能網絡編程中的線程模型》)旨在為大家提供有用的高性能網絡編程

充電寶usb接口電路及制作原理詳細

合規 其它 註意 pan 排列 ron 充電寶 需要 資料 轉自:http://www.elecfans.com/dianlutu/dianyuandianlu/20180511675801.html USB充電器套件,又名MP3/MP4充電器,輸入AC160-240V,5