這裡用Numpy實現,設
import numpy as np
1.歐氏距離(Euclidean distance)歐幾裡得度量(euclidean metric)(也稱歐氏距離)是一個通常採用的距離定義,指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離。
def euclidean(x, y):
return np.sqrt(np.sum((x - y)**2))
2.曼哈頓距離(Manhattan distance)想像你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。
def manhattan(x, y):
return np.sum(np.abs(x - y))
3.切比雪夫距離(Chebyshev distance)在數學中,切比雪夫距離(Chebyshev distance)或是L∞度量,是向量空間中的一種度量,二個點之間的距離定義是其各坐標數值差絕對值的最大值。以數學的觀點來看,切比雪夫距離是由一致範數(uniform norm)(或稱為上確界範數)所衍生的度量,也是超凸度量(injective metric space)的一種。
def chebyshev(x, y):
return np.max(np.abs(x - y))
4.閔可夫斯基距離(Minkowski distance)閔氏空間指狹義相對論中由一個時間維和三個空間維組成的時空,為俄裔德國數學家閔可夫斯基(H.Minkowski,1864-1909)最先表述。他的平坦空間(即假設沒有重力,曲率為零的空間)的概念以及表示為特殊距離量的幾何學是與狹義相對論的要求相一致的。閔可夫斯基空間不同於牛頓力學的平坦空間。
def minkowski(x, y, p):
return np.sum(np.abs(x - y) ** p) ** (1 / p)
5.漢明距離(Hamming distance)漢明距離是使用在數據傳輸差錯控制編碼裡面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以
def hamming(x, y):
return np.sum(x != y) / len(x)
6.二分類損失函數在二分類的監督學習中,支持向量機、邏輯斯諦回歸與最大熵模型、提升方法各自使用合頁損失函數、邏輯斯諦損失函數、指數損失函數,分別寫為:
這 3 種損失函數都是 0-1 損失函數的上界,具有相似的形狀。(見下圖,由代碼生成)
import numpy as np
import math
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(10,8))
x = np.linspace(start=-1, stop=2, num=1001, dtype=np.float)
logi = np.log(1 + np.exp(-x)) / math.log(2)
boost = np.exp(-x)
y_01 = x < 0
y_hinge = 1.0 - x
y_hinge[y_hinge < 0] = 0
plt.plot(x, y_01, 'g-', mec='k', label='(0/1損失)0/1 Loss', lw=2)
plt.plot(x, y_hinge, 'b-', mec='k', label='(合頁損失)Hinge Loss', lw=2)
plt.plot(x, boost, 'm--', mec='k', label='(指數損失)Adaboost Loss', lw=2)
plt.plot(x, logi, 'r-', mec='k', label='(邏輯斯諦損失)Logistic Loss', lw=2)
plt.grid(True, ls='--')
plt.legend(loc='upper right',fontsize=15)
plt.xlabel('函數間隔:$yf(x)$',fontsize=20)
plt.title('損失函數',fontsize=20)
plt.show()總結本文用Python實現了常見的幾種距離度量、損失函數,歡迎收藏!
本站qq群1003271085,加入微信群請回復「加群」
獲取一折本站知識星球優惠券,複製連結直接打開:
https://t.zsxq.com/yFQV7am
喜歡文章,點個在看