8

我正在考慮編寫一個應用程序,根據家庭成員喜歡的類別對HTPC中的電影進行分類。基於其他用戶查找用戶想要的內容的算法喜歡

我不知道統計數字或人工智能,但東西here看起來非常多汁。我不知道從哪裏開始做。

這是我想要完成的任務:

  1. 從每個用戶撰寫的一組樣本的喜歡,評定每個樣本單獨的屬性。例如,用戶可能喜歡西方電影很多,所以西方流派會爲該用戶帶來更多的權重(以及其他屬性,如演員,導演等)。

  2. 用戶可以根據其他用戶的喜好獲取建議。例如,如果用戶A和用戶B像斯皮爾伯格(用戶之間的連接)和用戶B喜歡蝙蝠俠開始,但用戶A討厭凱蒂赫爾姆斯,則相應地爲用戶A權衡電影(再次,例如,可以分別爲每個屬性用戶A不太喜歡動作片,因此將評分降低一點,因爲凱蒂赫爾姆斯不是主要明星,所以不要像其他屬性那樣考慮這一點)。

基本上,用戶A類似組從用戶B組比較,並拿出一個等級用戶A

我有關於如何實現這是一種拙劣的想法,但我某些明亮的頭腦已經想到一個更好的解決方案了,所以......有什麼建議?實際上,在經過快速研究之後,似乎貝葉斯過濾器會起作用。如果是這樣,這是更好的方法嗎?它會像「正常化」電影數據一樣簡單,爲每個用戶訓練一個分類器,然後對每部電影進行分類?

如果你的建議包括一些大腦融化的概念(我沒有在這些主題中體驗過,特別是在AI中),如果你還包括一些基礎知識的列表,東東。

謝謝!

+1

Duplicate http://stackoverflow.com/questions/626220/how-do-recommendation-systems-work – cletus 2009-10-21 17:30:27

+0

感謝您的參考。根據我的例子,我正在尋找更具體的答案。儘管閱讀所有關於推薦系統的內容我都會很有趣,但我寧願先被引導到正確的方向:) – Ivan 2009-10-21 17:47:12

回答

2

有跡象表明,這是很好的一些算法的一些有趣的文章:

ARTMAP:羣體通過對彼此的概率(這不是很快,但是它是你的問題最好的事情IMO)

ARTMAP擁有一組共同的屬性,並通過百分比確定相似性的可能性。 ARTMAP

KMEANS:此方式隔開出通過距離,它們彼此 KMeans: Wikipedia

PCA的載體:將單獨的所有值的平均值從varing比特。這是你在計算機視覺中用來做人臉檢測和背景扣除的。 PCA

+0

謝謝。在閱讀ARTMAP時,它似乎是一個很好的候選人。由於我比科學論文更好地理解代碼,因此我找到了這個http://users.visualserver.org/xhudik/art/doc/index.html並生成了這個http:// stackoverflow。com/questions/1609296/artmap-adaptive-resonance-theory-implement -atio-basics ... KMeans看起來也很有趣,但是每次只有一個:) – Ivan 2009-10-22 19:00:04

+0

這本書有一個非常簡單的介紹教程... http:// www .amazon.com/AI-Application-Programming-Tim-Jones/dp/1584502789然而,IRC中的概率Fn有一個錯誤。 – monksy 2009-10-22 19:54:34

4
+0

這裏有一些非常有趣的東西,以及一些我將遵循的閱讀建議。非常感謝! – Ivan 2009-10-22 19:02:16

2

K最近鄰算法可能就在你的衚衕。

+0

這個看起來很簡單,我可以嘗試和實施自己。一個很好的學習資源,謝謝! – Ivan 2009-10-22 19:09:30

4

這與OP想要構建推薦系統的this question類似。簡而言之,我們會獲得一組訓練數據,其中包括用戶對電影的評分(例如1-5星級評分)以及每部電影(年,流派,演員等)的一組屬性。我們希望構建推薦人,以便爲未看過的電影輸出可能的評分。所以INPT數據的樣子:

user movie year genre ... | rating 
--------------------------------------------- 
    1 1  2006 action   | 5 
    3 2  2008 drama   | 3.5 
    ... 

和未分級的電影X:

10 20  2009 drama ? 

我們要預測評級。對所有看不見的電影進行這樣的處理,然後按照預測的電影分級排序並輸出排名前10的電影給你一個推薦系統。

最簡單的方法是使用k-nearest neighbor算法。在評級電影中,搜索與電影X「最接近」的電影,並結合它們的評級來產生預測。 這種方法的優點是非常簡單,易於從頭開始實施。

其他更復雜的方法存在。例如,您可以構建一個decision tree,在訓練數據上擬合一組規則。您還可以使用Bayesian networks,artificial neural networks,support vector machines等等......對於沒有適當背景的人來說,瀏覽這些內容都不會很容易。 但我希望你會使用外部工具/庫。現在你似乎對貝葉斯網絡很熟悉,所以一個簡單樸素的貝葉斯網絡實際上可能非常強大。一個優點是它允許在缺失數據下進行預測。

主要想法會有點相同;獲取您擁有的輸入數據,訓練一個模型,然後用它來預測新實例的類別。

如果你要玩的簡單直觀的包,它無需編程不同的算法,我建議你看一看Weka(我的第一選擇),Orange,或RapidMiner。最困難的部分是將數據集準備成所需的格式。剩下的是選擇什麼樣的算法,並把它當成容易(所有點擊幾下!)

我猜有人不希望進入太多細節,我會建議與近鄰法會,因爲它是直觀並且易於實施。仍然可以使用Weka(或其他工具之一)的選項值得研究。

+0

太棒了,謝謝。我將在本週末潛入Weka,看看我想出了什麼。 – Ivan 2009-10-22 19:38:07