Link Search Menu Expand Document

Евклидовы пространства

Нормы векторов

Единчная норма

\[\left\|x\right\| _{1} =\sum\limits_{i=1}^{n}{\left|x_{i} \right| }\]

“Квадратическая” или “евклидова” норма

длина вектора

\[\left\|x\right\| _{2} =\sqrt{\sum\limits_{i=1}^{n}{x_{i}^{2} } }\]

Бесконечня норма

\[\left\|x\right\| _{\infty } = \underset{i=1,...,n}{\max} \left|x_{i} \right|\]
A = np.array([1,2])
print(np.linalg.norm(A, ord=1))  # 3.0
print(np.linalg.norm(A, ord=2))  # 2.23606797749979
print(np.linalg.norm(A, ord=np.inf))  # 2.0

Меры сходства векторов

Kernel-similarity

sim(x,y)=ker(dist(x,y)) ker(d)=exp(−k*d), здесь k - коэффициент плавности ядра

user = np.array([10,0,0,20,0,5])
user_1 = np.array([20,3,0,35,0,12])
user_2 = np.array([9,0,3,15,0,2])
user_3 = np.array([2,5,3,0,10,0])

dist_1 = np.linalg.norm(user - user_1, ord=2)
dist_2 = np.linalg.norm(user - user_2, ord=2)
dist_3 = np.linalg.norm(user - user_3, ord=2)

# с использованием ядра получаем такие оценки близости
k = 0.05
ker = lambda d: np.exp(-k * d)

round(ker(dist_1), 3), round(ker(dist_2), 3), round(ker(dist_3), 3)  # (0.376, 0.718, 0.287)

Cosine-similarity

Для оценки близости используем косинус угла между векторами

cos_1 = user @ user_1 / np.linalg.norm(user, ord=2) / np.linalg.norm(user_1, ord=2)
cos_2 = user @ user_2 / np.linalg.norm(user, ord=2) / np.linalg.norm(user_2, ord=2)
cos_3 = user @ user_3 / np.linalg.norm(user, ord=2) / np.linalg.norm(user_3, ord=2)
round(cos_1, 3), round(cos_2, 3), round(cos_3, 3)  # (0.994, 0.977, 0.074)

Также этот способ есть в библиотеке sklearn

from sklearn.metrics.pairwise import cosine_similarity as cosine_sim

users = np.vstack([user, user_1, user_2, user_3])
print(f'users =\n {users}')

Smat = cosine_sim(users)
print(f'users_similarity =\n {np.round(Smat, 3)}')

# users =
#  [[10  0  0 20  0  5]
#  [20  3  0 35  0 12]
#  [ 9  0  3 15  0  2]
#  [ 2  5  3  0 10  0]]

# users_similarity =
#  [[1.    0.994 0.977 0.074]
#  [0.994 1.    0.968 0.111]
#  [0.977 0.968 1.    0.129]
#  [0.074 0.111 0.129 1.   ]]