計算公式
餘弦定理是中學時代比較常見的數學公式之一。從幾何學的角度上,cosθ表示了兩個向量的比值。實際上可以用來對向量的「相似度」進行描述。
以下展現了二維、三維空間(平面、立體幾何)中兩個向量(夾角θ)的cosθ計算過程。 co
sθ=a
2+b2
−c22
ab對於二維向量有: co
sθ=x
1x2+
y1y2
(x21
+y21
)(x2
2+y2
2)−−
−−−−
−−−−
−−−−
√ 對於三維向量有: co
sθ=x
1x2+
y1y2
+z1z
2(x2
1+y2
1+z2
1)(x
22+y
22+z
22)−
−−−−
−−−−
−−−−
−−−−
−−−−
−√由上可知,比較兩個n維向量的相似度可轉換為求這兩個向量的cosθ。
若兩個向量完全一致,則cosθ結果為1;若高度相似,則結果接近於1;若結果越小,則越不相關。
**實現
如下為採用python實現向量空間並計算cos(相關性)值的**樣例。
class
vectorcompare:
# 計算向量大小
defmagnitude
(self,concordance):
total = 0
for word, count in concordance.iteritems():
total += count ** 2
return math.sqrt(total)
# 計算向量之間的 cos 值
defrelation
(self, concord1, concord2):
# relevance = 0
topvalue = 0
for word, count in concord1.iteritems():
if concord2.has_key(word):
topvalue += count * concord2[word]
return topvalue / (self.magnitude(concord1) * self.magnitude(concord2))
使用「向量空間搜尋引擎」來做相似度識別,具有很多優點:
- 不需要大量的訓練迭代
- 不會訓練過度
- 可以隨時加入/移除錯誤的資料檢視效果,對於無法識別的東西只要加入到搜尋引擎中,馬上就能識別了
- 很容易理解和編寫成**
- 提供分級結果,可以檢視最接近的多個匹配
其缺點是,分類的速度比神經網路慢很多,它不能找到自己的方法解決問題等等。
計算兩則新聞的相似度
計算的相似性
一般來說,首先想辦法將兩個向量化,然後進行比較。在向量化之前,需要對影象進行處理,例如:抽取固定顏色、位置的畫素,轉換為位圖格式(黑白兩色)。
如下給出了乙個將向量化的方法示例:
def
buildvector
(im):
d = {}
cnt = 0
for i in im.getdata():
d[cnt] = i
cnt += 1
return d
temp = buildvector(image.open("./.../%s" %(img_file)))
文字相似度演算法 餘弦定理
最近由於工作專案,需要判斷兩個txt文字是否相似,於是開始在網上找資料研究,因為在程式中會把文字轉換成string再做比較,所以最開始找到了這篇關於 距離編輯演算法 blog寫的非常好,受益匪淺。於是我決定把它用到專案中,來判斷兩個文字的相似度。但後來實際操作發現有一些問題 直接說就是查詢一本書中的...
統計 相關性與自相關性
相關係數度量指的是兩個不同事件彼此之間的相互影響程度 而自相關係數度量的是同一事件在兩個不同時期之間的相關程度,形象的講就是度量自己過去的行為對自己現在的影響。自相關,也稱 序列相關。是乙個訊號於其自身在不同時間點的互相關。非正式地來說,它就是兩次觀察之間的相似度對它們之間的時間差的函式。它是找出重...
關於數學中的正弦定理和餘弦定理的相關資訊的概述
以下內容都是從網上複製下來,主要是為了求相關幾何中的面積。在 abc中,角a b c所對的邊長分別為a b c,三角形外接圓的半徑為r。則有 即,在乙個三角形中,各邊和它所對角的正弦之比相等,該比值等於該三角形外接圓的直徑長度。定理變形 在解三角形中,有以下的應用領域 1 已知三角形的兩角與一邊,解...