之前流水賬似的介紹過一篇機器學習入門的文章,大致介紹了如何學習以及機器學習的入門方法並提供了一些博主自己整理的比較有用的資源。這篇就盡量以白話解釋並介紹機器學習在推薦系統中的實踐以及遇到的問題... 也許很多點在行家的眼裡都是小菜一碟,但是對於剛剛接觸機器學習來說,還有很多未知等待挑戰。所以讀者可以把本篇當做是機器學習的玩具即可,如果文中有任何問題,還請不吝指教。
本篇將會以下面的步驟描述機器學習是如何在實踐中應用的:
翻到最後都是福利啊!
翻到最後都是福利啊!
翻到最後都是福利啊!為什麼需要推薦
這麼神奇的功能是怎麼做的?難道每個**都有專門的狗仔跟蹤每個使用者的需求?這當然是不可能的...
實現推薦的方法有很多,最典型的就是協同過濾。
推薦中的機器學習
協同過濾我就簡單的說一下,因為它現在實在是應用的太廣泛的....
基於物品的協同過濾
舉個例子:
a:前一陣上映的《刺客信條》,我特別喜歡!最近有沒有類似的電影啊?
b:我感覺《加勒比海盜》跟他差不多,都是大片!要不你去看看?
a:好呀!那我去看看!
這就是基於物品的協同過濾,即推薦相似的物品給這個人。
因為a和c物品很相似,因此c使用者喜歡了a物品,那麼推測他也會喜歡c物品,因此把c物品推薦給他。
基於人的協同過濾
舉個例子:
a:最近好無聊,你有沒有什麼喜歡的電影,介紹一下?
b:我喜歡看《神奇女俠》,要不你去看看?
這就是基於人的協同過濾,即會依據相似的人來推薦喜歡的內容。
相似,因此就把c喜歡的物品d推薦給了a。
其實推薦就是這麼簡單,那麼後續我們來看看它的內部原理和實踐吧!
數學知識
上面就是典型的協同過濾的場景,要想弄明白如何基於機器學習實現協同過濾,還需要回顧一下數學的基本知識。
很多人都因為數學而不敢深入學習機器學習,其實大家都是上過高數線代概率論的,所以等真正用它的時候,回去翻翻對應的教材,很快就可以撿起來的。如果沒時間也可以在網上看看別人總結的一些公式,最基礎的應該知道高數中的求導和微分、矩陣的運算、概率論中的一些分布等等。剩下的就針對性的查查書籍即可。
之前看過一篇帖子,還是很基礎的,可以看看:
理論原理
形成上面的矩陣後,就可以進行基於物品或者基於人的推薦了。
因為物品a和物品c很像,因此物品c推薦給還未購買的使用者c
因為使用者a和使用者c比較像,因此會把使用者c購買的物品推給使用者a
如何計算是否相似
我之前總結過相似度的一些演算法:
在協同過濾中,常用的是歐氏距離、夾角余弦、皮爾遜係數以及傑卡德距離,有興趣的可以關注下各個演算法的實現。
降維在真正的電商環境下,往往具有很多的使用者以及很多的商品,每個使用者並不是對所有的商品都有評分的,因此這個矩陣實際上是乙個非常稀疏的矩陣。如果想要在計算機中完全的表示這樣乙個矩陣,它其實根本無法計算,資料量實在太龐大了(除非你的資料量根本沒那麼大,那麼可以直接跳過這一部分了)。
在這種二維矩陣中,最常用的降維手段是svd——矩陣分解。有矩陣基礎的都應該知道,乙個mxn的矩陣可以由乙個mxk以及kxn的兩個矩陣相乘得出。因此降維的手段就是把這個矩陣分解成兩個矩陣相乘。
比如,乙個矩陣形成下面兩個矩陣:
實際在機器學習中,是使用交替最小二乘als來求解兩個矩陣的。再說就遠了,可以簡單的理解成,先隨機乙個mxk的矩陣,然後用als求得另乙個矩陣,然後固定這個求得的矩陣,再反過來求第乙個矩陣,直到找到近似的最優解。這個最後得到的兩個矩陣,實際上相乘後,原來有的值還在,但是原來的沒有的會**出來乙個分值。基於這個分值,就可以做使用者的推薦了。
架構設計
另外,這裡只看到了離線的部分,通常推薦還需要結合實時的部分,比如使用者當前搜尋的條件、地理位置、時間季節等,進行實時的跟蹤推薦。
這樣乙個推薦系統的架構就完成了。
注意的問題
針對第三種情況,可以詳細說下:
等等,很多的場景都需要結合業務來設定,上面說的也不是官方的做法,只是個人的想法而已。
最後就直接基於spark mllib,來實踐一下als的協同過濾吧!
基於spark mllib的協同過濾
**和測試資料都是基於spark官方提供的example包,如果讀者有興趣可以檢視官網文件,各個例子都有描述。
**如下,修改下路徑,就可以直接跑的!
package xingoo.mllib數學篇
1 《高等數學·統計大學 第六版》·上冊,需要看一下導數和微分
2 《高等數學·同濟大學 第六版》·下冊,最小二乘在下冊,也可以看下!
3 《線性代數·同濟大學 第五版》
4 《概率論與數理統計·浙江大學 第四版》
機器學習理論篇
5 《統計分析方法學》,裡面好多重要的概念,比如正則化、標註等等
機器學習spark實戰篇
7 《spark mllib機器學習實戰》,這個同上
8 《spark2.0》
推薦系統 從原理到實踐,還有福利贈送!
之前流水賬似的介紹過一篇機器學習入門的文章,大致介紹了如何學習以及機器學習的入門方法並提供了一些博主自己整理的比較有用的資源。這篇就盡量以白話解釋並介紹機器學習在推薦系統中的實踐以及遇到的問題.也許很多點在行家的眼裡都是小菜一碟,但是對於剛剛接觸機器學習來說,還有很多未知等待挑戰。所以讀者可以把本篇...
Redis,從技術原理到最佳實踐
2018年開年知識盛會 nosql資料庫直播大講堂峰會,將於1月19日 23日 25日與大家見面,阿里雲redis mongodb hbase的15位技術專家 產品專家將給大家帶來深度的技術及產品分享。本次峰會的主要板塊包括1月17日的北京產品發布會 1月19日 23日 25日的系列直播技術大講堂,...
Redis,從技術原理到最佳實踐
2018年開年知識盛會 nosql資料庫直播大講堂峰會,將於1月19日 23日 25日與大家見面,阿里雲redis mongodb hbase的15位技術專家 產品專家將給大家帶來深度的技術及產品分享。本次峰會的主要板塊包括1月17日的北京產品發布會 1月19日 23日 25日的系列直播技術大講堂,...