Введение

Думайте о расстоянии как о пространстве между двумя вещами. Точно так же, как мы измеряем расстояние между двумя точками на карте, мы можем измерить расстояние между двумя объектами в компьютерной программе. В машинном обучении мы используем расстояние, чтобы понять, насколько вещи похожи или отличаются друг от друга. Это важно, когда мы пытаемся делать прогнозы или классифицировать вещи.

То, как вы измеряете расстояние, повлияет на то, как вы сгруппируете вещи. Точно так же, как существуют разные способы измерения расстояния между двумя вещами, существуют разные способы измерения расстояния между точками данных в машинном обучении. Некоторые из этих способов называются Метрики расстояния. Мы должны выбрать правильную метрику расстояния для нашей задачи, потому что это может иметь большое значение в результатах, которые мы получаем.

👉 Прежде чем начать блог, подпишитесь на мой канал YouTube и следите за мной в Instagram 👇
📷 YouTube — https://bit.ly/38gLfTo
📃 Instagram — https://bit.ly/3VbKHWh

👉 Делайте пожертвования💰или дайте мне совет💵Если вам действительно нравятся мои блоги, потому что я из Индии и не могу участвовать в партнерской программе Medium. Нажмите здесь, чтобы сделать пожертвование или чаевые 💰 — https://bit.ly/3oTHiz3

Итак, цель нашего блога — объяснить различные метрики расстояния и то, как выбрать правильный для нашей задачи, используя простые для понимания примеры.

Объяснение показателей расстояния

Метрики расстояния — это математические формулы, которые измеряют разницу между двумя точками. Они широко используются в алгоритмах машинного обучения, поскольку помогают определить наиболее близкое соответствие между точками данных. Они используются в различных приложениях, таких как кластеризация, классификация и обнаружение аномалий.

Представьте, что у вас есть корзина с яблоками, и вы хотите сгруппировать одинаковые яблоки вместе. Вы можете использовать метрику расстояния, чтобы измерить разницу между каждым яблоком, например его размер, цвет или форму. Используя правильную метрику расстояния, вы можете группировать похожие яблоки вместе и создавать категории яблок.

Точно так же алгоритмы машинного обучения используют метрики расстояния, чтобы группировать схожие точки данных вместе и делать прогнозы.

Важность выбора правильного показателя расстояния

Выбор правильной метрики расстояния для постановки задачи имеет решающее значение для достижения точных результатов в машинном обучении. Метрики расстояния, также известные как меры подобия, определяют, насколько похожи или различны две точки данных. В машинном обучении метрики расстояния используются в таких алгоритмах, как кластеризация, классификация и уменьшение размерности.

Важно выбрать правильную метрику расстояния для постановки задачи, потому что разные метрики могут давать разные результаты. Например, в задаче кластеризации, если используется неправильная метрика расстояния, кластеры могут не иметь смысла, и результаты могут быть неверными. Точно так же в задаче классификации выбор метрики расстояния может повлиять на точность модели.

Поэтому понимание различных метрик расстояния и соответствующих вариантов их использования имеет важное значение для выбора правильной метрики для постановки задачи.

Типы показателей расстояния

Давайте проверим различные типы метрик расстояния, используемые в машинном обучении, и узнаем, какие использовать в какой постановке задачи или типе данных.

1. Евклидово расстояние. Это наиболее часто используемый показатель расстояния, который используется при работе с непрерывными или числовыми переменными. Он измеряет расстояние по прямой между двумя точками и рассчитывается путем нахождения квадратного корня из суммы квадратов разностей между каждой соответствующей координатой.

Пример. Если у нас есть две точки (3, 4) и (6, 8), евклидово расстояние между этими точками равно 5.

import numpy as np

# Euclidean Distance
def euclidean_distance(x1, x2):
    return np.sqrt(np.sum((x1 - x2) ** 2))

2. Манхэттенское расстояние: также известное как расстояние такси или городского квартала, оно используется при работе с дискретными, порядковыми или категориальными переменными. Он измеряет расстояние между двумя точками, вычисляя абсолютную разницу между координатами и складывая их.

Пример. Если у нас есть две точки (3, 4) и (6, 8), манхэттенское расстояние между этими точками равно 7.

import numpy as np

# Manhattan Distance
def manhattan_distance(x1, x2):
    return np.sum(np.abs(x1 - x2))

3. Расстояние Минковского: это обобщение евклидова и манхэттенского расстояний. Единственное отличие состоит в том, что вместо фиксированной мощности (2 для Евклида и 1 для Манхэттена) он принимает параметр «p», который определяет используемую мощность.

Пример: если у нас есть две точки (3, 4) и (6, 8), расстояние Минковского между этими точками при p = 2 будет таким же, как евклидово расстояние, а при p = 1 , оно будет таким же, как манхэттенское расстояние.

import numpy as np

# Minkowski Distance
def minkowski_distance(x1, x2, p):
    return np.power(np.sum(np.power(np.abs(x1 - x2), p)), 1/p)

4. Расстояние Хэмминга: используется при работе с категориальными переменными. Он измеряет разницу между двумя категориальными переменными, подсчитывая количество несоответствий между ними.

Пример. Если у нас есть две категориальные переменные «собака» и «кошка», расстояние Хэмминга между этими двумя переменными равно 3, так как между ними есть 3 несоответствия.

import numpy as np

# Hamming Distance
def hamming_distance(x1, x2):
    return np.sum(x1 != x2)

5. Расстояние Жаккара.Это еще одна мера сходства, которая обычно используется для двоичных или категориальных данных. Он рассчитывается как размер пересечения двух множеств, деленный на размер объединения двух множеств.

Пример. Если у нас есть две двоичные переменные (1, 1) и (0, 1), расстояние Жаккара между этими двумя переменными равно 0,33, так как между ними есть только 1 совпадение и 2 несовпадения.

import numpy as np

# Jaccard Distance
def jaccard_distance(x1, x2):
    intersect = np.sum(x1 * x2)
    union = np.sum(x1) + np.sum(x2) - intersect
    return 1 - intersect / union

6. Косинусное сходство: это мера сходства между двумя векторами, а не метрика расстояния. Он обычно используется для текстовых данных, где каждый документ представлен в виде вектора частот слов. Косинусное сходство вычисляется как скалярное произведение двух векторов, деленное на произведение их модулей.

Пример. Если у нас есть два документа, документ A со словами («собака», «кошка» и «крыса») и документ B со словами («крыса», «кошка» и «собака»), косинусное сходство между этими двумя документами равно 1, так как они идентичны.

import numpy as np

# Cosine Similarity
def cosine_similarity(x1, x2):
    return np.dot(x1, x2) / (np.sqrt(np.dot(x1, x1)) * np.sqrt(np.dot(x2, x2)))

7. Расстояние Махаланобиса. Это более сложная метрика расстояния, учитывающая ковариационную структуру данных. Он подходит для данных со сложными отношениями между переменными.

Пример. Представьте, что у вас есть набор данных с двумя переменными: ростом и весом. У вас есть два человека, A и B, и вы хотите измерить расстояние между ними. В этом случае вы должны использовать расстояние Махаланобиса.

import numpy as np

# Mahalanobis Distance
def mahalanobis_distance(x1, x2, VI):
    delta = x1 - x2
    return np.sqrt(np.dot(np.dot(delta, VI), delta))

Факторы, определяющие лучший показатель расстояния

Когда дело доходит до машинного обучения, выбор правильной метрики расстояния может оказать существенное влияние на успех вашей модели. В этом разделе мы рассмотрим различные факторы, которые следует учитывать при выборе наилучшей метрики расстояния для постановки задачи, а также различные стратегии такого выбора.

Факторы, которые следует учитывать -

  1. Характер данных. Характер данных, с которыми вы работаете, будет играть важную роль в определении того, какая метрика расстояния лучше всего подходит для вашей задачи. Например, если в ваших данных много шума или выбросов, использование такой метрики, как евклидово расстояние, может быть не идеальным. В таких случаях более подходящими могут быть такие показатели, как расстояние Махаланобиса.
  2. Постановка задачи. Проблема, которую вы пытаетесь решить с помощью модели машинного обучения, также будет играть роль в определении того, какая метрика расстояния является лучшей. Например, если вы пытаетесь классифицировать данные по категориям, другой показатель расстояния может оказаться более подходящим, чем если бы вы пытались кластеризовать данные.
  3. Используемый алгоритм. Используемый вами алгоритм машинного обучения также повлияет на выбор показателя расстояния. Для разных алгоритмов могут потребоваться разные метрики расстояния, поэтому важно учитывать это при выборе наилучшей метрики для вашей задачи.

Влияние правильного выбора метрики расстояния в модели машинного обучения

Вот пример кода, в котором я использую набор данных Iris из библиотеки sklearn, чтобы показать, как выбор правильной метрики расстояния влияет на точность модели.

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Load the iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# Create KNN classifier using Euclidean distance metric
knn_euclidean = KNeighborsClassifier(metric='euclidean')
knn_euclidean.fit(X_train, y_train)
y_pred_euclidean = knn_euclidean.predict(X_test)

# Create KNN classifier using Manhattan distance metric
knn_manhattan = KNeighborsClassifier(metric='manhattan')
knn_manhattan.fit(X_train, y_train)
y_pred_manhattan = knn_manhattan.predict(X_test)

# Calculate accuracy of predictions
accuracy_euclidean = accuracy_score(y_test, y_pred_euclidean)
accuracy_manhattan = accuracy_score(y_test, y_pred_manhattan)

# Compare accuracy of predictions
print("Accuracy using Euclidean distance metric:", accuracy_euclidean)
print("Accuracy using Manhattan distance metric:", accuracy_manhattan)

# Output
Accuracy using Euclidean distance metric: 0.9666666666666667
Accuracy using Manhattan distance metric: 1.0

Стратегии выбора -

  1. Экспериментирование с различными показателями расстояния. Одна из самых простых стратегий выбора наилучшего показателя расстояния – это экспериментировать с различными показателями и сравнивать результаты. Это может дать вам хорошее представление о сильных и слабых сторонах каждой метрики и помочь вам определить, какая из них лучше всего подходит для вашей постановки задачи.
  2. Использование знаний в предметной области для управления процессом выбора. Другая стратегия заключается в использовании ваших знаний в предметной области для информирования процесса выбора. Если у вас есть опыт в области, в которой вы работаете, вы можете хорошо понимать, какая метрика расстояния наиболее подходит для вашей задачи.
  3. Визуализация данных для информирования о выборе. Визуализация данных также может быть полезной стратегией при выборе наилучшего показателя расстояния. Это может помочь вам увидеть закономерности в данных и лучше понять, какая метрика лучше всего подходит для вашей проблемы.

Заключение

В этой статье мы обсудили важность выбора правильной метрики расстояния в машинном обучении. Мы также изучили различные типы показателей расстояния, включая евклидово, манхэттенское, косинусное, расстояние Жаккара и расстояние Махаланобиса.

Выбор правильной метрики расстояния имеет решающее значение для успеха проекта машинного обучения. Выбор метрики расстояния может оказать существенное влияние на производительность модели и точность ее прогнозов. Важно учитывать характер данных, постановку задачи и алгоритм, используемый при выборе метрики расстояния. Экспериментирование, знание предметной области и визуализация данных также могут повлиять на выбор.

В заключение, уделив время тщательному выбору правильной метрики расстояния для постановки задачи, можно повысить производительность и точность моделей машинного обучения.

Если вам понравилась статья и вы хотите поддержать меня, обязательно сделайте следующее:

👏 Похлопайте, чтобы рассказать историю (100 хлопков) и следуйте за мной 👉🏻 Симранджит Сингх

📑 Смотрите больше контента в моем Среднем профиле

🔔 Следуйте за мной: LinkedIn | Средний | Гитхаб | Твиттер | "Телеграмма"

🚀 Помогите мне охватить более широкую аудиторию, поделившись моим контентом с друзьями и коллегами.

🎓 Хотите начать карьеру в области Data Science и искусственного интеллекта, но не знаете как? Я предлагаю сеансы наставничества по науке о данных и искусственному интеллекту, а также долгосрочную профессиональную ориентацию.

📅 Консультация или профориентация

📅 Наставничество 1:1 — о Python, науке о данных и машинном обучении

Будьте в курсе последних новостей и обновлений в сфере творческого ИИ — следите за публикацией Генеративный ИИ.