1

如果我有一個查詢向量A和一個項目向量B,如果有人能夠指導我如何權衡/歸一化向量(同樣的策略),那將是非常棒的。向量A將具有以下組件(property1(二進制),property2(二進制),屬性3(int從0到50範圍內),property4(從範圍內的int(0到10)如何在此用例中使用餘弦相似度?

向量B將具有相同性能

我知道,使用餘弦相似性這兩個向量夾角會給我2個向量之間的距離。我想基於相似性來創建一個建議。

,但我不能就如何明確在這種情況下歸一化屬性和/或向量,因爲它是二進制+ binary_int範圍+ int範圍。另外,如果我想賦予一個屬性比另一個更高的權重,我該怎麼做。我有什麼選擇。

我覺得餘弦相似的例子網上有文件,但在這種情況下,向量A和B都沒有,所以我沒有使用TF-IDF在這種情況下的文件。

請指教,

感謝

回答

1

如果你想使用這兩個向量TD/IDF之間的傳統餘弦相似,那麼每個學期是在你的向量維度。也就是說,你需要形成兩個新的向量A'和B'並執行這兩者之間的相似性。

這些載體具有用於每個術語的尺寸,並且你有65項:

property 1: true and false 
property 2: true and false 
property 3: 0 through 50 
property 4: 0 through 10 

所以A「和B」將是長度65的載體和每個元素將是0或1:

A'(0) = 1 if A(0) = true, and 0 otherwise 
A'(1) = 1 if A(0) = false, and 0 otherwise 
etc. 

很明顯,你可以看到,這是低效的。你實際上並不需要計算A'或B'來與td/idf使用餘弦相似度;你可以假裝你計算它們並在A和B上執行計算。注意長度(A')=長度(B')= sqrt(4),因爲A'和B'中只有4個。

儘管td/idf可能不是你最好的選擇,但如果你想在屬性3和屬性4之間考慮相似性。也就是說,對於td/idf,屬性3的值40與屬性3的值不同爲41並且不同於屬性3的值爲12.然而,41不被認爲比40更遠離「更遠」;他們都是不同的條款。

所以,如果你想要財產3,4納入的距離(1是真的接近2和50遠遠表格2),那麼你必須定義的距離度量。如果你想對屬性3和4的布爾值進行權衡,你還必須定義一個不同的距離度量。如果這些是你想要做的事情,忘記餘弦,只是想出一個價值。

下面是一個例子:

distance = abs(A.property1 - B.property1) * 5 + 
      abs(A.property2 - B.property2) * 5 + 
      abs(A.property3 - B.property3)/51 * 1 + 
      abs(A.property4 - B.property4)/10 * 2 

然後相似性=(最大所有距離的) - 距離;

或者,如果你喜歡,相似度= 1 /距離。

你可以真正定義它,你喜歡什麼。如果你需要的相似度在0到1之間,那麼通過除以最大可能的距離來歸一化。

+0

你好伊恩,非常感謝這樣的信息回覆。我知道上面描述的方法效率非常低,因爲我們將爲簡單整數值創建多維向量。我同意第二種建議的方法來計算距離度量和適當的權衡。我有一些關於它的問題:(a)在上述情況下,我們計算的曼哈頓距離是多少? (b)所以我如果明白這個權利,上面例子中的(5,5,1,2)是給出的屬性的權重(即屬性1 * 2的權重高於3和4?) – Rookie 2014-10-05 18:20:23

+0

(c)屬性3和4的51和10,我們是否規範這些,以便它們的值在0和1之間,不知道這一步.............. – Rookie 2014-10-05 18:24:59

+0

我可以使用最小最大規範化技術描述[這裏](http ://intelligencemining.blogspot.com/2009/07/data-preprocessing-normalization.html)對屬性3和4進行規範化處理,以便在0和1之間有一個值。然後將這些屬性乘以一些權重常量餘弦相似? – Rookie 2014-10-05 20:02:58