[英]Pairwise Distance calculation (multidimentional matrix) for features similarity
好的,這是matlab中的公式:
function D = dumDistance(X,Y)
n1 = size(X,2);
n2 = size(Y,2);
D = zeros(n1,n2);
for i = 1:n1
for j = 1:n2
D(i,j) = sum((X(:,i)-Y(:,j)).^2);
end
end
這里的功勞(我知道這不是一個快速的實現,而是出於基本算法的考慮)。
現在是我的理解問題;
假設我們有一個矩陣dictionary=140x100
單詞。 矩陣page=140x40
字。 每列代表140維空間中的一個單詞。
現在,如果我使用dumDistance(page,dictionairy)
,它將返回一個40x100
的距離矩陣。
我要實現的是找到page
矩陣的每個單詞與dictionary
矩陣有多近,以便用具有直方圖的字典表示頁面。
我知道,如果我采用min(40x100),則將得到一個1x100矩陣,該矩陣的最小值表示我的直方圖。
我在這里真正無法理解的是這個40x100矩陣。 這個矩陣仍然代表什么數據? 我在腦海中無法想象這一點。
在我開始之前的小評論:
您應該真正使用pdist2
代替。 這要快得多,您將得到與dumDistance
相同的結果。 換句話說,您可以這樣稱呼它:
D = pdist2(page.', dictionary.');
您需要轉置page
和dictionary
因為pdist2
假設每一行都是一個觀察值,而每一列都對應一個變量/功能。 您的數據結構使得每一列都是一個觀察值。 這將返回一個40 x 100
矩陣,就像您在dumDistance
看到的dumDistance
。 但是, pdist2
不for
loops 。
現在到您的問題:
D(i,j)
表示歐氏字之間的平方距離i
從你的頁面和文字j
從你的字典。 您的頁面上有40個單詞,而字典中有100個單詞。 每個單詞都由140維特征向量表示,因此D
的行索引page
的單詞,而D
的列索引dictionary
。
我這里所說的“距離”是指特征空間。 頁面和詞典中的每個單詞都表示為140個長度的向量。 D
每個條目(i,j)
都從page
i 個向量中提取page
,第j 個向量則從dictionary
,它們各自的相應分量相減,平方后求和。 然后將此輸出存儲到D(i,j)
。 這給你的字間的差異性i
從你的page
和文字j
從你dictionary
在D(i,j)
值越高,兩個單詞越相似 。
次要說明: pdist2
計算歐幾里得距離,而dumDistance
計算歐幾里得平方距離。 如果您想擁有與dumDistance
相同的dumDistance
,只需將dumDistance
中D
每個元素平方pdist2
。 換句話說,只需計算D.^2
。
希望這可以幫助。 祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.