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

Вступление

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

Основы математики (Источник Википедия),

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

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

Функция расстояния

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

Чтобы вычислить расстояние между точками данных A и B, теорема Пифагора учитывает длину осей x и y.

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

Теперь вы, наверное, получили представление о том, что такое функция расстояния? Вот упрощенное определение.

Базовое определение от Math.net,

Функция расстояния обеспечивает расстояние между элементами набора. Если расстояние равно нулю, элементы эквивалентны, иначе они отличаются друг от друга.

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

Метрики расстояния

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

Ниже приведены часто используемые метрики расстояния -

Расстояние Минковского:

Расстояние Минковского - это метрика в нормированном векторном пространстве. Что такое нормированное векторное пространство? Нормированное векторное пространство - это векторное пространство, на котором определена норма. Предположим, что X - векторное пространство, тогда норма на X - это вещественная функция || x ||, которая удовлетворяет следующим условиям:

  1. Нулевой вектор- нулевой вектор будет иметь нулевую длину.
  2. Скалярный коэффициент - направление вектора не меняется, когда вы умножаете его на положительное число, хотя его длина будет изменена.
  3. Неравенство треугольника - Если расстояние является нормой, то рассчитанное расстояние между двумя точками всегда будет прямой линией.

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

Расстояние можно рассчитать по формуле ниже -

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

Как упоминалось выше, мы можем управлять значением p и рассчитывать расстояние тремя разными способами:

p = 1, Манхэттенское расстояние

p = 2, евклидово расстояние

p = ∞, расстояние Чебышева

Мы подробно обсудим эти метрики расстояния ниже.

Расстояние до Манхэттена:

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

Допустим, мы хотим вычислить расстояние d между двумя точками данных - x и г.

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

где n - количество переменных, xi и yi - переменные векторов x и y соответственно в двумерное векторное пространство. т.е. x = (x1, x2, x3, ...) и y = (y1, y2, y3,…) .

Теперь расстояние d будет рассчитываться как-

(x1 - y1) + (x2 - y2) + (x3 - y3) + … + (xn - yn).

Если вы попытаетесь визуализировать расчет расстояния, он будет выглядеть примерно так:

Расстояние до Манхэттена также известно как геометрия такси, расстояние до городского квартала и т. Д.

Евклидово расстояние:

Евклидово расстояние - один из наиболее часто используемых показателей расстояния. Он рассчитывается с использованием формулы расстояния Минковского, задав значение p равным 2. Это обновит формулу для расчета расстояния ‘d’, как показано ниже:

Давай остановимся ненадолго! Вам знакома эта формула? Ну да, мы только что видели эту формулу выше в этой статье, когда обсуждали «теорему Пифагора».

Формула евклидова расстояния может использоваться для расчета расстояния между двумя точками данных на плоскости.

Косинусное расстояние:

В основном метрика косинусного расстояния используется для поиска сходства между разными документами. В косинусной метрике мы измеряем угол между двумя документами / векторами (термин «частота» в разных документах, собранных как метрики). Эта конкретная метрика используется, когда величина между векторами не имеет значения, а имеет значение ориентация.

Формула косинусного подобия может быть получена из уравнения скалярных произведений:

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

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

Здесь значение косинуса 1 предназначено для векторов, указывающих в одном направлении, то есть между документами / точками данных есть сходство. На нуле для ортогональных векторов, т. Е. Несвязанных (обнаружено некоторое сходство). Значение -1 для векторов, указывающих в противоположных направлениях (нет сходства).

Расстояние Махаланобиса:

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

Согласно определению Википедии,

Расстояние Махаланобиса - это мера расстояния между точкой P и распределением D. Идея измерения заключается в том, на сколько стандартных отклонений P от среднего значения D.

Преимущество использования расстояния Махаланобиса заключается в том, что оно учитывает ковариацию, которая помогает измерять силу / сходство между двумя разными объектами данных. Расстояние между наблюдением и средним значением можно рассчитать, как показано ниже -

Здесь S - метрика ковариации. Мы используем обратную метрику ковариации, чтобы получить уравнение расстояния, нормированное на дисперсию.

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

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

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

1. Классификация

Ближайшие соседи (KNN) -

KNN - это не вероятностный алгоритм обучения с учителем, то есть он не производит вероятность принадлежности какой-либо точки данных, а KNN классифицирует данные по жесткому назначению, например, точка данных будет принадлежать либо 0, либо 1. Теперь вы должны думать как работает KNN, если нет уравнения вероятности. KNN использует метрики расстояния, чтобы находить сходства или различия.

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

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

#Import required libraries
#Import required libraries
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
#Load the dataset
url = "https://raw.githubusercontent.com/SharmaNatasha/Machine-Learning-using-Python/master/Datasets/IRIS.csv"
df = pd.read_csv(url)
#quick look into the data
df.head(5)
#Separate data and label
x = df.iloc[:,1:4]
y = df.iloc[:,4]
#Prepare data for classification process
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)

В алгоритме классификации KNN мы определяем константу «K». K - количество ближайших соседей точки тестовых данных. Эти K точек данных затем будут использоваться для определения класса для точки тестовых данных (обратите внимание, что это находится в наборе обучающих данных).

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

Мы не будем создавать KNN с нуля, а будем использовать классификатор scikit KNN.

#Create a model
KNN_Classifier = KNeighborsClassifier(n_neighbors = 6, p = 2, metric='minkowski')

Вы можете видеть, что в приведенном выше коде мы используем метрику расстояния Минковского со значением p как 2, то есть классификатор KNN будет использовать формулу метрики евклидова расстояния.

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

#Train the model
KNN_Classifier.fit(x_train, y_train)
#Let's predict the classes for test data
pred_test = KNN_Classifier.predict(x_test)

Как только самые ближайшие соседи выбраны, мы проверяем наиболее проголосовавший класс в соседях -

Можете ли вы угадать класс для контрольной точки по изображению выше? Это класс 1, так как за него проголосовали наибольшее количество голосов.

На этом небольшом примере мы увидели, насколько важна метрика расстояния для классификатора KNN. Это помогло нам получить ближайшие точки данных поезда, для которых были известны классы. Есть вероятность, что, используя другие метрики расстояния, мы сможем получить лучшие результаты. Итак, в не вероятностном алгоритме, таком как KNN, метрики расстояния играют важную роль.

2. Кластеризация

K-означает-

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

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

На изображении №1 выше, как вы можете видеть, мы случайным образом разместили центроиды, а на изображении №2, используя метрику расстояния, мы попытались найти их ближайший класс кластера.

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
#Load the dataset
url = "https://raw.githubusercontent.com/SharmaNatasha/Machine-Learning-using-Python/master/Datasets/IRIS.csv"
df = pd.read_csv(url)
#quick look into the data
df.head(5)
#Separate data and label
x = df.iloc[:,1:4].values
#Creating the kmeans classifier
KMeans_Cluster = KMeans(n_clusters = 3)
y_class = KMeans_Cluster.fit_predict(x)

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

Как мы видели в приведенном выше примере, не имея каких-либо знаний о метках с помощью метрики расстояния в K-средних, мы сгруппировали данные в 3 класса.

3. Обработка естественного языка

Получение информации

При поиске информации мы работаем с неструктурированными данными. Данные могут быть статьей, веб-сайтом, электронными письмами, текстовыми сообщениями, публикациями в социальных сетях и т. Д. С помощью методов, используемых в НЛП, мы можем создавать векторные данные таким образом, чтобы их можно было использовать для получения информации при запросе. После преобразования неструктурированных данных в векторную форму мы можем использовать метрику косинусного сходства, чтобы отфильтровать нерелевантные документы из корпуса.

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

  1. Создать векторную форму для корпуса и запроса-
import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as pyplot
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
corpus = [
 'the brown fox jumped over the brown dog',
 'the quick brown fox',
 'the brown brown dog',
 'the fox ate the dog'
]
query = ["brown"]
X = vectorizer.fit_transform(corpus)
Y = vectorizer.transform(query)

2. Проверьте сходство, т. Е. Найдите, какой документ в корпусе имеет отношение к нашему запросу -

cosine_similarity(Y, X.toarray())
Results:
array([[0.54267123, 0.44181486, 0.84003859, 0.        ]])

Как видно из приведенного выше примера, мы запросили слово «коричневый», и в корпусе есть только три документа, которые содержат слово «коричневый». При проверке с метрикой косинусного сходства он давал те же результаты, имея ›0 значений для трех документов, кроме четвертого.

Заключение

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

использованная литература

  1. Косинусное сходство - Sklearn, Статья TDS, Википедия, Пример
  2. Код Github
  3. Дистанционные показатели - Math.net, Wiki.
  4. Метрика расстояния Минковского - Вики, Блог, Известные метрики