🔵Открытые шары и окрестности
По сути это означает слово похожий. Если x - это эмбеддинг объекта, то окрестность x - это шар радиуса эпсилон вокруг него в пространстве признаков: всё, что внутри, модель или аналитик считает тем же.
import numpy as np
def in_neighborhood(x, center, eps):
return np.linalg.norm(x - center) < eps
embeddings = np.array([[2.01, 0.5], [2.05, 0.6], [1.98, 0.4], [5.30, 3.1], [1.70, 0.9]])
center = np.array([2.0, 0.5])
eps = 0.3
mask = np.array([in_neighborhood(e, center, eps) for e in embeddings])
print(embeddings[mask])
Открытое множество - объединение таких окрестностей. На практике это зона точной классификации, тт есть область признакового пространства, где модель предсказывает класс с высокой вероятностью и не колеблется. Граница туда не входит, так как на ней predict_proba равна ровно 0.5, и это чувствительная к шуму зона.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=2, n_redundant=0, random_state=0)
clf = LogisticRegression().fit(X, y)
def confident_region(x, clf, margin=0.1):
proba = clf.predict_proba([x])[0]
return abs(proba[1] - 0.5) > margin
print(confident_region(X[0], clf))
🔵Топологическое пространство (интуитивно)
Как уже говорилось, что метрика(в этом случае можно сказать расстояние) - это избыточная информация. В реальности достаточно знать только, какие множества считаются открытыми, то есть какие точки в принципе можно отделить друг от друга окрестностями. Сухо это можно описать примерно так: пространство X с семейством подмножеств T называется топологическим, если T замкнуто относительно объединений (любых) и пересечений (конечных), и содержит пустое множество и само X. Это семейство T и есть топология, то есть множество того, что можно считать открытой областью, а всё остальное из этого множества выводится: замкнутые множества(то есть дополнения открытых), окрестность точки(то есть любое открытое множество, её содержащее) и граница(то что не попало ни туда, ни туда).
Главное, что полезно запомнить, это что одно и то же множество точек можно наполнить разными топологиями, и от этого меняется, что такое рядом и непрерывно. Метрика (например ранее разобранное евклидово расстояние), это только один из способов породить топологию через открытые шары. Часто, есть наборы, где данные часто живут в пространстве, где евклидова метрика физически бессмысленна (например пиксели картинки или эмбеддинги), но топологическая структура, к примеру какие точки соседи, а какие нет - всё равно нужна для обучения и должна строиться отдельно(но об этом был один из первых постов цикла, так что пойдём дальше)