2011-11-20 68 views
5

Im相當多的新的數據挖掘和推薦系統,現在正試圖建立用戶某種REC系統具有這樣的參數:結合不同的相似之處建立一個最終相​​似

  • 城市
  • 教育
  • interest

爲了計算它們之間的相似度,我們要應用餘弦相似度和離散相似度。 例如:

  • 城市:如果x = y,則d(X,Y)= 0。否則,d(X,Y)= 1
  • 教育:在這裏,我將使用餘弦相似性詞語出現在部門或學士學位的名稱
  • 興趣:會有硬編碼感興趣的用戶數可以選擇和餘弦相似度將基於兩個向量這樣計算:

1 0 0 1 0 0 ... n 
1 1 1 0 1 0 ... n 

其中1表示存在的利益和n是所有利益的總數。

我的問題是: 如何以適當的順序組合這3種相似性?我的意思是總結他們聽起來不是很聰明,是嗎?我也想聽聽關於我的「新手相似系統」的評論,哈哈。

+0

有很多方法,你到目前爲止閱讀過很多文獻嗎? –

回答

3

有沒有難以及快速的答案,因爲這裏的答案很大程度上取決於您的輸入和問題域。機器學習的很多工作都是準備你的輸入的藝術(而不是科學),出於這個原因。我可以給你一些一般想法來思考。你有兩個問題:從每個項目中做出有意義的相似性,然後將它們合併。

這個城市的相似度聽起來很合理,但實際上取決於你的域名。在同一個城市中是否意味着一切,而在鄰近城市中意味着什麼呢?例如,在同樣規模的城市中是否可以算作任何東西?在相同的狀態?如果他們做你的相似性應該反映。

教育:我理解你爲什麼會使用餘弦相似度,但這不會解決真正的問題,這是處理不同的令牌,意味着同樣的事情。你需要「eng」和「engineering」匹配,「ba」和「bachelors」等類似的東西。一旦你準備這些令牌,它可能會給出好的結果。興趣:我不認爲餘弦在這裏是最好的選擇,嘗試一個簡單的tanimoto係數相似性(只是交叉大小的交集)。

你不能總結它們,因爲我假設你仍然想要一個範圍[0,1]的值。你可以平均他們。這就使得這些假設都可以直接比較,如果你願意的話,它們是相同的「單位」。他們不在這裏;例如它不像是概率。

它可能仍然可以在實踐中確定它們的平均值,或許還有權值。例如,在這裏同一座城市與擁有完全相同的利益一樣重要。這是真的還是應該不那麼重要?

你可以嘗試和測試不同的變化和權重,希望你有一些測試歷史數據的方案。我會向您指出我們的項目Mahout,因爲它有推薦和評估的完整框架。

然而,所有這些解決方案都是拙劣的和啓發式的。我想你可能想要採用更正式的方法來進行特徵編碼和相似之處。如果你願意購買一本書並且喜歡Mahout,Mahout in Action在關於如何選擇和編碼特徵的聚類章節中有很好的覆蓋面,然後如何在它們之間做出一個相似性。

+0

謝謝!對一般想法的真實覆蓋範圍有很大幫助。 我會考慮更多關於位置相似性的內容,並且我完全理解你對教育單詞匹配的想法,我希望我將來也能夠這樣做:) – Leg0

+0

那麼,如何推薦我來平均所有這些相似之處?例如,如果它們的重要性按降序排列,我只是無法想象它。 – Leg0

+0

沒有訂購的想法;你可以根據你構成的權重計算相似度的加權平均值。 –

0

這是機器學習中的常用技巧。

城市:如果x = y,則d(X,Y)= 0。否則,d(X,Y)= 1。

我認爲這意味着你用一對的-K編碼。那很好。

教育:在這裏,我將用餘弦相似性的話出現在部門或學士學位的名稱

你也可以使用一個編碼這裏,產生的載體之一的-K大小| V |其中V是詞彙表,即訓練數據中的所有單詞。

如果您現在對興趣數進行歸一化,使其始終位於[0,1]範圍內,則可以在最終向量之間使用普通的L1(曼哈頓)或L2(歐幾里德)距離度量。後者對應於信息檢索的餘弦相似性度量。

試用L1和L2來決定哪個最好。

+0

謝謝,但並沒有真正得到「one-of-K coding」短語 – Leg0

+0

@ Leg0:在評論框中解釋有點困難。看看[我的這個問題](http://stackoverflow.com/questions/8020403/1-of-k-coding-in-octave)爲例。 –