2016-12-29 121 views
0

我有一個社交網絡圖,人們有朋友聯繫,興趣,他們去的事件。我想建立一個推薦系統,可以向人們推薦潛在的朋友。人們對人推薦系統

我使用的是矩陣(不知道它是否是正確的)休耕:

Interest1 Interest2 Interest3 Event_Type1 Event_Type2 Event_Type3 
u1  1  0   1   3   5   2 
u2  0  0   1   1   0   2 
u3  1  1   0   2   1   7 

正如你所看到的,矩陣是混合數據類型的矩陣。興趣列是二進制數據{0,1},Event_Type列是用戶進入這種事件的次數。

我想在矩陣上應用聚類技術,以便將具有相似興趣和行爲的人羣分組,然後應用更多算法來分析特定組。

我想我不能直接在矩陣上應用k-means或分層聚類,所以我試圖將矩陣轉換成Gower距離矩陣,並在Gower距離矩陣上應用k-medoids算法。但是,我認爲結果是根據相似性將相似度的值分組,而不是基於相似性的人。

我很困惑如何對原始矩陣進行聚類。我也對如何開始建立人員推薦系統感到困惑。

回答

1

集羣不太適合推薦。

集羣c.an非常大。在最壞的情況下,幾乎所有的點都在同一個集羣中。那麼你仍然有同樣的問題,如何選擇用戶推薦。

相反,使用相似性搜索

  1. 建議基於共同利益
  2. 推薦10個most.similar用戶基於共同的朋友
+0

非常感謝您!我發現相同的問題,難以使其趨於一致並確定羣集的數量。我使用BFS來找到共同的朋友和相似度算法(如gower和CF-pearson)來獲得相似度矩陣,但我真的想爲用戶製作一個排名列表。有沒有一種算法可以將這兩種信息結合在一起並給出建議的分數? – whataever

+0

如果你想得到10個結果,那麼沒有什麼*可靠*比每種方法的前5位更好。 –

+0

明白了。謝謝! – whataever

0

有不同的10個最相似的用戶機器學習方法來構建你的朋友推薦系統。

  1. 如果只有特徵數據,你在問題中顯示,你可以使用無監督方法,如相似性搜索,像Anony mentiones。

    1)根據所述特徵,則可以使用Pearson相關係數餘弦相似度,或其它度量來定義用戶的相似性。

    2)然後,您可以使用K-最近鄰居查找與推薦朋友相似的前K個用戶。

  2. 如果你已經有一些友情關係數據,你可以使用監督的方法,這可能會給你更好的結果。根據現有的友誼數據,你可以發現哪些功能更重要,並給予更多的權重。您可以使用MF或其他方法。這是另一項任務!

+0

謝謝!我使用Pearson相關係數和gower距離來計算相似性矩陣。受監督的預測是一個很好的觀點!在未來的計劃中,我們可能會使用此方法來篩選閾值並提供其他算法。我會看看K最近的鄰居。 – whataever

+0

通常你有一些真正的友誼關係,那麼我強烈建議你使用監督的方法。一般來說,這會改善你的結果。 – HenryZhao