探索推薦引擎內部的秘密,第 1 部分: 推薦引擎初探
探索推薦引擎內部的秘密,第 2 部分: 深入推薦引擎相關演算法 - 協同過濾
探索推薦引擎內部的秘密,第 3 部分: 深入推薦引擎相關演算法 - 聚類
推薦,就是把你可能喜歡的商品,推到你的面前。構建乙個推薦系統,就是構建怎樣把商品推到你面前的過程。
常常有人說,推薦就是演算法,從某種角度來說,這未嘗不正確。但在接觸推薦系統之前,我們還是先不研究演算法,一說到演算法,可能就以為非常高深了,也非常唬人,立刻產生一種膜拜之感,也就變得神奇起來了。
對於我們沒有多少推薦理論支撐的project師,進入推薦,還是先求入門。我們不缺實踐,先通過工作中的實踐領會某種推薦方案,再求通過閱讀書籍、學習演算法加深領會和理解,進而通過不同的推薦方案,以及其效果的客觀評估,提高水平和境地。
(1)推薦是乙個總體的計算過程,在編碼中,關於演算法的部分所佔的工作量可能1%都不到;
(2)每一種推薦方案的選擇,都是一種總體的計算過程。
構建乙個千萬pv級別的推薦系統相對easy,一天的日誌只是幾百m,計算過程中的資料,單台機器的記憶體能夠存下,當pv達到幾億幾十億時,就須要進行略微複雜一點的分布式計算了;
推薦的計算方法非常多,怎樣選擇,效果難以預料,僅僅有通過橫向和縱向多做效果分析,才有意義。
隨著理解的加深,境地的提公升,知識的很多其它了解,認知也都會處於不斷的調整中。。。
web訪問日誌、購買、收藏,這些實際是使用者的行為資料;
使用者,這是分析的基礎資料;
商品,這是分析的基礎資料;
怎樣標記同乙個未登陸使用者;怎樣找出未登陸使用者和登陸使用者是用乙個人。
這是非常重要的,這是以後日誌分析計算的基礎。
示比例如以下:
以上web日誌url,95907011.390482691.1402709325.1403851977.1403852394.7 和 95907011.8a8a8aeb385a8c6b013860df24501310 ,使用google analysis的js**記錄的,分別用來標記未登入使用者的id和登入使用者的id。
對於google analysis的js**的用途,這裡衍生一下,實際上,全然能夠基於它建立第三方的流量分析系統,流程例如以下:
(1)須要統計流量的站點進行查碼,用來記錄cookie等,並觸發到server端的請求(能夠是去請求乙個不存在的)
(2)當server端接收到請求後,會把head裡面的站點訪問流量相關資訊進行記錄,server端的程式是乙個簡單的servlet就可以。
依據使用者行為資料,分析出使用者和商品的關係;使用者<-->瀏覽、使用者<-->購買、使用者<-->收藏等。
依據第一步計算的資料,分析中經常使用的推薦結果,比方依據瀏覽資料,計算出「看了又看」,依據購買資料,計算出「買了又買」等。
演算法,是廣義的,數學公式;規則,是小眾的,公司自定義的,複雜自己場景的業務規則,在計算過程的第二步,計算終於的推薦結果時,大部分使用的都是自行定義的業務規則。
能夠就依據這個推薦型別的基本含義,乙個商品 ---> 看了這個商品的非常多人,又看了 ---> 非常多的商品,這就是推薦結果了,可是這個推薦結果有非常非常多,怎樣推薦呢?
能夠推薦購買次數終於的,推薦最新的,推薦兩個商品的view人群最相似的......
這就沒有什麼了,都是通用的。
基於業務的,推薦效果的評價體系;
基於技術的,大資料量時的分布式計算
最新源**:git clone [email protected]:pumadong/cl-recommend.git 。
大資料量計算、資料流實時計算、使用者行為精準分析、使用者聚簇細化、個性化推薦等。
可能更高階別的搜尋推薦,還是須要搜尋推薦理論的支撐,不同於實現層面的東西,這個可能存在境地層次方面的不同,認知了才知道。。。
對於日誌的分析,能夠統計站點的流量,可是要過濾掉對js/css/img等靜態資源的url,僅僅保留真實有效的訪問。
關於流量統計,也有非常多採用插碼的方式,插碼這樣的方式,業界的**標準是google的ga,插碼的優點是能夠統計記錄很多其它資訊(超出日誌),能夠自己定義非常多事件,收集很多其它資訊。
比較日誌分析和插碼兩種方式,日誌分析是有訪問就記錄日誌,此時頁面可能沒展示完畢訪問者就關閉了;插碼這樣的方式,僅僅有執行到插入的js**的時候,才會記錄流星;也就是前一種強調來過,後一種強調有效訪問。
日誌分析這樣的流量分析方式,須要過濾掉爬蟲的ip位址;而插碼就不須要,由於爬蟲僅僅會爬頁面內容,並不會執行js,js的執行實際是瀏覽器的js引擎幫我們做的。
另外,對於第三方的流量分析,則必須是插碼,不可能使用日誌分析。
揭開UML與物件導向的神奇面紗
談到uml 第乙個繞不開的話題就是物件導向。物件導向,現在在我們軟體行業,是如此洋氣的乙個詞。在我們看來面向過程和物件導向是兩種軟體技術,物件導向就是繼承,封裝,多型,復用等一些特性不同於面向過程的結構化程式設計,dfd圖等。事實上,現在看來,以上所有的技術特性都是我們用來描述這個世界時所採用的工具...
推薦系統 內容推薦
使用者畫像 user profile 大體分為給機器看的和給人看的,其中給人看的一般是運營,產品等用的。我們這裡只關注給機器看的。我們知道要對使用者和物品進行計算,是需要對資料進行計算的,因此我們首先就要將使用者和物品都向量化,使用者向量化後的結果,就是user profile,俗稱 使用者畫像 所...
推薦系統實踐 好的推薦系統
一 好的推薦系統 1.什麼是推薦系統 從某種意義上說,推薦系統和搜尋引擎對於用語來說是兩個互補的工具。搜尋引擎滿足了使用者有明確目的時的主動查詢需求,而推薦系統能夠在使用者沒有明確目的的時候幫助他們發現感興趣的內容。分為社會化推薦,基於內容的推薦和基於協同過濾的推薦。目前廣告投放的技術主要分三種 上...