2010-05-08 124 views
19

我想知道什麼算法將是巧妙利用了標記驅動的電子商務環境:基於標籤/關鍵字推薦

  • 每個項目都有幾個標籤。 IE:

    項目名稱: 「Metallica的 - 黑色專輯CD」,標籤: 「METALLICA」, 「黑專輯」, 「搖滾」, 「音樂」

  • 每個用戶都有幾個標籤和朋友(其他用戶)綁定到 他們。 IE:

    用戶名: 「testguy」 興趣: 「蟒蛇」, 「搖滾」, 「金屬」, 「計算機科學」 好友: 「testguy2」, 「testguy3」

我需要通過檢查他們的興趣標籤並以複雜的方式生成建議來爲這些用戶生成推薦。

思路:

  • 的混合推薦算法可以被用作每個用戶具有朋友(基於協作+上下文建議混合物)。
  • 也許使用用戶標籤,可以找到類似的用戶(同齡人)來生成推薦。

  • 也許通過標籤直接匹配用戶和項目之間的標籤。

任何建議是值得歡迎的。任何基於python的庫也是受歡迎的,因爲我將在python語言上做這個實驗性引擎。

+5

確切的複製:http://stackoverflow.com/questions/2704845/python-recommendation-engine – msw 2010-05-08 13:54:33

+3

雖然是一個更好的問題。 – whybird 2010-05-12 00:35:51

+0

投票關閉太寬/工具rec。 – 2016-05-06 07:23:39

回答

18

1)加重你的標籤。

標籤分爲幾個感興趣的羣體:

  • 我的標籤中沒有一個我的朋友分享
  • 標籤了一些我的朋友分享,但我這樣做,是不是共享
  • 我的標籤由我的一些朋友。

(有時你可能要考慮朋友-的-A-朋友標籤太多,但在我的經驗的努力一直沒有值得。情況因人而異。)

識別所有標籤的人, /或該人的朋友有興趣,併爲這個人的標籤附加一個權重。對於標籤重量一個簡單的公式可能是

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends) 

注幻數2,這使得你自己的意見身價高達您所有的朋友們放在一起的兩倍。隨意調整:-)

2)重量的物品

對於具有任何在列表中的標籤的每個項目,只是添加了所有變量的加權值的。更高的價值=更多的興趣。

3)應用一個閾值。

最簡單的方法是向用戶顯示頂部n結果。

更復雜的系統也應用反標籤(即不感興趣的主題)並做很多其他事情,但我發現這個簡單的公式有效和快速。

+1

非常感謝你的回答!我對這個公式有點困惑:tag_is_in_my_list究竟意味着什麼?如果它的某種二進制爲1或0?乾杯 – Hellnar 2010-05-12 11:15:53

+2

是的,二進制1或0. – whybird 2010-05-12 23:22:36

+0

在此 – user962206 2013-04-30 12:16:03

4

如果可以,請通過Toby Segaran找到O'Reilly編程集體智慧的副本。這裏有一個模型解決方案來解決這個問題(有很多真的很棒的其他東西)。

0

您的問題與產品推薦引擎類似,如亞馬遜的宣傳網站。這些使用稱爲association rules的學習算法,其基本上基於用戶和產品之間的共同特徵Z建立用戶X購買產品Y的條件概率。許多開源工具包實現關聯規則,例如OrangeWeka

0

您可以使用Drools的Python Semantic module在python腳本語言中指定您的規則。您可以使用Drools輕鬆完成此操作。這是一個了不起的規則引擎,我們用它來解決一些推薦引擎。

0

我會使用限制玻爾茲曼機器。解決相似但不完全相同標籤的問題。

+0

的任何示例/示例實現你可以充實一點這個答案,就像HOME你會使用一個RBM? – dwanderson 2014-03-12 15:33:31

+0

@dwanderson您是否閱讀過關於RBM的WP頁面? – isomorphismes 2014-03-12 19:34:18