如何使用SparkALS實現協同過濾

2021-03-03 21:37:02 字數 2444 閱讀 8813

1樓:匿名使用者

1.背景

協同過濾(collaborative filtering)是推薦系統常用的一種方法。cf的主要思想就是找出物品相似度高的歸為一類進行推薦。cf又分為icf和ucf。

icf指的是item collaborative filtering,是將商品進行分析推薦。同理ucf的u指的是user,他是找出知趣相似的人,進行推薦。通常來講icf的準確率可能會高一些,通過這次參加天貓大資料比賽,我覺得只有在資料量非常龐大的時候才適合用cf,如果資料量很小,cf的準確率會非常可憐。

博主在比賽s1階段,大概只有幾萬條資料的時候,嘗試了icf,準確率不到百分之一。。。。。

2.常用方法

cf的常用方法有三種,分別是歐式距離法、皮爾遜相關係數法、餘弦相似度法。

測試矩陣,行表示三名使用者,列表示三個品牌,對品牌的喜愛度按照1~5增加。

(1)歐氏距離法

就是計算每兩個點的距離,比如nike和sony的相似度。數值越小,表示相似的越高。

[python] view plain copy print?在code上檢視**片派生到我的**片

def osdistance(vector1, vector2):

sqdiffvector = vector1-vector2

sqdiffvector=sqdiffvector**2

sqdistances = sqdiffvector.sum()

distance = sqdistances**0.5

return distance

(2)皮爾遜相關係數

兩個變數之間的相關係數越高,從一個變數去**另一個變數的精確度就越高,這是因為相關係數越高,就意味著這兩個變數的共變部分越多,所以從其中一個變數的變化就可越多地獲知另一個變數的變化。如果兩個變數之間的相關係數為1或-1,那麼你完全可由變數x去獲知變數y的值。

· 當相關係數為0時,x和y兩變數無關係。

· 當x的值增大,y也增大,正相關關係,相關係數在0.00與1.00之間

· 當x的值減小,y也減小,正相關關係,相關係數在0.00與1.00之間

· 當x的值增大,y減小,負相關關係,相關係數在-1.00與0.00之間

當x的值減小,y增大,負相關關係,相關係數在-1.00與0.00之間

相關係數的絕對值越大,相關性越強,相關係數越接近於1和-1,相關度越強,相關係數越接近於0,相關度越弱。

clip_image003

在python中用函式corrcoef實現,具體方法見

(3)餘弦相似度

通過測量兩個向量內積空間的夾角的餘弦值來度量它們之間的相似性。0度角的餘弦值是1,而其他任何角度的

餘弦值都不大於1;並且其最小值是-1。從而兩個向量之間的角度的餘弦值確定兩個向量是否大致指向相同的方向。兩

個向量有相同的指向時,餘弦相似度的值為1;兩個向量夾角為90°時,餘弦相似度的值為0;兩個向量指向完全相

反的方向時,餘弦相似度的值為-1。在比較過程中,向量的規模大小不予考慮,僅僅考慮到向量的指向方向。餘弦相

似度通常用於兩個向量的夾角小於90°之內,因此餘弦相似度的值為0到1之間。

[python] view plain copy print?在code上檢視**片派生到我的**片

def cossim(ina,inb):

num = float(ina.t*inb)

denom = la.norm(ina)*la.norm(inb)

return 0.5+0.5*(num/denom)

spark 推薦演算法-協同過濾-java的語句意思

2樓:犀利de大雄

協同過濾(collaborative filtering)的基本概念就是把這種方式變成自動化的流程

協同過濾主要是以屬性或興趣相近的使用者經驗與建議作為提供個性化的基礎。透過協同過濾,有助於蒐集具有類似偏好或屬性的使用者,並將其意見提供給同一叢集中的使用者作為參考,以滿足人們通常在決策之前參考他人意見的心態。

本人認為,協同過濾技術應包括如下幾方面:(1)一種比對和蒐集每個使用者興趣偏好的過程;(2)它需要許多使用者的資訊去**個人的興趣偏好;(3)通過對使用者之間興趣偏好相關程度的統計去發展建議那些有相同興趣偏好的使用者。

請問spark mllib使用als做cf訓練,如何確定儲存模型parquet檔案的數量? 10

3樓:匿名使用者

在ml中常見的優化演算法基本都是:

sgd 這種對每個單變數進行同步更新

als(交替最小二乘)/**o(序列最小優化)這種交替(固定一個單變數,優化另一個單變數)思路。如果你熟悉**o,那麼als就也可以理解了。

其它(希望更多的人補充)

如何使用Tensorflow實現快速風格遷移

那有沒有一種方法,可以不把生成 當做一個 訓練 的過程,而當成一個 執行 的過程呢?答案是肯定的。可看快速風格遷移 fast neural style transfer perceptual losses for real time style transfer and super resoluti...

運用經濟生活的知識,談談應該如何實現區域協調發展

貫徹落實科學發展觀,經濟結構的戰略性調整,東部地區率先發展,中部崛起,西部大開發,振興東北老工業基地的戰略 運用經濟生活知識談談促進民間投資的意義 促進民間投資,有利於促進就業,轉變經濟發展方式 調整經濟結構 適應經濟新常態,培育新增長點。有利於完善我國所有制結構,促進各種所有制經濟平等競爭 共同發...

如何使用MFC程式設計實現找到視窗以及獲取視窗上的按鈕

有安全保護,你確定能像普通程式視窗一樣獲取?另外這個是用的系統標準控制元件嗎?不是directdraw出來的,wpf之類弄出來的?要不就是findwindowex,getwindow getnextwindow 自己先測試普通程式視窗按鈕 用microsoft spy 看看視窗類及各種ooxx 你可...