Метрические методы классификации и регрессии - одни из самых простых моделей.
Они основаны на гипотезе компактности - близким объектам соответствуют близкие ответы. Можно встретить довольно много прецедентов, связанных с этой гипотезой
Как определить похожие объекты?
Необходимо ввести функцию расстояния межну ними
где $m(a,b)$ - равно $0$, если $a = b$ и $1$ в ином случае
(1, 0, 1, 0)
(1, 1, 0, 1)
Расстояние Хэмминга - Hamming distance
Количество (доля) несовпавших значений
$$d(\text{Иван},\text{Геннадий}) = 3 $$
Классификация:
Примечание - формулы справедливы то евлидового расстояния
interact(plot_centroid_class)
<function __main__.plot_centroid_class()>
Вход: Обучающая выборка $X=(x_i,y_i)$, мера близости $d(\cdot, \cdot)$ и тестовый объект $\tilde{x}$
Найти $k$ ближайших объекта в $X$ c помощью $d(\tilde{x},\cdot)$
plt.scatter(X_moons[:,0], X_moons[:,1], c=y_moons, cmap=plt.cm.Spectral)
plt.xlabel('$x_1$')
plt.ylabel('$x_2$')
Text(0,0.5,'$x_2$')
interact(plot_knn_class, k=IntSlider(min=1, max=10, value=1))
<function __main__.plot_knn_class(k=1, prob=False)>
plt.plot(x_true, y_true, c='g', label='$f(x)$')
plt.scatter(x, y, label='actual data')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc=2)
<matplotlib.legend.Legend at 0x1a1c0f4780>
plot_linreg()
interact(plot_knn, k=IntSlider(min=1, max=10, value=1))
<function __main__.plot_knn(k=1)>
При работе с моделями следует различать понятия Параметр и Гипер-параметр.
Как дела обстоят у kNN?
где $x_j$ - $j$-ый признак
$\mu_{j}$ - среднее значение признака $x_j$,
$\sigma_{j}$ - его стандартное отклонение
$L_{j}$ и $U_{j}$ - верхняя и нижняя "границы"
У каждого ближайшего соседа возникает "вес" важности в предсказании. Пусть $(j)$ показывает порядок ближайшего соседа, тогда:
interact(plot_knn_dist, k=IntSlider(min=1, max=10, value=1))
<function __main__.plot_knn_dist(k=1)>
interact(plot_knn_class_kernel, k=IntSlider(min=1, max=10, value=1))
<function __main__.plot_knn_class_kernel(k=1, prob=False)>
Матрица перемешивания $M=\{m_{ij}\}_{i,j=1}^{C}$ показывает количество объектов класса $с_{i}$, которые были отнесены классификатором к классу $с_{j}$.
fig = interact(demo_fscore, beta=FloatSlider(min=0.1, max=5, step=0.3, value=1))
![]() |
![]() |
---|
Площадь под ROC кривой
AUC$\in[0,1]$